Buckets:

rtrm's picture
download
raw
73.6 kB
import{s as wn,o as In,n as Ls}from"../chunks/scheduler.37c15a92.js";import{S as dn,i as gn,g as M,s as t,r as o,m as Cn,H as bn,A as xn,h as i,f as l,c as e,j as kl,u as r,x as J,n as fn,E as qn,k as Un,y as Tn,a as n,v as c,d as y,t as j,w as u}from"../chunks/index.2bf4358c.js";import{T as Fs}from"../chunks/Tip.363c041f.js";import{Y as kn}from"../chunks/Youtube.1e50a667.js";import{C as U}from"../chunks/CodeBlock.4e987730.js";import{C as $n}from"../chunks/CourseFloatingBanner.6add7356.js";import{H as fl}from"../chunks/Heading.8ada512a.js";import{E as An}from"../chunks/getInferenceSnippets.acd17970.js";function zn(w){let p,T="💡 Esta sección cubre WordPiece en profundidad, yendo tan lejos como para mostrar una implementación completa. Puedes saltarte hasta el final si sólo quieres una descripción general del algoritmo de tokenización.";return{c(){p=M("p"),p.textContent=T},l(m){p=i(m,"P",{"data-svelte-h":!0}),J(p)!=="svelte-1ov2mxe"&&(p.textContent=T)},m(m,h){n(m,p,h)},p:Ls,d(m){m&&l(p)}}}function Qn(w){let p,T="⚠️ Google nunca liberó el código (open-sourced) su implementación del algoritmo de entrenamiento de WordPiece, por tanto lo que sigue es nuestra mejor suposición badado en la literatura publicada. Puede no ser 100% preciso.";return{c(){p=M("p"),p.textContent=T},l(m){p=i(m,"P",{"data-svelte-h":!0}),J(p)!=="svelte-13njxon"&&(p.textContent=T)},m(m,h){n(m,p,h)},p:Ls,d(m){m&&l(p)}}}function vn(w){let p,T="✏️ <strong>Ahora es tu turno!</strong> Cuál será la siguiente regla de fusioń?";return{c(){p=M("p"),p.innerHTML=T},l(m){p=i(m,"P",{"data-svelte-h":!0}),J(p)!=="svelte-1ppumjp"&&(p.innerHTML=T)},m(m,h){n(m,p,h)},p:Ls,d(m){m&&l(p)}}}function Bn(w){let p,T="✏️ <strong>Ahora es tu turno!</strong> ¿Cómo se tokenizaría la palabra <code>&quot;pugs&quot;</code>?";return{c(){p=M("p"),p.innerHTML=T},l(m){p=i(m,"P",{"data-svelte-h":!0}),J(p)!=="svelte-1abemxt"&&(p.innerHTML=T)},m(m,h){n(m,p,h)},p:Ls,d(m){m&&l(p)}}}function Zn(w){let p,T="💡 Usar <code>train_new_from_iterator()</code> en el mismo corpus no resultará en exactamente el mismo vocabulario. Esto porque la librería 🤗 Tokenizers no implementa WordPiece para el entrenamiento (dado que no estamos completamente seguros de su funcionamiento interno), en vez de eso utiliza BPE.";return{c(){p=M("p"),p.innerHTML=T},l(m){p=i(m,"P",{"data-svelte-h":!0}),J(p)!=="svelte-1k620vj"&&(p.innerHTML=T)},m(m,h){n(m,p,h)},p:Ls,d(m){m&&l(p)}}}function En(w){let p,T,m,h,x,Ks,f,Os,q,$l="WordPiece es el algoritmo de tokenización que Google desarrolló para pre-entrenar BERT. Ha sido reutilizado un varios modelos Transformers basados en BERT, tales como DistilBERT, MobileBERT, Funnel Transformers, y MPNET. Es muy similar a BPE en términos del entrenamiento, pero la tokenización se hace de distinta manera.",sa,k,aa,I,la,$,na,d,ta,A,Al="Al igual que BPE, WordPiece comienza a partir de un pequeño vocabulario incluyendo los tokens especiales utilizados por el modelo y el alfabeto inicial. Dado que identifica subpalabras (subwords) agregando un prefijo (como <code>##</code> para el caso de BERT), cada palabra está inicialmente separada agregando dicho prefijo a todos los caracteres dentro de la palabra. Por lo que por ejemplo la palabra <code>&quot;word&quot;</code> queda separada así:",ea,z,pa,Q,zl="Por lo tanto, el alfabeto inicial contiene todos los caracteres presentes al comienzo de una palabra y los caracteres presente dentro de una palabra precedida por el prefijo de WordPiece.",Ma,v,ql,ia,hn='<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mrow><mi mathvariant="normal">s</mi><mi mathvariant="normal">c</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">r</mi><mi mathvariant="normal">e</mi></mrow><mo>=</mo><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">f</mi><mi mathvariant="normal">r</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">q</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">f</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">p</mi><mi mathvariant="normal">a</mi><mi mathvariant="normal">i</mi><mi mathvariant="normal">r</mi></mrow><mo stretchy="false">)</mo><mi mathvariant="normal">/</mi><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">f</mi><mi mathvariant="normal">r</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">q</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">f</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">f</mi><mi mathvariant="normal">i</mi><mi mathvariant="normal">r</mi><mi mathvariant="normal">s</mi><mi mathvariant="normal">t</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">l</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">m</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">n</mi><mi mathvariant="normal">t</mi></mrow><mo>×</mo><mrow><mi mathvariant="normal">f</mi><mi mathvariant="normal">r</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">q</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">f</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">s</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">c</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">n</mi><mi mathvariant="normal">d</mi><mi mathvariant="normal">_</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">l</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">m</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">n</mi><mi mathvariant="normal">t</mi></mrow><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\\mathrm{score} = (\\mathrm{freq\\_of\\_pair}) / (\\mathrm{freq\\_of\\_first\\_element} \\times \\mathrm{freq\\_of\\_second\\_element})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord"><span class="mord mathrm">score</span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1.06em;vertical-align:-0.31em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathrm">freq_of_pair</span></span><span class="mclose">)</span><span class="mord">/</span><span class="mopen">(</span><span class="mord"><span class="mord mathrm">freq_of_first_element</span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.06em;vertical-align:-0.31em;"></span><span class="mord"><span class="mord mathrm">freq_of_second_element</span></span><span class="mclose">)</span></span></span></span></span>',oa,B,Ql="Dividiendo por la frecuencia del par por el producto de las frecuencias de cada una de sus partes, el algoritmo prioriza la fusión de pares donde las partes individuales son menos frecuentes en el vocabulario. Por ejemplo, no fusionará necesariamente <code>(&quot;un&quot;, &quot;##able&quot;)</code> incluso si ese par ocurre de manera muy frecuente en el vocabulario, porque los dos pares <code>&quot;un&quot;</code> y <code>&quot;##able&quot;</code> muy probablemente aparecerán en un montón de otras palabras y tendrán una alta frecuencia. En contraste con un par como <code>(&quot;hu&quot;, &quot;##gging&quot;)</code> los cuales son probablemente menos frecuentes individualmente.",ra,Z,vl="Miremos el mismo vocabulario que usamos en el ejemplo de entrenamiento de BPE:",ca,E,ya,N,Bl="Las separaciones acá serán:",ja,_,ua,S,Zl="por lo que el vocabulario inicial será <code>[&quot;b&quot;, &quot;h&quot;, &quot;p&quot;, &quot;##g&quot;, &quot;##n&quot;, &quot;##s&quot;, &quot;##u&quot;]</code> (si nos olvidamos de los tokens especiales por ahora). El par más frecuente es <code>(&quot;##u&quot;, &quot;##g&quot;)</code> (presente 20 veces), pero la frecuencia individual de <code>&quot;##u&quot;</code> es muy alta, por lo que el puntaje no es el más alto (es 1 / 36). Todos los pares con <code>&quot;##u&quot;</code> en realidad tienen el mismo puntaje (1 / 36), por lo que el mejor puntaje va para el par <code>(&quot;##g&quot;, &quot;##s&quot;)</code> — el único sin <code>&quot;##u&quot;</code> — 1 / 20, y la primera fusión aprendida es <code>(&quot;##g&quot;, &quot;##s&quot;) -&gt; (&quot;##gs&quot;)</code>.",Ja,G,El="Notar que cuando fusionamos, removemos el <code>##</code> entre los dos tokens, por que agregamos <code>&quot;##gs&quot;</code> al vocabulario y aplicamos la fusión en las palabras del corpus:",ma,V,Ua,X,Nl="En este punto, <code>&quot;##u&quot;</code> está en todos los posibles pares, por lo que todos terminan con el mismo puntaje. Digamos que en este caso, el primer par se fusiona, <code>(&quot;h&quot;, &quot;##u&quot;) -&gt; &quot;hu&quot;</code>. Esto nos lleva a:",Ta,H,ha,W,_l="Luego el siguiente mejor puntaje está compartido por <code>(&quot;hu&quot;, &quot;##g&quot;)</code> y <code>(&quot;hu&quot;, &quot;##gs&quot;)</code> (con 1/15, comparado con 1/21 para todos los otros pares), por lo que el primer par con el puntaje más alto se fusiona:",wa,D,Ia,R,Sl="y continuamos como esto hasta que alcancemos el tamaño de vocabulario deseado.",da,g,ga,Y,Ca,P,Gl="La tokenización difiere en WordPiece y BPE en que WordPiece sólo guarda el vocabulario final, no las reglas de fusión aprendidas. Comenzando a partir de la palabra a tokenizar, WordPiece encuentra la subpalabra más larga que está en el vocabulario, luego la separa. Por ejemplo, su usamos el vocabulario aprendido en el ejemplo anterior, para la palabra <code>&quot;hugs&quot;</code> la subpalabra más larga comenzando desde el inicio que está dentro del vocabulario es <code>&quot;hug&quot;</code>, por lo que separamos ahí y obtenemos <code>[&quot;hug&quot;, &quot;##s&quot;]</code>. Luego continuamos con <code>&quot;##s&quot;</code>, el cuál está en el vocabulario, por lo que la tokenización de <code>&quot;hugs&quot;</code> es <code>[&quot;hug&quot;, &quot;##s&quot;]</code>.",ba,F,Vl="Con BPE, habríamos aplicado las fusiones aprendidas en orden y tokenizado esto como <code>[&quot;hu&quot;, &quot;##gs&quot;]</code>, por lo que la codificación es diferente.",xa,L,Xl="Como otro ejemplo, veamos como la palabra <code>&quot;bugs&quot;</code> sería tokenizado. <code>&quot;b&quot;</code> es la subpalabra más larga comenzando del inicio de la palabra que está en el vocabulario, por lo que separamos ahí y obtenemos <code>[&quot;b&quot;, &quot;##ugs&quot;]</code>. Luego <code>&quot;##u&quot;</code> es la subpalabra más larga somenzando desde el inicio de <code>&quot;##ugs&quot;</code> que está en el vocabulario, por lo que separamos ahí y obtenemos <code>[&quot;b&quot;, &quot;##u, &quot;##gs&quot;]</code>. Finalmente, <code>&quot;##gs&quot;</code> está en el vocabulario, por lo que esta última lista es la tokenización de <code>&quot;bugs&quot;</code>.",fa,K,Hl="Cuando la tokenización llega a la etapa donde ya no es posible encontrar una subpalabra en el vocabulario, la palabra entera es tokenizada como desconocida — Por ejemplo, <code>&quot;mug&quot;</code> sería tokenizada como <code>[&quot;[UNK]&quot;]</code>, al igual que <code>&quot;bum&quot;</code> (incluso si podemos comenzar con <code>&quot;b&quot;</code> y <code>&quot;##u&quot;</code>, <code>&quot;##m&quot;</code> no está en el vocabulario, y la tokenización resultante será sólo <code>[&quot;[UNK]&quot;]</code>, y no <code>[&quot;b&quot;, &quot;##u&quot;, &quot;[UNK]&quot;]</code>). Este es otra diferencia con respecto a BPE, el cual sólo clasificaría los caracteres individuales que no están en el vocabulario como desconocido.",qa,C,ka,O,$a,ss,Wl="Ahora echemos un vistazo a una implementación del algoritmo WordPiece. Al igual que BPE, este es sólo pedagócico y no podrás aplicar esto en corpus grande.",Aa,as,Dl="Usaremos el mismo corpus que en el ejemplo de BPE:",za,ls,Qa,ns,Rl="Primero, necesitamos pre-tokenizar el corpus en palabras. Dado que estamos replicando el tokenizador WordPiece (como BERT), usaremos el tokenizador <code>bert-base-cased</code> para la pre-tokenización:",va,ts,Ba,es,Yl="Luego calculamos las frecuencias de cada palabra en el corpus mientras hacemos la pre-tokenización:",Za,ps,Ea,Ms,Na,is,Pl="Como vimos antes, el alfabeto es el único conjunto compuesto de todas las primeras letras de las palabras, y todas las otras letras que aparecen con el prefijo <code>##</code>:",_a,os,Sa,rs,Ga,cs,Fl="También agregamos los tokens especiales usados por el modelo al inicio de ese vocabulario. En el caso de BERT, es la lista <code>[&quot;[PAD]&quot;, &quot;[UNK]&quot;, &quot;[CLS]&quot;, &quot;[SEP]&quot;, &quot;[MASK]&quot;]</code>:",Va,ys,Xa,js,Ll="A continuación necesitamos separar cada palabra, con todas las letras que no tienen el prefijo <code>##</code>:",Ha,us,Wa,Js,Kl="Ahora que estamos listos para el entrenamiento, escribamos una función que calcule el puntaje para cada par. Usaremos esto en cada etapa del entrenamiento:",Da,ms,Ra,Us,Ol="Echemos un vistazo a parte de este diccionario luego de las separaciones iniciales:",Ya,Ts,Pa,hs,Fa,ws,sn="Ahora, encontrar el par con el mejor puntaje sólo toma un rápido ciclo:",La,Is,Ka,ds,Oa,gs,an="Por lo que la primera fusión a aprender es <code>(&#39;a&#39;, &#39;##b&#39;) -&gt; &#39;ab&#39;</code>, y agregamos <code>&#39;ab&#39;</code> al vocabulario:",sl,Cs,al,bs,ln="Para continuar, necesitamos aplicar esa fusión en nuestro diccionario de separaciones (<code>splits</code> dictionary). Escribamos otra función para esto:",ll,xs,nl,fs,nn="Y podemos mirar el resultado de la primera fusión:",tl,qs,el,ks,pl,$s,tn="Ahora tenemos todos los que necesitamos para iterar hasta haber aprendido todas las fusiones que queramos. Apuntemos a un tamaño de vocabulario de 70:",Ml,As,il,zs,en="Luego podemos ver el vocabulario generado:",ol,Qs,rl,vs,cl,Bs,pn="Como podemos ver, comparado con BPE, este tokenizador aprende partes de palabras como tokens un poco más rápido.",yl,b,jl,Zs,Mn="Para tokenizar un nuevo texto, lo pre-tokenizamos, lo separamos, y luego aplicamos el algoritmo de tokenización para cada palabra. Es decir, miramos la subpalabra más grande comenzando al inicio de la primera palabra y la separamos, luego repetimos el proceso en la segunda parte, y así pará el resto de dicha palabra y de las siguientes palabras en el texto:",ul,Es,Jl,Ns,on="Probémoslo en una palabra que esté en el vocabulario, y en otra que no esté:",ml,_s,Ul,Ss,Tl,Gs,rn="Ahora, escribamos una función que tokenize un texto:",hl,Vs,wl,Xs,cn="Podemos probar en cualquier texto:",Il,Hs,dl,Ws,gl,Ds,yn="Eso es todo para el algoritmo WordPiece! Ahora echemos un visto a Unigram.",Cl,Rs,bl,Ps,xl;return x=new fl({props:{title:"Tokenización WordPiece",local:"wordpiece-tokenization",headingTag:"h1"}}),f=new $n({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/section6.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter6/section6.ipynb"}]}}),k=new kn({props:{id:"qpv6ms_t_1A"}}),I=new Fs({props:{$$slots:{default:[zn]},$$scope:{ctx:w}}}),$=new fl({props:{title:"Algoritmo de Entrenamiento",local:"training-algorithm",headingTag:"h2"}}),d=new Fs({props:{warning:!0,$$slots:{default:[Qn]},$$scope:{ctx:w}}}),z=new U({props:{code:"dyUyMCUyMyUyM28lMjAlMjMlMjNyJTIwJTIzJTIzZA==",highlighted:"w ##o ##r ##d",wrap:!1}}),E=new U({props:{code:"KCUyMmh1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwdWclMjIlMkMlMjA1KSUyQyUyMCglMjJwdW4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYnVuJTIyJTJDJTIwNCklMkMlMjAoJTIyaHVncyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">&quot;hug&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">10</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;pug&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;pun&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">12</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;bun&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">4</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;hugs&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)',wrap:!1}}),_=new U({props:{code:"KCUyMmglMjIlMjAlMjIlMjMlMjN1JTIyJTIwJTIyJTIzJTIzZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM2clMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM24lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMiUyMyUyM3UlMjIlMjAlMjIlMjMlMjNuJTIyJTJDJTIwNCklMkMlMjAoJTIyaCUyMiUyMCUyMiUyMyUyM3UlMjIlMjAlMjIlMjMlMjNnJTIyJTIwJTIyJTIzJTIzcyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">10</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#s</span>&quot;</span>, <span class="hljs-number">5</span>)',wrap:!1}}),V=new U({props:{code:"Vm9jYWJ1bGFyeSUzQSUyMCU1QiUyMmIlMjIlMkMlMjAlMjJoJTIyJTJDJTIwJTIycCUyMiUyQyUyMCUyMiUyMyUyM2clMjIlMkMlMjAlMjIlMjMlMjNuJTIyJTJDJTIwJTIyJTIzJTIzcyUyMiUyQyUyMCUyMiUyMyUyM3UlMjIlMkMlMjAlMjIlMjMlMjNncyUyMiU1RCUwQUNvcnB1cyUzQSUyMCglMjJoJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM2clMjIlMkMlMjAxMCklMkMlMjAoJTIycCUyMiUyMCUyMiUyMyUyM3UlMjIlMjAlMjIlMjMlMjNnJTIyJTJDJTIwNSklMkMlMjAoJTIycCUyMiUyMCUyMiUyMyUyM3UlMjIlMjAlMjIlMjMlMjNuJTIyJTJDJTIwMTIpJTJDJTIwKCUyMmIlMjIlMjAlMjIlMjMlMjN1JTIyJTIwJTIyJTIzJTIzbiUyMiUyQyUyMDQpJTJDJTIwKCUyMmglMjIlMjAlMjIlMjMlMjN1JTIyJTIwJTIyJTIzJTIzZ3MlMjIlMkMlMjA1KQ==",highlighted:`Vocabulary: [<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;p&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#s</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#gs</span>&quot;</span>]
Corpus: (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">10</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#gs</span>&quot;</span>, <span class="hljs-number">5</span>)`,wrap:!1}}),H=new U({props:{code:"Vm9jYWJ1bGFyeSUzQSUyMCU1QiUyMmIlMjIlMkMlMjAlMjJoJTIyJTJDJTIwJTIycCUyMiUyQyUyMCUyMiUyMyUyM2clMjIlMkMlMjAlMjIlMjMlMjNuJTIyJTJDJTIwJTIyJTIzJTIzcyUyMiUyQyUyMCUyMiUyMyUyM3UlMjIlMkMlMjAlMjIlMjMlMjNncyUyMiUyQyUyMCUyMmh1JTIyJTVEJTBBQ29ycHVzJTNBJTIwKCUyMmh1JTIyJTIwJTIyJTIzJTIzZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM2clMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM24lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMiUyMyUyM3UlMjIlMjAlMjIlMjMlMjNuJTIyJTJDJTIwNCklMkMlMjAoJTIyaHUlMjIlMjAlMjIlMjMlMjNncyUyMiUyQyUyMDUp",highlighted:`Vocabulary: [<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;p&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#s</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#gs</span>&quot;</span>, <span class="hljs-string">&quot;hu&quot;</span>]
Corpus: (<span class="hljs-string">&quot;hu&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">10</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;hu&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#gs</span>&quot;</span>, <span class="hljs-number">5</span>)`,wrap:!1}}),D=new U({props:{code:"Vm9jYWJ1bGFyeSUzQSUyMCU1QiUyMmIlMjIlMkMlMjAlMjJoJTIyJTJDJTIwJTIycCUyMiUyQyUyMCUyMiUyMyUyM2clMjIlMkMlMjAlMjIlMjMlMjNuJTIyJTJDJTIwJTIyJTIzJTIzcyUyMiUyQyUyMCUyMiUyMyUyM3UlMjIlMkMlMjAlMjIlMjMlMjNncyUyMiUyQyUyMCUyMmh1JTIyJTJDJTIwJTIyaHVnJTIyJTVEJTBBQ29ycHVzJTNBJTIwKCUyMmh1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM2clMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIyJTIzJTIzdSUyMiUyMCUyMiUyMyUyM24lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMiUyMyUyM3UlMjIlMjAlMjIlMjMlMjNuJTIyJTJDJTIwNCklMkMlMjAoJTIyaHUlMjIlMjAlMjIlMjMlMjNncyUyMiUyQyUyMDUp",highlighted:`Vocabulary: [<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;p&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#s</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span>, <span class="hljs-string">&quot;#<span class="hljs-subst">#gs</span>&quot;</span>, <span class="hljs-string">&quot;hu&quot;</span>, <span class="hljs-string">&quot;hug&quot;</span>]
Corpus: (<span class="hljs-string">&quot;hug&quot;</span>, <span class="hljs-number">10</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#g</span>&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#u</span>&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#n</span>&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;hu&quot;</span> <span class="hljs-string">&quot;#<span class="hljs-subst">#gs</span>&quot;</span>, <span class="hljs-number">5</span>)`,wrap:!1}}),g=new Fs({props:{$$slots:{default:[vn]},$$scope:{ctx:w}}}),Y=new fl({props:{title:"Algoritmo de Tokenización",local:"tokenization-algorithm",headingTag:"h2"}}),C=new Fs({props:{$$slots:{default:[Bn]},$$scope:{ctx:w}}}),O=new fl({props:{title:"Implementando WordPiece",local:"implementing-wordpiece",headingTag:"h2"}}),ls=new U({props:{code:"Y29ycHVzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIyVGhpcyUyMGlzJTIwdGhlJTIwSHVnZ2luZyUyMEZhY2UlMjBDb3Vyc2UuJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyVGhpcyUyMGNoYXB0ZXIlMjBpcyUyMGFib3V0JTIwdG9rZW5pemF0aW9uLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMlRoaXMlMjBzZWN0aW9uJTIwc2hvd3MlMjBzZXZlcmFsJTIwdG9rZW5pemVyJTIwYWxnb3JpdGhtcy4lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJIb3BlZnVsbHklMkMlMjB5b3UlMjB3aWxsJTIwYmUlMjBhYmxlJTIwdG8lMjB1bmRlcnN0YW5kJTIwaG93JTIwdGhleSUyMGFyZSUyMHRyYWluZWQlMjBhbmQlMjBnZW5lcmF0ZSUyMHRva2Vucy4lMjIlMkMlMEElNUQ=",highlighted:`corpus = [
<span class="hljs-string">&quot;This is the Hugging Face Course.&quot;</span>,
<span class="hljs-string">&quot;This chapter is about tokenization.&quot;</span>,
<span class="hljs-string">&quot;This section shows several tokenizer algorithms.&quot;</span>,
<span class="hljs-string">&quot;Hopefully, you will be able to understand how they are trained and generate tokens.&quot;</span>,
]`,wrap:!1}}),ts=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIp",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-cased&quot;</span>)`,wrap:!1}}),ps=new U({props:{code:"ZnJvbSUyMGNvbGxlY3Rpb25zJTIwaW1wb3J0JTIwZGVmYXVsdGRpY3QlMEElMEF3b3JkX2ZyZXFzJTIwJTNEJTIwZGVmYXVsdGRpY3QoaW50KSUwQWZvciUyMHRleHQlMjBpbiUyMGNvcnB1cyUzQSUwQSUyMCUyMCUyMCUyMHdvcmRzX3dpdGhfb2Zmc2V0cyUyMCUzRCUyMHRva2VuaXplci5iYWNrZW5kX3Rva2VuaXplci5wcmVfdG9rZW5pemVyLnByZV90b2tlbml6ZV9zdHIodGV4dCklMEElMjAlMjAlMjAlMjBuZXdfd29yZHMlMjAlM0QlMjAlNUJ3b3JkJTIwZm9yJTIwd29yZCUyQyUyMG9mZnNldCUyMGluJTIwd29yZHNfd2l0aF9vZmZzZXRzJTVEJTBBJTIwJTIwJTIwJTIwZm9yJTIwd29yZCUyMGluJTIwbmV3X3dvcmRzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd29yZF9mcmVxcyU1QndvcmQlNUQlMjAlMkIlM0QlMjAxJTBBJTBBd29yZF9mcmVxcw==",highlighted:`<span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> defaultdict
word_freqs = defaultdict(<span class="hljs-built_in">int</span>)
<span class="hljs-keyword">for</span> text <span class="hljs-keyword">in</span> corpus:
words_with_offsets = tokenizer.backend_tokenizer.pre_tokenizer.pre_tokenize_str(text)
new_words = [word <span class="hljs-keyword">for</span> word, offset <span class="hljs-keyword">in</span> words_with_offsets]
<span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> new_words:
word_freqs[word] += <span class="hljs-number">1</span>
word_freqs`,wrap:!1}}),Ms=new U({props:{code:"ZGVmYXVsdGRpY3QoJTBBJTIwJTIwJTIwJTIwaW50JTJDJTIwJTdCJ1RoaXMnJTNBJTIwMyUyQyUyMCdpcyclM0ElMjAyJTJDJTIwJ3RoZSclM0ElMjAxJTJDJTIwJ0h1Z2dpbmcnJTNBJTIwMSUyQyUyMCdGYWNlJyUzQSUyMDElMkMlMjAnQ291cnNlJyUzQSUyMDElMkMlMjAnLiclM0ElMjA0JTJDJTIwJ2NoYXB0ZXInJTNBJTIwMSUyQyUyMCdhYm91dCclM0ElMjAxJTJDJTBBJTIwJTIwJTIwJTIwJ3Rva2VuaXphdGlvbiclM0ElMjAxJTJDJTIwJ3NlY3Rpb24nJTNBJTIwMSUyQyUyMCdzaG93cyclM0ElMjAxJTJDJTIwJ3NldmVyYWwnJTNBJTIwMSUyQyUyMCd0b2tlbml6ZXInJTNBJTIwMSUyQyUyMCdhbGdvcml0aG1zJyUzQSUyMDElMkMlMjAnSG9wZWZ1bGx5JyUzQSUyMDElMkMlMEElMjAlMjAlMjAlMjAnJTJDJyUzQSUyMDElMkMlMjAneW91JyUzQSUyMDElMkMlMjAnd2lsbCclM0ElMjAxJTJDJTIwJ2JlJyUzQSUyMDElMkMlMjAnYWJsZSclM0ElMjAxJTJDJTIwJ3RvJyUzQSUyMDElMkMlMjAndW5kZXJzdGFuZCclM0ElMjAxJTJDJTIwJ2hvdyclM0ElMjAxJTJDJTIwJ3RoZXknJTNBJTIwMSUyQyUyMCdhcmUnJTNBJTIwMSUyQyUwQSUyMCUyMCUyMCUyMCd0cmFpbmVkJyUzQSUyMDElMkMlMjAnYW5kJyUzQSUyMDElMkMlMjAnZ2VuZXJhdGUnJTNBJTIwMSUyQyUyMCd0b2tlbnMnJTNBJTIwMSU3RCk=",highlighted:`defaultdict(
<span class="hljs-built_in">int</span>, {<span class="hljs-string">&#x27;This&#x27;</span>: <span class="hljs-number">3</span>, <span class="hljs-string">&#x27;is&#x27;</span>: <span class="hljs-number">2</span>, <span class="hljs-string">&#x27;the&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;Hugging&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;Face&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;Course&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;.&#x27;</span>: <span class="hljs-number">4</span>, <span class="hljs-string">&#x27;chapter&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;about&#x27;</span>: <span class="hljs-number">1</span>,
<span class="hljs-string">&#x27;tokenization&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;section&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;shows&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;several&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;tokenizer&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;algorithms&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;Hopefully&#x27;</span>: <span class="hljs-number">1</span>,
<span class="hljs-string">&#x27;,&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;you&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;will&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;be&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;able&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;to&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;understand&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;how&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;they&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;are&#x27;</span>: <span class="hljs-number">1</span>,
<span class="hljs-string">&#x27;trained&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;and&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;generate&#x27;</span>: <span class="hljs-number">1</span>, <span class="hljs-string">&#x27;tokens&#x27;</span>: <span class="hljs-number">1</span>})`,wrap:!1}}),os=new U({props:{code:"YWxwaGFiZXQlMjAlM0QlMjAlNUIlNUQlMEFmb3IlMjB3b3JkJTIwaW4lMjB3b3JkX2ZyZXFzLmtleXMoKSUzQSUwQSUyMCUyMCUyMCUyMGlmJTIwd29yZCU1QjAlNUQlMjBub3QlMjBpbiUyMGFscGhhYmV0JTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWxwaGFiZXQuYXBwZW5kKHdvcmQlNUIwJTVEKSUwQSUyMCUyMCUyMCUyMGZvciUyMGxldHRlciUyMGluJTIwd29yZCU1QjElM0ElNUQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGYlMjIlMjMlMjMlN0JsZXR0ZXIlN0QlMjIlMjBub3QlMjBpbiUyMGFscGhhYmV0JTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWxwaGFiZXQuYXBwZW5kKGYlMjIlMjMlMjMlN0JsZXR0ZXIlN0QlMjIpJTBBJTBBYWxwaGFiZXQuc29ydCgpJTBBYWxwaGFiZXQlMEElMEFwcmludChhbHBoYWJldCk=",highlighted:`alphabet = []
<span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> word_freqs.keys():
<span class="hljs-keyword">if</span> word[<span class="hljs-number">0</span>] <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> alphabet:
alphabet.append(word[<span class="hljs-number">0</span>])
<span class="hljs-keyword">for</span> letter <span class="hljs-keyword">in</span> word[<span class="hljs-number">1</span>:]:
<span class="hljs-keyword">if</span> <span class="hljs-string">f&quot;##<span class="hljs-subst">{letter}</span>&quot;</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> alphabet:
alphabet.append(<span class="hljs-string">f&quot;##<span class="hljs-subst">{letter}</span>&quot;</span>)
alphabet.sort()
alphabet
<span class="hljs-built_in">print</span>(alphabet)`,wrap:!1}}),rs=new U({props:{code:"JTVCJyUyMyUyM2EnJTJDJTIwJyUyMyUyM2InJTJDJTIwJyUyMyUyM2MnJTJDJTIwJyUyMyUyM2QnJTJDJTIwJyUyMyUyM2UnJTJDJTIwJyUyMyUyM2YnJTJDJTIwJyUyMyUyM2cnJTJDJTIwJyUyMyUyM2gnJTJDJTIwJyUyMyUyM2knJTJDJTIwJyUyMyUyM2snJTJDJTIwJyUyMyUyM2wnJTJDJTIwJyUyMyUyM20nJTJDJTIwJyUyMyUyM24nJTJDJTIwJyUyMyUyM28nJTJDJTIwJyUyMyUyM3AnJTJDJTIwJyUyMyUyM3InJTJDJTIwJyUyMyUyM3MnJTJDJTBBJTIwJyUyMyUyM3QnJTJDJTIwJyUyMyUyM3UnJTJDJTIwJyUyMyUyM3YnJTJDJTIwJyUyMyUyM3cnJTJDJTIwJyUyMyUyM3knJTJDJTIwJyUyMyUyM3onJTJDJTIwJyUyQyclMkMlMjAnLiclMkMlMjAnQyclMkMlMjAnRiclMkMlMjAnSCclMkMlMjAnVCclMkMlMjAnYSclMkMlMjAnYiclMkMlMjAnYyclMkMlMjAnZyclMkMlMjAnaCclMkMlMjAnaSclMkMlMjAncyclMkMlMjAndCclMkMlMjAndSclMkMlMEElMjAndyclMkMlMjAneSclNUQ=",highlighted:`[<span class="hljs-string">&#x27;##a&#x27;</span>, <span class="hljs-string">&#x27;##b&#x27;</span>, <span class="hljs-string">&#x27;##c&#x27;</span>, <span class="hljs-string">&#x27;##d&#x27;</span>, <span class="hljs-string">&#x27;##e&#x27;</span>, <span class="hljs-string">&#x27;##f&#x27;</span>, <span class="hljs-string">&#x27;##g&#x27;</span>, <span class="hljs-string">&#x27;##h&#x27;</span>, <span class="hljs-string">&#x27;##i&#x27;</span>, <span class="hljs-string">&#x27;##k&#x27;</span>, <span class="hljs-string">&#x27;##l&#x27;</span>, <span class="hljs-string">&#x27;##m&#x27;</span>, <span class="hljs-string">&#x27;##n&#x27;</span>, <span class="hljs-string">&#x27;##o&#x27;</span>, <span class="hljs-string">&#x27;##p&#x27;</span>, <span class="hljs-string">&#x27;##r&#x27;</span>, <span class="hljs-string">&#x27;##s&#x27;</span>,
<span class="hljs-string">&#x27;##t&#x27;</span>, <span class="hljs-string">&#x27;##u&#x27;</span>, <span class="hljs-string">&#x27;##v&#x27;</span>, <span class="hljs-string">&#x27;##w&#x27;</span>, <span class="hljs-string">&#x27;##y&#x27;</span>, <span class="hljs-string">&#x27;##z&#x27;</span>, <span class="hljs-string">&#x27;,&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;C&#x27;</span>, <span class="hljs-string">&#x27;F&#x27;</span>, <span class="hljs-string">&#x27;H&#x27;</span>, <span class="hljs-string">&#x27;T&#x27;</span>, <span class="hljs-string">&#x27;a&#x27;</span>, <span class="hljs-string">&#x27;b&#x27;</span>, <span class="hljs-string">&#x27;c&#x27;</span>, <span class="hljs-string">&#x27;g&#x27;</span>, <span class="hljs-string">&#x27;h&#x27;</span>, <span class="hljs-string">&#x27;i&#x27;</span>, <span class="hljs-string">&#x27;s&#x27;</span>, <span class="hljs-string">&#x27;t&#x27;</span>, <span class="hljs-string">&#x27;u&#x27;</span>,
<span class="hljs-string">&#x27;w&#x27;</span>, <span class="hljs-string">&#x27;y&#x27;</span>]`,wrap:!1}}),ys=new U({props:{code:"dm9jYWIlMjAlM0QlMjAlNUIlMjIlNUJQQUQlNUQlMjIlMkMlMjAlMjIlNUJVTkslNUQlMjIlMkMlMjAlMjIlNUJDTFMlNUQlMjIlMkMlMjAlMjIlNUJTRVAlNUQlMjIlMkMlMjAlMjIlNUJNQVNLJTVEJTIyJTVEJTIwJTJCJTIwYWxwaGFiZXQuY29weSgp",highlighted:'vocab = [<span class="hljs-string">&quot;[PAD]&quot;</span>, <span class="hljs-string">&quot;[UNK]&quot;</span>, <span class="hljs-string">&quot;[CLS]&quot;</span>, <span class="hljs-string">&quot;[SEP]&quot;</span>, <span class="hljs-string">&quot;[MASK]&quot;</span>] + alphabet.copy()',wrap:!1}}),us=new U({props:{code:"c3BsaXRzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwd29yZCUzQSUyMCU1QmMlMjBpZiUyMGklMjAlM0QlM0QlMjAwJTIwZWxzZSUyMGYlMjIlMjMlMjMlN0JjJTdEJTIyJTIwZm9yJTIwaSUyQyUyMGMlMjBpbiUyMGVudW1lcmF0ZSh3b3JkKSU1RCUwQSUyMCUyMCUyMCUyMGZvciUyMHdvcmQlMjBpbiUyMHdvcmRfZnJlcXMua2V5cygpJTBBJTdE",highlighted:`splits = {
word: [c <span class="hljs-keyword">if</span> i == <span class="hljs-number">0</span> <span class="hljs-keyword">else</span> <span class="hljs-string">f&quot;##<span class="hljs-subst">{c}</span>&quot;</span> <span class="hljs-keyword">for</span> i, c <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(word)]
<span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> word_freqs.keys()
}`,wrap:!1}}),ms=new U({props:{code:"ZGVmJTIwY29tcHV0ZV9wYWlyX3Njb3JlcyhzcGxpdHMpJTNBJTBBJTIwJTIwJTIwJTIwbGV0dGVyX2ZyZXFzJTIwJTNEJTIwZGVmYXVsdGRpY3QoaW50KSUwQSUyMCUyMCUyMCUyMHBhaXJfZnJlcXMlMjAlM0QlMjBkZWZhdWx0ZGljdChpbnQpJTBBJTIwJTIwJTIwJTIwZm9yJTIwd29yZCUyQyUyMGZyZXElMjBpbiUyMHdvcmRfZnJlcXMuaXRlbXMoKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwbGl0JTIwJTNEJTIwc3BsaXRzJTVCd29yZCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbGVuKHNwbGl0KSUyMCUzRCUzRCUyMDElM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsZXR0ZXJfZnJlcXMlNUJzcGxpdCU1QjAlNUQlNUQlMjAlMkIlM0QlMjBmcmVxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY29udGludWUlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmb3IlMjBpJTIwaW4lMjByYW5nZShsZW4oc3BsaXQpJTIwLSUyMDEpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGFpciUyMCUzRCUyMChzcGxpdCU1QmklNUQlMkMlMjBzcGxpdCU1QmklMjAlMkIlMjAxJTVEKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxldHRlcl9mcmVxcyU1QnNwbGl0JTVCaSU1RCU1RCUyMCUyQiUzRCUyMGZyZXElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYWlyX2ZyZXFzJTVCcGFpciU1RCUyMCUyQiUzRCUyMGZyZXElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsZXR0ZXJfZnJlcXMlNUJzcGxpdCU1Qi0xJTVEJTVEJTIwJTJCJTNEJTIwZnJlcSUwQSUwQSUyMCUyMCUyMCUyMHNjb3JlcyUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhaXIlM0ElMjBmcmVxJTIwJTJGJTIwKGxldHRlcl9mcmVxcyU1QnBhaXIlNUIwJTVEJTVEJTIwKiUyMGxldHRlcl9mcmVxcyU1QnBhaXIlNUIxJTVEJTVEKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZvciUyMHBhaXIlMkMlMjBmcmVxJTIwaW4lMjBwYWlyX2ZyZXFzLml0ZW1zKCklMEElMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjByZXR1cm4lMjBzY29yZXM=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_pair_scores</span>(<span class="hljs-params">splits</span>):
letter_freqs = defaultdict(<span class="hljs-built_in">int</span>)
pair_freqs = defaultdict(<span class="hljs-built_in">int</span>)
<span class="hljs-keyword">for</span> word, freq <span class="hljs-keyword">in</span> word_freqs.items():
split = splits[word]
<span class="hljs-keyword">if</span> <span class="hljs-built_in">len</span>(split) == <span class="hljs-number">1</span>:
letter_freqs[split[<span class="hljs-number">0</span>]] += freq
<span class="hljs-keyword">continue</span>
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(split) - <span class="hljs-number">1</span>):
pair = (split[i], split[i + <span class="hljs-number">1</span>])
letter_freqs[split[i]] += freq
pair_freqs[pair] += freq
letter_freqs[split[-<span class="hljs-number">1</span>]] += freq
scores = {
pair: freq / (letter_freqs[pair[<span class="hljs-number">0</span>]] * letter_freqs[pair[<span class="hljs-number">1</span>]])
<span class="hljs-keyword">for</span> pair, freq <span class="hljs-keyword">in</span> pair_freqs.items()
}
<span class="hljs-keyword">return</span> scores`,wrap:!1}}),Ts=new U({props:{code:"cGFpcl9zY29yZXMlMjAlM0QlMjBjb21wdXRlX3BhaXJfc2NvcmVzKHNwbGl0cyklMEFmb3IlMjBpJTJDJTIwa2V5JTIwaW4lMjBlbnVtZXJhdGUocGFpcl9zY29yZXMua2V5cygpKSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KGYlMjIlN0JrZXklN0QlM0ElMjAlN0JwYWlyX3Njb3JlcyU1QmtleSU1RCU3RCUyMiklMEElMjAlMjAlMjAlMjBpZiUyMGklMjAlM0UlM0QlMjA1JTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYnJlYWs=",highlighted:`pair_scores = compute_pair_scores(splits)
<span class="hljs-keyword">for</span> i, key <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(pair_scores.keys()):
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;<span class="hljs-subst">{key}</span>: <span class="hljs-subst">{pair_scores[key]}</span>&quot;</span>)
<span class="hljs-keyword">if</span> i &gt;= <span class="hljs-number">5</span>:
<span class="hljs-keyword">break</span>`,wrap:!1}}),hs=new U({props:{code:"KCdUJyUyQyUyMCclMjMlMjNoJyklM0ElMjAwLjEyNSUwQSgnJTIzJTIzaCclMkMlMjAnJTIzJTIzaScpJTNBJTIwMC4wMzQwOTA5MDkwOTA5MDkwOSUwQSgnJTIzJTIzaSclMkMlMjAnJTIzJTIzcycpJTNBJTIwMC4wMjcyNzI3MjcyNzI3MjcyNyUwQSgnaSclMkMlMjAnJTIzJTIzcycpJTNBJTIwMC4xJTBBKCd0JyUyQyUyMCclMjMlMjNoJyklM0ElMjAwLjAzNTcxNDI4NTcxNDI4NTcxJTBBKCclMjMlMjNoJyUyQyUyMCclMjMlMjNlJyklM0ElMjAwLjAxMTkwNDc2MTkwNDc2MTkwNA==",highlighted:`(<span class="hljs-string">&#x27;T&#x27;</span>, <span class="hljs-string">&#x27;##h&#x27;</span>): <span class="hljs-number">0.125</span>
(<span class="hljs-string">&#x27;##h&#x27;</span>, <span class="hljs-string">&#x27;##i&#x27;</span>): <span class="hljs-number">0.03409090909090909</span>
(<span class="hljs-string">&#x27;##i&#x27;</span>, <span class="hljs-string">&#x27;##s&#x27;</span>): <span class="hljs-number">0.02727272727272727</span>
(<span class="hljs-string">&#x27;i&#x27;</span>, <span class="hljs-string">&#x27;##s&#x27;</span>): <span class="hljs-number">0.1</span>
(<span class="hljs-string">&#x27;t&#x27;</span>, <span class="hljs-string">&#x27;##h&#x27;</span>): <span class="hljs-number">0.03571428571428571</span>
(<span class="hljs-string">&#x27;##h&#x27;</span>, <span class="hljs-string">&#x27;##e&#x27;</span>): <span class="hljs-number">0.011904761904761904</span>`,wrap:!1}}),Is=new U({props:{code:"YmVzdF9wYWlyJTIwJTNEJTIwJTIyJTIyJTBBbWF4X3Njb3JlJTIwJTNEJTIwTm9uZSUwQWZvciUyMHBhaXIlMkMlMjBzY29yZSUyMGluJTIwcGFpcl9zY29yZXMuaXRlbXMoKSUzQSUwQSUyMCUyMCUyMCUyMGlmJTIwbWF4X3Njb3JlJTIwaXMlMjBOb25lJTIwb3IlMjBtYXhfc2NvcmUlMjAlM0MlMjBzY29yZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJlc3RfcGFpciUyMCUzRCUyMHBhaXIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtYXhfc2NvcmUlMjAlM0QlMjBzY29yZSUwQSUwQXByaW50KGJlc3RfcGFpciUyQyUyMG1heF9zY29yZSk=",highlighted:`best_pair = <span class="hljs-string">&quot;&quot;</span>
max_score = <span class="hljs-literal">None</span>
<span class="hljs-keyword">for</span> pair, score <span class="hljs-keyword">in</span> pair_scores.items():
<span class="hljs-keyword">if</span> max_score <span class="hljs-keyword">is</span> <span class="hljs-literal">None</span> <span class="hljs-keyword">or</span> max_score &lt; score:
best_pair = pair
max_score = score
<span class="hljs-built_in">print</span>(best_pair, max_score)`,wrap:!1}}),ds=new U({props:{code:"KCdhJyUyQyUyMCclMjMlMjNiJyklMjAwLjI=",highlighted:'(<span class="hljs-string">&#x27;a&#x27;</span>, <span class="hljs-string">&#x27;##b&#x27;</span>) <span class="hljs-number">0.2</span>',wrap:!1}}),Cs=new U({props:{code:"dm9jYWIuYXBwZW5kKCUyMmFiJTIyKQ==",highlighted:'vocab.append(<span class="hljs-string">&quot;ab&quot;</span>)',wrap:!1}}),xs=new U({props:{code:"ZGVmJTIwbWVyZ2VfcGFpcihhJTJDJTIwYiUyQyUyMHNwbGl0cyklM0ElMEElMjAlMjAlMjAlMjBmb3IlMjB3b3JkJTIwaW4lMjB3b3JkX2ZyZXFzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BsaXQlMjAlM0QlMjBzcGxpdHMlNUJ3b3JkJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBsZW4oc3BsaXQpJTIwJTNEJTNEJTIwMSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbnRpbnVlJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaSUyMCUzRCUyMDAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aGlsZSUyMGklMjAlM0MlMjBsZW4oc3BsaXQpJTIwLSUyMDElM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMHNwbGl0JTVCaSU1RCUyMCUzRCUzRCUyMGElMjBhbmQlMjBzcGxpdCU1QmklMjAlMkIlMjAxJTVEJTIwJTNEJTNEJTIwYiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1lcmdlJTIwJTNEJTIwYSUyMCUyQiUyMGIlNUIyJTNBJTVEJTIwaWYlMjBiLnN0YXJ0c3dpdGgoJTIyJTIzJTIzJTIyKSUyMGVsc2UlMjBhJTIwJTJCJTIwYiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwbGl0JTIwJTNEJTIwc3BsaXQlNUIlM0FpJTVEJTIwJTJCJTIwJTVCbWVyZ2UlNUQlMjAlMkIlMjBzcGxpdCU1QmklMjAlMkIlMjAyJTIwJTNBJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGklMjAlMkIlM0QlMjAxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BsaXRzJTVCd29yZCU1RCUyMCUzRCUyMHNwbGl0JTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwc3BsaXRz",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">merge_pair</span>(<span class="hljs-params">a, b, splits</span>):
<span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> word_freqs:
split = splits[word]
<span class="hljs-keyword">if</span> <span class="hljs-built_in">len</span>(split) == <span class="hljs-number">1</span>:
<span class="hljs-keyword">continue</span>
i = <span class="hljs-number">0</span>
<span class="hljs-keyword">while</span> i &lt; <span class="hljs-built_in">len</span>(split) - <span class="hljs-number">1</span>:
<span class="hljs-keyword">if</span> split[i] == a <span class="hljs-keyword">and</span> split[i + <span class="hljs-number">1</span>] == b:
merge = a + b[<span class="hljs-number">2</span>:] <span class="hljs-keyword">if</span> b.startswith(<span class="hljs-string">&quot;##&quot;</span>) <span class="hljs-keyword">else</span> a + b
split = split[:i] + [merge] + split[i + <span class="hljs-number">2</span> :]
<span class="hljs-keyword">else</span>:
i += <span class="hljs-number">1</span>
splits[word] = split
<span class="hljs-keyword">return</span> splits`,wrap:!1}}),qs=new U({props:{code:"c3BsaXRzJTIwJTNEJTIwbWVyZ2VfcGFpciglMjJhJTIyJTJDJTIwJTIyJTIzJTIzYiUyMiUyQyUyMHNwbGl0cyklMEFzcGxpdHMlNUIlMjJhYm91dCUyMiU1RA==",highlighted:`splits = merge_pair(<span class="hljs-string">&quot;a&quot;</span>, <span class="hljs-string">&quot;##b&quot;</span>, splits)
splits[<span class="hljs-string">&quot;about&quot;</span>]`,wrap:!1}}),ks=new U({props:{code:"JTVCJ2FiJyUyQyUyMCclMjMlMjNvJyUyQyUyMCclMjMlMjN1JyUyQyUyMCclMjMlMjN0JyU1RA==",highlighted:'[<span class="hljs-string">&#x27;ab&#x27;</span>, <span class="hljs-string">&#x27;##o&#x27;</span>, <span class="hljs-string">&#x27;##u&#x27;</span>, <span class="hljs-string">&#x27;##t&#x27;</span>]',wrap:!1}}),As=new U({props:{code:"dm9jYWJfc2l6ZSUyMCUzRCUyMDcwJTBBd2hpbGUlMjBsZW4odm9jYWIpJTIwJTNDJTIwdm9jYWJfc2l6ZSUzQSUwQSUyMCUyMCUyMCUyMHNjb3JlcyUyMCUzRCUyMGNvbXB1dGVfcGFpcl9zY29yZXMoc3BsaXRzKSUwQSUyMCUyMCUyMCUyMGJlc3RfcGFpciUyQyUyMG1heF9zY29yZSUyMCUzRCUyMCUyMiUyMiUyQyUyME5vbmUlMEElMjAlMjAlMjAlMjBmb3IlMjBwYWlyJTJDJTIwc2NvcmUlMjBpbiUyMHNjb3Jlcy5pdGVtcygpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBtYXhfc2NvcmUlMjBpcyUyME5vbmUlMjBvciUyMG1heF9zY29yZSUyMCUzQyUyMHNjb3JlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmVzdF9wYWlyJTIwJTNEJTIwcGFpciUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1heF9zY29yZSUyMCUzRCUyMHNjb3JlJTBBJTIwJTIwJTIwJTIwc3BsaXRzJTIwJTNEJTIwbWVyZ2VfcGFpcigqYmVzdF9wYWlyJTJDJTIwc3BsaXRzKSUwQSUyMCUyMCUyMCUyMG5ld190b2tlbiUyMCUzRCUyMCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiZXN0X3BhaXIlNUIwJTVEJTIwJTJCJTIwYmVzdF9wYWlyJTVCMSU1RCU1QjIlM0ElNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGJlc3RfcGFpciU1QjElNUQuc3RhcnRzd2l0aCglMjIlMjMlMjMlMjIpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUyMGJlc3RfcGFpciU1QjAlNUQlMjAlMkIlMjBiZXN0X3BhaXIlNUIxJTVEJTBBJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMHZvY2FiLmFwcGVuZChuZXdfdG9rZW4p",highlighted:`vocab_size = <span class="hljs-number">70</span>
<span class="hljs-keyword">while</span> <span class="hljs-built_in">len</span>(vocab) &lt; vocab_size:
scores = compute_pair_scores(splits)
best_pair, max_score = <span class="hljs-string">&quot;&quot;</span>, <span class="hljs-literal">None</span>
<span class="hljs-keyword">for</span> pair, score <span class="hljs-keyword">in</span> scores.items():
<span class="hljs-keyword">if</span> max_score <span class="hljs-keyword">is</span> <span class="hljs-literal">None</span> <span class="hljs-keyword">or</span> max_score &lt; score:
best_pair = pair
max_score = score
splits = merge_pair(*best_pair, splits)
new_token = (
best_pair[<span class="hljs-number">0</span>] + best_pair[<span class="hljs-number">1</span>][<span class="hljs-number">2</span>:]
<span class="hljs-keyword">if</span> best_pair[<span class="hljs-number">1</span>].startswith(<span class="hljs-string">&quot;##&quot;</span>)
<span class="hljs-keyword">else</span> best_pair[<span class="hljs-number">0</span>] + best_pair[<span class="hljs-number">1</span>]
)
vocab.append(new_token)`,wrap:!1}}),Qs=new U({props:{code:"cHJpbnQodm9jYWIp",highlighted:'<span class="hljs-built_in">print</span>(vocab)',wrap:!1}}),vs=new U({props:{code:"JTVCJyU1QlBBRCU1RCclMkMlMjAnJTVCVU5LJTVEJyUyQyUyMCclNUJDTFMlNUQnJTJDJTIwJyU1QlNFUCU1RCclMkMlMjAnJTVCTUFTSyU1RCclMkMlMjAnJTIzJTIzYSclMkMlMjAnJTIzJTIzYiclMkMlMjAnJTIzJTIzYyclMkMlMjAnJTIzJTIzZCclMkMlMjAnJTIzJTIzZSclMkMlMjAnJTIzJTIzZiclMkMlMjAnJTIzJTIzZyclMkMlMjAnJTIzJTIzaCclMkMlMjAnJTIzJTIzaSclMkMlMjAnJTIzJTIzayclMkMlMEElMjAnJTIzJTIzbCclMkMlMjAnJTIzJTIzbSclMkMlMjAnJTIzJTIzbiclMkMlMjAnJTIzJTIzbyclMkMlMjAnJTIzJTIzcCclMkMlMjAnJTIzJTIzciclMkMlMjAnJTIzJTIzcyclMkMlMjAnJTIzJTIzdCclMkMlMjAnJTIzJTIzdSclMkMlMjAnJTIzJTIzdiclMkMlMjAnJTIzJTIzdyclMkMlMjAnJTIzJTIzeSclMkMlMjAnJTIzJTIzeiclMkMlMjAnJTJDJyUyQyUyMCcuJyUyQyUyMCdDJyUyQyUyMCdGJyUyQyUyMCdIJyUyQyUwQSUyMCdUJyUyQyUyMCdhJyUyQyUyMCdiJyUyQyUyMCdjJyUyQyUyMCdnJyUyQyUyMCdoJyUyQyUyMCdpJyUyQyUyMCdzJyUyQyUyMCd0JyUyQyUyMCd1JyUyQyUyMCd3JyUyQyUyMCd5JyUyQyUyMCdhYiclMkMlMjAnJTIzJTIzZnUnJTJDJTIwJ0ZhJyUyQyUyMCdGYWMnJTJDJTIwJyUyMyUyM2N0JyUyQyUyMCclMjMlMjNmdWwnJTJDJTIwJyUyMyUyM2Z1bGwnJTJDJTIwJyUyMyUyM2Z1bGx5JyUyQyUwQSUyMCdUaCclMkMlMjAnY2gnJTJDJTIwJyUyMyUyM2htJyUyQyUyMCdjaGEnJTJDJTIwJ2NoYXAnJTJDJTIwJ2NoYXB0JyUyQyUyMCclMjMlMjN0aG0nJTJDJTIwJ0h1JyUyQyUyMCdIdWcnJTJDJTIwJ0h1Z2cnJTJDJTIwJ3NoJyUyQyUyMCd0aCclMkMlMjAnaXMnJTJDJTIwJyUyMyUyM3RobXMnJTJDJTIwJyUyMyUyM3phJyUyQyUyMCclMjMlMjN6YXQnJTJDJTBBJTIwJyUyMyUyM3V0JyU1RA==",highlighted:`[<span class="hljs-string">&#x27;[PAD]&#x27;</span>, <span class="hljs-string">&#x27;[UNK]&#x27;</span>, <span class="hljs-string">&#x27;[CLS]&#x27;</span>, <span class="hljs-string">&#x27;[SEP]&#x27;</span>, <span class="hljs-string">&#x27;[MASK]&#x27;</span>, <span class="hljs-string">&#x27;##a&#x27;</span>, <span class="hljs-string">&#x27;##b&#x27;</span>, <span class="hljs-string">&#x27;##c&#x27;</span>, <span class="hljs-string">&#x27;##d&#x27;</span>, <span class="hljs-string">&#x27;##e&#x27;</span>, <span class="hljs-string">&#x27;##f&#x27;</span>, <span class="hljs-string">&#x27;##g&#x27;</span>, <span class="hljs-string">&#x27;##h&#x27;</span>, <span class="hljs-string">&#x27;##i&#x27;</span>, <span class="hljs-string">&#x27;##k&#x27;</span>,
<span class="hljs-string">&#x27;##l&#x27;</span>, <span class="hljs-string">&#x27;##m&#x27;</span>, <span class="hljs-string">&#x27;##n&#x27;</span>, <span class="hljs-string">&#x27;##o&#x27;</span>, <span class="hljs-string">&#x27;##p&#x27;</span>, <span class="hljs-string">&#x27;##r&#x27;</span>, <span class="hljs-string">&#x27;##s&#x27;</span>, <span class="hljs-string">&#x27;##t&#x27;</span>, <span class="hljs-string">&#x27;##u&#x27;</span>, <span class="hljs-string">&#x27;##v&#x27;</span>, <span class="hljs-string">&#x27;##w&#x27;</span>, <span class="hljs-string">&#x27;##y&#x27;</span>, <span class="hljs-string">&#x27;##z&#x27;</span>, <span class="hljs-string">&#x27;,&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;C&#x27;</span>, <span class="hljs-string">&#x27;F&#x27;</span>, <span class="hljs-string">&#x27;H&#x27;</span>,
<span class="hljs-string">&#x27;T&#x27;</span>, <span class="hljs-string">&#x27;a&#x27;</span>, <span class="hljs-string">&#x27;b&#x27;</span>, <span class="hljs-string">&#x27;c&#x27;</span>, <span class="hljs-string">&#x27;g&#x27;</span>, <span class="hljs-string">&#x27;h&#x27;</span>, <span class="hljs-string">&#x27;i&#x27;</span>, <span class="hljs-string">&#x27;s&#x27;</span>, <span class="hljs-string">&#x27;t&#x27;</span>, <span class="hljs-string">&#x27;u&#x27;</span>, <span class="hljs-string">&#x27;w&#x27;</span>, <span class="hljs-string">&#x27;y&#x27;</span>, <span class="hljs-string">&#x27;ab&#x27;</span>, <span class="hljs-string">&#x27;##fu&#x27;</span>, <span class="hljs-string">&#x27;Fa&#x27;</span>, <span class="hljs-string">&#x27;Fac&#x27;</span>, <span class="hljs-string">&#x27;##ct&#x27;</span>, <span class="hljs-string">&#x27;##ful&#x27;</span>, <span class="hljs-string">&#x27;##full&#x27;</span>, <span class="hljs-string">&#x27;##fully&#x27;</span>,
<span class="hljs-string">&#x27;Th&#x27;</span>, <span class="hljs-string">&#x27;ch&#x27;</span>, <span class="hljs-string">&#x27;##hm&#x27;</span>, <span class="hljs-string">&#x27;cha&#x27;</span>, <span class="hljs-string">&#x27;chap&#x27;</span>, <span class="hljs-string">&#x27;chapt&#x27;</span>, <span class="hljs-string">&#x27;##thm&#x27;</span>, <span class="hljs-string">&#x27;Hu&#x27;</span>, <span class="hljs-string">&#x27;Hug&#x27;</span>, <span class="hljs-string">&#x27;Hugg&#x27;</span>, <span class="hljs-string">&#x27;sh&#x27;</span>, <span class="hljs-string">&#x27;th&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;##thms&#x27;</span>, <span class="hljs-string">&#x27;##za&#x27;</span>, <span class="hljs-string">&#x27;##zat&#x27;</span>,
<span class="hljs-string">&#x27;##ut&#x27;</span>]`,wrap:!1}}),b=new Fs({props:{$$slots:{default:[Zn]},$$scope:{ctx:w}}}),Es=new U({props:{code:"ZGVmJTIwZW5jb2RlX3dvcmQod29yZCklM0ElMEElMjAlMjAlMjAlMjB0b2tlbnMlMjAlM0QlMjAlNUIlNUQlMEElMjAlMjAlMjAlMjB3aGlsZSUyMGxlbih3b3JkKSUyMCUzRSUyMDAlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpJTIwJTNEJTIwbGVuKHdvcmQpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2hpbGUlMjBpJTIwJTNFJTIwMCUyMGFuZCUyMHdvcmQlNUIlM0FpJTVEJTIwbm90JTIwaW4lMjB2b2NhYiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGklMjAtJTNEJTIwMSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwaSUyMCUzRCUzRCUyMDAlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlNUIlMjIlNUJVTkslNUQlMjIlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB0b2tlbnMuYXBwZW5kKHdvcmQlNUIlM0FpJTVEKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdvcmQlMjAlM0QlMjB3b3JkJTVCaSUzQSU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbGVuKHdvcmQpJTIwJTNFJTIwMCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdvcmQlMjAlM0QlMjBmJTIyJTIzJTIzJTdCd29yZCU3RCUyMiUwQSUyMCUyMCUyMCUyMHJldHVybiUyMHRva2Vucw==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">encode_word</span>(<span class="hljs-params">word</span>):
tokens = []
<span class="hljs-keyword">while</span> <span class="hljs-built_in">len</span>(word) &gt; <span class="hljs-number">0</span>:
i = <span class="hljs-built_in">len</span>(word)
<span class="hljs-keyword">while</span> i &gt; <span class="hljs-number">0</span> <span class="hljs-keyword">and</span> word[:i] <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> vocab:
i -= <span class="hljs-number">1</span>
<span class="hljs-keyword">if</span> i == <span class="hljs-number">0</span>:
<span class="hljs-keyword">return</span> [<span class="hljs-string">&quot;[UNK]&quot;</span>]
tokens.append(word[:i])
word = word[i:]
<span class="hljs-keyword">if</span> <span class="hljs-built_in">len</span>(word) &gt; <span class="hljs-number">0</span>:
word = <span class="hljs-string">f&quot;##<span class="hljs-subst">{word}</span>&quot;</span>
<span class="hljs-keyword">return</span> tokens`,wrap:!1}}),_s=new U({props:{code:"cHJpbnQoZW5jb2RlX3dvcmQoJTIySHVnZ2luZyUyMikpJTBBcHJpbnQoZW5jb2RlX3dvcmQoJTIySE9nZ2luZyUyMikp",highlighted:`<span class="hljs-built_in">print</span>(encode_word(<span class="hljs-string">&quot;Hugging&quot;</span>))
<span class="hljs-built_in">print</span>(encode_word(<span class="hljs-string">&quot;HOgging&quot;</span>))`,wrap:!1}}),Ss=new U({props:{code:"JTVCJ0h1Z2cnJTJDJTIwJyUyMyUyM2knJTJDJTIwJyUyMyUyM24nJTJDJTIwJyUyMyUyM2cnJTVEJTBBJTVCJyU1QlVOSyU1RCclNUQ=",highlighted:`[<span class="hljs-string">&#x27;Hugg&#x27;</span>, <span class="hljs-string">&#x27;##i&#x27;</span>, <span class="hljs-string">&#x27;##n&#x27;</span>, <span class="hljs-string">&#x27;##g&#x27;</span>]
[<span class="hljs-string">&#x27;[UNK]&#x27;</span>]`,wrap:!1}}),Vs=new U({props:{code:"ZGVmJTIwdG9rZW5pemUodGV4dCklM0ElMEElMjAlMjAlMjAlMjBwcmVfdG9rZW5pemVfcmVzdWx0JTIwJTNEJTIwdG9rZW5pemVyLl90b2tlbml6ZXIucHJlX3Rva2VuaXplci5wcmVfdG9rZW5pemVfc3RyKHRleHQpJTBBJTIwJTIwJTIwJTIwcHJlX3Rva2VuaXplZF90ZXh0JTIwJTNEJTIwJTVCd29yZCUyMGZvciUyMHdvcmQlMkMlMjBvZmZzZXQlMjBpbiUyMHByZV90b2tlbml6ZV9yZXN1bHQlNUQlMEElMjAlMjAlMjAlMjBlbmNvZGVkX3dvcmRzJTIwJTNEJTIwJTVCZW5jb2RlX3dvcmQod29yZCklMjBmb3IlMjB3b3JkJTIwaW4lMjBwcmVfdG9rZW5pemVkX3RleHQlNUQlMEElMjAlMjAlMjAlMjByZXR1cm4lMjBzdW0oZW5jb2RlZF93b3JkcyUyQyUyMCU1QiU1RCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize</span>(<span class="hljs-params">text</span>):
pre_tokenize_result = tokenizer._tokenizer.pre_tokenizer.pre_tokenize_str(text)
pre_tokenized_text = [word <span class="hljs-keyword">for</span> word, offset <span class="hljs-keyword">in</span> pre_tokenize_result]
encoded_words = [encode_word(word) <span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> pre_tokenized_text]
<span class="hljs-keyword">return</span> <span class="hljs-built_in">sum</span>(encoded_words, [])`,wrap:!1}}),Hs=new U({props:{code:"dG9rZW5pemUoJTIyVGhpcyUyMGlzJTIwdGhlJTIwSHVnZ2luZyUyMEZhY2UlMjBjb3Vyc2UhJTIyKQ==",highlighted:'tokenize(<span class="hljs-string">&quot;This is the Hugging Face course!&quot;</span>)',wrap:!1}}),Ws=new U({props:{code:"JTVCJ1RoJyUyQyUyMCclMjMlMjNpJyUyQyUyMCclMjMlMjNzJyUyQyUyMCdpcyclMkMlMjAndGgnJTJDJTIwJyUyMyUyM2UnJTJDJTIwJ0h1Z2cnJTJDJTIwJyUyMyUyM2knJTJDJTIwJyUyMyUyM24nJTJDJTIwJyUyMyUyM2cnJTJDJTIwJ0ZhYyclMkMlMjAnJTIzJTIzZSclMkMlMjAnYyclMkMlMjAnJTIzJTIzbyclMkMlMjAnJTIzJTIzdSclMkMlMjAnJTIzJTIzciclMkMlMjAnJTIzJTIzcyclMkMlMEElMjAnJTIzJTIzZSclMkMlMjAnJTVCVU5LJTVEJyU1RA==",highlighted:`[<span class="hljs-string">&#x27;Th&#x27;</span>, <span class="hljs-string">&#x27;##i&#x27;</span>, <span class="hljs-string">&#x27;##s&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;th&#x27;</span>, <span class="hljs-string">&#x27;##e&#x27;</span>, <span class="hljs-string">&#x27;Hugg&#x27;</span>, <span class="hljs-string">&#x27;##i&#x27;</span>, <span class="hljs-string">&#x27;##n&#x27;</span>, <span class="hljs-string">&#x27;##g&#x27;</span>, <span class="hljs-string">&#x27;Fac&#x27;</span>, <span class="hljs-string">&#x27;##e&#x27;</span>, <span class="hljs-string">&#x27;c&#x27;</span>, <span class="hljs-string">&#x27;##o&#x27;</span>, <span class="hljs-string">&#x27;##u&#x27;</span>, <span class="hljs-string">&#x27;##r&#x27;</span>, <span class="hljs-string">&#x27;##s&#x27;</span>,
<span class="hljs-string">&#x27;##e&#x27;</span>, <span class="hljs-string">&#x27;[UNK]&#x27;</span>]`,wrap:!1}}),Rs=new An({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter6/6.mdx"}}),{c(){p=M("meta"),T=t(),m=M("p"),h=t(),o(x.$$.fragment),Ks=t(),o(f.$$.fragment),Os=t(),q=M("p"),q.textContent=$l,sa=t(),o(k.$$.fragment),aa=t(),o(I.$$.fragment),la=t(),o($.$$.fragment),na=t(),o(d.$$.fragment),ta=t(),A=M("p"),A.innerHTML=Al,ea=t(),o(z.$$.fragment),pa=t(),Q=M("p"),Q.textContent=zl,Ma=t(),v=M("p"),ql=Cn(`Luego, de nuevo al igual que BPE, WordPiece aprende reglas de fusión. La principal diferencia es la forma que el par fusionado es seleccionado. Envex de seleccionar el par más frecuente, WordPiece calcula un puntaje para cada par, utilizando la siguiente formula:
`),ia=new bn(!1),oa=t(),B=M("p"),B.innerHTML=Ql,ra=t(),Z=M("p"),Z.textContent=vl,ca=t(),o(E.$$.fragment),ya=t(),N=M("p"),N.textContent=Bl,ja=t(),o(_.$$.fragment),ua=t(),S=M("p"),S.innerHTML=Zl,Ja=t(),G=M("p"),G.innerHTML=El,ma=t(),o(V.$$.fragment),Ua=t(),X=M("p"),X.innerHTML=Nl,Ta=t(),o(H.$$.fragment),ha=t(),W=M("p"),W.innerHTML=_l,wa=t(),o(D.$$.fragment),Ia=t(),R=M("p"),R.textContent=Sl,da=t(),o(g.$$.fragment),ga=t(),o(Y.$$.fragment),Ca=t(),P=M("p"),P.innerHTML=Gl,ba=t(),F=M("p"),F.innerHTML=Vl,xa=t(),L=M("p"),L.innerHTML=Xl,fa=t(),K=M("p"),K.innerHTML=Hl,qa=t(),o(C.$$.fragment),ka=t(),o(O.$$.fragment),$a=t(),ss=M("p"),ss.textContent=Wl,Aa=t(),as=M("p"),as.textContent=Dl,za=t(),o(ls.$$.fragment),Qa=t(),ns=M("p"),ns.innerHTML=Rl,va=t(),o(ts.$$.fragment),Ba=t(),es=M("p"),es.textContent=Yl,Za=t(),o(ps.$$.fragment),Ea=t(),o(Ms.$$.fragment),Na=t(),is=M("p"),is.innerHTML=Pl,_a=t(),o(os.$$.fragment),Sa=t(),o(rs.$$.fragment),Ga=t(),cs=M("p"),cs.innerHTML=Fl,Va=t(),o(ys.$$.fragment),Xa=t(),js=M("p"),js.innerHTML=Ll,Ha=t(),o(us.$$.fragment),Wa=t(),Js=M("p"),Js.textContent=Kl,Da=t(),o(ms.$$.fragment),Ra=t(),Us=M("p"),Us.textContent=Ol,Ya=t(),o(Ts.$$.fragment),Pa=t(),o(hs.$$.fragment),Fa=t(),ws=M("p"),ws.textContent=sn,La=t(),o(Is.$$.fragment),Ka=t(),o(ds.$$.fragment),Oa=t(),gs=M("p"),gs.innerHTML=an,sl=t(),o(Cs.$$.fragment),al=t(),bs=M("p"),bs.innerHTML=ln,ll=t(),o(xs.$$.fragment),nl=t(),fs=M("p"),fs.textContent=nn,tl=t(),o(qs.$$.fragment),el=t(),o(ks.$$.fragment),pl=t(),$s=M("p"),$s.textContent=tn,Ml=t(),o(As.$$.fragment),il=t(),zs=M("p"),zs.textContent=en,ol=t(),o(Qs.$$.fragment),rl=t(),o(vs.$$.fragment),cl=t(),Bs=M("p"),Bs.textContent=pn,yl=t(),o(b.$$.fragment),jl=t(),Zs=M("p"),Zs.textContent=Mn,ul=t(),o(Es.$$.fragment),Jl=t(),Ns=M("p"),Ns.textContent=on,ml=t(),o(_s.$$.fragment),Ul=t(),o(Ss.$$.fragment),Tl=t(),Gs=M("p"),Gs.textContent=rn,hl=t(),o(Vs.$$.fragment),wl=t(),Xs=M("p"),Xs.textContent=cn,Il=t(),o(Hs.$$.fragment),dl=t(),o(Ws.$$.fragment),gl=t(),Ds=M("p"),Ds.textContent=yn,Cl=t(),o(Rs.$$.fragment),bl=t(),Ps=M("p"),this.h()},l(s){const a=xn("svelte-u9bgzb",document.head);p=i(a,"META",{name:!0,content:!0}),a.forEach(l),T=e(s),m=i(s,"P",{}),kl(m).forEach(l),h=e(s),r(x.$$.fragment,s),Ks=e(s),r(f.$$.fragment,s),Os=e(s),q=i(s,"P",{"data-svelte-h":!0}),J(q)!=="svelte-fxspyi"&&(q.textContent=$l),sa=e(s),r(k.$$.fragment,s),aa=e(s),r(I.$$.fragment,s),la=e(s),r($.$$.fragment,s),na=e(s),r(d.$$.fragment,s),ta=e(s),A=i(s,"P",{"data-svelte-h":!0}),J(A)!=="svelte-1mryzpb"&&(A.innerHTML=Al),ea=e(s),r(z.$$.fragment,s),pa=e(s),Q=i(s,"P",{"data-svelte-h":!0}),J(Q)!=="svelte-17a9wfo"&&(Q.textContent=zl),Ma=e(s),v=i(s,"P",{});var Ys=kl(v);ql=fn(Ys,`Luego, de nuevo al igual que BPE, WordPiece aprende reglas de fusión. La principal diferencia es la forma que el par fusionado es seleccionado. Envex de seleccionar el par más frecuente, WordPiece calcula un puntaje para cada par, utilizando la siguiente formula:
`),ia=qn(Ys,!1),Ys.forEach(l),oa=e(s),B=i(s,"P",{"data-svelte-h":!0}),J(B)!=="svelte-vgeqzk"&&(B.innerHTML=Ql),ra=e(s),Z=i(s,"P",{"data-svelte-h":!0}),J(Z)!=="svelte-bz1ymu"&&(Z.textContent=vl),ca=e(s),r(E.$$.fragment,s),ya=e(s),N=i(s,"P",{"data-svelte-h":!0}),J(N)!=="svelte-sfg1j5"&&(N.textContent=Bl),ja=e(s),r(_.$$.fragment,s),ua=e(s),S=i(s,"P",{"data-svelte-h":!0}),J(S)!=="svelte-7dymnf"&&(S.innerHTML=Zl),Ja=e(s),G=i(s,"P",{"data-svelte-h":!0}),J(G)!=="svelte-stc5cc"&&(G.innerHTML=El),ma=e(s),r(V.$$.fragment,s),Ua=e(s),X=i(s,"P",{"data-svelte-h":!0}),J(X)!=="svelte-16zc08u"&&(X.innerHTML=Nl),Ta=e(s),r(H.$$.fragment,s),ha=e(s),W=i(s,"P",{"data-svelte-h":!0}),J(W)!=="svelte-1mtj12r"&&(W.innerHTML=_l),wa=e(s),r(D.$$.fragment,s),Ia=e(s),R=i(s,"P",{"data-svelte-h":!0}),J(R)!=="svelte-1bxgya3"&&(R.textContent=Sl),da=e(s),r(g.$$.fragment,s),ga=e(s),r(Y.$$.fragment,s),Ca=e(s),P=i(s,"P",{"data-svelte-h":!0}),J(P)!=="svelte-3rztuk"&&(P.innerHTML=Gl),ba=e(s),F=i(s,"P",{"data-svelte-h":!0}),J(F)!=="svelte-10uttaj"&&(F.innerHTML=Vl),xa=e(s),L=i(s,"P",{"data-svelte-h":!0}),J(L)!=="svelte-rmaccr"&&(L.innerHTML=Xl),fa=e(s),K=i(s,"P",{"data-svelte-h":!0}),J(K)!=="svelte-kd7qkr"&&(K.innerHTML=Hl),qa=e(s),r(C.$$.fragment,s),ka=e(s),r(O.$$.fragment,s),$a=e(s),ss=i(s,"P",{"data-svelte-h":!0}),J(ss)!=="svelte-kj5p78"&&(ss.textContent=Wl),Aa=e(s),as=i(s,"P",{"data-svelte-h":!0}),J(as)!=="svelte-1tcizvu"&&(as.textContent=Dl),za=e(s),r(ls.$$.fragment,s),Qa=e(s),ns=i(s,"P",{"data-svelte-h":!0}),J(ns)!=="svelte-uklssn"&&(ns.innerHTML=Rl),va=e(s),r(ts.$$.fragment,s),Ba=e(s),es=i(s,"P",{"data-svelte-h":!0}),J(es)!=="svelte-4qz6iz"&&(es.textContent=Yl),Za=e(s),r(ps.$$.fragment,s),Ea=e(s),r(Ms.$$.fragment,s),Na=e(s),is=i(s,"P",{"data-svelte-h":!0}),J(is)!=="svelte-1exookl"&&(is.innerHTML=Pl),_a=e(s),r(os.$$.fragment,s),Sa=e(s),r(rs.$$.fragment,s),Ga=e(s),cs=i(s,"P",{"data-svelte-h":!0}),J(cs)!=="svelte-1fcw3da"&&(cs.innerHTML=Fl),Va=e(s),r(ys.$$.fragment,s),Xa=e(s),js=i(s,"P",{"data-svelte-h":!0}),J(js)!=="svelte-1rlai7c"&&(js.innerHTML=Ll),Ha=e(s),r(us.$$.fragment,s),Wa=e(s),Js=i(s,"P",{"data-svelte-h":!0}),J(Js)!=="svelte-1nodrch"&&(Js.textContent=Kl),Da=e(s),r(ms.$$.fragment,s),Ra=e(s),Us=i(s,"P",{"data-svelte-h":!0}),J(Us)!=="svelte-1wchqi3"&&(Us.textContent=Ol),Ya=e(s),r(Ts.$$.fragment,s),Pa=e(s),r(hs.$$.fragment,s),Fa=e(s),ws=i(s,"P",{"data-svelte-h":!0}),J(ws)!=="svelte-bo5zx0"&&(ws.textContent=sn),La=e(s),r(Is.$$.fragment,s),Ka=e(s),r(ds.$$.fragment,s),Oa=e(s),gs=i(s,"P",{"data-svelte-h":!0}),J(gs)!=="svelte-k1zuko"&&(gs.innerHTML=an),sl=e(s),r(Cs.$$.fragment,s),al=e(s),bs=i(s,"P",{"data-svelte-h":!0}),J(bs)!=="svelte-pfmm82"&&(bs.innerHTML=ln),ll=e(s),r(xs.$$.fragment,s),nl=e(s),fs=i(s,"P",{"data-svelte-h":!0}),J(fs)!=="svelte-1kl1g0x"&&(fs.textContent=nn),tl=e(s),r(qs.$$.fragment,s),el=e(s),r(ks.$$.fragment,s),pl=e(s),$s=i(s,"P",{"data-svelte-h":!0}),J($s)!=="svelte-wgf1cr"&&($s.textContent=tn),Ml=e(s),r(As.$$.fragment,s),il=e(s),zs=i(s,"P",{"data-svelte-h":!0}),J(zs)!=="svelte-kb4vz1"&&(zs.textContent=en),ol=e(s),r(Qs.$$.fragment,s),rl=e(s),r(vs.$$.fragment,s),cl=e(s),Bs=i(s,"P",{"data-svelte-h":!0}),J(Bs)!=="svelte-1eqqial"&&(Bs.textContent=pn),yl=e(s),r(b.$$.fragment,s),jl=e(s),Zs=i(s,"P",{"data-svelte-h":!0}),J(Zs)!=="svelte-gxxlml"&&(Zs.textContent=Mn),ul=e(s),r(Es.$$.fragment,s),Jl=e(s),Ns=i(s,"P",{"data-svelte-h":!0}),J(Ns)!=="svelte-1rmo9di"&&(Ns.textContent=on),ml=e(s),r(_s.$$.fragment,s),Ul=e(s),r(Ss.$$.fragment,s),Tl=e(s),Gs=i(s,"P",{"data-svelte-h":!0}),J(Gs)!=="svelte-s23tws"&&(Gs.textContent=rn),hl=e(s),r(Vs.$$.fragment,s),wl=e(s),Xs=i(s,"P",{"data-svelte-h":!0}),J(Xs)!=="svelte-1tuu6w3"&&(Xs.textContent=cn),Il=e(s),r(Hs.$$.fragment,s),dl=e(s),r(Ws.$$.fragment,s),gl=e(s),Ds=i(s,"P",{"data-svelte-h":!0}),J(Ds)!=="svelte-7e6vha"&&(Ds.textContent=yn),Cl=e(s),r(Rs.$$.fragment,s),bl=e(s),Ps=i(s,"P",{}),kl(Ps).forEach(l),this.h()},h(){Un(p,"name","hf:doc:metadata"),Un(p,"content",Nn),ia.a=null},m(s,a){Tn(document.head,p),n(s,T,a),n(s,m,a),n(s,h,a),c(x,s,a),n(s,Ks,a),c(f,s,a),n(s,Os,a),n(s,q,a),n(s,sa,a),c(k,s,a),n(s,aa,a),c(I,s,a),n(s,la,a),c($,s,a),n(s,na,a),c(d,s,a),n(s,ta,a),n(s,A,a),n(s,ea,a),c(z,s,a),n(s,pa,a),n(s,Q,a),n(s,Ma,a),n(s,v,a),Tn(v,ql),ia.m(hn,v),n(s,oa,a),n(s,B,a),n(s,ra,a),n(s,Z,a),n(s,ca,a),c(E,s,a),n(s,ya,a),n(s,N,a),n(s,ja,a),c(_,s,a),n(s,ua,a),n(s,S,a),n(s,Ja,a),n(s,G,a),n(s,ma,a),c(V,s,a),n(s,Ua,a),n(s,X,a),n(s,Ta,a),c(H,s,a),n(s,ha,a),n(s,W,a),n(s,wa,a),c(D,s,a),n(s,Ia,a),n(s,R,a),n(s,da,a),c(g,s,a),n(s,ga,a),c(Y,s,a),n(s,Ca,a),n(s,P,a),n(s,ba,a),n(s,F,a),n(s,xa,a),n(s,L,a),n(s,fa,a),n(s,K,a),n(s,qa,a),c(C,s,a),n(s,ka,a),c(O,s,a),n(s,$a,a),n(s,ss,a),n(s,Aa,a),n(s,as,a),n(s,za,a),c(ls,s,a),n(s,Qa,a),n(s,ns,a),n(s,va,a),c(ts,s,a),n(s,Ba,a),n(s,es,a),n(s,Za,a),c(ps,s,a),n(s,Ea,a),c(Ms,s,a),n(s,Na,a),n(s,is,a),n(s,_a,a),c(os,s,a),n(s,Sa,a),c(rs,s,a),n(s,Ga,a),n(s,cs,a),n(s,Va,a),c(ys,s,a),n(s,Xa,a),n(s,js,a),n(s,Ha,a),c(us,s,a),n(s,Wa,a),n(s,Js,a),n(s,Da,a),c(ms,s,a),n(s,Ra,a),n(s,Us,a),n(s,Ya,a),c(Ts,s,a),n(s,Pa,a),c(hs,s,a),n(s,Fa,a),n(s,ws,a),n(s,La,a),c(Is,s,a),n(s,Ka,a),c(ds,s,a),n(s,Oa,a),n(s,gs,a),n(s,sl,a),c(Cs,s,a),n(s,al,a),n(s,bs,a),n(s,ll,a),c(xs,s,a),n(s,nl,a),n(s,fs,a),n(s,tl,a),c(qs,s,a),n(s,el,a),c(ks,s,a),n(s,pl,a),n(s,$s,a),n(s,Ml,a),c(As,s,a),n(s,il,a),n(s,zs,a),n(s,ol,a),c(Qs,s,a),n(s,rl,a),c(vs,s,a),n(s,cl,a),n(s,Bs,a),n(s,yl,a),c(b,s,a),n(s,jl,a),n(s,Zs,a),n(s,ul,a),c(Es,s,a),n(s,Jl,a),n(s,Ns,a),n(s,ml,a),c(_s,s,a),n(s,Ul,a),c(Ss,s,a),n(s,Tl,a),n(s,Gs,a),n(s,hl,a),c(Vs,s,a),n(s,wl,a),n(s,Xs,a),n(s,Il,a),c(Hs,s,a),n(s,dl,a),c(Ws,s,a),n(s,gl,a),n(s,Ds,a),n(s,Cl,a),c(Rs,s,a),n(s,bl,a),n(s,Ps,a),xl=!0},p(s,[a]){const Ys={};a&2&&(Ys.$$scope={dirty:a,ctx:s}),I.$set(Ys);const jn={};a&2&&(jn.$$scope={dirty:a,ctx:s}),d.$set(jn);const un={};a&2&&(un.$$scope={dirty:a,ctx:s}),g.$set(un);const Jn={};a&2&&(Jn.$$scope={dirty:a,ctx:s}),C.$set(Jn);const mn={};a&2&&(mn.$$scope={dirty:a,ctx:s}),b.$set(mn)},i(s){xl||(y(x.$$.fragment,s),y(f.$$.fragment,s),y(k.$$.fragment,s),y(I.$$.fragment,s),y($.$$.fragment,s),y(d.$$.fragment,s),y(z.$$.fragment,s),y(E.$$.fragment,s),y(_.$$.fragment,s),y(V.$$.fragment,s),y(H.$$.fragment,s),y(D.$$.fragment,s),y(g.$$.fragment,s),y(Y.$$.fragment,s),y(C.$$.fragment,s),y(O.$$.fragment,s),y(ls.$$.fragment,s),y(ts.$$.fragment,s),y(ps.$$.fragment,s),y(Ms.$$.fragment,s),y(os.$$.fragment,s),y(rs.$$.fragment,s),y(ys.$$.fragment,s),y(us.$$.fragment,s),y(ms.$$.fragment,s),y(Ts.$$.fragment,s),y(hs.$$.fragment,s),y(Is.$$.fragment,s),y(ds.$$.fragment,s),y(Cs.$$.fragment,s),y(xs.$$.fragment,s),y(qs.$$.fragment,s),y(ks.$$.fragment,s),y(As.$$.fragment,s),y(Qs.$$.fragment,s),y(vs.$$.fragment,s),y(b.$$.fragment,s),y(Es.$$.fragment,s),y(_s.$$.fragment,s),y(Ss.$$.fragment,s),y(Vs.$$.fragment,s),y(Hs.$$.fragment,s),y(Ws.$$.fragment,s),y(Rs.$$.fragment,s),xl=!0)},o(s){j(x.$$.fragment,s),j(f.$$.fragment,s),j(k.$$.fragment,s),j(I.$$.fragment,s),j($.$$.fragment,s),j(d.$$.fragment,s),j(z.$$.fragment,s),j(E.$$.fragment,s),j(_.$$.fragment,s),j(V.$$.fragment,s),j(H.$$.fragment,s),j(D.$$.fragment,s),j(g.$$.fragment,s),j(Y.$$.fragment,s),j(C.$$.fragment,s),j(O.$$.fragment,s),j(ls.$$.fragment,s),j(ts.$$.fragment,s),j(ps.$$.fragment,s),j(Ms.$$.fragment,s),j(os.$$.fragment,s),j(rs.$$.fragment,s),j(ys.$$.fragment,s),j(us.$$.fragment,s),j(ms.$$.fragment,s),j(Ts.$$.fragment,s),j(hs.$$.fragment,s),j(Is.$$.fragment,s),j(ds.$$.fragment,s),j(Cs.$$.fragment,s),j(xs.$$.fragment,s),j(qs.$$.fragment,s),j(ks.$$.fragment,s),j(As.$$.fragment,s),j(Qs.$$.fragment,s),j(vs.$$.fragment,s),j(b.$$.fragment,s),j(Es.$$.fragment,s),j(_s.$$.fragment,s),j(Ss.$$.fragment,s),j(Vs.$$.fragment,s),j(Hs.$$.fragment,s),j(Ws.$$.fragment,s),j(Rs.$$.fragment,s),xl=!1},d(s){s&&(l(T),l(m),l(h),l(Ks),l(Os),l(q),l(sa),l(aa),l(la),l(na),l(ta),l(A),l(ea),l(pa),l(Q),l(Ma),l(v),l(oa),l(B),l(ra),l(Z),l(ca),l(ya),l(N),l(ja),l(ua),l(S),l(Ja),l(G),l(ma),l(Ua),l(X),l(Ta),l(ha),l(W),l(wa),l(Ia),l(R),l(da),l(ga),l(Ca),l(P),l(ba),l(F),l(xa),l(L),l(fa),l(K),l(qa),l(ka),l($a),l(ss),l(Aa),l(as),l(za),l(Qa),l(ns),l(va),l(Ba),l(es),l(Za),l(Ea),l(Na),l(is),l(_a),l(Sa),l(Ga),l(cs),l(Va),l(Xa),l(js),l(Ha),l(Wa),l(Js),l(Da),l(Ra),l(Us),l(Ya),l(Pa),l(Fa),l(ws),l(La),l(Ka),l(Oa),l(gs),l(sl),l(al),l(bs),l(ll),l(nl),l(fs),l(tl),l(el),l(pl),l($s),l(Ml),l(il),l(zs),l(ol),l(rl),l(cl),l(Bs),l(yl),l(jl),l(Zs),l(ul),l(Jl),l(Ns),l(ml),l(Ul),l(Tl),l(Gs),l(hl),l(wl),l(Xs),l(Il),l(dl),l(gl),l(Ds),l(Cl),l(bl),l(Ps)),l(p),u(x,s),u(f,s),u(k,s),u(I,s),u($,s),u(d,s),u(z,s),u(E,s),u(_,s),u(V,s),u(H,s),u(D,s),u(g,s),u(Y,s),u(C,s),u(O,s),u(ls,s),u(ts,s),u(ps,s),u(Ms,s),u(os,s),u(rs,s),u(ys,s),u(us,s),u(ms,s),u(Ts,s),u(hs,s),u(Is,s),u(ds,s),u(Cs,s),u(xs,s),u(qs,s),u(ks,s),u(As,s),u(Qs,s),u(vs,s),u(b,s),u(Es,s),u(_s,s),u(Ss,s),u(Vs,s),u(Hs,s),u(Ws,s),u(Rs,s)}}}const Nn='{"title":"Tokenización WordPiece","local":"wordpiece-tokenization","sections":[{"title":"Algoritmo de Entrenamiento","local":"training-algorithm","sections":[],"depth":2},{"title":"Algoritmo de Tokenización","local":"tokenization-algorithm","sections":[],"depth":2},{"title":"Implementando WordPiece","local":"implementing-wordpiece","sections":[],"depth":2}],"depth":1}';function _n(w){return In(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Yn extends dn{constructor(p){super(),gn(this,p,_n,En,wn,{})}}export{Yn as component};

Xet Storage Details

Size:
73.6 kB
·
Xet hash:
c5720607c6933e0864ae73aba4e914e680bcf41c2c1d81213b1b5ec6a21ad453

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