import{S as Rp,i as Fp,s as Mp,e as n,k as c,w,t as o,M as Gp,c as l,d as i,m as u,a as r,x as z,h as s,b as d,N as Up,G as a,g as p,y as E,q as x,o as q,B as y,v as Qp}from"../../chunks/vendor-hf-doc-builder.js";import{T as Me}from"../../chunks/Tip-hf-doc-builder.js";import{Y as Bp}from"../../chunks/Youtube-hf-doc-builder.js";import{I as D}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as T}from"../../chunks/CodeBlock-hf-doc-builder.js";import{C as Vp}from"../../chunks/CourseFloatingBanner-hf-doc-builder.js";import"../../chunks/DocNotebookDropdown-hf-doc-builder.js";function Wp(S){let m,_,f,b,$,h,g,v,P;return{c(){m=o("\u{1F440} Lo vedi il pulsante "),_=n("em"),f=o("Open in Colab"),b=o(` in alto a destra? Cliccalo per aprire il blocco note Colab di Google che contiene tutti gli esempi di codice di questa sezione. Ritroverai il pulsante in ogni sezione che contiene esempi di codice. 
`),$=n("p"),h=o("Se intendi compilare gli esempi localmente, ti consigliamo di dare un occhio alla sezione "),g=n("a"),v=o("setup"),P=o("."),this.h()},l(k){m=s(k,"\u{1F440} Lo vedi il pulsante "),_=l(k,"EM",{});var I=r(_);f=s(I,"Open in Colab"),I.forEach(i),b=s(k,` in alto a destra? Cliccalo per aprire il blocco note Colab di Google che contiene tutti gli esempi di codice di questa sezione. Ritroverai il pulsante in ogni sezione che contiene esempi di codice. 
`),$=l(k,"P",{});var A=r($);h=s(A,"Se intendi compilare gli esempi localmente, ti consigliamo di dare un occhio alla sezione "),g=l(A,"A",{href:!0});var j=r(g);v=s(j,"setup"),j.forEach(i),P=s(A,"."),A.forEach(i),this.h()},h(){d(g,"href","/course/chapter0")},m(k,I){p(k,m,I),p(k,_,I),a(_,f),p(k,b,I),p(k,$,I),a($,h),a($,g),a(g,v),a($,P)},d(k){k&&i(m),k&&i(_),k&&i(b),k&&i($)}}}function Yp(S){let m,_,f,b,$,h,g;return{c(){m=o("\u26A0\uFE0F L'Hugging Face Hub non si limitata ai soli modelli Transformer. Chiunque pu\xF2 condividere qualsiasi tipo di modello o dataset ("),_=n("em"),f=o("insieme di dati"),b=o(")! "),$=n("a"),h=o("Crea un profilo huggingface.co"),g=o(" per approfittare di tutte le funzioni disponibili!"),this.h()},l(v){m=s(v,"\u26A0\uFE0F L'Hugging Face Hub non si limitata ai soli modelli Transformer. Chiunque pu\xF2 condividere qualsiasi tipo di modello o dataset ("),_=l(v,"EM",{});var P=r(_);f=s(P,"insieme di dati"),P.forEach(i),b=s(v,")! "),$=l(v,"A",{href:!0});var k=r($);h=s(k,"Crea un profilo huggingface.co"),k.forEach(i),g=s(v," per approfittare di tutte le funzioni disponibili!"),this.h()},h(){d($,"href","https://huggingface.co/join")},m(v,P){p(v,m,P),p(v,_,P),a(_,f),p(v,b,P),p(v,$,P),a($,h),p(v,g,P)},d(v){v&&i(m),v&&i(_),v&&i(b),v&&i($),v&&i(g)}}}function Jp(S){let m,_,f,b,$;return{c(){m=n("p"),_=o("\u270F\uFE0F "),f=n("strong"),b=o("Provaci anche tu!"),$=o(" Divertiti creando sequenze ed etichette e osserva come si comporta il modello.")},l(h){m=l(h,"P",{});var g=r(m);_=s(g,"\u270F\uFE0F "),f=l(g,"STRONG",{});var v=r(f);b=s(v,"Provaci anche tu!"),v.forEach(i),$=s(g," Divertiti creando sequenze ed etichette e osserva come si comporta il modello."),g.forEach(i)},m(h,g){p(h,m,g),a(m,_),a(m,f),a(f,b),a(m,$)},d(h){h&&i(m)}}}function Zp(S){let m,_,f,b,$,h,g,v,P,k,I;return{c(){m=n("p"),_=o("\u270F\uFE0F "),f=n("strong"),b=o("Provaci anche tu!"),$=o(" Usa gli argomenti "),h=n("code"),g=o("num_return_sequences"),v=o(" e "),P=n("code"),k=o("max_length"),I=o(" per generare due frasi di 15 parole ciascuna.")},l(A){m=l(A,"P",{});var j=r(m);_=s(j,"\u270F\uFE0F "),f=l(j,"STRONG",{});var W=r(f);b=s(W,"Provaci anche tu!"),W.forEach(i),$=s(j," Usa gli argomenti "),h=l(j,"CODE",{});var R=r(h);g=s(R,"num_return_sequences"),R.forEach(i),v=s(j," e "),P=l(j,"CODE",{});var Y=r(P);k=s(Y,"max_length"),Y.forEach(i),I=s(j," per generare due frasi di 15 parole ciascuna."),j.forEach(i)},m(A,j){p(A,m,j),a(m,_),a(m,f),a(f,b),a(m,$),a(m,h),a(h,g),a(m,v),a(m,P),a(P,k),a(m,I)},d(A){A&&i(m)}}}function Kp(S){let m,_,f,b,$;return{c(){m=n("p"),_=o("\u270F\uFE0F "),f=n("strong"),b=o("Provaci anche tu!"),$=o(" Usa i filtri per trovare un modello di generazione testuale per un\u2019altra lingua. Sentiti libero/a di divertirti con il widget e usalo in una pipeline!")},l(h){m=l(h,"P",{});var g=r(m);_=s(g,"\u270F\uFE0F "),f=l(g,"STRONG",{});var v=r(f);b=s(v,"Provaci anche tu!"),v.forEach(i),$=s(g," Usa i filtri per trovare un modello di generazione testuale per un\u2019altra lingua. Sentiti libero/a di divertirti con il widget e usalo in una pipeline!"),g.forEach(i)},m(h,g){p(h,m,g),a(m,_),a(m,f),a(f,b),a(m,$)},d(h){h&&i(m)}}}function Xp(S){let m,_,f,b,$,h,g,v,P,k,I;return{c(){m=n("p"),_=o("\u270F\uFE0F "),f=n("strong"),b=o("Provaci anche tu!"),$=o(" Cerca il modello "),h=n("code"),g=o("bert-base-cased"),v=o(" nell\u2019Hub e identifica la sua mask word nel widget dell\u2019Inference API. Cosa predice questo modello per la frase nel nostro esempio "),P=n("code"),k=o("pipeline"),I=o(" qui sopra?")},l(A){m=l(A,"P",{});var j=r(m);_=s(j,"\u270F\uFE0F "),f=l(j,"STRONG",{});var W=r(f);b=s(W,"Provaci anche tu!"),W.forEach(i),$=s(j," Cerca il modello "),h=l(j,"CODE",{});var R=r(h);g=s(R,"bert-base-cased"),R.forEach(i),v=s(j," nell\u2019Hub e identifica la sua mask word nel widget dell\u2019Inference API. Cosa predice questo modello per la frase nel nostro esempio "),P=l(j,"CODE",{});var Y=r(P);k=s(Y,"pipeline"),Y.forEach(i),I=s(j," qui sopra?"),j.forEach(i)},m(A,j){p(A,m,j),a(m,_),a(m,f),a(f,b),a(m,$),a(m,h),a(h,g),a(m,v),a(m,P),a(P,k),a(m,I)},d(A){A&&i(m)}}}function ec(S){let m,_,f,b,$;return{c(){m=n("p"),_=o("\u270F\uFE0F "),f=n("strong"),b=o("Provaci anche tu!"),$=o(" Nel Model Hub, cerca un modello capace di effettuare part-of-speech tagging (comunemente abbreviato come POS) in inglese. Cosa predice il modello per la frase nell\u2019esempio qui sopra?")},l(h){m=l(h,"P",{});var g=r(m);_=s(g,"\u270F\uFE0F "),f=l(g,"STRONG",{});var v=r(f);b=s(v,"Provaci anche tu!"),v.forEach(i),$=s(g," Nel Model Hub, cerca un modello capace di effettuare part-of-speech tagging (comunemente abbreviato come POS) in inglese. Cosa predice il modello per la frase nell\u2019esempio qui sopra?"),g.forEach(i)},m(h,g){p(h,m,g),a(m,_),a(m,f),a(f,b),a(m,$)},d(h){h&&i(m)}}}function ic(S){let m,_,f,b,$;return{c(){m=n("p"),_=o("\u270F\uFE0F "),f=n("strong"),b=o("Provaci anche tu!"),$=o(" Cerca modelli di traduzione in altre lingue e prova a tradurre la frase precedente in un paio di lingue diverse.")},l(h){m=l(h,"P",{});var g=r(m);_=s(g,"\u270F\uFE0F "),f=l(g,"STRONG",{});var v=r(f);b=s(v,"Provaci anche tu!"),v.forEach(i),$=s(g," Cerca modelli di traduzione in altre lingue e prova a tradurre la frase precedente in un paio di lingue diverse."),g.forEach(i)},m(h,g){p(h,m,g),a(m,_),a(m,f),a(f,b),a(m,$)},d(h){h&&i(m)}}}function ac(S){let m,_,f,b,$,h,g,v,P,k,I,A,j,W,R,Y,rs,vt,le,$t,J,re,Zi,Ge,ps,Ki,cs,_t,Ti,us,bt,pe,Jl,wt,F,ms,Ue,ds,fs,Qe,hs,gs,zt,ce,Et,Si,vs,xt,Z,ue,Xi,Be,$s,ea,_s,qt,Ve,yt,me,bs,ia,ws,zs,jt,We,kt,Ye,Pt,Hi,Es,It,Je,Ct,Ze,At,de,xs,aa,qs,ys,Tt,Oi,js,St,M,ta,ks,Ps,oa,Is,Cs,sa,As,Ht,fe,Ts,Ke,Ss,Hs,Ot,C,Li,na,Os,Ls,Ns,la,ra,Ds,Rs,he,pa,Fs,Ms,ca,Gs,Us,Qs,ua,ma,Bs,Vs,da,fa,Ws,Ys,ha,ga,Js,Zs,va,$a,Ks,Xs,_a,ba,en,an,wa,za,tn,Lt,Ni,on,Nt,K,ge,Ea,Xe,sn,xa,nn,Dt,ve,ln,qa,rn,pn,Rt,ei,Ft,ii,Mt,$e,cn,ya,un,mn,Gt,_e,Ut,X,be,ja,ai,dn,ka,fn,Qt,we,hn,Pa,gn,vn,Bt,ti,Vt,oi,Wt,G,$n,Ia,_n,bn,Ca,wn,zn,Yt,ze,Jt,ee,Ee,Aa,si,En,Ta,xn,Zt,U,qn,ni,yn,jn,li,kn,Pn,Kt,xe,In,ri,Sa,Cn,An,Xt,pi,eo,ci,io,Di,Tn,ao,Ri,Sn,to,qe,oo,ie,ye,Ha,ui,Hn,Oa,On,so,je,Ln,mi,Nn,Dn,no,ke,Rn,di,Fn,Mn,lo,ae,Pe,La,fi,Gn,Na,Un,ro,Ie,Qn,Da,Bn,Vn,po,hi,co,gi,uo,N,Wn,Ra,Yn,Jn,Fa,Zn,Kn,Ma,Xn,el,mo,Ce,fo,te,Ae,Ga,vi,il,Ua,al,ho,Te,tl,Qa,ol,sl,go,$i,vo,_i,$o,Fi,nl,_o,H,ll,Ba,rl,pl,Va,cl,ul,Wa,ml,dl,Ya,fl,hl,Ja,gl,vl,Za,$l,_l,bo,Se,wo,oe,He,Ka,bi,bl,Xa,wl,zo,Oe,zl,et,El,xl,Eo,wi,xo,zi,qo,Mi,ql,yo,se,Le,it,Ei,yl,at,jl,jo,Gi,kl,ko,xi,Po,qi,Io,Q,Pl,tt,Il,Cl,ot,Al,Tl,Co,ne,Ne,st,yi,Sl,nt,Hl,Ao,B,Ol,lt,Ll,Nl,ji,Dl,Rl,To,ki,So,Pi,Ho,V,Fl,rt,Ml,Gl,pt,Ul,Ql,Oo,De,Lo,Re,Bl,ct,Vl,Wl,No;return h=new D({}),I=new Vp({props:{chapter:1,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/it/chapter1/section3.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/it/chapter1/section3.ipynb"}]}}),le=new Me({props:{$$slots:{default:[Wp]},$$scope:{ctx:S}}}),Ge=new D({}),ce=new Me({props:{$$slots:{default:[Yp]},$$scope:{ctx:S}}}),Be=new D({}),Ve=new Bp({props:{id:"tiZFewofSLM"}}),We=new T({props:{code:`from transformers import pipeline

classifier = pipeline("sentiment-analysis")
classifier("I've been waiting for a HuggingFace course my whole life.")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

classifier = pipeline(<span class="hljs-string">&quot;sentiment-analysis&quot;</span>)
classifier(<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>)`}}),Ye=new T({props:{code:"[{'label': 'POSITIVE', 'score': 0.9598047137260437}]",highlighted:'[{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;POSITIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9598047137260437</span>}]'}}),Je=new T({props:{code:`classifier(
    ["I've been waiting for a HuggingFace course my whole life.", "I hate this so much!"]
)`,highlighted:`classifier(
    [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;I hate this so much!&quot;</span>]
)`}}),Ze=new T({props:{code:`[{'label': 'POSITIVE', 'score': 0.9598047137260437},
 {'label': 'NEGATIVE', 'score': 0.9994558095932007}]`,highlighted:`[{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;POSITIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9598047137260437</span>},
 {<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;NEGATIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9994558095932007</span>}]`}}),Xe=new D({}),ei=new T({props:{code:`from transformers import pipeline

classifier = pipeline("zero-shot-classification")
classifier(
    "This is a course about the Transformers library",
    candidate_labels=["education", "politics", "business"],
)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

classifier = pipeline(<span class="hljs-string">&quot;zero-shot-classification&quot;</span>)
classifier(
    <span class="hljs-string">&quot;This is a course about the Transformers library&quot;</span>,
    candidate_labels=[<span class="hljs-string">&quot;education&quot;</span>, <span class="hljs-string">&quot;politics&quot;</span>, <span class="hljs-string">&quot;business&quot;</span>],
)`}}),ii=new T({props:{code:`{'sequence': 'This is a course about the Transformers library',
 'labels': ['education', 'business', 'politics'],
 'scores': [0.8445963859558105, 0.111976258456707, 0.043427448719739914]}`,highlighted:`{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;This is a course about the Transformers library&#x27;</span>,
 <span class="hljs-string">&#x27;labels&#x27;</span>: [<span class="hljs-string">&#x27;education&#x27;</span>, <span class="hljs-string">&#x27;business&#x27;</span>, <span class="hljs-string">&#x27;politics&#x27;</span>],
 <span class="hljs-string">&#x27;scores&#x27;</span>: [<span class="hljs-number">0.8445963859558105</span>, <span class="hljs-number">0.111976258456707</span>, <span class="hljs-number">0.043427448719739914</span>]}`}}),_e=new Me({props:{$$slots:{default:[Jp]},$$scope:{ctx:S}}}),ai=new D({}),ti=new T({props:{code:`from transformers import pipeline

generator = pipeline("text-generation")
generator("In this course, we will teach you how to")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

generator = pipeline(<span class="hljs-string">&quot;text-generation&quot;</span>)
generator(<span class="hljs-string">&quot;In this course, we will teach you how to&quot;</span>)`}}),oi=new T({props:{code:`[{'generated_text': 'In this course, we will teach you how to understand and use '
                    'data flow and data interchange when handling user data. We '
                    'will be working with one or more of the most commonly used '
                    'data flows \u2014 data flows of various types, as seen by the '
                    'HTTP'}]`,highlighted:`[{<span class="hljs-string">&#x27;generated_text&#x27;</span>: <span class="hljs-string">&#x27;In this course, we will teach you how to understand and use &#x27;</span>
                    <span class="hljs-string">&#x27;data flow and data interchange when handling user data. We &#x27;</span>
                    <span class="hljs-string">&#x27;will be working with one or more of the most commonly used &#x27;</span>
                    <span class="hljs-string">&#x27;data flows \u2014 data flows of various types, as seen by the &#x27;</span>
                    <span class="hljs-string">&#x27;HTTP&#x27;</span>}]`}}),ze=new Me({props:{$$slots:{default:[Zp]},$$scope:{ctx:S}}}),si=new D({}),pi=new T({props:{code:`from transformers import pipeline

generator = pipeline("text-generation", model="distilgpt2")
generator(
    "In this course, we will teach you how to",
    max_length=30,
    num_return_sequences=2,
)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

generator = pipeline(<span class="hljs-string">&quot;text-generation&quot;</span>, model=<span class="hljs-string">&quot;distilgpt2&quot;</span>)
generator(
    <span class="hljs-string">&quot;In this course, we will teach you how to&quot;</span>,
    max_length=<span class="hljs-number">30</span>,
    num_return_sequences=<span class="hljs-number">2</span>,
)`}}),ci=new T({props:{code:`[{'generated_text': 'In this course, we will teach you how to manipulate the world and '
                    'move your mental and physical capabilities to your advantage.'},
 {'generated_text': 'In this course, we will teach you how to become an expert and '
                    'practice realtime, and with a hands on experience on both real '
                    'time and real'}]`,highlighted:`[{<span class="hljs-string">&#x27;generated_text&#x27;</span>: <span class="hljs-string">&#x27;In this course, we will teach you how to manipulate the world and &#x27;</span>
                    <span class="hljs-string">&#x27;move your mental and physical capabilities to your advantage.&#x27;</span>},
 {<span class="hljs-string">&#x27;generated_text&#x27;</span>: <span class="hljs-string">&#x27;In this course, we will teach you how to become an expert and &#x27;</span>
                    <span class="hljs-string">&#x27;practice realtime, and with a hands on experience on both real &#x27;</span>
                    <span class="hljs-string">&#x27;time and real&#x27;</span>}]`}}),qe=new Me({props:{$$slots:{default:[Kp]},$$scope:{ctx:S}}}),ui=new D({}),fi=new D({}),hi=new T({props:{code:`from transformers import pipeline

unmasker = pipeline("fill-mask")
unmasker("This course will teach you all about <mask> models.", top_k=2)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

unmasker = pipeline(<span class="hljs-string">&quot;fill-mask&quot;</span>)
unmasker(<span class="hljs-string">&quot;This course will teach you all about &lt;mask&gt; models.&quot;</span>, top_k=<span class="hljs-number">2</span>)`}}),gi=new T({props:{code:`[{'sequence': 'This course will teach you all about mathematical models.',
  'score': 0.19619831442832947,
  'token': 30412,
  'token_str': ' mathematical'},
 {'sequence': 'This course will teach you all about computational models.',
  'score': 0.04052725434303284,
  'token': 38163,
  'token_str': ' computational'}]`,highlighted:`[{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;This course will teach you all about mathematical models.&#x27;</span>,
  <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.19619831442832947</span>,
  <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">30412</span>,
  <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27; mathematical&#x27;</span>},
 {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;This course will teach you all about computational models.&#x27;</span>,
  <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.04052725434303284</span>,
  <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">38163</span>,
  <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27; computational&#x27;</span>}]`}}),Ce=new Me({props:{$$slots:{default:[Xp]},$$scope:{ctx:S}}}),vi=new D({}),$i=new T({props:{code:`from transformers import pipeline

ner = pipeline("ner", grouped_entities=True)
ner("My name is Sylvain and I work at Hugging Face in Brooklyn.")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

ner = pipeline(<span class="hljs-string">&quot;ner&quot;</span>, grouped_entities=<span class="hljs-literal">True</span>)
ner(<span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn.&quot;</span>)`}}),_i=new T({props:{code:`[{'entity_group': 'PER', 'score': 0.99816, 'word': 'Sylvain', 'start': 11, 'end': 18}, 
 {'entity_group': 'ORG', 'score': 0.97960, 'word': 'Hugging Face', 'start': 33, 'end': 45}, 
 {'entity_group': 'LOC', 'score': 0.99321, 'word': 'Brooklyn', 'start': 49, 'end': 57}
]`,highlighted:`[{<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;PER&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99816</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Sylvain&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">11</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">18</span>}, 
 {<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;ORG&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.97960</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Hugging Face&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">33</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">45</span>}, 
 {<span class="hljs-string">&#x27;entity_group&#x27;</span>: <span class="hljs-string">&#x27;LOC&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.99321</span>, <span class="hljs-string">&#x27;word&#x27;</span>: <span class="hljs-string">&#x27;Brooklyn&#x27;</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">49</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">57</span>}
]`}}),Se=new Me({props:{$$slots:{default:[ec]},$$scope:{ctx:S}}}),bi=new D({}),wi=new T({props:{code:`from transformers import pipeline

question_answerer = pipeline("question-answering")
question_answerer(
    question="Where do I work?",
    context="My name is Sylvain and I work at Hugging Face in Brooklyn",
)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

question_answerer = pipeline(<span class="hljs-string">&quot;question-answering&quot;</span>)
question_answerer(
    question=<span class="hljs-string">&quot;Where do I work?&quot;</span>,
    context=<span class="hljs-string">&quot;My name is Sylvain and I work at Hugging Face in Brooklyn&quot;</span>,
)`}}),zi=new T({props:{code:"{'score': 0.6385916471481323, 'start': 33, 'end': 45, 'answer': 'Hugging Face'}",highlighted:'{<span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.6385916471481323</span>, <span class="hljs-string">&#x27;start&#x27;</span>: <span class="hljs-number">33</span>, <span class="hljs-string">&#x27;end&#x27;</span>: <span class="hljs-number">45</span>, <span class="hljs-string">&#x27;answer&#x27;</span>: <span class="hljs-string">&#x27;Hugging Face&#x27;</span>}'}}),Ei=new D({}),xi=new T({props:{code:`from transformers import pipeline

summarizer = pipeline("summarization")
summarizer(
    """
    America has changed dramatically during recent years. Not only has the number of 
    graduates in traditional engineering disciplines such as mechanical, civil, 
    electrical, chemical, and aeronautical engineering declined, but in most of 
    the premier American universities engineering curricula now concentrate on 
    and encourage largely the study of engineering science. As a result, there 
    are declining offerings in engineering subjects dealing with infrastructure, 
    the environment, and related issues, and greater concentration on high 
    technology subjects, largely supporting increasingly complex scientific 
    developments. While the latter is important, it should not be at the expense 
    of more traditional engineering.

    Rapidly developing economies such as China and India, as well as other 
    industrial countries in Europe and Asia, continue to encourage and advance 
    the teaching of engineering. Both China and India, respectively, graduate 
    six and eight times as many traditional engineers as does the United States. 
    Other industrial countries at minimum maintain their output, while America 
    suffers an increasingly serious decline in the number of engineering graduates 
    and a lack of well-educated engineers.
"""
)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

summarizer = pipeline(<span class="hljs-string">&quot;summarization&quot;</span>)
summarizer(
    <span class="hljs-string">&quot;&quot;&quot;
    America has changed dramatically during recent years. Not only has the number of 
    graduates in traditional engineering disciplines such as mechanical, civil, 
    electrical, chemical, and aeronautical engineering declined, but in most of 
    the premier American universities engineering curricula now concentrate on 
    and encourage largely the study of engineering science. As a result, there 
    are declining offerings in engineering subjects dealing with infrastructure, 
    the environment, and related issues, and greater concentration on high 
    technology subjects, largely supporting increasingly complex scientific 
    developments. While the latter is important, it should not be at the expense 
    of more traditional engineering.

    Rapidly developing economies such as China and India, as well as other 
    industrial countries in Europe and Asia, continue to encourage and advance 
    the teaching of engineering. Both China and India, respectively, graduate 
    six and eight times as many traditional engineers as does the United States. 
    Other industrial countries at minimum maintain their output, while America 
    suffers an increasingly serious decline in the number of engineering graduates 
    and a lack of well-educated engineers.
&quot;&quot;&quot;</span>
)`}}),qi=new T({props:{code:`[{'summary_text': ' America has changed dramatically during recent years . The '
                  'number of engineering graduates in the U.S. has declined in '
                  'traditional engineering disciplines such as mechanical, civil '
                  ', electrical, chemical, and aeronautical engineering . Rapidly '
                  'developing economies such as China and India, as well as other '
                  'industrial countries in Europe and Asia, continue to encourage '
                  'and advance engineering .'}]`,highlighted:`[{<span class="hljs-string">&#x27;summary_text&#x27;</span>: <span class="hljs-string">&#x27; America has changed dramatically during recent years . The &#x27;</span>
                  <span class="hljs-string">&#x27;number of engineering graduates in the U.S. has declined in &#x27;</span>
                  <span class="hljs-string">&#x27;traditional engineering disciplines such as mechanical, civil &#x27;</span>
                  <span class="hljs-string">&#x27;, electrical, chemical, and aeronautical engineering . Rapidly &#x27;</span>
                  <span class="hljs-string">&#x27;developing economies such as China and India, as well as other &#x27;</span>
                  <span class="hljs-string">&#x27;industrial countries in Europe and Asia, continue to encourage &#x27;</span>
                  <span class="hljs-string">&#x27;and advance engineering .&#x27;</span>}]`}}),yi=new D({}),ki=new T({props:{code:`from transformers import pipeline

translator = pipeline("translation", model="Helsinki-NLP/opus-mt-fr-en")
translator("Ce cours est produit par Hugging Face.")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

translator = pipeline(<span class="hljs-string">&quot;translation&quot;</span>, model=<span class="hljs-string">&quot;Helsinki-NLP/opus-mt-fr-en&quot;</span>)
translator(<span class="hljs-string">&quot;Ce cours est produit par Hugging Face.&quot;</span>)`}}),Pi=new T({props:{code:"[{'translation_text': 'This course is produced by Hugging Face.'}]",highlighted:'[{<span class="hljs-string">&#x27;translation_text&#x27;</span>: <span class="hljs-string">&#x27;This course is produced by Hugging Face.&#x27;</span>}]'}}),De=new Me({props:{$$slots:{default:[ic]},$$scope:{ctx:S}}}),{c(){m=n("meta"),_=c(),f=n("h1"),b=n("a"),$=n("span"),w(h.$$.fragment),g=c(),v=n("span"),P=o("Cosa fanno i Transformer?"),k=c(),w(I.$$.fragment),A=c(),j=n("p"),W=o("In questa sezione, vedremo di cosa sono capaci i modelli Transformer e useremo il nostro primo strumento della libreria \u{1F917} Transformer: la funzione "),R=n("code"),Y=o("pipeline()"),rs=o("."),vt=c(),w(le.$$.fragment),$t=c(),J=n("h2"),re=n("a"),Zi=n("span"),w(Ge.$$.fragment),ps=c(),Ki=n("span"),cs=o("I Transformer sono ovunque!"),_t=c(),Ti=n("p"),us=o("I modelli Transformer sono utilizzati per eseguire qualsiasi compito di NLP, come ad esempio quelli menzionati nelle sezioni precedenti. Ecco alcune delle aziende e organizzazioni che utilizzano Hugging Face e i modelli Transformer, e contribuiscono a loro volta alla comunit\xE0 condividendo i propri modelli:"),bt=c(),pe=n("img"),wt=c(),F=n("p"),ms=o("La "),Ue=n("a"),ds=o("libreria \u{1F917} Transformer"),fs=o(" fornisce la funzionalit\xE0 per creare e utilizzare questi modelli condivisi. Il "),Qe=n("a"),hs=o("Model Hub"),gs=o(" contiene migliaia di modelli pre-addestrati che possono essere scaricati e usati liberamente. Puoi anche caricare i tuoi modelli nell\u2019Hub!"),zt=c(),w(ce.$$.fragment),Et=c(),Si=n("p"),vs=o("Prima di scoprire come funzionino i modelli Transformer dietro le quinte, vediamo qualche esempio di come questi possano essere utilizzati per risolvere alcuni problemi interessanti di NLP."),xt=c(),Z=n("h2"),ue=n("a"),Xi=n("span"),w(Be.$$.fragment),$s=c(),ea=n("span"),_s=o("Lavorare con le pipeline"),qt=c(),w(Ve.$$.fragment),yt=c(),me=n("p"),bs=o("L\u2019oggetto pi\xF9 basilare della libreria \u{1F917} Transformer \xE8 la funzione "),ia=n("code"),ws=o("pipeline()"),zs=o(". Questa connette un modello con tutte le fasi necessarie di preprocessing e postprocessing, permettendoci cos\xEC di fornire un qualsiasi testo come input diretto e ottenere una risposta intelligibile:"),jt=c(),w(We.$$.fragment),kt=c(),w(Ye.$$.fragment),Pt=c(),Hi=n("p"),Es=o("\xC8 anche possibile lavorare su pi\xF9 frasi!"),It=c(),w(Je.$$.fragment),Ct=c(),w(Ze.$$.fragment),At=c(),de=n("p"),xs=o("Per default, questa pipeline seleziona un preciso modello pre-addestrato che \xE8 stato affinato per il sentiment analysis in inglese. Quando creiamo l\u2019oggetto "),aa=n("code"),qs=o("classifier"),ys=o(", il modello viene scaricato e memorizzato nella cache. Se inizializziamo di nuovo il comando, verr\xE0 utilizzato il modello salvato nella cache e non ci sar\xE0 quindi bisogno di scaricare di nuovo il modello."),Tt=c(),Oi=n("p"),js=o("Tre passaggi principali sono coinvolti quando passiamo del testo in un pipeline:"),St=c(),M=n("ol"),ta=n("li"),ks=o("Il testo \xE8 pre-elaborato in un formato che il modello pu\xF2 capire."),Ps=c(),oa=n("li"),Is=o("Gli input pre-elaborati vengono passati al modello."),Cs=c(),sa=n("li"),As=o("Le previsioni del modello sono post-elaborate in un formato accessibile all\u2019utilizzatore."),Ht=c(),fe=n("p"),Ts=o("Tra le "),Ke=n("a"),Ss=o("pipeline disponibili"),Hs=o(" al momento ci sono:"),Ot=c(),C=n("ul"),Li=n("li"),na=n("code"),Os=o("feature-extraction"),Ls=o(" (per ottenere la rappresentazione vettoriale di un testo)"),Ns=c(),la=n("li"),ra=n("code"),Ds=o("fill-mask"),Rs=c(),he=n("li"),pa=n("code"),Fs=o("ner"),Ms=o(" (riconoscimento delle entit\xE0 nominate, "),ca=n("em"),Gs=o("named entity recognition"),Us=o(")"),Qs=c(),ua=n("li"),ma=n("code"),Bs=o("question-answering"),Vs=c(),da=n("li"),fa=n("code"),Ws=o("sentiment-analysis"),Ys=c(),ha=n("li"),ga=n("code"),Js=o("summarization"),Zs=c(),va=n("li"),$a=n("code"),Ks=o("text-generation"),Xs=c(),_a=n("li"),ba=n("code"),en=o("translation"),an=c(),wa=n("li"),za=n("code"),tn=o("zero-shot-classification"),Lt=c(),Ni=n("p"),on=o("Proviamo a vederne alcune!"),Nt=c(),K=n("h2"),ge=n("a"),Ea=n("span"),w(Xe.$$.fragment),sn=c(),xa=n("span"),nn=o("Classificazione zero-shot"),Dt=c(),ve=n("p"),ln=o("Cominceremo con l\u2019affrontare un compito impegnativo che consiste nella classificazione di testi non etichettati. Si tratta di uno scenario comune in molti progetti pratici perch\xE9 l\u2019annotazione testuale richiede tempo e competenza settoriale. In questo caso d\u2019uso, la pipeline "),qa=n("code"),rn=o("zero-shot-classification"),pn=o(" \xE8 molto potente e permette di specificare le etichette da utilizzare per la classificazione, in modo da non dover fare affidamento sulle etichette del modello pre-addestrato. Abbiamo gi\xE0 visto come il modello riesca a classificare una frase utilizzando le etichette \u2018positiva\u2019 e \u2018negativa\u2019, ma \xE8 anche possibile classificare testi utilizzando una qualsiasi serie di etichette di nostra scelta."),Rt=c(),w(ei.$$.fragment),Ft=c(),w(ii.$$.fragment),Mt=c(),$e=n("p"),cn=o("Questa pipeline si chiama "),ya=n("em"),un=o("zero-shot"),mn=o(" perch\xE9 non hai bisogno di affinare il modello usando i tuoi dati per poterlo utilizzare. \xC8 direttamente in grado di generare una previsione probabilistica per qualsiasi lista di etichette tu voglia!"),Gt=c(),w(_e.$$.fragment),Ut=c(),X=n("h2"),be=n("a"),ja=n("span"),w(ai.$$.fragment),dn=c(),ka=n("span"),fn=o("Generazione di testi"),Qt=c(),we=n("p"),hn=o("Vediamo ora come utilizzare la pipeline per generare testi. L\u2019idea \xE8 di fornire un prompt ("),Pa=n("em"),gn=o("richiesta"),vn=o(") che verr\xE0 auto-completato dal modello, il quale generer\xE0 il testo mancante. Si tratta di un compito simile alla funzione di scrittura facilitata che troviamo al giorno d\u2019oggi in molti cellulari. La generazione di testi presenta una componente arbitraria, per cui non essere sorpreso/a se non ottieni gli stessi risultati che mostriamo qui sotto."),Bt=c(),w(ti.$$.fragment),Vt=c(),w(oi.$$.fragment),Wt=c(),G=n("p"),$n=o("Usando l\u2019argomento "),Ia=n("code"),_n=o("num_return_sequences"),bn=o(" puoi controllare quante sequenze diverse vengono generate e, con l\u2019argomento "),Ca=n("code"),wn=o("max_length"),zn=o(", la lunghezza totale dell\u2019output testuale."),Yt=c(),w(ze.$$.fragment),Jt=c(),ee=n("h2"),Ee=n("a"),Aa=n("span"),w(si.$$.fragment),En=c(),Ta=n("span"),xn=o("Utilizzo di un qualsiasi modello dell'Hub in una pipeline"),Zt=c(),U=n("p"),qn=o("Gli esempi precedenti utilizzavano il modello di default per il compito dato, ma puoi anche scegliere un modello particolare dell\u2019Hub da utilizzare in una pipeline per un compito specifico, come ad esempio la generazione testuale. Vai al "),ni=n("a"),yn=o("Model Hub"),jn=o(" e clicca sull\u2019etichetta corrispondente a destra, in modo da mostrare solo i modelli supportati per il compito in questione. Dovresti ritrovarti in una pagina come "),li=n("a"),kn=o("questa"),Pn=o("."),Kt=c(),xe=n("p"),In=o("Proviamo il modello "),ri=n("a"),Sa=n("code"),Cn=o("distilgpt2"),An=o("! Ecco come caricarlo nella pipeline usata in precedenza:"),Xt=c(),w(pi.$$.fragment),eo=c(),w(ci.$$.fragment),io=c(),Di=n("p"),Tn=o("Puoi affinare la ricerca di un modello cliccando sulle etichette corrispondenti alle lingue, e scegliere in seguito un modello che generi testo in un\u2019altra lingua. Il Model Hub contiene anche checkpoint per modelli multilingue che supportano numerose lingue."),ao=c(),Ri=n("p"),Sn=o("Quando avrai selezionato un modello cliccando su di esso, vedrai che esiste un widget che ti permette di provarlo direttamente online. In questo modo, puoi testare velocemente le capacit\xE0 del modello prima di scaricarlo."),to=c(),w(qe.$$.fragment),oo=c(),ie=n("h3"),ye=n("a"),Ha=n("span"),w(ui.$$.fragment),Hn=c(),Oa=n("span"),On=o("La Inference API"),so=c(),je=n("p"),Ln=o("Tutti i modelli possono essere testati direttamente attraverso il tuo browser utilizzando l\u2019Inference API che trovi nel "),mi=n("a"),Nn=o("sito"),Dn=o(" di Hugging Face. Puoi divertirti con il modello direttamente in questa pagina, inserendo testo personalizzato e osservando come il modello processi i dati fornitigli."),no=c(),ke=n("p"),Rn=o("La Inference API che alimenta il widget \xE8 disponibile anche come prodotto a pagamento, il che \xE8 comodo se ne hai bisogno per i tuoi flussi di lavoro. Vedi la "),di=n("a"),Fn=o("pagina dei prezzi"),Mn=o(" per maggiori informazioni."),lo=c(),ae=n("h2"),Pe=n("a"),La=n("span"),w(fi.$$.fragment),Gn=c(),Na=n("span"),Un=o("Mask filling"),ro=c(),Ie=n("p"),Qn=o("La prossima pipeline che proverai \xE8 "),Da=n("code"),Bn=o("fill-mask"),Vn=o(". L\u2019idea di questo compito \xE8 di completare gli spazi bianchi in un dato testo:"),po=c(),w(hi.$$.fragment),co=c(),w(gi.$$.fragment),uo=c(),N=n("p"),Wn=o("L\u2019argomento "),Ra=n("code"),Yn=o("top_k"),Jn=o(" gestisce il numero di possibilit\xE0 che vuoi mostrare. Nota che qui il modello inserisce la "),Fa=n("code"),Zn=o("<mask>"),Kn=o(" word speciale, la quale viene spesso chiamata "),Ma=n("em"),Xn=o("mask token"),el=o(". Altri modelli di tipo mask-filling potrebbero avere mask token diversi, quindi \xE8 sempre bene verificare quale sia la corretta mask word quando esploriamo nuovi modelli. Un modo per verificarla consiste nel trovare la mask word utilizzata nel widget."),mo=c(),w(Ce.$$.fragment),fo=c(),te=n("h2"),Ae=n("a"),Ga=n("span"),w(vi.$$.fragment),il=c(),Ua=n("span"),al=o("Riconoscimento delle entit\xE0 nominate"),ho=c(),Te=n("p"),tl=o("Il riconoscimento delle entit\xE0 nominate ("),Qa=n("em"),ol=o("Named entity recognition"),sl=o(", NER) \xE8 un compito in cui il modello deve determinare quali parti dell\u2019input testuale corrispondono a entit\xE0 quali persone, localit\xE0, o organizzazioni. Guardiamo a un esempio:"),go=c(),w($i.$$.fragment),vo=c(),w(_i.$$.fragment),$o=c(),Fi=n("p"),nl=o("Qui il modello ha correttamente identificato che Sylvain \xE8 una persona (PER), Hugging Face un\u2019organizzazione (ORG), e Brooklyn una localit\xE0 (LOC)."),_o=c(),H=n("p"),ll=o("Passiamo l\u2019opzione "),Ba=n("code"),rl=o("grouped_entities=True"),pl=o(" nella funzione di creazione della pipeline per raggruppare le parti frasali che corrispondono alla stessa entit\xE0: qui il modello raggruppa correttamente \u201CHugging\u201D e \u201CFace\u201D come singola organizzazione, nonostante il nome sia formato da pi\xF9 parole. A dire il vero, come vedremo nel prossimo capitolo, il preprocessing divide perfino alcune parole in parti pi\xF9 piccole. Ad esempio, "),Va=n("code"),cl=o("Sylvain"),ul=o(" viene suddiviso in quattro parti: "),Wa=n("code"),ml=o("S"),dl=o(", "),Ya=n("code"),fl=o("##yl"),hl=o(", "),Ja=n("code"),gl=o("##va"),vl=o(", and "),Za=n("code"),$l=o("##in"),_l=o(". Al momento del post-processing, la pipeline raggruppa le parti con successo."),bo=c(),w(Se.$$.fragment),wo=c(),oe=n("h2"),He=n("a"),Ka=n("span"),w(bi.$$.fragment),bl=c(),Xa=n("span"),wl=o("Risposta a domande"),zo=c(),Oe=n("p"),zl=o("La pipeline "),et=n("code"),El=o("question-answering"),xl=o(" risponde a domande utilizzando informazioni da un contesto prestabilito:"),Eo=c(),w(wi.$$.fragment),xo=c(),w(zi.$$.fragment),qo=c(),Mi=n("p"),ql=o("Nota che questa pipeline non genera risposte ma estrae informazioni da un contesto fornito."),yo=c(),se=n("h2"),Le=n("a"),it=n("span"),w(Ei.$$.fragment),yl=c(),at=n("span"),jl=o("Riassunto"),jo=c(),Gi=n("p"),kl=o("Quello del riassunto \xE8 un compito che trasforma un testo in un testo pi\xF9 breve, conservando tutti (o quasi) gli argomenti pi\xF9 importanti del testo di partenza. Ecco un esempio:"),ko=c(),w(xi.$$.fragment),Po=c(),w(qi.$$.fragment),Io=c(),Q=n("p"),Pl=o("Come nella generazione di testi, puoi specificare un "),tt=n("code"),Il=o("max_length"),Cl=o(" o "),ot=n("code"),Al=o("min_length"),Tl=o(" per il testo da generare."),Co=c(),ne=n("h2"),Ne=n("a"),st=n("span"),w(yi.$$.fragment),Sl=c(),nt=n("span"),Hl=o("Traduzione"),Ao=c(),B=n("p"),Ol=o("Per compiti di traduzione, puoi utilizzare un modello di default indicando la coppia linguistica nel nome del compito (come ad esempio "),lt=n("code"),Ll=o('"translation_en_to_fr"'),Nl=o("), anche se il metodo pi\xF9 semplice \xE8 di scegliere il modello che desideri utilizzare dal "),ji=n("a"),Dl=o("Model Hub"),Rl=o(". Qui in seguito traduciamo dal francese all\u2019inglese:"),To=c(),w(ki.$$.fragment),So=c(),w(Pi.$$.fragment),Ho=c(),V=n("p"),Fl=o("Come per le funzioni di generazione testuale e riassunto, \xE8 possibile specificare un "),rt=n("code"),Ml=o("max_length"),Gl=o(" o un "),pt=n("code"),Ul=o("min_length"),Ql=o(" per il risultato."),Oo=c(),w(De.$$.fragment),Lo=c(),Re=n("p"),Bl=o("Finora abbiamo mostrato pipeline a solo scopo dimostrativo. Tali pipeline sono state programmate per compiti ben specifici e non sono in grado di eseguire variazioni di questi ultimi. Nel prossimo capitolo, imparerai cosa si nasconde dentro la funzione "),ct=n("code"),Vl=o("pipeline()"),Wl=o(" e come personalizzarne il comportamento."),this.h()},l(e){const t=Gp('[data-svelte="svelte-1phssyn"]',document.head);m=l(t,"META",{name:!0,content:!0}),t.forEach(i),_=u(e),f=l(e,"H1",{class:!0});var Ii=r(f);b=l(Ii,"A",{id:!0,class:!0,href:!0});var ut=r(b);$=l(ut,"SPAN",{});var mt=r($);z(h.$$.fragment,mt),mt.forEach(i),ut.forEach(i),g=u(Ii),v=l(Ii,"SPAN",{});var dt=r(v);P=s(dt,"Cosa fanno i Transformer?"),dt.forEach(i),Ii.forEach(i),k=u(e),z(I.$$.fragment,e),A=u(e),j=l(e,"P",{});var Ci=r(j);W=s(Ci,"In questa sezione, vedremo di cosa sono capaci i modelli Transformer e useremo il nostro primo strumento della libreria \u{1F917} Transformer: la funzione "),R=l(Ci,"CODE",{});var ft=r(R);Y=s(ft,"pipeline()"),ft.forEach(i),rs=s(Ci,"."),Ci.forEach(i),vt=u(e),z(le.$$.fragment,e),$t=u(e),J=l(e,"H2",{class:!0});var Ai=r(J);re=l(Ai,"A",{id:!0,class:!0,href:!0});var ht=r(re);Zi=l(ht,"SPAN",{});var Zl=r(Zi);z(Ge.$$.fragment,Zl),Zl.forEach(i),ht.forEach(i),ps=u(Ai),Ki=l(Ai,"SPAN",{});var Kl=r(Ki);cs=s(Kl,"I Transformer sono ovunque!"),Kl.forEach(i),Ai.forEach(i),_t=u(e),Ti=l(e,"P",{});var Xl=r(Ti);us=s(Xl,"I modelli Transformer sono utilizzati per eseguire qualsiasi compito di NLP, come ad esempio quelli menzionati nelle sezioni precedenti. Ecco alcune delle aziende e organizzazioni che utilizzano Hugging Face e i modelli Transformer, e contribuiscono a loro volta alla comunit\xE0 condividendo i propri modelli:"),Xl.forEach(i),bt=u(e),pe=l(e,"IMG",{src:!0,alt:!0,width:!0}),wt=u(e),F=l(e,"P",{});var Ui=r(F);ms=s(Ui,"La "),Ue=l(Ui,"A",{href:!0,rel:!0});var er=r(Ue);ds=s(er,"libreria \u{1F917} Transformer"),er.forEach(i),fs=s(Ui," fornisce la funzionalit\xE0 per creare e utilizzare questi modelli condivisi. Il "),Qe=l(Ui,"A",{href:!0,rel:!0});var ir=r(Qe);hs=s(ir,"Model Hub"),ir.forEach(i),gs=s(Ui," contiene migliaia di modelli pre-addestrati che possono essere scaricati e usati liberamente. Puoi anche caricare i tuoi modelli nell\u2019Hub!"),Ui.forEach(i),zt=u(e),z(ce.$$.fragment,e),Et=u(e),Si=l(e,"P",{});var ar=r(Si);vs=s(ar,"Prima di scoprire come funzionino i modelli Transformer dietro le quinte, vediamo qualche esempio di come questi possano essere utilizzati per risolvere alcuni problemi interessanti di NLP."),ar.forEach(i),xt=u(e),Z=l(e,"H2",{class:!0});var Do=r(Z);ue=l(Do,"A",{id:!0,class:!0,href:!0});var tr=r(ue);Xi=l(tr,"SPAN",{});var or=r(Xi);z(Be.$$.fragment,or),or.forEach(i),tr.forEach(i),$s=u(Do),ea=l(Do,"SPAN",{});var sr=r(ea);_s=s(sr,"Lavorare con le pipeline"),sr.forEach(i),Do.forEach(i),qt=u(e),z(Ve.$$.fragment,e),yt=u(e),me=l(e,"P",{});var Ro=r(me);bs=s(Ro,"L\u2019oggetto pi\xF9 basilare della libreria \u{1F917} Transformer \xE8 la funzione "),ia=l(Ro,"CODE",{});var nr=r(ia);ws=s(nr,"pipeline()"),nr.forEach(i),zs=s(Ro,". Questa connette un modello con tutte le fasi necessarie di preprocessing e postprocessing, permettendoci cos\xEC di fornire un qualsiasi testo come input diretto e ottenere una risposta intelligibile:"),Ro.forEach(i),jt=u(e),z(We.$$.fragment,e),kt=u(e),z(Ye.$$.fragment,e),Pt=u(e),Hi=l(e,"P",{});var lr=r(Hi);Es=s(lr,"\xC8 anche possibile lavorare su pi\xF9 frasi!"),lr.forEach(i),It=u(e),z(Je.$$.fragment,e),Ct=u(e),z(Ze.$$.fragment,e),At=u(e),de=l(e,"P",{});var Fo=r(de);xs=s(Fo,"Per default, questa pipeline seleziona un preciso modello pre-addestrato che \xE8 stato affinato per il sentiment analysis in inglese. Quando creiamo l\u2019oggetto "),aa=l(Fo,"CODE",{});var rr=r(aa);qs=s(rr,"classifier"),rr.forEach(i),ys=s(Fo,", il modello viene scaricato e memorizzato nella cache. Se inizializziamo di nuovo il comando, verr\xE0 utilizzato il modello salvato nella cache e non ci sar\xE0 quindi bisogno di scaricare di nuovo il modello."),Fo.forEach(i),Tt=u(e),Oi=l(e,"P",{});var pr=r(Oi);js=s(pr,"Tre passaggi principali sono coinvolti quando passiamo del testo in un pipeline:"),pr.forEach(i),St=u(e),M=l(e,"OL",{});var Qi=r(M);ta=l(Qi,"LI",{});var cr=r(ta);ks=s(cr,"Il testo \xE8 pre-elaborato in un formato che il modello pu\xF2 capire."),cr.forEach(i),Ps=u(Qi),oa=l(Qi,"LI",{});var ur=r(oa);Is=s(ur,"Gli input pre-elaborati vengono passati al modello."),ur.forEach(i),Cs=u(Qi),sa=l(Qi,"LI",{});var mr=r(sa);As=s(mr,"Le previsioni del modello sono post-elaborate in un formato accessibile all\u2019utilizzatore."),mr.forEach(i),Qi.forEach(i),Ht=u(e),fe=l(e,"P",{});var Mo=r(fe);Ts=s(Mo,"Tra le "),Ke=l(Mo,"A",{href:!0,rel:!0});var dr=r(Ke);Ss=s(dr,"pipeline disponibili"),dr.forEach(i),Hs=s(Mo," al momento ci sono:"),Mo.forEach(i),Ot=u(e),C=l(e,"UL",{});var O=r(C);Li=l(O,"LI",{});var Yl=r(Li);na=l(Yl,"CODE",{});var fr=r(na);Os=s(fr,"feature-extraction"),fr.forEach(i),Ls=s(Yl," (per ottenere la rappresentazione vettoriale di un testo)"),Yl.forEach(i),Ns=u(O),la=l(O,"LI",{});var hr=r(la);ra=l(hr,"CODE",{});var gr=r(ra);Ds=s(gr,"fill-mask"),gr.forEach(i),hr.forEach(i),Rs=u(O),he=l(O,"LI",{});var gt=r(he);pa=l(gt,"CODE",{});var vr=r(pa);Fs=s(vr,"ner"),vr.forEach(i),Ms=s(gt," (riconoscimento delle entit\xE0 nominate, "),ca=l(gt,"EM",{});var $r=r(ca);Gs=s($r,"named entity recognition"),$r.forEach(i),Us=s(gt,")"),gt.forEach(i),Qs=u(O),ua=l(O,"LI",{});var _r=r(ua);ma=l(_r,"CODE",{});var br=r(ma);Bs=s(br,"question-answering"),br.forEach(i),_r.forEach(i),Vs=u(O),da=l(O,"LI",{});var wr=r(da);fa=l(wr,"CODE",{});var zr=r(fa);Ws=s(zr,"sentiment-analysis"),zr.forEach(i),wr.forEach(i),Ys=u(O),ha=l(O,"LI",{});var Er=r(ha);ga=l(Er,"CODE",{});var xr=r(ga);Js=s(xr,"summarization"),xr.forEach(i),Er.forEach(i),Zs=u(O),va=l(O,"LI",{});var qr=r(va);$a=l(qr,"CODE",{});var yr=r($a);Ks=s(yr,"text-generation"),yr.forEach(i),qr.forEach(i),Xs=u(O),_a=l(O,"LI",{});var jr=r(_a);ba=l(jr,"CODE",{});var kr=r(ba);en=s(kr,"translation"),kr.forEach(i),jr.forEach(i),an=u(O),wa=l(O,"LI",{});var Pr=r(wa);za=l(Pr,"CODE",{});var Ir=r(za);tn=s(Ir,"zero-shot-classification"),Ir.forEach(i),Pr.forEach(i),O.forEach(i),Lt=u(e),Ni=l(e,"P",{});var Cr=r(Ni);on=s(Cr,"Proviamo a vederne alcune!"),Cr.forEach(i),Nt=u(e),K=l(e,"H2",{class:!0});var Go=r(K);ge=l(Go,"A",{id:!0,class:!0,href:!0});var Ar=r(ge);Ea=l(Ar,"SPAN",{});var Tr=r(Ea);z(Xe.$$.fragment,Tr),Tr.forEach(i),Ar.forEach(i),sn=u(Go),xa=l(Go,"SPAN",{});var Sr=r(xa);nn=s(Sr,"Classificazione zero-shot"),Sr.forEach(i),Go.forEach(i),Dt=u(e),ve=l(e,"P",{});var Uo=r(ve);ln=s(Uo,"Cominceremo con l\u2019affrontare un compito impegnativo che consiste nella classificazione di testi non etichettati. Si tratta di uno scenario comune in molti progetti pratici perch\xE9 l\u2019annotazione testuale richiede tempo e competenza settoriale. In questo caso d\u2019uso, la pipeline "),qa=l(Uo,"CODE",{});var Hr=r(qa);rn=s(Hr,"zero-shot-classification"),Hr.forEach(i),pn=s(Uo," \xE8 molto potente e permette di specificare le etichette da utilizzare per la classificazione, in modo da non dover fare affidamento sulle etichette del modello pre-addestrato. Abbiamo gi\xE0 visto come il modello riesca a classificare una frase utilizzando le etichette \u2018positiva\u2019 e \u2018negativa\u2019, ma \xE8 anche possibile classificare testi utilizzando una qualsiasi serie di etichette di nostra scelta."),Uo.forEach(i),Rt=u(e),z(ei.$$.fragment,e),Ft=u(e),z(ii.$$.fragment,e),Mt=u(e),$e=l(e,"P",{});var Qo=r($e);cn=s(Qo,"Questa pipeline si chiama "),ya=l(Qo,"EM",{});var Or=r(ya);un=s(Or,"zero-shot"),Or.forEach(i),mn=s(Qo," perch\xE9 non hai bisogno di affinare il modello usando i tuoi dati per poterlo utilizzare. \xC8 direttamente in grado di generare una previsione probabilistica per qualsiasi lista di etichette tu voglia!"),Qo.forEach(i),Gt=u(e),z(_e.$$.fragment,e),Ut=u(e),X=l(e,"H2",{class:!0});var Bo=r(X);be=l(Bo,"A",{id:!0,class:!0,href:!0});var Lr=r(be);ja=l(Lr,"SPAN",{});var Nr=r(ja);z(ai.$$.fragment,Nr),Nr.forEach(i),Lr.forEach(i),dn=u(Bo),ka=l(Bo,"SPAN",{});var Dr=r(ka);fn=s(Dr,"Generazione di testi"),Dr.forEach(i),Bo.forEach(i),Qt=u(e),we=l(e,"P",{});var Vo=r(we);hn=s(Vo,"Vediamo ora come utilizzare la pipeline per generare testi. L\u2019idea \xE8 di fornire un prompt ("),Pa=l(Vo,"EM",{});var Rr=r(Pa);gn=s(Rr,"richiesta"),Rr.forEach(i),vn=s(Vo,") che verr\xE0 auto-completato dal modello, il quale generer\xE0 il testo mancante. Si tratta di un compito simile alla funzione di scrittura facilitata che troviamo al giorno d\u2019oggi in molti cellulari. La generazione di testi presenta una componente arbitraria, per cui non essere sorpreso/a se non ottieni gli stessi risultati che mostriamo qui sotto."),Vo.forEach(i),Bt=u(e),z(ti.$$.fragment,e),Vt=u(e),z(oi.$$.fragment,e),Wt=u(e),G=l(e,"P",{});var Bi=r(G);$n=s(Bi,"Usando l\u2019argomento "),Ia=l(Bi,"CODE",{});var Fr=r(Ia);_n=s(Fr,"num_return_sequences"),Fr.forEach(i),bn=s(Bi," puoi controllare quante sequenze diverse vengono generate e, con l\u2019argomento "),Ca=l(Bi,"CODE",{});var Mr=r(Ca);wn=s(Mr,"max_length"),Mr.forEach(i),zn=s(Bi,", la lunghezza totale dell\u2019output testuale."),Bi.forEach(i),Yt=u(e),z(ze.$$.fragment,e),Jt=u(e),ee=l(e,"H2",{class:!0});var Wo=r(ee);Ee=l(Wo,"A",{id:!0,class:!0,href:!0});var Gr=r(Ee);Aa=l(Gr,"SPAN",{});var Ur=r(Aa);z(si.$$.fragment,Ur),Ur.forEach(i),Gr.forEach(i),En=u(Wo),Ta=l(Wo,"SPAN",{});var Qr=r(Ta);xn=s(Qr,"Utilizzo di un qualsiasi modello dell'Hub in una pipeline"),Qr.forEach(i),Wo.forEach(i),Zt=u(e),U=l(e,"P",{});var Vi=r(U);qn=s(Vi,"Gli esempi precedenti utilizzavano il modello di default per il compito dato, ma puoi anche scegliere un modello particolare dell\u2019Hub da utilizzare in una pipeline per un compito specifico, come ad esempio la generazione testuale. Vai al "),ni=l(Vi,"A",{href:!0,rel:!0});var Br=r(ni);yn=s(Br,"Model Hub"),Br.forEach(i),jn=s(Vi," e clicca sull\u2019etichetta corrispondente a destra, in modo da mostrare solo i modelli supportati per il compito in questione. Dovresti ritrovarti in una pagina come "),li=l(Vi,"A",{href:!0,rel:!0});var Vr=r(li);kn=s(Vr,"questa"),Vr.forEach(i),Pn=s(Vi,"."),Vi.forEach(i),Kt=u(e),xe=l(e,"P",{});var Yo=r(xe);In=s(Yo,"Proviamo il modello "),ri=l(Yo,"A",{href:!0,rel:!0});var Wr=r(ri);Sa=l(Wr,"CODE",{});var Yr=r(Sa);Cn=s(Yr,"distilgpt2"),Yr.forEach(i),Wr.forEach(i),An=s(Yo,"! Ecco come caricarlo nella pipeline usata in precedenza:"),Yo.forEach(i),Xt=u(e),z(pi.$$.fragment,e),eo=u(e),z(ci.$$.fragment,e),io=u(e),Di=l(e,"P",{});var Jr=r(Di);Tn=s(Jr,"Puoi affinare la ricerca di un modello cliccando sulle etichette corrispondenti alle lingue, e scegliere in seguito un modello che generi testo in un\u2019altra lingua. Il Model Hub contiene anche checkpoint per modelli multilingue che supportano numerose lingue."),Jr.forEach(i),ao=u(e),Ri=l(e,"P",{});var Zr=r(Ri);Sn=s(Zr,"Quando avrai selezionato un modello cliccando su di esso, vedrai che esiste un widget che ti permette di provarlo direttamente online. In questo modo, puoi testare velocemente le capacit\xE0 del modello prima di scaricarlo."),Zr.forEach(i),to=u(e),z(qe.$$.fragment,e),oo=u(e),ie=l(e,"H3",{class:!0});var Jo=r(ie);ye=l(Jo,"A",{id:!0,class:!0,href:!0});var Kr=r(ye);Ha=l(Kr,"SPAN",{});var Xr=r(Ha);z(ui.$$.fragment,Xr),Xr.forEach(i),Kr.forEach(i),Hn=u(Jo),Oa=l(Jo,"SPAN",{});var ep=r(Oa);On=s(ep,"La Inference API"),ep.forEach(i),Jo.forEach(i),so=u(e),je=l(e,"P",{});var Zo=r(je);Ln=s(Zo,"Tutti i modelli possono essere testati direttamente attraverso il tuo browser utilizzando l\u2019Inference API che trovi nel "),mi=l(Zo,"A",{href:!0,rel:!0});var ip=r(mi);Nn=s(ip,"sito"),ip.forEach(i),Dn=s(Zo," di Hugging Face. Puoi divertirti con il modello direttamente in questa pagina, inserendo testo personalizzato e osservando come il modello processi i dati fornitigli."),Zo.forEach(i),no=u(e),ke=l(e,"P",{});var Ko=r(ke);Rn=s(Ko,"La Inference API che alimenta il widget \xE8 disponibile anche come prodotto a pagamento, il che \xE8 comodo se ne hai bisogno per i tuoi flussi di lavoro. Vedi la "),di=l(Ko,"A",{href:!0,rel:!0});var ap=r(di);Fn=s(ap,"pagina dei prezzi"),ap.forEach(i),Mn=s(Ko," per maggiori informazioni."),Ko.forEach(i),lo=u(e),ae=l(e,"H2",{class:!0});var Xo=r(ae);Pe=l(Xo,"A",{id:!0,class:!0,href:!0});var tp=r(Pe);La=l(tp,"SPAN",{});var op=r(La);z(fi.$$.fragment,op),op.forEach(i),tp.forEach(i),Gn=u(Xo),Na=l(Xo,"SPAN",{});var sp=r(Na);Un=s(sp,"Mask filling"),sp.forEach(i),Xo.forEach(i),ro=u(e),Ie=l(e,"P",{});var es=r(Ie);Qn=s(es,"La prossima pipeline che proverai \xE8 "),Da=l(es,"CODE",{});var np=r(Da);Bn=s(np,"fill-mask"),np.forEach(i),Vn=s(es,". L\u2019idea di questo compito \xE8 di completare gli spazi bianchi in un dato testo:"),es.forEach(i),po=u(e),z(hi.$$.fragment,e),co=u(e),z(gi.$$.fragment,e),uo=u(e),N=l(e,"P",{});var Fe=r(N);Wn=s(Fe,"L\u2019argomento "),Ra=l(Fe,"CODE",{});var lp=r(Ra);Yn=s(lp,"top_k"),lp.forEach(i),Jn=s(Fe," gestisce il numero di possibilit\xE0 che vuoi mostrare. Nota che qui il modello inserisce la "),Fa=l(Fe,"CODE",{});var rp=r(Fa);Zn=s(rp,"<mask>"),rp.forEach(i),Kn=s(Fe," word speciale, la quale viene spesso chiamata "),Ma=l(Fe,"EM",{});var pp=r(Ma);Xn=s(pp,"mask token"),pp.forEach(i),el=s(Fe,". Altri modelli di tipo mask-filling potrebbero avere mask token diversi, quindi \xE8 sempre bene verificare quale sia la corretta mask word quando esploriamo nuovi modelli. Un modo per verificarla consiste nel trovare la mask word utilizzata nel widget."),Fe.forEach(i),mo=u(e),z(Ce.$$.fragment,e),fo=u(e),te=l(e,"H2",{class:!0});var is=r(te);Ae=l(is,"A",{id:!0,class:!0,href:!0});var cp=r(Ae);Ga=l(cp,"SPAN",{});var up=r(Ga);z(vi.$$.fragment,up),up.forEach(i),cp.forEach(i),il=u(is),Ua=l(is,"SPAN",{});var mp=r(Ua);al=s(mp,"Riconoscimento delle entit\xE0 nominate"),mp.forEach(i),is.forEach(i),ho=u(e),Te=l(e,"P",{});var as=r(Te);tl=s(as,"Il riconoscimento delle entit\xE0 nominate ("),Qa=l(as,"EM",{});var dp=r(Qa);ol=s(dp,"Named entity recognition"),dp.forEach(i),sl=s(as,", NER) \xE8 un compito in cui il modello deve determinare quali parti dell\u2019input testuale corrispondono a entit\xE0 quali persone, localit\xE0, o organizzazioni. Guardiamo a un esempio:"),as.forEach(i),go=u(e),z($i.$$.fragment,e),vo=u(e),z(_i.$$.fragment,e),$o=u(e),Fi=l(e,"P",{});var fp=r(Fi);nl=s(fp,"Qui il modello ha correttamente identificato che Sylvain \xE8 una persona (PER), Hugging Face un\u2019organizzazione (ORG), e Brooklyn una localit\xE0 (LOC)."),fp.forEach(i),_o=u(e),H=l(e,"P",{});var L=r(H);ll=s(L,"Passiamo l\u2019opzione "),Ba=l(L,"CODE",{});var hp=r(Ba);rl=s(hp,"grouped_entities=True"),hp.forEach(i),pl=s(L," nella funzione di creazione della pipeline per raggruppare le parti frasali che corrispondono alla stessa entit\xE0: qui il modello raggruppa correttamente \u201CHugging\u201D e \u201CFace\u201D come singola organizzazione, nonostante il nome sia formato da pi\xF9 parole. A dire il vero, come vedremo nel prossimo capitolo, il preprocessing divide perfino alcune parole in parti pi\xF9 piccole. Ad esempio, "),Va=l(L,"CODE",{});var gp=r(Va);cl=s(gp,"Sylvain"),gp.forEach(i),ul=s(L," viene suddiviso in quattro parti: "),Wa=l(L,"CODE",{});var vp=r(Wa);ml=s(vp,"S"),vp.forEach(i),dl=s(L,", "),Ya=l(L,"CODE",{});var $p=r(Ya);fl=s($p,"##yl"),$p.forEach(i),hl=s(L,", "),Ja=l(L,"CODE",{});var _p=r(Ja);gl=s(_p,"##va"),_p.forEach(i),vl=s(L,", and "),Za=l(L,"CODE",{});var bp=r(Za);$l=s(bp,"##in"),bp.forEach(i),_l=s(L,". Al momento del post-processing, la pipeline raggruppa le parti con successo."),L.forEach(i),bo=u(e),z(Se.$$.fragment,e),wo=u(e),oe=l(e,"H2",{class:!0});var ts=r(oe);He=l(ts,"A",{id:!0,class:!0,href:!0});var wp=r(He);Ka=l(wp,"SPAN",{});var zp=r(Ka);z(bi.$$.fragment,zp),zp.forEach(i),wp.forEach(i),bl=u(ts),Xa=l(ts,"SPAN",{});var Ep=r(Xa);wl=s(Ep,"Risposta a domande"),Ep.forEach(i),ts.forEach(i),zo=u(e),Oe=l(e,"P",{});var os=r(Oe);zl=s(os,"La pipeline "),et=l(os,"CODE",{});var xp=r(et);El=s(xp,"question-answering"),xp.forEach(i),xl=s(os," risponde a domande utilizzando informazioni da un contesto prestabilito:"),os.forEach(i),Eo=u(e),z(wi.$$.fragment,e),xo=u(e),z(zi.$$.fragment,e),qo=u(e),Mi=l(e,"P",{});var qp=r(Mi);ql=s(qp,"Nota che questa pipeline non genera risposte ma estrae informazioni da un contesto fornito."),qp.forEach(i),yo=u(e),se=l(e,"H2",{class:!0});var ss=r(se);Le=l(ss,"A",{id:!0,class:!0,href:!0});var yp=r(Le);it=l(yp,"SPAN",{});var jp=r(it);z(Ei.$$.fragment,jp),jp.forEach(i),yp.forEach(i),yl=u(ss),at=l(ss,"SPAN",{});var kp=r(at);jl=s(kp,"Riassunto"),kp.forEach(i),ss.forEach(i),jo=u(e),Gi=l(e,"P",{});var Pp=r(Gi);kl=s(Pp,"Quello del riassunto \xE8 un compito che trasforma un testo in un testo pi\xF9 breve, conservando tutti (o quasi) gli argomenti pi\xF9 importanti del testo di partenza. Ecco un esempio:"),Pp.forEach(i),ko=u(e),z(xi.$$.fragment,e),Po=u(e),z(qi.$$.fragment,e),Io=u(e),Q=l(e,"P",{});var Wi=r(Q);Pl=s(Wi,"Come nella generazione di testi, puoi specificare un "),tt=l(Wi,"CODE",{});var Ip=r(tt);Il=s(Ip,"max_length"),Ip.forEach(i),Cl=s(Wi," o "),ot=l(Wi,"CODE",{});var Cp=r(ot);Al=s(Cp,"min_length"),Cp.forEach(i),Tl=s(Wi," per il testo da generare."),Wi.forEach(i),Co=u(e),ne=l(e,"H2",{class:!0});var ns=r(ne);Ne=l(ns,"A",{id:!0,class:!0,href:!0});var Ap=r(Ne);st=l(Ap,"SPAN",{});var Tp=r(st);z(yi.$$.fragment,Tp),Tp.forEach(i),Ap.forEach(i),Sl=u(ns),nt=l(ns,"SPAN",{});var Sp=r(nt);Hl=s(Sp,"Traduzione"),Sp.forEach(i),ns.forEach(i),Ao=u(e),B=l(e,"P",{});var Yi=r(B);Ol=s(Yi,"Per compiti di traduzione, puoi utilizzare un modello di default indicando la coppia linguistica nel nome del compito (come ad esempio "),lt=l(Yi,"CODE",{});var Hp=r(lt);Ll=s(Hp,'"translation_en_to_fr"'),Hp.forEach(i),Nl=s(Yi,"), anche se il metodo pi\xF9 semplice \xE8 di scegliere il modello che desideri utilizzare dal "),ji=l(Yi,"A",{href:!0,rel:!0});var Op=r(ji);Dl=s(Op,"Model Hub"),Op.forEach(i),Rl=s(Yi,". Qui in seguito traduciamo dal francese all\u2019inglese:"),Yi.forEach(i),To=u(e),z(ki.$$.fragment,e),So=u(e),z(Pi.$$.fragment,e),Ho=u(e),V=l(e,"P",{});var Ji=r(V);Fl=s(Ji,"Come per le funzioni di generazione testuale e riassunto, \xE8 possibile specificare un "),rt=l(Ji,"CODE",{});var Lp=r(rt);Ml=s(Lp,"max_length"),Lp.forEach(i),Gl=s(Ji," o un "),pt=l(Ji,"CODE",{});var Np=r(pt);Ul=s(Np,"min_length"),Np.forEach(i),Ql=s(Ji," per il risultato."),Ji.forEach(i),Oo=u(e),z(De.$$.fragment,e),Lo=u(e),Re=l(e,"P",{});var ls=r(Re);Bl=s(ls,"Finora abbiamo mostrato pipeline a solo scopo dimostrativo. Tali pipeline sono state programmate per compiti ben specifici e non sono in grado di eseguire variazioni di questi ultimi. Nel prossimo capitolo, imparerai cosa si nasconde dentro la funzione "),ct=l(ls,"CODE",{});var Dp=r(ct);Vl=s(Dp,"pipeline()"),Dp.forEach(i),Wl=s(ls," e come personalizzarne il comportamento."),ls.forEach(i),this.h()},h(){d(m,"name","hf:doc:metadata"),d(m,"content",JSON.stringify(tc)),d(b,"id","cosa-fanno-i-transformer"),d(b,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(b,"href","#cosa-fanno-i-transformer"),d(f,"class","relative group"),d(re,"id","i-transformer-sono-ovunque"),d(re,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(re,"href","#i-transformer-sono-ovunque"),d(J,"class","relative group"),Up(pe.src,Jl="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/companies.PNG")||d(pe,"src",Jl),d(pe,"alt","Companies using Hugging Face"),d(pe,"width","100%"),d(Ue,"href","https://github.com/huggingface/transformers"),d(Ue,"rel","nofollow"),d(Qe,"href","https://huggingface.co/models"),d(Qe,"rel","nofollow"),d(ue,"id","lavorare-con-le-pipeline"),d(ue,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(ue,"href","#lavorare-con-le-pipeline"),d(Z,"class","relative group"),d(Ke,"href","https://huggingface.co/transformers/main_classes/pipelines.html"),d(Ke,"rel","nofollow"),d(ge,"id","classificazione-zeroshot"),d(ge,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(ge,"href","#classificazione-zeroshot"),d(K,"class","relative group"),d(be,"id","generazione-di-testi"),d(be,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(be,"href","#generazione-di-testi"),d(X,"class","relative group"),d(Ee,"id","utilizzo-di-un-qualsiasi-modello-dellhub-in-una-pipeline"),d(Ee,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(Ee,"href","#utilizzo-di-un-qualsiasi-modello-dellhub-in-una-pipeline"),d(ee,"class","relative group"),d(ni,"href","https://huggingface.co/models"),d(ni,"rel","nofollow"),d(li,"href","https://huggingface.co/models?pipeline_tag=text-generation"),d(li,"rel","nofollow"),d(ri,"href","https://huggingface.co/distilgpt2"),d(ri,"rel","nofollow"),d(ye,"id","la-inference-api"),d(ye,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(ye,"href","#la-inference-api"),d(ie,"class","relative group"),d(mi,"href","https://huggingface.co/"),d(mi,"rel","nofollow"),d(di,"href","https://huggingface.co/pricing"),d(di,"rel","nofollow"),d(Pe,"id","mask-filling"),d(Pe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(Pe,"href","#mask-filling"),d(ae,"class","relative group"),d(Ae,"id","riconoscimento-delle-entit-nominate"),d(Ae,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(Ae,"href","#riconoscimento-delle-entit-nominate"),d(te,"class","relative group"),d(He,"id","risposta-a-domande"),d(He,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(He,"href","#risposta-a-domande"),d(oe,"class","relative group"),d(Le,"id","riassunto"),d(Le,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(Le,"href","#riassunto"),d(se,"class","relative group"),d(Ne,"id","traduzione"),d(Ne,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(Ne,"href","#traduzione"),d(ne,"class","relative group"),d(ji,"href","https://huggingface.co/models"),d(ji,"rel","nofollow")},m(e,t){a(document.head,m),p(e,_,t),p(e,f,t),a(f,b),a(b,$),E(h,$,null),a(f,g),a(f,v),a(v,P),p(e,k,t),E(I,e,t),p(e,A,t),p(e,j,t),a(j,W),a(j,R),a(R,Y),a(j,rs),p(e,vt,t),E(le,e,t),p(e,$t,t),p(e,J,t),a(J,re),a(re,Zi),E(Ge,Zi,null),a(J,ps),a(J,Ki),a(Ki,cs),p(e,_t,t),p(e,Ti,t),a(Ti,us),p(e,bt,t),p(e,pe,t),p(e,wt,t),p(e,F,t),a(F,ms),a(F,Ue),a(Ue,ds),a(F,fs),a(F,Qe),a(Qe,hs),a(F,gs),p(e,zt,t),E(ce,e,t),p(e,Et,t),p(e,Si,t),a(Si,vs),p(e,xt,t),p(e,Z,t),a(Z,ue),a(ue,Xi),E(Be,Xi,null),a(Z,$s),a(Z,ea),a(ea,_s),p(e,qt,t),E(Ve,e,t),p(e,yt,t),p(e,me,t),a(me,bs),a(me,ia),a(ia,ws),a(me,zs),p(e,jt,t),E(We,e,t),p(e,kt,t),E(Ye,e,t),p(e,Pt,t),p(e,Hi,t),a(Hi,Es),p(e,It,t),E(Je,e,t),p(e,Ct,t),E(Ze,e,t),p(e,At,t),p(e,de,t),a(de,xs),a(de,aa),a(aa,qs),a(de,ys),p(e,Tt,t),p(e,Oi,t),a(Oi,js),p(e,St,t),p(e,M,t),a(M,ta),a(ta,ks),a(M,Ps),a(M,oa),a(oa,Is),a(M,Cs),a(M,sa),a(sa,As),p(e,Ht,t),p(e,fe,t),a(fe,Ts),a(fe,Ke),a(Ke,Ss),a(fe,Hs),p(e,Ot,t),p(e,C,t),a(C,Li),a(Li,na),a(na,Os),a(Li,Ls),a(C,Ns),a(C,la),a(la,ra),a(ra,Ds),a(C,Rs),a(C,he),a(he,pa),a(pa,Fs),a(he,Ms),a(he,ca),a(ca,Gs),a(he,Us),a(C,Qs),a(C,ua),a(ua,ma),a(ma,Bs),a(C,Vs),a(C,da),a(da,fa),a(fa,Ws),a(C,Ys),a(C,ha),a(ha,ga),a(ga,Js),a(C,Zs),a(C,va),a(va,$a),a($a,Ks),a(C,Xs),a(C,_a),a(_a,ba),a(ba,en),a(C,an),a(C,wa),a(wa,za),a(za,tn),p(e,Lt,t),p(e,Ni,t),a(Ni,on),p(e,Nt,t),p(e,K,t),a(K,ge),a(ge,Ea),E(Xe,Ea,null),a(K,sn),a(K,xa),a(xa,nn),p(e,Dt,t),p(e,ve,t),a(ve,ln),a(ve,qa),a(qa,rn),a(ve,pn),p(e,Rt,t),E(ei,e,t),p(e,Ft,t),E(ii,e,t),p(e,Mt,t),p(e,$e,t),a($e,cn),a($e,ya),a(ya,un),a($e,mn),p(e,Gt,t),E(_e,e,t),p(e,Ut,t),p(e,X,t),a(X,be),a(be,ja),E(ai,ja,null),a(X,dn),a(X,ka),a(ka,fn),p(e,Qt,t),p(e,we,t),a(we,hn),a(we,Pa),a(Pa,gn),a(we,vn),p(e,Bt,t),E(ti,e,t),p(e,Vt,t),E(oi,e,t),p(e,Wt,t),p(e,G,t),a(G,$n),a(G,Ia),a(Ia,_n),a(G,bn),a(G,Ca),a(Ca,wn),a(G,zn),p(e,Yt,t),E(ze,e,t),p(e,Jt,t),p(e,ee,t),a(ee,Ee),a(Ee,Aa),E(si,Aa,null),a(ee,En),a(ee,Ta),a(Ta,xn),p(e,Zt,t),p(e,U,t),a(U,qn),a(U,ni),a(ni,yn),a(U,jn),a(U,li),a(li,kn),a(U,Pn),p(e,Kt,t),p(e,xe,t),a(xe,In),a(xe,ri),a(ri,Sa),a(Sa,Cn),a(xe,An),p(e,Xt,t),E(pi,e,t),p(e,eo,t),E(ci,e,t),p(e,io,t),p(e,Di,t),a(Di,Tn),p(e,ao,t),p(e,Ri,t),a(Ri,Sn),p(e,to,t),E(qe,e,t),p(e,oo,t),p(e,ie,t),a(ie,ye),a(ye,Ha),E(ui,Ha,null),a(ie,Hn),a(ie,Oa),a(Oa,On),p(e,so,t),p(e,je,t),a(je,Ln),a(je,mi),a(mi,Nn),a(je,Dn),p(e,no,t),p(e,ke,t),a(ke,Rn),a(ke,di),a(di,Fn),a(ke,Mn),p(e,lo,t),p(e,ae,t),a(ae,Pe),a(Pe,La),E(fi,La,null),a(ae,Gn),a(ae,Na),a(Na,Un),p(e,ro,t),p(e,Ie,t),a(Ie,Qn),a(Ie,Da),a(Da,Bn),a(Ie,Vn),p(e,po,t),E(hi,e,t),p(e,co,t),E(gi,e,t),p(e,uo,t),p(e,N,t),a(N,Wn),a(N,Ra),a(Ra,Yn),a(N,Jn),a(N,Fa),a(Fa,Zn),a(N,Kn),a(N,Ma),a(Ma,Xn),a(N,el),p(e,mo,t),E(Ce,e,t),p(e,fo,t),p(e,te,t),a(te,Ae),a(Ae,Ga),E(vi,Ga,null),a(te,il),a(te,Ua),a(Ua,al),p(e,ho,t),p(e,Te,t),a(Te,tl),a(Te,Qa),a(Qa,ol),a(Te,sl),p(e,go,t),E($i,e,t),p(e,vo,t),E(_i,e,t),p(e,$o,t),p(e,Fi,t),a(Fi,nl),p(e,_o,t),p(e,H,t),a(H,ll),a(H,Ba),a(Ba,rl),a(H,pl),a(H,Va),a(Va,cl),a(H,ul),a(H,Wa),a(Wa,ml),a(H,dl),a(H,Ya),a(Ya,fl),a(H,hl),a(H,Ja),a(Ja,gl),a(H,vl),a(H,Za),a(Za,$l),a(H,_l),p(e,bo,t),E(Se,e,t),p(e,wo,t),p(e,oe,t),a(oe,He),a(He,Ka),E(bi,Ka,null),a(oe,bl),a(oe,Xa),a(Xa,wl),p(e,zo,t),p(e,Oe,t),a(Oe,zl),a(Oe,et),a(et,El),a(Oe,xl),p(e,Eo,t),E(wi,e,t),p(e,xo,t),E(zi,e,t),p(e,qo,t),p(e,Mi,t),a(Mi,ql),p(e,yo,t),p(e,se,t),a(se,Le),a(Le,it),E(Ei,it,null),a(se,yl),a(se,at),a(at,jl),p(e,jo,t),p(e,Gi,t),a(Gi,kl),p(e,ko,t),E(xi,e,t),p(e,Po,t),E(qi,e,t),p(e,Io,t),p(e,Q,t),a(Q,Pl),a(Q,tt),a(tt,Il),a(Q,Cl),a(Q,ot),a(ot,Al),a(Q,Tl),p(e,Co,t),p(e,ne,t),a(ne,Ne),a(Ne,st),E(yi,st,null),a(ne,Sl),a(ne,nt),a(nt,Hl),p(e,Ao,t),p(e,B,t),a(B,Ol),a(B,lt),a(lt,Ll),a(B,Nl),a(B,ji),a(ji,Dl),a(B,Rl),p(e,To,t),E(ki,e,t),p(e,So,t),E(Pi,e,t),p(e,Ho,t),p(e,V,t),a(V,Fl),a(V,rt),a(rt,Ml),a(V,Gl),a(V,pt),a(pt,Ul),a(V,Ql),p(e,Oo,t),E(De,e,t),p(e,Lo,t),p(e,Re,t),a(Re,Bl),a(Re,ct),a(ct,Vl),a(Re,Wl),No=!0},p(e,[t]){const Ii={};t&2&&(Ii.$$scope={dirty:t,ctx:e}),le.$set(Ii);const ut={};t&2&&(ut.$$scope={dirty:t,ctx:e}),ce.$set(ut);const mt={};t&2&&(mt.$$scope={dirty:t,ctx:e}),_e.$set(mt);const dt={};t&2&&(dt.$$scope={dirty:t,ctx:e}),ze.$set(dt);const Ci={};t&2&&(Ci.$$scope={dirty:t,ctx:e}),qe.$set(Ci);const ft={};t&2&&(ft.$$scope={dirty:t,ctx:e}),Ce.$set(ft);const Ai={};t&2&&(Ai.$$scope={dirty:t,ctx:e}),Se.$set(Ai);const ht={};t&2&&(ht.$$scope={dirty:t,ctx:e}),De.$set(ht)},i(e){No||(x(h.$$.fragment,e),x(I.$$.fragment,e),x(le.$$.fragment,e),x(Ge.$$.fragment,e),x(ce.$$.fragment,e),x(Be.$$.fragment,e),x(Ve.$$.fragment,e),x(We.$$.fragment,e),x(Ye.$$.fragment,e),x(Je.$$.fragment,e),x(Ze.$$.fragment,e),x(Xe.$$.fragment,e),x(ei.$$.fragment,e),x(ii.$$.fragment,e),x(_e.$$.fragment,e),x(ai.$$.fragment,e),x(ti.$$.fragment,e),x(oi.$$.fragment,e),x(ze.$$.fragment,e),x(si.$$.fragment,e),x(pi.$$.fragment,e),x(ci.$$.fragment,e),x(qe.$$.fragment,e),x(ui.$$.fragment,e),x(fi.$$.fragment,e),x(hi.$$.fragment,e),x(gi.$$.fragment,e),x(Ce.$$.fragment,e),x(vi.$$.fragment,e),x($i.$$.fragment,e),x(_i.$$.fragment,e),x(Se.$$.fragment,e),x(bi.$$.fragment,e),x(wi.$$.fragment,e),x(zi.$$.fragment,e),x(Ei.$$.fragment,e),x(xi.$$.fragment,e),x(qi.$$.fragment,e),x(yi.$$.fragment,e),x(ki.$$.fragment,e),x(Pi.$$.fragment,e),x(De.$$.fragment,e),No=!0)},o(e){q(h.$$.fragment,e),q(I.$$.fragment,e),q(le.$$.fragment,e),q(Ge.$$.fragment,e),q(ce.$$.fragment,e),q(Be.$$.fragment,e),q(Ve.$$.fragment,e),q(We.$$.fragment,e),q(Ye.$$.fragment,e),q(Je.$$.fragment,e),q(Ze.$$.fragment,e),q(Xe.$$.fragment,e),q(ei.$$.fragment,e),q(ii.$$.fragment,e),q(_e.$$.fragment,e),q(ai.$$.fragment,e),q(ti.$$.fragment,e),q(oi.$$.fragment,e),q(ze.$$.fragment,e),q(si.$$.fragment,e),q(pi.$$.fragment,e),q(ci.$$.fragment,e),q(qe.$$.fragment,e),q(ui.$$.fragment,e),q(fi.$$.fragment,e),q(hi.$$.fragment,e),q(gi.$$.fragment,e),q(Ce.$$.fragment,e),q(vi.$$.fragment,e),q($i.$$.fragment,e),q(_i.$$.fragment,e),q(Se.$$.fragment,e),q(bi.$$.fragment,e),q(wi.$$.fragment,e),q(zi.$$.fragment,e),q(Ei.$$.fragment,e),q(xi.$$.fragment,e),q(qi.$$.fragment,e),q(yi.$$.fragment,e),q(ki.$$.fragment,e),q(Pi.$$.fragment,e),q(De.$$.fragment,e),No=!1},d(e){i(m),e&&i(_),e&&i(f),y(h),e&&i(k),y(I,e),e&&i(A),e&&i(j),e&&i(vt),y(le,e),e&&i($t),e&&i(J),y(Ge),e&&i(_t),e&&i(Ti),e&&i(bt),e&&i(pe),e&&i(wt),e&&i(F),e&&i(zt),y(ce,e),e&&i(Et),e&&i(Si),e&&i(xt),e&&i(Z),y(Be),e&&i(qt),y(Ve,e),e&&i(yt),e&&i(me),e&&i(jt),y(We,e),e&&i(kt),y(Ye,e),e&&i(Pt),e&&i(Hi),e&&i(It),y(Je,e),e&&i(Ct),y(Ze,e),e&&i(At),e&&i(de),e&&i(Tt),e&&i(Oi),e&&i(St),e&&i(M),e&&i(Ht),e&&i(fe),e&&i(Ot),e&&i(C),e&&i(Lt),e&&i(Ni),e&&i(Nt),e&&i(K),y(Xe),e&&i(Dt),e&&i(ve),e&&i(Rt),y(ei,e),e&&i(Ft),y(ii,e),e&&i(Mt),e&&i($e),e&&i(Gt),y(_e,e),e&&i(Ut),e&&i(X),y(ai),e&&i(Qt),e&&i(we),e&&i(Bt),y(ti,e),e&&i(Vt),y(oi,e),e&&i(Wt),e&&i(G),e&&i(Yt),y(ze,e),e&&i(Jt),e&&i(ee),y(si),e&&i(Zt),e&&i(U),e&&i(Kt),e&&i(xe),e&&i(Xt),y(pi,e),e&&i(eo),y(ci,e),e&&i(io),e&&i(Di),e&&i(ao),e&&i(Ri),e&&i(to),y(qe,e),e&&i(oo),e&&i(ie),y(ui),e&&i(so),e&&i(je),e&&i(no),e&&i(ke),e&&i(lo),e&&i(ae),y(fi),e&&i(ro),e&&i(Ie),e&&i(po),y(hi,e),e&&i(co),y(gi,e),e&&i(uo),e&&i(N),e&&i(mo),y(Ce,e),e&&i(fo),e&&i(te),y(vi),e&&i(ho),e&&i(Te),e&&i(go),y($i,e),e&&i(vo),y(_i,e),e&&i($o),e&&i(Fi),e&&i(_o),e&&i(H),e&&i(bo),y(Se,e),e&&i(wo),e&&i(oe),y(bi),e&&i(zo),e&&i(Oe),e&&i(Eo),y(wi,e),e&&i(xo),y(zi,e),e&&i(qo),e&&i(Mi),e&&i(yo),e&&i(se),y(Ei),e&&i(jo),e&&i(Gi),e&&i(ko),y(xi,e),e&&i(Po),y(qi,e),e&&i(Io),e&&i(Q),e&&i(Co),e&&i(ne),y(yi),e&&i(Ao),e&&i(B),e&&i(To),y(ki,e),e&&i(So),y(Pi,e),e&&i(Ho),e&&i(V),e&&i(Oo),y(De,e),e&&i(Lo),e&&i(Re)}}}const tc={local:"cosa-fanno-i-transformer",sections:[{local:"i-transformer-sono-ovunque",title:"I Transformer sono ovunque!"},{local:"lavorare-con-le-pipeline",title:"Lavorare con le pipeline"},{local:"classificazione-zeroshot",title:"Classificazione zero-shot"},{local:"generazione-di-testi",title:"Generazione di testi"},{local:"utilizzo-di-un-qualsiasi-modello-dellhub-in-una-pipeline",sections:[{local:"la-inference-api",title:"La Inference API"}],title:"Utilizzo di un qualsiasi modello dell'Hub in una pipeline"},{local:"mask-filling",title:"Mask filling"},{local:"riconoscimento-delle-entit-nominate",title:"Riconoscimento delle entit\xE0 nominate"},{local:"risposta-a-domande",title:"Risposta a domande"},{local:"riassunto",title:"Riassunto"},{local:"traduzione",title:"Traduzione"}],title:"Cosa fanno i Transformer?"};function oc(S){return Qp(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class mc extends Rp{constructor(m){super();Fp(this,m,oc,ac,Mp,{})}}export{mc as default,tc as metadata};
