Buckets:

rtrm's picture
download
raw
22.3 kB
import{s as ht,o as Tt,n as Jt}from"../chunks/scheduler.37c15a92.js";import{S as xt,i as jt,g as r,s as i,r as u,A as Ut,h as s,f as n,c as l,j as Mt,u as o,x as p,k as Fe,y as wt,a,v as c,d as m,t as d,w as f}from"../chunks/index.2bf4358c.js";import{T as Ct}from"../chunks/Tip.363c041f.js";import{Y as vt}from"../chunks/Youtube.1e50a667.js";import{C as $}from"../chunks/CodeBlock.4e987730.js";import{C as _t}from"../chunks/CourseFloatingBanner.6add7356.js";import{H as pe,E as It}from"../chunks/getInferenceSnippets.24b50994.js";function Pt(ue){let b,z="✏️ <strong>Încercați!</strong> Încărcați un tokenizer din checkpointul <code>bert-base-cased</code> și treceți-i același exemplu. Care sunt principalele diferențe pe care le puteți observa între versiunile cased și uncased ale tokenizerului?";return{c(){b=r("p"),b.innerHTML=z},l(g){b=s(g,"P",{"data-svelte-h":!0}),p(b)!=="svelte-2kixk2"&&(b.innerHTML=z)},m(g,re){a(g,b,re)},p:Jt,d(g){g&&n(b)}}}function Ht(ue){let b,z,g,re,M,oe,v,ce,h,Oe="Înainte de a analiza în profunzime cei mai comuni trei algoritmi de subword tokenization utilizați cu modelele Transformer (Byte-Pair Encoding [BPE], WordPiece și Unigram), vom arunca mai întâi o privire la preprocesarea pe care fiecare tokenizer o aplică textului. Iată o prezentare generală a etapelor din pipelineul de tokenizare:",me,k,et='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter6/tokenization_pipeline.svg" alt="The tokenization pipeline."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter6/tokenization_pipeline-dark.svg" alt="The tokenization pipeline."/>',de,T,tt="Înainte de a împărți un text în subtokens (în conformitate cu modelul său), tokenizerul efectuează doi pași: <em>normalization__ și _pre-tokenization</em>.",fe,J,be,x,ge,j,nt='Etapa de normalizare implică o curățare generală, cum ar fi eliminarea spațiilor inutile, a le face minuscule, și/sau ștergerea accentelor. Dacă sunteți familiarizat cu <a href="http://www.unicode.org/reports/tr15/" rel="nofollow">Unicode normalization</a> (cum ar fi NFC sau NFKC), acest lucru poate fi aplicat și de tokenizer.',$e,U,at="<code>Tokenizer</code>-ul 🤗 Transformers are un atribut numit <code>backend_tokenizer</code> care oferă acces la tokenizatorul de bază din biblioteca 🤗 Tokenizers:",ke,w,ye,C,ze,_,it="Atributul <code>normalizer</code> al obiectului <code>tokenizer</code> are o metodă <code>normalize_str()</code> pe care o putem folosi pentru a vedea cum se realizează normalizarea:",Me,I,ve,P,he,H,lt="În acest exemplu, din moment ce am ales checkpointul <code>bert-base-uncased</code>, normalizarea a aplicat scrierea cu minusculă și a eliminat accentele.",Te,y,Je,D,xe,L,je,Z,rt='După cum vom vedea în secțiunile următoare, un tokenizer nu poate fi antrenat doar pe text raw. În schimb, trebuie mai întâi să împărțim textele în entități mici, cum ar fi cuvintele. Aici intervine etapa de pre-tokenizare. După cum am văzut în <a href="/course/chapter2">Capitolul 2</a>, un tokenizer bazat pe cuvinte poate împărți pur și simplu un text raw în cuvinte pe baza spațiului și a punctuației. Aceste cuvinte vor fi limitele subtokenurilor pe care tokenizerul le poate învăța în timpul instruirii sale.',Ue,Q,st="Pentru a vedea cum un tokenizator rapid efectuează pre-tokenizarea, putem utiliza metoda <code>pre_tokenize_str()</code> a atributului <code>pre_tokenizer</code> al obiectului <code>tokenizer</code>:",we,V,Ce,X,_e,E,pt="Observați cum tokenizatorul ține deja evidența offseturilor, acesta fiind modul în care ne poate oferi mappingul offseturilor pe care l-am folosit în secțiunea anterioară. Aici, tokenizatorul ignoră cele două spații și le înlocuiește cu unul singur, dar offsetul sare între <code>are</code> și <code>you</code> pentru a ține cont de acest lucru.",Ie,A,ut="Deoarece utilizăm un tokenizer BERT, pre-tokenizarea implică separarea spațiilor și a punctuației. Alți tokenizatori pot avea reguli diferite pentru acest pas. De exemplu, dacă folosim tokenizatorul GPT-2:",Pe,G,He,W,ot="va despărți în spații și punctuație, dar va păstra spațiile și le va înlocui cu un simbol <code>Ġ</code>, permițându-i să recupereze spațiile originale dacă facem decode tokenilor:",De,S,Le,R,ct="De asemenea, rețineți că, spre deosebire de tokenizatorul BERT, acest tokenizator nu ignoră spațiul dublu.",Ze,B,mt="Pentru un ultim exemplu, să aruncăm o privire la tokenizerul T5, care se bazează pe algoritmul SentencePiece:",Qe,K,Ve,N,Xe,q,dt="Ca și tokenizatorul GPT-2, acesta păstrează spațiile și le înlocuiește cu un token specific (<code>_</code>), dar tokenizatorul T5 separă doar spațiile, nu și punctuația. De asemenea, observați că a adăugat un spațiu implicit la începutul propoziției (înainte de <code>Hello</code>) și a ignorat spațiul dublu dintre <code>are</code> și <code>you</code>.",Ee,Y,ft="Acum că am văzut puțin din modul în care diferite tokenizere procesează textul, putem începe să explorăm algoritmii care stau la baza acestora. Vom începe cu o privire rapidă asupra SentencePiece, care se aplică pe scară largă; apoi, în următoarele trei secțiuni, vom examina modul în care funcționează cei trei algoritmi principali utilizați pentru tokenizarea subcuvintelor.",Ae,F,Ge,O,bt='<a href="https://github.com/google/sentencepiece" rel="nofollow">SentencePiece</a> este un algoritm de tokenizare pentru preprocesarea textului pe care îl puteți utiliza cu oricare dintre modelele pe care le vom vedea în următoarele trei secțiuni. Acesta consideră textul ca o secvență de caractere Unicode și înlocuiește spațiile cu un caracter special, <code>▁</code>. Folosit împreună cu algoritmul Unigram (a se vedea <a href="/course/chapter7/7">secțiunea 7</a>), nu necesită nici măcar o etapă de pre-tokenizare, ceea ce este foarte util pentru limbile în care nu se folosește caracterul spațiu (cum ar fi chineza sau japoneza).',We,ee,gt="Cealaltă caracteristică principală a SentencePiece este <em>reversible tokenization</em>: deoarece nu există un tratament special al spațiilor, decodarea tokenurilor se face pur și simplu prin concatenarea lor și înlocuirea <code>_</code> cu spații - acest lucru rezultă în textul normalizat. După cum am văzut mai devreme, tokenizatorul BERT elimină spațiile care se repetă, deci tokenizarea sa nu este reversibilă.",Se,te,Re,ne,$t="În următoarele secțiuni, vom analiza cei trei algoritmi principali de tokenizare a subcuvintelor: BPE (utilizat de GPT-2 și alții), WordPiece (utilizat de exemplu de BERT) și Unigram (utilizat de T5 și alții). Înainte de a începe, iată o scurtă prezentare generală a modului în care funcționează fiecare dintre acestea. Nu ezitați să reveniți la acest tabel după ce citiți fiecare dintre secțiunile următoare, dacă încă nu are sens pentru dumneavoastră.",Be,ae,kt='<thead><tr><th align="center">Model</th> <th align="center">BPE</th> <th align="center">WordPiece</th> <th align="center">Unigram</th></tr></thead> <tbody><tr><td align="center">Training</td> <td align="center">Pornește de la un vocabular restrâns și învață reguli de îmbinare a tokenilor</td> <td align="center">Pornește de la un vocabular restrâns și învață reguli de îmbinare a tokenilor</td> <td align="center">Pornește de la un vocabular mare și învață regulile de eliminare a tokenilor</td></tr> <tr><td align="center">Training step</td> <td align="center">Combină tokenii corespunzători celei mai comune perechi</td> <td align="center">Combină tokenii corespunzători perechii cu cel mai bun scor pe baza frecvenței perechii, privilegiind perechile în care fiecare token individual este mai puțin frecvent</td> <td align="center">Elimină toți tokenii din vocabular care vor minimiza pierderea calculată pe întregul corpus</td></tr> <tr><td align="center">Learns</td> <td align="center">Reguli de combinare și un vocabular</td> <td align="center">Doar un vocabular</td> <td align="center">Un vocabular cu un anumit scor pentru fiecare token</td></tr> <tr><td align="center">Encoding</td> <td align="center">Împarte un cuvânt în caractere și aplică îmbinările învățate în timpul antrenării</td> <td align="center">Găsește cel mai lung subcuvânt începând de la început care se află în vocabular, apoi face același lucru pentru restul cuvântului</td> <td align="center">Găsește cea mai probabilă împărțire în tokens, folosind scorurile învățate în timpul antrenării</td></tr></tbody>',Ke,ie,yt="Acum hai să trecem la BPE!",Ne,le,qe,se,Ye;return M=new pe({props:{title:"Normalizare și pre-tokenizare",local:"normalization-and-pre-tokenization",headingTag:"h1"}}),v=new _t({props:{chapter:6,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter6/section4.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter6/section4.ipynb"}]}}),J=new pe({props:{title:"Normalization",local:"normalization",headingTag:"h2"}}),x=new vt({props:{id:"4IIC2jI9CaU"}}),w=new $({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtdW5jYXNlZCUyMiklMEFwcmludCh0eXBlKHRva2VuaXplci5iYWNrZW5kX3Rva2VuaXplcikp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-uncased&quot;</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(tokenizer.backend_tokenizer))`,wrap:!1}}),C=new $({props:{code:"JTNDY2xhc3MlMjAndG9rZW5pemVycy5Ub2tlbml6ZXInJTNF",highlighted:'&lt;<span class="hljs-keyword">class</span> <span class="hljs-string">&#x27;tokenizers.Tokenizer&#x27;</span>&gt;',wrap:!1}}),I=new $({props:{code:"cHJpbnQodG9rZW5pemVyLmJhY2tlbmRfdG9rZW5pemVyLm5vcm1hbGl6ZXIubm9ybWFsaXplX3N0ciglMjJIJUMzJUE5bGwlQzMlQjIlMjBoJUMzJUI0dyUyMGFyZSUyMCVDMyVCQyUzRiUyMikp",highlighted:'<span class="hljs-built_in">print</span>(tokenizer.backend_tokenizer.normalizer.normalize_str(<span class="hljs-string">&quot;Héllò hôw are ü?&quot;</span>))',wrap:!1}}),P=new $({props:{code:"J2hlbGxvJTIwaG93JTIwYXJlJTIwdSUzRic=",highlighted:'<span class="hljs-string">&#x27;hello how are u?&#x27;</span>',wrap:!1}}),y=new Ct({props:{$$slots:{default:[Pt]},$$scope:{ctx:ue}}}),D=new pe({props:{title:"Pre-tokenization",local:"pre-tokenization",headingTag:"h2"}}),L=new vt({props:{id:"grlLV8AIXug"}}),V=new $({props:{code:"dG9rZW5pemVyLmJhY2tlbmRfdG9rZW5pemVyLnByZV90b2tlbml6ZXIucHJlX3Rva2VuaXplX3N0ciglMjJIZWxsbyUyQyUyMGhvdyUyMGFyZSUyMCUyMHlvdSUzRiUyMik=",highlighted:'tokenizer.backend_tokenizer.pre_tokenizer.pre_tokenize_str(<span class="hljs-string">&quot;Hello, how are you?&quot;</span>)',wrap:!1}}),X=new $({props:{code:"JTVCKCdIZWxsbyclMkMlMjAoMCUyQyUyMDUpKSUyQyUyMCgnJTJDJyUyQyUyMCg1JTJDJTIwNikpJTJDJTIwKCdob3cnJTJDJTIwKDclMkMlMjAxMCkpJTJDJTIwKCdhcmUnJTJDJTIwKDExJTJDJTIwMTQpKSUyQyUyMCgneW91JyUyQyUyMCgxNiUyQyUyMDE5KSklMkMlMjAoJyUzRiclMkMlMjAoMTklMkMlMjAyMCkpJTVE",highlighted:'[(<span class="hljs-string">&#x27;Hello&#x27;</span>, (<span class="hljs-number">0</span>, <span class="hljs-number">5</span>)), (<span class="hljs-string">&#x27;,&#x27;</span>, (<span class="hljs-number">5</span>, <span class="hljs-number">6</span>)), (<span class="hljs-string">&#x27;how&#x27;</span>, (<span class="hljs-number">7</span>, <span class="hljs-number">10</span>)), (<span class="hljs-string">&#x27;are&#x27;</span>, (<span class="hljs-number">11</span>, <span class="hljs-number">14</span>)), (<span class="hljs-string">&#x27;you&#x27;</span>, (<span class="hljs-number">16</span>, <span class="hljs-number">19</span>)), (<span class="hljs-string">&#x27;?&#x27;</span>, (<span class="hljs-number">19</span>, <span class="hljs-number">20</span>))]',wrap:!1}}),G=new $({props:{code:"dG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyZ3B0MiUyMiklMEF0b2tlbml6ZXIuYmFja2VuZF90b2tlbml6ZXIucHJlX3Rva2VuaXplci5wcmVfdG9rZW5pemVfc3RyKCUyMkhlbGxvJTJDJTIwaG93JTIwYXJlJTIwJTIweW91JTNGJTIyKQ==",highlighted:`tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)
tokenizer.backend_tokenizer.pre_tokenizer.pre_tokenize_str(<span class="hljs-string">&quot;Hello, how are you?&quot;</span>)`,wrap:!1}}),S=new $({props:{code:"JTVCKCdIZWxsbyclMkMlMjAoMCUyQyUyMDUpKSUyQyUyMCgnJTJDJyUyQyUyMCg1JTJDJTIwNikpJTJDJTIwKCclQzQlQTBob3cnJTJDJTIwKDYlMkMlMjAxMCkpJTJDJTIwKCclQzQlQTBhcmUnJTJDJTIwKDEwJTJDJTIwMTQpKSUyQyUyMCgnJUM0JUEwJyUyQyUyMCgxNCUyQyUyMDE1KSklMkMlMjAoJyVDNCVBMHlvdSclMkMlMjAoMTUlMkMlMjAxOSkpJTJDJTBBJTIwKCclM0YnJTJDJTIwKDE5JTJDJTIwMjApKSU1RA==",highlighted:`[(<span class="hljs-string">&#x27;Hello&#x27;</span>, (<span class="hljs-number">0</span>, <span class="hljs-number">5</span>)), (<span class="hljs-string">&#x27;,&#x27;</span>, (<span class="hljs-number">5</span>, <span class="hljs-number">6</span>)), (<span class="hljs-string">&#x27;Ġhow&#x27;</span>, (<span class="hljs-number">6</span>, <span class="hljs-number">10</span>)), (<span class="hljs-string">&#x27;Ġare&#x27;</span>, (<span class="hljs-number">10</span>, <span class="hljs-number">14</span>)), (<span class="hljs-string">&#x27;Ġ&#x27;</span>, (<span class="hljs-number">14</span>, <span class="hljs-number">15</span>)), (<span class="hljs-string">&#x27;Ġyou&#x27;</span>, (<span class="hljs-number">15</span>, <span class="hljs-number">19</span>)),
(<span class="hljs-string">&#x27;?&#x27;</span>, (<span class="hljs-number">19</span>, <span class="hljs-number">20</span>))]`,wrap:!1}}),K=new $({props:{code:"dG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIydDUtc21hbGwlMjIpJTBBdG9rZW5pemVyLmJhY2tlbmRfdG9rZW5pemVyLnByZV90b2tlbml6ZXIucHJlX3Rva2VuaXplX3N0ciglMjJIZWxsbyUyQyUyMGhvdyUyMGFyZSUyMCUyMHlvdSUzRiUyMik=",highlighted:`tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;t5-small&quot;</span>)
tokenizer.backend_tokenizer.pre_tokenizer.pre_tokenize_str(<span class="hljs-string">&quot;Hello, how are you?&quot;</span>)`,wrap:!1}}),N=new $({props:{code:"JTVCKCclRTIlOTYlODFIZWxsbyUyQyclMkMlMjAoMCUyQyUyMDYpKSUyQyUyMCgnJUUyJTk2JTgxaG93JyUyQyUyMCg3JTJDJTIwMTApKSUyQyUyMCgnJUUyJTk2JTgxYXJlJyUyQyUyMCgxMSUyQyUyMDE0KSklMkMlMjAoJyVFMiU5NiU4MXlvdSUzRiclMkMlMjAoMTYlMkMlMjAyMCkpJTVE",highlighted:'[(<span class="hljs-string">&#x27;▁Hello,&#x27;</span>, (<span class="hljs-number">0</span>, <span class="hljs-number">6</span>)), (<span class="hljs-string">&#x27;▁how&#x27;</span>, (<span class="hljs-number">7</span>, <span class="hljs-number">10</span>)), (<span class="hljs-string">&#x27;▁are&#x27;</span>, (<span class="hljs-number">11</span>, <span class="hljs-number">14</span>)), (<span class="hljs-string">&#x27;▁you?&#x27;</span>, (<span class="hljs-number">16</span>, <span class="hljs-number">20</span>))]',wrap:!1}}),F=new pe({props:{title:"SentencePiece",local:"sentencepiece",headingTag:"h2"}}),te=new pe({props:{title:"Prezentare generală a algoritmului",local:"algorithm-overview",headingTag:"h2"}}),le=new It({props:{source:"https://github.com/huggingface/course/blob/main/chapters/rum/chapter6/4.mdx"}}),{c(){b=r("meta"),z=i(),g=r("p"),re=i(),u(M.$$.fragment),oe=i(),u(v.$$.fragment),ce=i(),h=r("p"),h.textContent=Oe,me=i(),k=r("div"),k.innerHTML=et,de=i(),T=r("p"),T.innerHTML=tt,fe=i(),u(J.$$.fragment),be=i(),u(x.$$.fragment),ge=i(),j=r("p"),j.innerHTML=nt,$e=i(),U=r("p"),U.innerHTML=at,ke=i(),u(w.$$.fragment),ye=i(),u(C.$$.fragment),ze=i(),_=r("p"),_.innerHTML=it,Me=i(),u(I.$$.fragment),ve=i(),u(P.$$.fragment),he=i(),H=r("p"),H.innerHTML=lt,Te=i(),u(y.$$.fragment),Je=i(),u(D.$$.fragment),xe=i(),u(L.$$.fragment),je=i(),Z=r("p"),Z.innerHTML=rt,Ue=i(),Q=r("p"),Q.innerHTML=st,we=i(),u(V.$$.fragment),Ce=i(),u(X.$$.fragment),_e=i(),E=r("p"),E.innerHTML=pt,Ie=i(),A=r("p"),A.textContent=ut,Pe=i(),u(G.$$.fragment),He=i(),W=r("p"),W.innerHTML=ot,De=i(),u(S.$$.fragment),Le=i(),R=r("p"),R.textContent=ct,Ze=i(),B=r("p"),B.textContent=mt,Qe=i(),u(K.$$.fragment),Ve=i(),u(N.$$.fragment),Xe=i(),q=r("p"),q.innerHTML=dt,Ee=i(),Y=r("p"),Y.textContent=ft,Ae=i(),u(F.$$.fragment),Ge=i(),O=r("p"),O.innerHTML=bt,We=i(),ee=r("p"),ee.innerHTML=gt,Se=i(),u(te.$$.fragment),Re=i(),ne=r("p"),ne.textContent=$t,Be=i(),ae=r("table"),ae.innerHTML=kt,Ke=i(),ie=r("p"),ie.textContent=yt,Ne=i(),u(le.$$.fragment),qe=i(),se=r("p"),this.h()},l(e){const t=Ut("svelte-u9bgzb",document.head);b=s(t,"META",{name:!0,content:!0}),t.forEach(n),z=l(e),g=s(e,"P",{}),Mt(g).forEach(n),re=l(e),o(M.$$.fragment,e),oe=l(e),o(v.$$.fragment,e),ce=l(e),h=s(e,"P",{"data-svelte-h":!0}),p(h)!=="svelte-vw7d8j"&&(h.textContent=Oe),me=l(e),k=s(e,"DIV",{class:!0,"data-svelte-h":!0}),p(k)!=="svelte-oxfng3"&&(k.innerHTML=et),de=l(e),T=s(e,"P",{"data-svelte-h":!0}),p(T)!=="svelte-11sh72u"&&(T.innerHTML=tt),fe=l(e),o(J.$$.fragment,e),be=l(e),o(x.$$.fragment,e),ge=l(e),j=s(e,"P",{"data-svelte-h":!0}),p(j)!=="svelte-14h3y00"&&(j.innerHTML=nt),$e=l(e),U=s(e,"P",{"data-svelte-h":!0}),p(U)!=="svelte-1vuzvv5"&&(U.innerHTML=at),ke=l(e),o(w.$$.fragment,e),ye=l(e),o(C.$$.fragment,e),ze=l(e),_=s(e,"P",{"data-svelte-h":!0}),p(_)!=="svelte-1xit00m"&&(_.innerHTML=it),Me=l(e),o(I.$$.fragment,e),ve=l(e),o(P.$$.fragment,e),he=l(e),H=s(e,"P",{"data-svelte-h":!0}),p(H)!=="svelte-1c9ql4s"&&(H.innerHTML=lt),Te=l(e),o(y.$$.fragment,e),Je=l(e),o(D.$$.fragment,e),xe=l(e),o(L.$$.fragment,e),je=l(e),Z=s(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-ipcw2v"&&(Z.innerHTML=rt),Ue=l(e),Q=s(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-7k16qx"&&(Q.innerHTML=st),we=l(e),o(V.$$.fragment,e),Ce=l(e),o(X.$$.fragment,e),_e=l(e),E=s(e,"P",{"data-svelte-h":!0}),p(E)!=="svelte-nyoe0e"&&(E.innerHTML=pt),Ie=l(e),A=s(e,"P",{"data-svelte-h":!0}),p(A)!=="svelte-1cappvn"&&(A.textContent=ut),Pe=l(e),o(G.$$.fragment,e),He=l(e),W=s(e,"P",{"data-svelte-h":!0}),p(W)!=="svelte-llsqiy"&&(W.innerHTML=ot),De=l(e),o(S.$$.fragment,e),Le=l(e),R=s(e,"P",{"data-svelte-h":!0}),p(R)!=="svelte-1lgvnur"&&(R.textContent=ct),Ze=l(e),B=s(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-1gf3k1u"&&(B.textContent=mt),Qe=l(e),o(K.$$.fragment,e),Ve=l(e),o(N.$$.fragment,e),Xe=l(e),q=s(e,"P",{"data-svelte-h":!0}),p(q)!=="svelte-k4fq1n"&&(q.innerHTML=dt),Ee=l(e),Y=s(e,"P",{"data-svelte-h":!0}),p(Y)!=="svelte-1jv5y20"&&(Y.textContent=ft),Ae=l(e),o(F.$$.fragment,e),Ge=l(e),O=s(e,"P",{"data-svelte-h":!0}),p(O)!=="svelte-2u423n"&&(O.innerHTML=bt),We=l(e),ee=s(e,"P",{"data-svelte-h":!0}),p(ee)!=="svelte-1p5elgu"&&(ee.innerHTML=gt),Se=l(e),o(te.$$.fragment,e),Re=l(e),ne=s(e,"P",{"data-svelte-h":!0}),p(ne)!=="svelte-gq2ghk"&&(ne.textContent=$t),Be=l(e),ae=s(e,"TABLE",{"data-svelte-h":!0}),p(ae)!=="svelte-wpcgzl"&&(ae.innerHTML=kt),Ke=l(e),ie=s(e,"P",{"data-svelte-h":!0}),p(ie)!=="svelte-1h7qx01"&&(ie.textContent=yt),Ne=l(e),o(le.$$.fragment,e),qe=l(e),se=s(e,"P",{}),Mt(se).forEach(n),this.h()},h(){Fe(b,"name","hf:doc:metadata"),Fe(b,"content",Dt),Fe(k,"class","flex justify-center")},m(e,t){wt(document.head,b),a(e,z,t),a(e,g,t),a(e,re,t),c(M,e,t),a(e,oe,t),c(v,e,t),a(e,ce,t),a(e,h,t),a(e,me,t),a(e,k,t),a(e,de,t),a(e,T,t),a(e,fe,t),c(J,e,t),a(e,be,t),c(x,e,t),a(e,ge,t),a(e,j,t),a(e,$e,t),a(e,U,t),a(e,ke,t),c(w,e,t),a(e,ye,t),c(C,e,t),a(e,ze,t),a(e,_,t),a(e,Me,t),c(I,e,t),a(e,ve,t),c(P,e,t),a(e,he,t),a(e,H,t),a(e,Te,t),c(y,e,t),a(e,Je,t),c(D,e,t),a(e,xe,t),c(L,e,t),a(e,je,t),a(e,Z,t),a(e,Ue,t),a(e,Q,t),a(e,we,t),c(V,e,t),a(e,Ce,t),c(X,e,t),a(e,_e,t),a(e,E,t),a(e,Ie,t),a(e,A,t),a(e,Pe,t),c(G,e,t),a(e,He,t),a(e,W,t),a(e,De,t),c(S,e,t),a(e,Le,t),a(e,R,t),a(e,Ze,t),a(e,B,t),a(e,Qe,t),c(K,e,t),a(e,Ve,t),c(N,e,t),a(e,Xe,t),a(e,q,t),a(e,Ee,t),a(e,Y,t),a(e,Ae,t),c(F,e,t),a(e,Ge,t),a(e,O,t),a(e,We,t),a(e,ee,t),a(e,Se,t),c(te,e,t),a(e,Re,t),a(e,ne,t),a(e,Be,t),a(e,ae,t),a(e,Ke,t),a(e,ie,t),a(e,Ne,t),c(le,e,t),a(e,qe,t),a(e,se,t),Ye=!0},p(e,[t]){const zt={};t&2&&(zt.$$scope={dirty:t,ctx:e}),y.$set(zt)},i(e){Ye||(m(M.$$.fragment,e),m(v.$$.fragment,e),m(J.$$.fragment,e),m(x.$$.fragment,e),m(w.$$.fragment,e),m(C.$$.fragment,e),m(I.$$.fragment,e),m(P.$$.fragment,e),m(y.$$.fragment,e),m(D.$$.fragment,e),m(L.$$.fragment,e),m(V.$$.fragment,e),m(X.$$.fragment,e),m(G.$$.fragment,e),m(S.$$.fragment,e),m(K.$$.fragment,e),m(N.$$.fragment,e),m(F.$$.fragment,e),m(te.$$.fragment,e),m(le.$$.fragment,e),Ye=!0)},o(e){d(M.$$.fragment,e),d(v.$$.fragment,e),d(J.$$.fragment,e),d(x.$$.fragment,e),d(w.$$.fragment,e),d(C.$$.fragment,e),d(I.$$.fragment,e),d(P.$$.fragment,e),d(y.$$.fragment,e),d(D.$$.fragment,e),d(L.$$.fragment,e),d(V.$$.fragment,e),d(X.$$.fragment,e),d(G.$$.fragment,e),d(S.$$.fragment,e),d(K.$$.fragment,e),d(N.$$.fragment,e),d(F.$$.fragment,e),d(te.$$.fragment,e),d(le.$$.fragment,e),Ye=!1},d(e){e&&(n(z),n(g),n(re),n(oe),n(ce),n(h),n(me),n(k),n(de),n(T),n(fe),n(be),n(ge),n(j),n($e),n(U),n(ke),n(ye),n(ze),n(_),n(Me),n(ve),n(he),n(H),n(Te),n(Je),n(xe),n(je),n(Z),n(Ue),n(Q),n(we),n(Ce),n(_e),n(E),n(Ie),n(A),n(Pe),n(He),n(W),n(De),n(Le),n(R),n(Ze),n(B),n(Qe),n(Ve),n(Xe),n(q),n(Ee),n(Y),n(Ae),n(Ge),n(O),n(We),n(ee),n(Se),n(Re),n(ne),n(Be),n(ae),n(Ke),n(ie),n(Ne),n(qe),n(se)),n(b),f(M,e),f(v,e),f(J,e),f(x,e),f(w,e),f(C,e),f(I,e),f(P,e),f(y,e),f(D,e),f(L,e),f(V,e),f(X,e),f(G,e),f(S,e),f(K,e),f(N,e),f(F,e),f(te,e),f(le,e)}}}const Dt='{"title":"Normalizare și pre-tokenizare","local":"normalization-and-pre-tokenization","sections":[{"title":"Normalization","local":"normalization","sections":[],"depth":2},{"title":"Pre-tokenization","local":"pre-tokenization","sections":[],"depth":2},{"title":"SentencePiece","local":"sentencepiece","sections":[],"depth":2},{"title":"Prezentare generală a algoritmului","local":"algorithm-overview","sections":[],"depth":2}],"depth":1}';function Lt(ue){return Tt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Wt extends xt{constructor(b){super(),jt(this,b,Lt,Ht,ht,{})}}export{Wt as component};

Xet Storage Details

Size:
22.3 kB
·
Xet hash:
dfdfe702b00aff38ece557744fe9f520a85e015cd5b9b53548ef3138dba8aef8

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.