Buckets:

rtrm's picture
download
raw
73.9 kB
import{s as Ta,o as ha,n as Ps}from"../chunks/scheduler.37c15a92.js";import{S as wa,i as xa,g as r,s as t,r as M,A as Ca,h as o,f as n,c as p,j as ua,u as y,x as u,k as Ua,y as ma,a,v as i,d as j,t as J,w as c}from"../chunks/index.2bf4358c.js";import{T as Ys}from"../chunks/Tip.363c041f.js";import{Y as ga}from"../chunks/Youtube.1e50a667.js";import{C as T}from"../chunks/CodeBlock.4e987730.js";import{C as Ia}from"../chunks/CourseFloatingBanner.6add7356.js";import{H as $n,E as fa}from"../chunks/getInferenceSnippets.ebf8be91.js";function $a(x){let e,h="💡 บทนี้จะพูดถึง BPE อย่างละเอียด เราจะเจาะลึกถึงไปถึงการ implement อัลกอริทึมนี้ คุณสามารถข้ามไปตอนท้ายได้ ถ้าคุณสนใจเพียงแค่ภาพรวมคร่าวๆเท่านั้น";return{c(){e=r("p"),e.textContent=h},l(U){e=o(U,"P",{"data-svelte-h":!0}),u(e)!=="svelte-waucbj"&&(e.textContent=h)},m(U,w){a(U,e,w)},p:Ps,d(U){U&&n(e)}}}function ba(x){let e,h="Tokenizer ของ GPT-2 และ RoBERTa (ซึ่งค่อนข้างคล้ายกัน) มีวิธีการจัดการกับปัญหานี้ได้อย่างประสิทธิภาพ มันจะไม่มองแต่ละคำเป็น Unicode แต่จะมองว่าเป็น byte การทำแบบนี้ทำให้ vocabulary ตั้งต้น มีขนาดที่เล็ก (256) แต่ยังสามารถบันทึกทุกๆสัญลักษณ์ได้ โดยไม่ต้องแปลงสัญลักษณ์พิเศษต่างๆเป็น unknown token เทคนิคนี้เรียกว่า <em>byte-level BPE</em>";return{c(){e=r("p"),e.innerHTML=h},l(U){e=o(U,"P",{"data-svelte-h":!0}),u(e)!=="svelte-1vpq7rj"&&(e.innerHTML=h)},m(U,w){a(U,e,w)},p:Ps,d(U){U&&n(e)}}}function ka(x){let e,h="✏️ <strong>ตาคุณแล้ว!</strong> คุณคิดว่ากฎ merge ต่อไปคืออะไร";return{c(){e=r("p"),e.innerHTML=h},l(U){e=o(U,"P",{"data-svelte-h":!0}),u(e)!=="svelte-ms4toc"&&(e.innerHTML=h)},m(U,w){a(U,e,w)},p:Ps,d(U){U&&n(e)}}}function da(x){let e,h="✏️ <strong>ตาคุณแล้ว!</strong> คุณคิดว่าคำว่า <code>&quot;unhug&quot;</code> จะถูกแยกอย่างไร";return{c(){e=r("p"),e.innerHTML=h},l(U){e=o(U,"P",{"data-svelte-h":!0}),u(e)!=="svelte-13f5w1r"&&(e.innerHTML=h)},m(U,w){a(U,e,w)},p:Ps,d(U){U&&n(e)}}}function qa(x){let e,h="💡 ถ้าคุณใช้ <code>train_new_from_iterator()</code> กับ corpus เดียวกันนี้ คุณจะไม่ได้ vocabulary เดียวกัน เพราะว่าอาจจะมีหลายคู่ token ที่มีความถี่สูงสุดเท่ากัน ในตัวอย่างของเรา เราเลือกคู่แรกที่โค้ดของเราอ่านเจอ ส่วน 🤗 Tokenizers library เลือกคู่แรกโดยเรียงตาม ID";return{c(){e=r("p"),e.innerHTML=h},l(U){e=o(U,"P",{"data-svelte-h":!0}),u(e)!=="svelte-7ebhk9"&&(e.innerHTML=h)},m(U,w){a(U,e,w)},p:Ps,d(U){U&&n(e)}}}function Qa(x){let e,h=`⚠️ การ implementation ในตัวอย่างของเราจะ return error ถ้าโปรแกรมอ่านเจอตัวอักษรที่ไม่มีใน vocabulary นั่นเพราะว่าเราไม่ได้เขียนโค้ดเพื่อจัดการกับกรณีแบบนี้
ใน GPT-2 ปกติจะไม่มี unknown token แบบนี้ เพราะว่า ถ้าเราใช้ byte-level BPE เราจะไม่มีทางได้ตัวอักษรที่ unknown อย่างไรก็ตามในตัวอย่างของเรา เราไม่ได้ใช้ทุกๆ byte เพื่อสร้าง vocabulary ตั้งต้น
อย่างไรก็ตาม หัวข้อนี้นั้นค่อนข้างลึก เราจึงจะไม่ขอพูดถึงรายละเอียดไปมากกว่านี้`;return{c(){e=r("p"),e.textContent=h},l(U){e=o(U,"P",{"data-svelte-h":!0}),u(e)!=="svelte-qgvtsz"&&(e.textContent=h)},m(U,w){a(U,e,w)},p:Ps,d(U){U&&n(e)}}}function Aa(x){let e,h,U,w,b,Fs,k,Ls,d,bn="ดั้งเดิมแล้ว Byte-Pair Encoding (BPE) เป็นอัลกอริทึมที่ถูกสร้างเพื่อใช้บีบอัดข้อความให้เล็กลง (compress texts) ภายหลัง OpenAI ได้นำอัลกอริทึมนี้มาใช้ในการตัดคำ ในขั้นตอนเตรียมข้อมูลเพื่อเทรน GPT อัลกอริทึมตัวนี้ยังถูกนำมาใช้อย่างกว้างขวางกับโมเดลประเภท Transformer เช่น GPT, GPT-2, RoBERTa, BART, และ DeBERTa",Os,q,sl,C,ll,Q,nl,A,kn="BPE เริ่มการเทรนด้วยการคำนวณรายการของคำที่อยู่ในคลังข้อมูล (คลังข้อมูลจะต้องผ่านการ normalization และ pre-tokenization มาแล้ว) จากนั้นมันจะเริ่มสร้างชุดคำศัพท์ (vocabulary) จากตัวอักษรที่อยู่ในแต่ละคำ มาดูตัวอย่างง่ายๆกัน เราจะสมมติว่าคลังข้อมูลของเรามีเพียงห้าคำเท่านั้น :",al,B,tl,E,dn="vocabulary ตั้งต้นสำหรับชุดข้อมูลนี้คือ <code>[&quot;b&quot;, &quot;g&quot;, &quot;h&quot;, &quot;n&quot;, &quot;p&quot;, &quot;s&quot;, &quot;u&quot;]</code> ในการใช้งานจริง vocabulary ตั้งต้นจะประกอบด้วยตัวอักษร ASCII เป็นอย่างต่ำ หรืออาจจะมีตัวอักษร Unicode ได้ด้วย",pl,z,qn="ถ้าข้อความใหม่ที่คุณต้องการจะตัดคำ มีสัญลักษณ์ที่ไม่ได้อยู่ใน training corpus สัญลักษณ์พวกนี้จะถูกแปลงเป็น unknown token นี่เป็นเหตุผลว่าทำไมโมเดล NLP จึงประมวลผลข้อความที่มีอีโมจิได้ไม่ดีนัก",el,m,Ml,V,Qn=`หลังจากสร้าง vocabulary ตั้งต้นแล้ว เราจะเพิ่ม token ใหม่ๆ เข้าไปจนว่าจะได้ vocabulary ขนาดใหญ่พอกับที่เราต้องการ โดยเราจะเทรน BPE ให้เรียน กฎที่เรียกว่า <em>merges</em> ซึ่งเป็นกฎสำหรับการรวมสองหน่วยใน vocabulary เข้าด้วยกัน
ตอนช่วงเริ่มต้น กฎ merges พวกนี้จะสร้างคำย่อยที่ประกอบด้วยตัวอักษรสองตัว ระหว่างที่เราเทรนต่อไปเรื่อยๆ คำย่อยที่ได้ก็จะยาวขึ้น
ในแต่ละรอบของการเทรน BPE จะคำนวณหาคู่ของคำย่อยที่พบบ่อยที่สุด (คู่ของคำย่อย ในที่นี้เราหมายถึง token ที่อยู่ติดกัน)
คู่ที่มีความถี่มากที่สุดจะถูกรวมเข้าด้วยกัน จากนั้นโมเดลจะทำแบบเดิมอีกในการเทรนรอบต่อไป`,yl,Z,An="กลับมาที่ตัวอย่างของเรา สมมติว่าแต่ละคำมีความถี่ดังต่อไปนี้ :",il,v,jl,G,Bn="ซึ่งแปลว่า <code>&quot;hug&quot;</code> พบ 10 ครั้งใน corpus, <code>&quot;pug&quot;</code> พบ 5 ครั้ง, <code>&quot;pun&quot;</code> พบ 12 ครั้ง, <code>&quot;bun&quot;</code> พบ 4 ครั้ง, และ <code>&quot;hugs&quot;</code> พบ 5 ครั้ง",Jl,S,En="เราจะเริ่มการเทรน โดยแยกแต่ละคำออกเป็นตัวอักษร (ตัวอักษรจะต้องมาจาก vocabulary ตั้งต้นที่เราสร้างมาก่อนหน้านี้แล้ว) ตอนนี้คุณจะเห็นว่าแต่ละคำถูกแปลงเป็น list ที่ประกอบไปด้วยหลายๆ token",cl,_,rl,N,zn=`จากนั้น เราจะดูทีละคู่ ตัวอย่างเช่น คู่ <code>(&quot;h&quot;, &quot;u&quot;)</code> ซึ่งมาจากคำว่า <code>&quot;hug&quot;</code> และ <code>&quot;hugs&quot;</code> และพบ 15 ครั้งใน corpus
อย่างไรก็ตาม คู่นี้ไม่ใช่คู่ที่พบบ่อยที่สุด คู่ที่พบบ่อยที่สุดคือ <code>(&quot;u&quot;, &quot;g&quot;)</code> ซึ่งพบใน คำว่า <code>&quot;hug&quot;</code>, <code>&quot;pug&quot;</code>, และ <code>&quot;hugs&quot;</code> ซึ่งความถี่รวมของมันคือ 20 ครั้ง
ดังนั้น กฎแรกของการ merge ที่ tokenizer เรียนคือ <code>(&quot;u&quot;, &quot;g&quot;) -&gt; &quot;ug&quot;</code> แปลว่ามันจะเพิ่ม <code>&quot;ug&quot;</code> เข้าไปใน vocabulary และใน corpus คู่นี้ก็จะถูกรวมเป็น token เดียวด้วย`,ol,H,Vn="หลังจากขั้นตอนนี้ vocabulary และ corpus จะมีค่าดังนี้ :",ul,X,Ul,D,Zn=`ตอนนี้ จะเห็นว่าเรามีคู่ที่เมื่อรวมกันจะได้ token ที่ยาวกว่าสองตัวอักษร ตัวอย่างเช่น คู่ <code>(&quot;h&quot;, &quot;ug&quot;)</code> ซึ่งพบ 15 ครั้งใน corpus
อย่างไรก็ตาม คู่ที่พบบ่อยที่สุดคือ <code>(&quot;u&quot;, &quot;n&quot;)</code> ซึ่งพบ 16 ครั้ง ดังนั้นกฎที่สองก็คือ <code>(&quot;u&quot;, &quot;n&quot;) -&gt; &quot;un&quot;</code> หลังจากที่เราเพิ่มคู่นี้ไปใน vocabulary และ merge token ใน corpus เข้าด้วยกันแล้ว เราจะได้ :`,Tl,W,hl,R,vn="ตอนนี้ คู่ที่พบบ่อยที่สุดคือ <code>(&quot;h&quot;, &quot;ug&quot;)</code> ดังนั้นกฎที่ได้คือ <code>(&quot;h&quot;, &quot;ug&quot;) -&gt; &quot;hug&quot;</code> ซึ่งจะทำให้เราได้ token ที่มีสามตัวอักษร หลังจากการ merge เราจะได้ :",wl,Y,xl,P,Gn="เราจะทำแบบนี้ต่อไปเรื่อยๆ จนกว่าจะได้ขนาดของ vocabulary ที่ต้องการ",Cl,g,ml,K,gl,F,Sn="การ tokenization เป็นขั้นตอนหลังจากการเทรน โดย input ใหม่จะถูก tokenize ด้วยขั้นตอนดังต่อไปนี้",Il,L,_n="<li>Normalization (การปรับข้อความให้เป็นมาตรฐาน)</li> <li>Pre-tokenization (การเตรียมข้อความให้พร้อมสำหรับการ tokenize จริง)</li> <li>แยกคำออกเป็นตัวอักษรเดี่ยว</li> <li>ใช้กฎ merge ที่ได้จากการเทรนเพื่อรวมตัวอักษรที่เราได้จากขั้นตอนก่อนหน้า</li>",fl,O,Nn="มาดูกฎสามตัวที่เราได้จากการเทรนก่อนหน้านี้ :",$l,ss,bl,ls,Hn=`คำว่า<code>&quot;bug&quot;</code> จะถูกแยกเป็น <code>[&quot;b&quot;, &quot;ug&quot;]</code> ส่วนคำว่า <code>&quot;mug&quot;</code> จะถูกแยกเป็น <code>[&quot;[UNK]&quot;, &quot;ug&quot;]</code> เพราะว่า <code>&quot;m&quot;</code> ไม่ได้อยู่ใน vocabulary ของเรา
้เช่นเดียวกัน คำว่า <code>&quot;thug&quot;</code> จะถูกแยกเป็น <code>[&quot;[UNK]&quot;, &quot;hug&quot;]</code> เพราะว่า <code>&quot;t&quot;</code> ไม่ได้อยู่ใน vocabulary กฎแรกจะรวม <code>&quot;u&quot;</code> และ <code>&quot;g&quot;</code> เข้าด้วยกัน จากนั้น <code>&quot;hu&quot;</code> และ <code>&quot;g&quot;</code> ก็จะถูกรวมเข้าด้วยกัน`,kl,I,dl,ns,ql,as,Xn="ตอนนี้เราจะมาดูกันว่า คุณจะสามารถ implement อัลกอริทึม BPE ได้อย่างไร สิ่งที่เราจะเรียนต่อไปนี้ไม่ใช่ implementation ที่ดีที่สุด เราเพียงต้องการให้คุณเข้าใจโค้ดและเข้าใจว่า BPE ทำงานอย่างไร",Ql,ts,Dn="อันดับแรก เราต้องการ corpus ดังนั้น เราจะสร้าง corpus แบบง่ายๆขึ้นมา โดยประกอบไปด้วยไม่กี่ประโยค :",Al,ps,Bl,es,Wn="จากนั้นเราจะทำการ pre-tokenize corpus นี้ เพื่อแยกข้อความออกเป็นคำๆ เนื่องจากเราจะสร้าง BPE tokenizer ตามตัวที่ใช้ใน GPT-2 เราจึงต้องใช้ <code>gpt2</code> tokenizer ในการ pre-tokenize",El,Ms,zl,ys,Rn="จากนั้นเราจะคำนวณความถี่ของแต่ละคำ:",Vl,is,Zl,js,vl,Js,Yn="ขั้นตอนต่อไป คือการคำนวณ vocabulary ตั้งต้น ซึ่งสร้างจากแต่ละตัวอักษรใน corpus :",Gl,cs,Sl,rs,_l,os,Pn="เราจะเพิ่ม token พิเศษเข้าไปในข้างหน้า list นี้ด้วย GPT-2 ใช้ token พิเศษคือ <code>&quot;&lt;|endoftext|&gt;&quot;</code> :",Nl,us,Hl,Us,Kn="จากนั้นเราจะแยกแต่ละคำใน corpus ให้เป็นตัวอักษร เพื่อที่เราจะได้เริ่มการเทรน :",Xl,Ts,Dl,hs,Fn="ตอนนี้เราก็พร้อมที่จะเทรนแล้ว เราจะเริ่มด้วยการเขียนฟังก์ชันที่คำนวณความถี่ของแต่ละคู่ token :",Wl,ws,Rl,xs,Ln="มาดูส่วนผลลัพธ์ (ซึ่งเป็น dictionary) กัน :",Yl,Cs,Pl,ms,Kl,gs,On="จากนั้นเราจะหาคู่ที่พบบ่อยที่สุด ซึ่งทำได้ง่ายๆดังนี้ :",Fl,Is,Ll,fs,Ol,$s,sa="ดังนั้น กฎแรกที่เราได้ก็คือ <code>(&#39;Ġ&#39;, &#39;t&#39;) -&gt; &#39;Ġt&#39;</code> และเราจะต้องเพิ่ม <code>&#39;Ġt&#39;</code> เข้าไปใน vocabulary :",sn,bs,ln,ks,la="จากนั้น เราจะต้องทำการ merge คำย่อยที่อยู่ใน dictionary <code>splits</code> ด้วย โดยเราจะเขียนฟังก์ชันต่อไปนี้ :",nn,ds,an,qs,na="และนี่ก็คือผลลัพธ์จากการ merge ครั้งแรก :",tn,Qs,pn,As,en,Bs,aa="ตอนนี้เราก็มีทุกอย่างพร้อมสำหรับการเทรนแล้ว เราจะเทรนจนกว่าขนาดของ vocabulary จะเท่ากับ 50 :",Mn,Es,yn,zs,ta="ผลลัพธ์ที่ได้คือ tokenizer ของเราได้เรียน 19 กฎ (vocabulary ตั้งต้นมี 31 token ซึ่งมาจากตัวอักษรที่เรามี 30 ตัวและ token พิเศษอีกหนึ่งตัว) :",jn,Vs,Jn,Zs,cn,vs,pa="ส่วน vocabulary ที่ได้จะประกอบไปด้วย token พิเศษ, ตัวอักษรตั้งต้น, และผลลัพธ์จากการ merge แต่ละครั้ง :",rn,Gs,on,Ss,un,f,Un,_s,ea="หากเราต้องการ tokenize ข้อความใดข้อความหนึ่ง สิ่งที่ต้องทำคือ pre-tokenize จากนั้นจึงทำการ tokenize และสุดท้าย apply กฎ merge :",Tn,Ns,hn,Hs,Ma="คุณสามารถทดลองโค้ดนี้ได้กับข้อความทุกข้อความ ที่ประกอบไปด้วยตัวอักษรเท่านั้น :",wn,Xs,xn,Ds,Cn,$,mn,Ws,ya="นี่ก็คือ อัลกอริทึม BPE ในบทต่อไป เราจะมาดู WordPiece กัน",gn,Rs,In,Ks,fn;return b=new $n({props:{title:"Byte-Pair Encoding tokenization",local:"byte-pair-encoding-tokenization",headingTag:"h1"}}),k=new Ia({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/th/chapter6/section5.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter6/section5.ipynb"}]}}),q=new ga({props:{id:"HEikzVL-lZU"}}),C=new Ys({props:{$$slots:{default:[$a]},$$scope:{ctx:x}}}),Q=new $n({props:{title:"อัลกอริทึมที่ใช้ในการเทรน",local:"อลกอรทมทใชในการเทรน",headingTag:"h2"}}),B=new T({props:{code:"JTIyaHVnJTIyJTJDJTIwJTIycHVnJTIyJTJDJTIwJTIycHVuJTIyJTJDJTIwJTIyYnVuJTIyJTJDJTIwJTIyaHVncyUyMg==",highlighted:'<span class="hljs-string">&quot;hug&quot;</span>, <span class="hljs-string">&quot;pug&quot;</span>, <span class="hljs-string">&quot;pun&quot;</span>, <span class="hljs-string">&quot;bun&quot;</span>, <span class="hljs-string">&quot;hugs&quot;</span>',wrap:!1}}),m=new Ys({props:{$$slots:{default:[ba]},$$scope:{ctx:x}}}),v=new T({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 T({props:{code:"KCUyMmglMjIlMjAlMjJ1JTIyJTIwJTIyZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIydSUyMiUyMCUyMmclMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIydSUyMiUyMCUyMm4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMnUlMjIlMjAlMjJuJTIyJTJDJTIwNCklMkMlMjAoJTIyaCUyMiUyMCUyMnUlMjIlMjAlMjJnJTIyJTIwJTIycyUyMiUyQyUyMDUp",highlighted:'(<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;g&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">10</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;g&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;n&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">12</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;n&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">4</span>)<span class="hljs-punctuation">,</span> (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;g&quot;</span> <span class="hljs-string">&quot;s&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-number">5</span>)',wrap:!1}}),X=new T({props:{code:"Vm9jYWJ1bGFyeSUzQSUyMCU1QiUyMmIlMjIlMkMlMjAlMjJnJTIyJTJDJTIwJTIyaCUyMiUyQyUyMCUyMm4lMjIlMkMlMjAlMjJwJTIyJTJDJTIwJTIycyUyMiUyQyUyMCUyMnUlMjIlMkMlMjAlMjJ1ZyUyMiU1RCUwQUNvcnB1cyUzQSUyMCglMjJoJTIyJTIwJTIydWclMjIlMkMlMjAxMCklMkMlMjAoJTIycCUyMiUyMCUyMnVnJTIyJTJDJTIwNSklMkMlMjAoJTIycCUyMiUyMCUyMnUlMjIlMjAlMjJuJTIyJTJDJTIwMTIpJTJDJTIwKCUyMmIlMjIlMjAlMjJ1JTIyJTIwJTIybiUyMiUyQyUyMDQpJTJDJTIwKCUyMmglMjIlMjAlMjJ1ZyUyMiUyMCUyMnMlMjIlMkMlMjA1KQ==",highlighted:`<span class="hljs-symbol">Vocabulary:</span> [<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;g&quot;</span>, <span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;n&quot;</span>, <span class="hljs-string">&quot;p&quot;</span>, <span class="hljs-string">&quot;s&quot;</span>, <span class="hljs-string">&quot;u&quot;</span>, <span class="hljs-string">&quot;ug&quot;</span>]
<span class="hljs-symbol">Corpus:</span> (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;ug&quot;</span>, <span class="hljs-number">10</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;ug&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;n&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;u&quot;</span> <span class="hljs-string">&quot;n&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;ug&quot;</span> <span class="hljs-string">&quot;s&quot;</span>, <span class="hljs-number">5</span>)`,wrap:!1}}),W=new T({props:{code:"Vm9jYWJ1bGFyeSUzQSUyMCU1QiUyMmIlMjIlMkMlMjAlMjJnJTIyJTJDJTIwJTIyaCUyMiUyQyUyMCUyMm4lMjIlMkMlMjAlMjJwJTIyJTJDJTIwJTIycyUyMiUyQyUyMCUyMnUlMjIlMkMlMjAlMjJ1ZyUyMiUyQyUyMCUyMnVuJTIyJTVEJTBBQ29ycHVzJTNBJTIwKCUyMmglMjIlMjAlMjJ1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIydWclMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIydW4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMnVuJTIyJTJDJTIwNCklMkMlMjAoJTIyaCUyMiUyMCUyMnVnJTIyJTIwJTIycyUyMiUyQyUyMDUp",highlighted:`<span class="hljs-symbol">Vocabulary:</span> [<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;g&quot;</span>, <span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;n&quot;</span>, <span class="hljs-string">&quot;p&quot;</span>, <span class="hljs-string">&quot;s&quot;</span>, <span class="hljs-string">&quot;u&quot;</span>, <span class="hljs-string">&quot;ug&quot;</span>, <span class="hljs-string">&quot;un&quot;</span>]
<span class="hljs-symbol">Corpus:</span> (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;ug&quot;</span>, <span class="hljs-number">10</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;ug&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;un&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;un&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;h&quot;</span> <span class="hljs-string">&quot;ug&quot;</span> <span class="hljs-string">&quot;s&quot;</span>, <span class="hljs-number">5</span>)`,wrap:!1}}),Y=new T({props:{code:"Vm9jYWJ1bGFyeSUzQSUyMCU1QiUyMmIlMjIlMkMlMjAlMjJnJTIyJTJDJTIwJTIyaCUyMiUyQyUyMCUyMm4lMjIlMkMlMjAlMjJwJTIyJTJDJTIwJTIycyUyMiUyQyUyMCUyMnUlMjIlMkMlMjAlMjJ1ZyUyMiUyQyUyMCUyMnVuJTIyJTJDJTIwJTIyaHVnJTIyJTVEJTBBQ29ycHVzJTNBJTIwKCUyMmh1ZyUyMiUyQyUyMDEwKSUyQyUyMCglMjJwJTIyJTIwJTIydWclMjIlMkMlMjA1KSUyQyUyMCglMjJwJTIyJTIwJTIydW4lMjIlMkMlMjAxMiklMkMlMjAoJTIyYiUyMiUyMCUyMnVuJTIyJTJDJTIwNCklMkMlMjAoJTIyaHVnJTIyJTIwJTIycyUyMiUyQyUyMDUp",highlighted:`<span class="hljs-symbol">Vocabulary:</span> [<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;g&quot;</span>, <span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;n&quot;</span>, <span class="hljs-string">&quot;p&quot;</span>, <span class="hljs-string">&quot;s&quot;</span>, <span class="hljs-string">&quot;u&quot;</span>, <span class="hljs-string">&quot;ug&quot;</span>, <span class="hljs-string">&quot;un&quot;</span>, <span class="hljs-string">&quot;hug&quot;</span>]
<span class="hljs-symbol">Corpus:</span> (<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;ug&quot;</span>, <span class="hljs-number">5</span>), (<span class="hljs-string">&quot;p&quot;</span> <span class="hljs-string">&quot;un&quot;</span>, <span class="hljs-number">12</span>), (<span class="hljs-string">&quot;b&quot;</span> <span class="hljs-string">&quot;un&quot;</span>, <span class="hljs-number">4</span>), (<span class="hljs-string">&quot;hug&quot;</span> <span class="hljs-string">&quot;s&quot;</span>, <span class="hljs-number">5</span>)`,wrap:!1}}),g=new Ys({props:{$$slots:{default:[ka]},$$scope:{ctx:x}}}),K=new $n({props:{title:"Tokenization algorithm",local:"tokenization-algorithm",headingTag:"h2"}}),ss=new T({props:{code:"KCUyMnUlMjIlMkMlMjAlMjJnJTIyKSUyMC0lM0UlMjAlMjJ1ZyUyMiUwQSglMjJ1JTIyJTJDJTIwJTIybiUyMiklMjAtJTNFJTIwJTIydW4lMjIlMEEoJTIyaCUyMiUyQyUyMCUyMnVnJTIyKSUyMC0lM0UlMjAlMjJodWclMjI=",highlighted:`<span class="hljs-function"><span class="hljs-params">(<span class="hljs-string">&quot;u&quot;</span>, <span class="hljs-string">&quot;g&quot;</span>)</span> -&gt;</span> <span class="hljs-string">&quot;ug&quot;</span>
<span class="hljs-function"><span class="hljs-params">(<span class="hljs-string">&quot;u&quot;</span>, <span class="hljs-string">&quot;n&quot;</span>)</span> -&gt;</span> <span class="hljs-string">&quot;un&quot;</span>
<span class="hljs-function"><span class="hljs-params">(<span class="hljs-string">&quot;h&quot;</span>, <span class="hljs-string">&quot;ug&quot;</span>)</span> -&gt;</span> <span class="hljs-string">&quot;hug&quot;</span>`,wrap:!1}}),I=new Ys({props:{$$slots:{default:[da]},$$scope:{ctx:x}}}),ns=new $n({props:{title:"การสร้าง BPE (Implementing BPE)",local:"การสราง-bpe-implementing-bpe",headingTag:"h2"}}),ps=new T({props:{code:"Y29ycHVzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIyVGhpcyUyMGlzJTIwdGhlJTIwSHVnZ2luZyUyMEZhY2UlMjBjb3Vyc2UuJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyVGhpcyUyMGNoYXB0ZXIlMjBpcyUyMGFib3V0JTIwdG9rZW5pemF0aW9uLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMlRoaXMlMjBzZWN0aW9uJTIwc2hvd3MlMjBzZXZlcmFsJTIwdG9rZW5pemVyJTIwYWxnb3JpdGhtcy4lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJIb3BlZnVsbHklMkMlMjB5b3UlMjB3aWxsJTIwYmUlMjBhYmxlJTIwdG8lMjB1bmRlcnN0YW5kJTIwaG93JTIwdGhleSUyMGFyZSUyMHRyYWluZWQlMjBhbmQlMjBnZW5lcmF0ZSUyMHRva2Vucy4lMjIlMkMlMEElNUQ=",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}}),Ms=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJncHQyJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)`,wrap:!1}}),is=new T({props:{code:"ZnJvbSUyMGNvbGxlY3Rpb25zJTIwaW1wb3J0JTIwZGVmYXVsdGRpY3QlMEElMEF3b3JkX2ZyZXFzJTIwJTNEJTIwZGVmYXVsdGRpY3QoaW50KSUwQSUwQWZvciUyMHRleHQlMjBpbiUyMGNvcnB1cyUzQSUwQSUyMCUyMCUyMCUyMHdvcmRzX3dpdGhfb2Zmc2V0cyUyMCUzRCUyMHRva2VuaXplci5iYWNrZW5kX3Rva2VuaXplci5wcmVfdG9rZW5pemVyLnByZV90b2tlbml6ZV9zdHIodGV4dCklMEElMjAlMjAlMjAlMjBuZXdfd29yZHMlMjAlM0QlMjAlNUJ3b3JkJTIwZm9yJTIwd29yZCUyQyUyMG9mZnNldCUyMGluJTIwd29yZHNfd2l0aF9vZmZzZXRzJTVEJTBBJTIwJTIwJTIwJTIwZm9yJTIwd29yZCUyMGluJTIwbmV3X3dvcmRzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd29yZF9mcmVxcyU1QndvcmQlNUQlMjAlMkIlM0QlMjAxJTBBJTBBcHJpbnQod29yZF9mcmVxcyk=",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>
<span class="hljs-built_in">print</span>(word_freqs)`,wrap:!1}}),js=new T({props:{code:"ZGVmYXVsdGRpY3QoaW50JTJDJTIwJTdCJ1RoaXMnJTNBJTIwMyUyQyUyMCclQzQlQTBpcyclM0ElMjAyJTJDJTIwJyVDNCVBMHRoZSclM0ElMjAxJTJDJTIwJyVDNCVBMEh1Z2dpbmcnJTNBJTIwMSUyQyUyMCclQzQlQTBGYWNlJyUzQSUyMDElMkMlMjAnJUM0JUEwQ291cnNlJyUzQSUyMDElMkMlMjAnLiclM0ElMjA0JTJDJTIwJyVDNCVBMGNoYXB0ZXInJTNBJTIwMSUyQyUwQSUyMCUyMCUyMCUyMCclQzQlQTBhYm91dCclM0ElMjAxJTJDJTIwJyVDNCVBMHRva2VuaXphdGlvbiclM0ElMjAxJTJDJTIwJyVDNCVBMHNlY3Rpb24nJTNBJTIwMSUyQyUyMCclQzQlQTBzaG93cyclM0ElMjAxJTJDJTIwJyVDNCVBMHNldmVyYWwnJTNBJTIwMSUyQyUyMCclQzQlQTB0b2tlbml6ZXInJTNBJTIwMSUyQyUyMCclQzQlQTBhbGdvcml0aG1zJyUzQSUyMDElMkMlMEElMjAlMjAlMjAlMjAnSG9wZWZ1bGx5JyUzQSUyMDElMkMlMjAnJTJDJyUzQSUyMDElMkMlMjAnJUM0JUEweW91JyUzQSUyMDElMkMlMjAnJUM0JUEwd2lsbCclM0ElMjAxJTJDJTIwJyVDNCVBMGJlJyUzQSUyMDElMkMlMjAnJUM0JUEwYWJsZSclM0ElMjAxJTJDJTIwJyVDNCVBMHRvJyUzQSUyMDElMkMlMjAnJUM0JUEwdW5kZXJzdGFuZCclM0ElMjAxJTJDJTIwJyVDNCVBMGhvdyclM0ElMjAxJTJDJTBBJTIwJTIwJTIwJTIwJyVDNCVBMHRoZXknJTNBJTIwMSUyQyUyMCclQzQlQTBhcmUnJTNBJTIwMSUyQyUyMCclQzQlQTB0cmFpbmVkJyUzQSUyMDElMkMlMjAnJUM0JUEwYW5kJyUzQSUyMDElMkMlMjAnJUM0JUEwZ2VuZXJhdGUnJTNBJTIwMSUyQyUyMCclQzQlQTB0b2tlbnMnJTNBJTIwMSU3RCk=",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}}),cs=new T({props:{code:"YWxwaGFiZXQlMjAlM0QlMjAlNUIlNUQlMEElMEFmb3IlMjB3b3JkJTIwaW4lMjB3b3JkX2ZyZXFzLmtleXMoKSUzQSUwQSUyMCUyMCUyMCUyMGZvciUyMGxldHRlciUyMGluJTIwd29yZCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbGV0dGVyJTIwbm90JTIwaW4lMjBhbHBoYWJldCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFscGhhYmV0LmFwcGVuZChsZXR0ZXIpJTBBYWxwaGFiZXQuc29ydCgpJTBBJTBBcHJpbnQoYWxwaGFiZXQp",highlighted:`alphabet = []
<span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> word_freqs.keys():
<span class="hljs-keyword">for</span> letter <span class="hljs-keyword">in</span> word:
<span class="hljs-keyword">if</span> letter <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> alphabet:
alphabet.append(letter)
alphabet.sort()
<span class="hljs-built_in">print</span>(alphabet)`,wrap:!1}}),rs=new T({props:{code:"JTVCJTIwJyUyQyclMkMlMjAnLiclMkMlMjAnQyclMkMlMjAnRiclMkMlMjAnSCclMkMlMjAnVCclMkMlMjAnYSclMkMlMjAnYiclMkMlMjAnYyclMkMlMjAnZCclMkMlMjAnZSclMkMlMjAnZiclMkMlMjAnZyclMkMlMjAnaCclMkMlMjAnaSclMkMlMjAnayclMkMlMjAnbCclMkMlMjAnbSclMkMlMjAnbiclMkMlMjAnbyclMkMlMjAncCclMkMlMjAnciclMkMlMjAncyclMkMlMEElMjAlMjAndCclMkMlMjAndSclMkMlMjAndiclMkMlMjAndyclMkMlMjAneSclMkMlMjAneiclMkMlMjAnJUM0JUEwJyU1RA==",highlighted:`[ <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;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>]`,wrap:!1}}),us=new T({props:{code:"dm9jYWIlMjAlM0QlMjAlNUIlMjIlM0MlN0NlbmRvZnRleHQlN0MlM0UlMjIlNUQlMjAlMkIlMjBhbHBoYWJldC5jb3B5KCk=",highlighted:'vocab = [<span class="hljs-string">&quot;&lt;|endoftext|&gt;&quot;</span>] + alphabet.copy()',wrap:!1}}),Ts=new T({props:{code:"c3BsaXRzJTIwJTNEJTIwJTdCd29yZCUzQSUyMCU1QmMlMjBmb3IlMjBjJTIwaW4lMjB3b3JkJTVEJTIwZm9yJTIwd29yZCUyMGluJTIwd29yZF9mcmVxcy5rZXlzKCklN0Q=",highlighted:'splits = {word: [c <span class="hljs-keyword">for</span> c <span class="hljs-keyword">in</span> word] <span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> word_freqs.keys()}',wrap:!1}}),ws=new T({props:{code:"ZGVmJTIwY29tcHV0ZV9wYWlyX2ZyZXFzKHNwbGl0cyklM0ElMEElMjAlMjAlMjAlMjBwYWlyX2ZyZXFzJTIwJTNEJTIwZGVmYXVsdGRpY3QoaW50KSUwQSUyMCUyMCUyMCUyMGZvciUyMHdvcmQlMkMlMjBmcmVxJTIwaW4lMjB3b3JkX2ZyZXFzLml0ZW1zKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzcGxpdCUyMCUzRCUyMHNwbGl0cyU1QndvcmQlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMGxlbihzcGxpdCklMjAlM0QlM0QlMjAxJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY29udGludWUlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmb3IlMjBpJTIwaW4lMjByYW5nZShsZW4oc3BsaXQpJTIwLSUyMDEpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGFpciUyMCUzRCUyMChzcGxpdCU1QmklNUQlMkMlMjBzcGxpdCU1QmklMjAlMkIlMjAxJTVEKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhaXJfZnJlcXMlNUJwYWlyJTVEJTIwJTJCJTNEJTIwZnJlcSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMHBhaXJfZnJlcXM=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_pair_freqs</span>(<span class="hljs-params">splits</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>:
<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>])
pair_freqs[pair] += freq
<span class="hljs-keyword">return</span> pair_freqs`,wrap:!1}}),Cs=new T({props:{code:"cGFpcl9mcmVxcyUyMCUzRCUyMGNvbXB1dGVfcGFpcl9mcmVxcyhzcGxpdHMpJTBBJTBBZm9yJTIwaSUyQyUyMGtleSUyMGluJTIwZW51bWVyYXRlKHBhaXJfZnJlcXMua2V5cygpKSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KGYlMjIlN0JrZXklN0QlM0ElMjAlN0JwYWlyX2ZyZXFzJTVCa2V5JTVEJTdEJTIyKSUwQSUyMCUyMCUyMCUyMGlmJTIwaSUyMCUzRSUzRCUyMDUlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBicmVhaw==",highlighted:`pair_freqs = compute_pair_freqs(splits)
<span class="hljs-keyword">for</span> i, key <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(pair_freqs.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_freqs[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}}),ms=new T({props:{code:"KCdUJyUyQyUyMCdoJyklM0ElMjAzJTBBKCdoJyUyQyUyMCdpJyklM0ElMjAzJTBBKCdpJyUyQyUyMCdzJyklM0ElMjA1JTBBKCclQzQlQTAnJTJDJTIwJ2knKSUzQSUyMDIlMEEoJyVDNCVBMCclMkMlMjAndCcpJTNBJTIwNyUwQSgndCclMkMlMjAnaCcpJTNBJTIwMw==",highlighted:`(<span class="hljs-string">&#x27;T&#x27;</span>, <span class="hljs-string">&#x27;h&#x27;</span>): <span class="hljs-number">3</span>
(<span class="hljs-string">&#x27;h&#x27;</span>, <span class="hljs-string">&#x27;i&#x27;</span>): <span class="hljs-number">3</span>
(<span class="hljs-string">&#x27;i&#x27;</span>, <span class="hljs-string">&#x27;s&#x27;</span>): <span class="hljs-number">5</span>
(<span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;i&#x27;</span>): <span class="hljs-number">2</span>
(<span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;t&#x27;</span>): <span class="hljs-number">7</span>
(<span class="hljs-string">&#x27;t&#x27;</span>, <span class="hljs-string">&#x27;h&#x27;</span>): <span class="hljs-number">3</span>`,wrap:!1}}),Is=new T({props:{code:"YmVzdF9wYWlyJTIwJTNEJTIwJTIyJTIyJTBBbWF4X2ZyZXElMjAlM0QlMjBOb25lJTBBJTBBZm9yJTIwcGFpciUyQyUyMGZyZXElMjBpbiUyMHBhaXJfZnJlcXMuaXRlbXMoKSUzQSUwQSUyMCUyMCUyMCUyMGlmJTIwbWF4X2ZyZXElMjBpcyUyME5vbmUlMjBvciUyMG1heF9mcmVxJTIwJTNDJTIwZnJlcSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJlc3RfcGFpciUyMCUzRCUyMHBhaXIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtYXhfZnJlcSUyMCUzRCUyMGZyZXElMEElMEFwcmludChiZXN0X3BhaXIlMkMlMjBtYXhfZnJlcSk=",highlighted:`best_pair = <span class="hljs-string">&quot;&quot;</span>
max_freq = <span class="hljs-literal">None</span>
<span class="hljs-keyword">for</span> pair, freq <span class="hljs-keyword">in</span> pair_freqs.items():
<span class="hljs-keyword">if</span> max_freq <span class="hljs-keyword">is</span> <span class="hljs-literal">None</span> <span class="hljs-keyword">or</span> max_freq &lt; freq:
best_pair = pair
max_freq = freq
<span class="hljs-built_in">print</span>(best_pair, max_freq)`,wrap:!1}}),fs=new T({props:{code:"KCclQzQlQTAnJTJDJTIwJ3QnKSUyMDc=",highlighted:'(<span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;t&#x27;</span>) <span class="hljs-number">7</span>',wrap:!1}}),bs=new T({props:{code:"bWVyZ2VzJTIwJTNEJTIwJTdCKCUyMiVDNCVBMCUyMiUyQyUyMCUyMnQlMjIpJTNBJTIwJTIyJUM0JUEwdCUyMiU3RCUwQXZvY2FiLmFwcGVuZCglMjIlQzQlQTB0JTIyKQ==",highlighted:`merges = {(<span class="hljs-string">&quot;Ġ&quot;</span>, <span class="hljs-string">&quot;t&quot;</span>): <span class="hljs-string">&quot;Ġt&quot;</span>}
vocab.append(<span class="hljs-string">&quot;Ġt&quot;</span>)`,wrap:!1}}),ds=new T({props:{code:"ZGVmJTIwbWVyZ2VfcGFpcihhJTJDJTIwYiUyQyUyMHNwbGl0cyklM0ElMEElMjAlMjAlMjAlMjBmb3IlMjB3b3JkJTIwaW4lMjB3b3JkX2ZyZXFzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BsaXQlMjAlM0QlMjBzcGxpdHMlNUJ3b3JkJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBsZW4oc3BsaXQpJTIwJTNEJTNEJTIwMSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbnRpbnVlJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaSUyMCUzRCUyMDAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aGlsZSUyMGklMjAlM0MlMjBsZW4oc3BsaXQpJTIwLSUyMDElM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMHNwbGl0JTVCaSU1RCUyMCUzRCUzRCUyMGElMjBhbmQlMjBzcGxpdCU1QmklMjAlMkIlMjAxJTVEJTIwJTNEJTNEJTIwYiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwbGl0JTIwJTNEJTIwc3BsaXQlNUIlM0FpJTVEJTIwJTJCJTIwJTVCYSUyMCUyQiUyMGIlNUQlMjAlMkIlMjBzcGxpdCU1QmklMjAlMkIlMjAyJTIwJTNBJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGklMjAlMkIlM0QlMjAxJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BsaXRzJTVCd29yZCU1RCUyMCUzRCUyMHNwbGl0JTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwc3BsaXRz",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:
split = split[:i] + [a + b] + 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 T({props:{code:"c3BsaXRzJTIwJTNEJTIwbWVyZ2VfcGFpciglMjIlQzQlQTAlMjIlMkMlMjAlMjJ0JTIyJTJDJTIwc3BsaXRzKSUwQXByaW50KHNwbGl0cyU1QiUyMiVDNCVBMHRyYWluZWQlMjIlNUQp",highlighted:`splits = merge_pair(<span class="hljs-string">&quot;Ġ&quot;</span>, <span class="hljs-string">&quot;t&quot;</span>, splits)
<span class="hljs-built_in">print</span>(splits[<span class="hljs-string">&quot;Ġtrained&quot;</span>])`,wrap:!1}}),As=new T({props:{code:"JTVCJyVDNCVBMHQnJTJDJTIwJ3InJTJDJTIwJ2EnJTJDJTIwJ2knJTJDJTIwJ24nJTJDJTIwJ2UnJTJDJTIwJ2QnJTVE",highlighted:'[<span class="hljs-string">&#x27;Ġt&#x27;</span>, <span class="hljs-string">&#x27;r&#x27;</span>, <span class="hljs-string">&#x27;a&#x27;</span>, <span class="hljs-string">&#x27;i&#x27;</span>, <span class="hljs-string">&#x27;n&#x27;</span>, <span class="hljs-string">&#x27;e&#x27;</span>, <span class="hljs-string">&#x27;d&#x27;</span>]',wrap:!1}}),Es=new T({props:{code:"dm9jYWJfc2l6ZSUyMCUzRCUyMDUwJTBBJTBBd2hpbGUlMjBsZW4odm9jYWIpJTIwJTNDJTIwdm9jYWJfc2l6ZSUzQSUwQSUyMCUyMCUyMCUyMHBhaXJfZnJlcXMlMjAlM0QlMjBjb21wdXRlX3BhaXJfZnJlcXMoc3BsaXRzKSUwQSUyMCUyMCUyMCUyMGJlc3RfcGFpciUyMCUzRCUyMCUyMiUyMiUwQSUyMCUyMCUyMCUyMG1heF9mcmVxJTIwJTNEJTIwTm9uZSUwQSUyMCUyMCUyMCUyMGZvciUyMHBhaXIlMkMlMjBmcmVxJTIwaW4lMjBwYWlyX2ZyZXFzLml0ZW1zKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG1heF9mcmVxJTIwaXMlMjBOb25lJTIwb3IlMjBtYXhfZnJlcSUyMCUzQyUyMGZyZXElM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBiZXN0X3BhaXIlMjAlM0QlMjBwYWlyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWF4X2ZyZXElMjAlM0QlMjBmcmVxJTBBJTIwJTIwJTIwJTIwc3BsaXRzJTIwJTNEJTIwbWVyZ2VfcGFpcigqYmVzdF9wYWlyJTJDJTIwc3BsaXRzKSUwQSUyMCUyMCUyMCUyMG1lcmdlcyU1QmJlc3RfcGFpciU1RCUyMCUzRCUyMGJlc3RfcGFpciU1QjAlNUQlMjAlMkIlMjBiZXN0X3BhaXIlNUIxJTVEJTBBJTIwJTIwJTIwJTIwdm9jYWIuYXBwZW5kKGJlc3RfcGFpciU1QjAlNUQlMjAlMkIlMjBiZXN0X3BhaXIlNUIxJTVEKQ==",highlighted:`vocab_size = <span class="hljs-number">50</span>
<span class="hljs-keyword">while</span> <span class="hljs-built_in">len</span>(vocab) &lt; vocab_size:
pair_freqs = compute_pair_freqs(splits)
best_pair = <span class="hljs-string">&quot;&quot;</span>
max_freq = <span class="hljs-literal">None</span>
<span class="hljs-keyword">for</span> pair, freq <span class="hljs-keyword">in</span> pair_freqs.items():
<span class="hljs-keyword">if</span> max_freq <span class="hljs-keyword">is</span> <span class="hljs-literal">None</span> <span class="hljs-keyword">or</span> max_freq &lt; freq:
best_pair = pair
max_freq = freq
splits = merge_pair(*best_pair, splits)
merges[best_pair] = best_pair[<span class="hljs-number">0</span>] + best_pair[<span class="hljs-number">1</span>]
vocab.append(best_pair[<span class="hljs-number">0</span>] + best_pair[<span class="hljs-number">1</span>])`,wrap:!1}}),Vs=new T({props:{code:"cHJpbnQobWVyZ2VzKQ==",highlighted:'<span class="hljs-built_in">print</span>(merges)',wrap:!1}}),Zs=new T({props:{code:"JTdCKCclQzQlQTAnJTJDJTIwJ3QnKSUzQSUyMCclQzQlQTB0JyUyQyUyMCgnaSclMkMlMjAncycpJTNBJTIwJ2lzJyUyQyUyMCgnZSclMkMlMjAncicpJTNBJTIwJ2VyJyUyQyUyMCgnJUM0JUEwJyUyQyUyMCdhJyklM0ElMjAnJUM0JUEwYSclMkMlMjAoJyVDNCVBMHQnJTJDJTIwJ28nKSUzQSUyMCclQzQlQTB0byclMkMlMjAoJ2UnJTJDJTIwJ24nKSUzQSUyMCdlbiclMkMlMEElMjAoJ1QnJTJDJTIwJ2gnKSUzQSUyMCdUaCclMkMlMjAoJ1RoJyUyQyUyMCdpcycpJTNBJTIwJ1RoaXMnJTJDJTIwKCdvJyUyQyUyMCd1JyklM0ElMjAnb3UnJTJDJTIwKCdzJyUyQyUyMCdlJyklM0ElMjAnc2UnJTJDJTIwKCclQzQlQTB0byclMkMlMjAnaycpJTNBJTIwJyVDNCVBMHRvayclMkMlMEElMjAoJyVDNCVBMHRvayclMkMlMjAnZW4nKSUzQSUyMCclQzQlQTB0b2tlbiclMkMlMjAoJ24nJTJDJTIwJ2QnKSUzQSUyMCduZCclMkMlMjAoJyVDNCVBMCclMkMlMjAnaXMnKSUzQSUyMCclQzQlQTBpcyclMkMlMjAoJyVDNCVBMHQnJTJDJTIwJ2gnKSUzQSUyMCclQzQlQTB0aCclMkMlMjAoJyVDNCVBMHRoJyUyQyUyMCdlJyklM0ElMjAnJUM0JUEwdGhlJyUyQyUwQSUyMCgnaSclMkMlMjAnbicpJTNBJTIwJ2luJyUyQyUyMCgnJUM0JUEwYSclMkMlMjAnYicpJTNBJTIwJyVDNCVBMGFiJyUyQyUyMCgnJUM0JUEwdG9rZW4nJTJDJTIwJ2knKSUzQSUyMCclQzQlQTB0b2tlbmknJTdE",highlighted:`{(<span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;t&#x27;</span>): <span class="hljs-string">&#x27;Ġt&#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;e&#x27;</span>, <span class="hljs-string">&#x27;r&#x27;</span>): <span class="hljs-string">&#x27;er&#x27;</span>, (<span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;a&#x27;</span>): <span class="hljs-string">&#x27;Ġa&#x27;</span>, (<span class="hljs-string">&#x27;Ġt&#x27;</span>, <span class="hljs-string">&#x27;o&#x27;</span>): <span class="hljs-string">&#x27;Ġto&#x27;</span>, (<span class="hljs-string">&#x27;e&#x27;</span>, <span class="hljs-string">&#x27;n&#x27;</span>): <span class="hljs-string">&#x27;en&#x27;</span>,
(<span class="hljs-string">&#x27;T&#x27;</span>, <span class="hljs-string">&#x27;h&#x27;</span>): <span class="hljs-string">&#x27;Th&#x27;</span>, (<span class="hljs-string">&#x27;Th&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>): <span class="hljs-string">&#x27;This&#x27;</span>, (<span class="hljs-string">&#x27;o&#x27;</span>, <span class="hljs-string">&#x27;u&#x27;</span>): <span class="hljs-string">&#x27;ou&#x27;</span>, (<span class="hljs-string">&#x27;s&#x27;</span>, <span class="hljs-string">&#x27;e&#x27;</span>): <span class="hljs-string">&#x27;se&#x27;</span>, (<span class="hljs-string">&#x27;Ġto&#x27;</span>, <span class="hljs-string">&#x27;k&#x27;</span>): <span class="hljs-string">&#x27;Ġtok&#x27;</span>,
(<span class="hljs-string">&#x27;Ġtok&#x27;</span>, <span class="hljs-string">&#x27;en&#x27;</span>): <span class="hljs-string">&#x27;Ġtoken&#x27;</span>, (<span class="hljs-string">&#x27;n&#x27;</span>, <span class="hljs-string">&#x27;d&#x27;</span>): <span class="hljs-string">&#x27;nd&#x27;</span>, (<span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>): <span class="hljs-string">&#x27;Ġis&#x27;</span>, (<span class="hljs-string">&#x27;Ġt&#x27;</span>, <span class="hljs-string">&#x27;h&#x27;</span>): <span class="hljs-string">&#x27;Ġth&#x27;</span>, (<span class="hljs-string">&#x27;Ġth&#x27;</span>, <span class="hljs-string">&#x27;e&#x27;</span>): <span class="hljs-string">&#x27;Ġthe&#x27;</span>,
(<span class="hljs-string">&#x27;i&#x27;</span>, <span class="hljs-string">&#x27;n&#x27;</span>): <span class="hljs-string">&#x27;in&#x27;</span>, (<span class="hljs-string">&#x27;Ġa&#x27;</span>, <span class="hljs-string">&#x27;b&#x27;</span>): <span class="hljs-string">&#x27;Ġab&#x27;</span>, (<span class="hljs-string">&#x27;Ġtoken&#x27;</span>, <span class="hljs-string">&#x27;i&#x27;</span>): <span class="hljs-string">&#x27;Ġtokeni&#x27;</span>}`,wrap:!1}}),Gs=new T({props:{code:"cHJpbnQodm9jYWIp",highlighted:'<span class="hljs-built_in">print</span>(vocab)',wrap:!1}}),Ss=new T({props:{code:"JTVCJyUzQyU3Q2VuZG9mdGV4dCU3QyUzRSclMkMlMjAnJTJDJyUyQyUyMCcuJyUyQyUyMCdDJyUyQyUyMCdGJyUyQyUyMCdIJyUyQyUyMCdUJyUyQyUyMCdhJyUyQyUyMCdiJyUyQyUyMCdjJyUyQyUyMCdkJyUyQyUyMCdlJyUyQyUyMCdmJyUyQyUyMCdnJyUyQyUyMCdoJyUyQyUyMCdpJyUyQyUyMCdrJyUyQyUyMCdsJyUyQyUyMCdtJyUyQyUyMCduJyUyQyUyMCdvJyUyQyUwQSUyMCdwJyUyQyUyMCdyJyUyQyUyMCdzJyUyQyUyMCd0JyUyQyUyMCd1JyUyQyUyMCd2JyUyQyUyMCd3JyUyQyUyMCd5JyUyQyUyMCd6JyUyQyUyMCclQzQlQTAnJTJDJTIwJyVDNCVBMHQnJTJDJTIwJ2lzJyUyQyUyMCdlciclMkMlMjAnJUM0JUEwYSclMkMlMjAnJUM0JUEwdG8nJTJDJTIwJ2VuJyUyQyUyMCdUaCclMkMlMjAnVGhpcyclMkMlMjAnb3UnJTJDJTIwJ3NlJyUyQyUwQSUyMCclQzQlQTB0b2snJTJDJTIwJyVDNCVBMHRva2VuJyUyQyUyMCduZCclMkMlMjAnJUM0JUEwaXMnJTJDJTIwJyVDNCVBMHRoJyUyQyUyMCclQzQlQTB0aGUnJTJDJTIwJ2luJyUyQyUyMCclQzQlQTBhYiclMkMlMjAnJUM0JUEwdG9rZW5pJyU1RA==",highlighted:`[<span class="hljs-string">&#x27;&lt;|endoftext|&gt;&#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;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;Ġt&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;er&#x27;</span>, <span class="hljs-string">&#x27;Ġa&#x27;</span>, <span class="hljs-string">&#x27;Ġto&#x27;</span>, <span class="hljs-string">&#x27;en&#x27;</span>, <span class="hljs-string">&#x27;Th&#x27;</span>, <span class="hljs-string">&#x27;This&#x27;</span>, <span class="hljs-string">&#x27;ou&#x27;</span>, <span class="hljs-string">&#x27;se&#x27;</span>,
<span class="hljs-string">&#x27;Ġtok&#x27;</span>, <span class="hljs-string">&#x27;Ġtoken&#x27;</span>, <span class="hljs-string">&#x27;nd&#x27;</span>, <span class="hljs-string">&#x27;Ġis&#x27;</span>, <span class="hljs-string">&#x27;Ġth&#x27;</span>, <span class="hljs-string">&#x27;Ġthe&#x27;</span>, <span class="hljs-string">&#x27;in&#x27;</span>, <span class="hljs-string">&#x27;Ġab&#x27;</span>, <span class="hljs-string">&#x27;Ġtokeni&#x27;</span>]`,wrap:!1}}),f=new Ys({props:{$$slots:{default:[qa]},$$scope:{ctx:x}}}),Ns=new T({props:{code:"ZGVmJTIwdG9rZW5pemUodGV4dCklM0ElMEElMjAlMjAlMjAlMjBwcmVfdG9rZW5pemVfcmVzdWx0JTIwJTNEJTIwdG9rZW5pemVyLl90b2tlbml6ZXIucHJlX3Rva2VuaXplci5wcmVfdG9rZW5pemVfc3RyKHRleHQpJTBBJTIwJTIwJTIwJTIwcHJlX3Rva2VuaXplZF90ZXh0JTIwJTNEJTIwJTVCd29yZCUyMGZvciUyMHdvcmQlMkMlMjBvZmZzZXQlMjBpbiUyMHByZV90b2tlbml6ZV9yZXN1bHQlNUQlMEElMjAlMjAlMjAlMjBzcGxpdHMlMjAlM0QlMjAlNUIlNUJsJTIwZm9yJTIwbCUyMGluJTIwd29yZCU1RCUyMGZvciUyMHdvcmQlMjBpbiUyMHByZV90b2tlbml6ZWRfdGV4dCU1RCUwQSUyMCUyMCUyMCUyMGZvciUyMHBhaXIlMkMlMjBtZXJnZSUyMGluJTIwbWVyZ2VzLml0ZW1zKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmb3IlMjBpZHglMkMlMjBzcGxpdCUyMGluJTIwZW51bWVyYXRlKHNwbGl0cyklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpJTIwJTNEJTIwMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdoaWxlJTIwaSUyMCUzQyUyMGxlbihzcGxpdCklMjAtJTIwMSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwc3BsaXQlNUJpJTVEJTIwJTNEJTNEJTIwcGFpciU1QjAlNUQlMjBhbmQlMjBzcGxpdCU1QmklMjAlMkIlMjAxJTVEJTIwJTNEJTNEJTIwcGFpciU1QjElNUQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzcGxpdCUyMCUzRCUyMHNwbGl0JTVCJTNBaSU1RCUyMCUyQiUyMCU1Qm1lcmdlJTVEJTIwJTJCJTIwc3BsaXQlNUJpJTIwJTJCJTIwMiUyMCUzQSU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVsc2UlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpJTIwJTJCJTNEJTIwMSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwbGl0cyU1QmlkeCU1RCUyMCUzRCUyMHNwbGl0JTBBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwc3VtKHNwbGl0cyUyQyUyMCU1QiU1RCk=",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]
splits = [[l <span class="hljs-keyword">for</span> l <span class="hljs-keyword">in</span> word] <span class="hljs-keyword">for</span> word <span class="hljs-keyword">in</span> pre_tokenized_text]
<span class="hljs-keyword">for</span> pair, merge <span class="hljs-keyword">in</span> merges.items():
<span class="hljs-keyword">for</span> idx, split <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(splits):
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] == pair[<span class="hljs-number">0</span>] <span class="hljs-keyword">and</span> split[i + <span class="hljs-number">1</span>] == pair[<span class="hljs-number">1</span>]:
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[idx] = split
<span class="hljs-keyword">return</span> <span class="hljs-built_in">sum</span>(splits, [])`,wrap:!1}}),Xs=new T({props:{code:"dG9rZW5pemUoJTIyVGhpcyUyMGlzJTIwbm90JTIwYSUyMHRva2VuLiUyMik=",highlighted:'tokenize(<span class="hljs-string">&quot;This is not a token.&quot;</span>)',wrap:!1}}),Ds=new T({props:{code:"JTVCJ1RoaXMnJTJDJTIwJyVDNCVBMGlzJyUyQyUyMCclQzQlQTAnJTJDJTIwJ24nJTJDJTIwJ28nJTJDJTIwJ3QnJTJDJTIwJyVDNCVBMGEnJTJDJTIwJyVDNCVBMHRva2VuJyUyQyUyMCcuJyU1RA==",highlighted:'[<span class="hljs-string">&#x27;This&#x27;</span>, <span class="hljs-string">&#x27;Ġis&#x27;</span>, <span class="hljs-string">&#x27;Ġ&#x27;</span>, <span class="hljs-string">&#x27;n&#x27;</span>, <span class="hljs-string">&#x27;o&#x27;</span>, <span class="hljs-string">&#x27;t&#x27;</span>, <span class="hljs-string">&#x27;Ġa&#x27;</span>, <span class="hljs-string">&#x27;Ġtoken&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>]',wrap:!1}}),$=new Ys({props:{warning:!0,$$slots:{default:[Qa]},$$scope:{ctx:x}}}),Rs=new fa({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter6/5.mdx"}}),{c(){e=r("meta"),h=t(),U=r("p"),w=t(),M(b.$$.fragment),Fs=t(),M(k.$$.fragment),Ls=t(),d=r("p"),d.textContent=bn,Os=t(),M(q.$$.fragment),sl=t(),M(C.$$.fragment),ll=t(),M(Q.$$.fragment),nl=t(),A=r("p"),A.textContent=kn,al=t(),M(B.$$.fragment),tl=t(),E=r("p"),E.innerHTML=dn,pl=t(),z=r("p"),z.textContent=qn,el=t(),M(m.$$.fragment),Ml=t(),V=r("p"),V.innerHTML=Qn,yl=t(),Z=r("p"),Z.textContent=An,il=t(),M(v.$$.fragment),jl=t(),G=r("p"),G.innerHTML=Bn,Jl=t(),S=r("p"),S.textContent=En,cl=t(),M(_.$$.fragment),rl=t(),N=r("p"),N.innerHTML=zn,ol=t(),H=r("p"),H.textContent=Vn,ul=t(),M(X.$$.fragment),Ul=t(),D=r("p"),D.innerHTML=Zn,Tl=t(),M(W.$$.fragment),hl=t(),R=r("p"),R.innerHTML=vn,wl=t(),M(Y.$$.fragment),xl=t(),P=r("p"),P.textContent=Gn,Cl=t(),M(g.$$.fragment),ml=t(),M(K.$$.fragment),gl=t(),F=r("p"),F.textContent=Sn,Il=t(),L=r("ol"),L.innerHTML=_n,fl=t(),O=r("p"),O.textContent=Nn,$l=t(),M(ss.$$.fragment),bl=t(),ls=r("p"),ls.innerHTML=Hn,kl=t(),M(I.$$.fragment),dl=t(),M(ns.$$.fragment),ql=t(),as=r("p"),as.textContent=Xn,Ql=t(),ts=r("p"),ts.textContent=Dn,Al=t(),M(ps.$$.fragment),Bl=t(),es=r("p"),es.innerHTML=Wn,El=t(),M(Ms.$$.fragment),zl=t(),ys=r("p"),ys.textContent=Rn,Vl=t(),M(is.$$.fragment),Zl=t(),M(js.$$.fragment),vl=t(),Js=r("p"),Js.textContent=Yn,Gl=t(),M(cs.$$.fragment),Sl=t(),M(rs.$$.fragment),_l=t(),os=r("p"),os.innerHTML=Pn,Nl=t(),M(us.$$.fragment),Hl=t(),Us=r("p"),Us.textContent=Kn,Xl=t(),M(Ts.$$.fragment),Dl=t(),hs=r("p"),hs.textContent=Fn,Wl=t(),M(ws.$$.fragment),Rl=t(),xs=r("p"),xs.textContent=Ln,Yl=t(),M(Cs.$$.fragment),Pl=t(),M(ms.$$.fragment),Kl=t(),gs=r("p"),gs.textContent=On,Fl=t(),M(Is.$$.fragment),Ll=t(),M(fs.$$.fragment),Ol=t(),$s=r("p"),$s.innerHTML=sa,sn=t(),M(bs.$$.fragment),ln=t(),ks=r("p"),ks.innerHTML=la,nn=t(),M(ds.$$.fragment),an=t(),qs=r("p"),qs.textContent=na,tn=t(),M(Qs.$$.fragment),pn=t(),M(As.$$.fragment),en=t(),Bs=r("p"),Bs.textContent=aa,Mn=t(),M(Es.$$.fragment),yn=t(),zs=r("p"),zs.textContent=ta,jn=t(),M(Vs.$$.fragment),Jn=t(),M(Zs.$$.fragment),cn=t(),vs=r("p"),vs.textContent=pa,rn=t(),M(Gs.$$.fragment),on=t(),M(Ss.$$.fragment),un=t(),M(f.$$.fragment),Un=t(),_s=r("p"),_s.textContent=ea,Tn=t(),M(Ns.$$.fragment),hn=t(),Hs=r("p"),Hs.textContent=Ma,wn=t(),M(Xs.$$.fragment),xn=t(),M(Ds.$$.fragment),Cn=t(),M($.$$.fragment),mn=t(),Ws=r("p"),Ws.textContent=ya,gn=t(),M(Rs.$$.fragment),In=t(),Ks=r("p"),this.h()},l(s){const l=Ca("svelte-u9bgzb",document.head);e=o(l,"META",{name:!0,content:!0}),l.forEach(n),h=p(s),U=o(s,"P",{}),ua(U).forEach(n),w=p(s),y(b.$$.fragment,s),Fs=p(s),y(k.$$.fragment,s),Ls=p(s),d=o(s,"P",{"data-svelte-h":!0}),u(d)!=="svelte-12o0prt"&&(d.textContent=bn),Os=p(s),y(q.$$.fragment,s),sl=p(s),y(C.$$.fragment,s),ll=p(s),y(Q.$$.fragment,s),nl=p(s),A=o(s,"P",{"data-svelte-h":!0}),u(A)!=="svelte-ui9660"&&(A.textContent=kn),al=p(s),y(B.$$.fragment,s),tl=p(s),E=o(s,"P",{"data-svelte-h":!0}),u(E)!=="svelte-1mi54up"&&(E.innerHTML=dn),pl=p(s),z=o(s,"P",{"data-svelte-h":!0}),u(z)!=="svelte-568bhx"&&(z.textContent=qn),el=p(s),y(m.$$.fragment,s),Ml=p(s),V=o(s,"P",{"data-svelte-h":!0}),u(V)!=="svelte-19vck82"&&(V.innerHTML=Qn),yl=p(s),Z=o(s,"P",{"data-svelte-h":!0}),u(Z)!=="svelte-qclq5r"&&(Z.textContent=An),il=p(s),y(v.$$.fragment,s),jl=p(s),G=o(s,"P",{"data-svelte-h":!0}),u(G)!=="svelte-1hblxvc"&&(G.innerHTML=Bn),Jl=p(s),S=o(s,"P",{"data-svelte-h":!0}),u(S)!=="svelte-14fxlqe"&&(S.textContent=En),cl=p(s),y(_.$$.fragment,s),rl=p(s),N=o(s,"P",{"data-svelte-h":!0}),u(N)!=="svelte-bmix0l"&&(N.innerHTML=zn),ol=p(s),H=o(s,"P",{"data-svelte-h":!0}),u(H)!=="svelte-7b8c15"&&(H.textContent=Vn),ul=p(s),y(X.$$.fragment,s),Ul=p(s),D=o(s,"P",{"data-svelte-h":!0}),u(D)!=="svelte-1bqhc5z"&&(D.innerHTML=Zn),Tl=p(s),y(W.$$.fragment,s),hl=p(s),R=o(s,"P",{"data-svelte-h":!0}),u(R)!=="svelte-1g4lab1"&&(R.innerHTML=vn),wl=p(s),y(Y.$$.fragment,s),xl=p(s),P=o(s,"P",{"data-svelte-h":!0}),u(P)!=="svelte-rt06o2"&&(P.textContent=Gn),Cl=p(s),y(g.$$.fragment,s),ml=p(s),y(K.$$.fragment,s),gl=p(s),F=o(s,"P",{"data-svelte-h":!0}),u(F)!=="svelte-38g5f4"&&(F.textContent=Sn),Il=p(s),L=o(s,"OL",{"data-svelte-h":!0}),u(L)!=="svelte-1dn790a"&&(L.innerHTML=_n),fl=p(s),O=o(s,"P",{"data-svelte-h":!0}),u(O)!=="svelte-1c2vghc"&&(O.textContent=Nn),$l=p(s),y(ss.$$.fragment,s),bl=p(s),ls=o(s,"P",{"data-svelte-h":!0}),u(ls)!=="svelte-n933xw"&&(ls.innerHTML=Hn),kl=p(s),y(I.$$.fragment,s),dl=p(s),y(ns.$$.fragment,s),ql=p(s),as=o(s,"P",{"data-svelte-h":!0}),u(as)!=="svelte-1e93cpt"&&(as.textContent=Xn),Ql=p(s),ts=o(s,"P",{"data-svelte-h":!0}),u(ts)!=="svelte-5w2uhv"&&(ts.textContent=Dn),Al=p(s),y(ps.$$.fragment,s),Bl=p(s),es=o(s,"P",{"data-svelte-h":!0}),u(es)!=="svelte-1p977ot"&&(es.innerHTML=Wn),El=p(s),y(Ms.$$.fragment,s),zl=p(s),ys=o(s,"P",{"data-svelte-h":!0}),u(ys)!=="svelte-97lq7n"&&(ys.textContent=Rn),Vl=p(s),y(is.$$.fragment,s),Zl=p(s),y(js.$$.fragment,s),vl=p(s),Js=o(s,"P",{"data-svelte-h":!0}),u(Js)!=="svelte-1ki81xp"&&(Js.textContent=Yn),Gl=p(s),y(cs.$$.fragment,s),Sl=p(s),y(rs.$$.fragment,s),_l=p(s),os=o(s,"P",{"data-svelte-h":!0}),u(os)!=="svelte-1ivy2j"&&(os.innerHTML=Pn),Nl=p(s),y(us.$$.fragment,s),Hl=p(s),Us=o(s,"P",{"data-svelte-h":!0}),u(Us)!=="svelte-1d6a2sn"&&(Us.textContent=Kn),Xl=p(s),y(Ts.$$.fragment,s),Dl=p(s),hs=o(s,"P",{"data-svelte-h":!0}),u(hs)!=="svelte-1n9k9s1"&&(hs.textContent=Fn),Wl=p(s),y(ws.$$.fragment,s),Rl=p(s),xs=o(s,"P",{"data-svelte-h":!0}),u(xs)!=="svelte-1jpkvry"&&(xs.textContent=Ln),Yl=p(s),y(Cs.$$.fragment,s),Pl=p(s),y(ms.$$.fragment,s),Kl=p(s),gs=o(s,"P",{"data-svelte-h":!0}),u(gs)!=="svelte-ytfm66"&&(gs.textContent=On),Fl=p(s),y(Is.$$.fragment,s),Ll=p(s),y(fs.$$.fragment,s),Ol=p(s),$s=o(s,"P",{"data-svelte-h":!0}),u($s)!=="svelte-knui6i"&&($s.innerHTML=sa),sn=p(s),y(bs.$$.fragment,s),ln=p(s),ks=o(s,"P",{"data-svelte-h":!0}),u(ks)!=="svelte-1gz885v"&&(ks.innerHTML=la),nn=p(s),y(ds.$$.fragment,s),an=p(s),qs=o(s,"P",{"data-svelte-h":!0}),u(qs)!=="svelte-k9g317"&&(qs.textContent=na),tn=p(s),y(Qs.$$.fragment,s),pn=p(s),y(As.$$.fragment,s),en=p(s),Bs=o(s,"P",{"data-svelte-h":!0}),u(Bs)!=="svelte-ch2nw4"&&(Bs.textContent=aa),Mn=p(s),y(Es.$$.fragment,s),yn=p(s),zs=o(s,"P",{"data-svelte-h":!0}),u(zs)!=="svelte-1047qda"&&(zs.textContent=ta),jn=p(s),y(Vs.$$.fragment,s),Jn=p(s),y(Zs.$$.fragment,s),cn=p(s),vs=o(s,"P",{"data-svelte-h":!0}),u(vs)!=="svelte-19ymfzy"&&(vs.textContent=pa),rn=p(s),y(Gs.$$.fragment,s),on=p(s),y(Ss.$$.fragment,s),un=p(s),y(f.$$.fragment,s),Un=p(s),_s=o(s,"P",{"data-svelte-h":!0}),u(_s)!=="svelte-1g50xxw"&&(_s.textContent=ea),Tn=p(s),y(Ns.$$.fragment,s),hn=p(s),Hs=o(s,"P",{"data-svelte-h":!0}),u(Hs)!=="svelte-1xxndsq"&&(Hs.textContent=Ma),wn=p(s),y(Xs.$$.fragment,s),xn=p(s),y(Ds.$$.fragment,s),Cn=p(s),y($.$$.fragment,s),mn=p(s),Ws=o(s,"P",{"data-svelte-h":!0}),u(Ws)!=="svelte-zewf2t"&&(Ws.textContent=ya),gn=p(s),y(Rs.$$.fragment,s),In=p(s),Ks=o(s,"P",{}),ua(Ks).forEach(n),this.h()},h(){Ua(e,"name","hf:doc:metadata"),Ua(e,"content",Ba)},m(s,l){ma(document.head,e),a(s,h,l),a(s,U,l),a(s,w,l),i(b,s,l),a(s,Fs,l),i(k,s,l),a(s,Ls,l),a(s,d,l),a(s,Os,l),i(q,s,l),a(s,sl,l),i(C,s,l),a(s,ll,l),i(Q,s,l),a(s,nl,l),a(s,A,l),a(s,al,l),i(B,s,l),a(s,tl,l),a(s,E,l),a(s,pl,l),a(s,z,l),a(s,el,l),i(m,s,l),a(s,Ml,l),a(s,V,l),a(s,yl,l),a(s,Z,l),a(s,il,l),i(v,s,l),a(s,jl,l),a(s,G,l),a(s,Jl,l),a(s,S,l),a(s,cl,l),i(_,s,l),a(s,rl,l),a(s,N,l),a(s,ol,l),a(s,H,l),a(s,ul,l),i(X,s,l),a(s,Ul,l),a(s,D,l),a(s,Tl,l),i(W,s,l),a(s,hl,l),a(s,R,l),a(s,wl,l),i(Y,s,l),a(s,xl,l),a(s,P,l),a(s,Cl,l),i(g,s,l),a(s,ml,l),i(K,s,l),a(s,gl,l),a(s,F,l),a(s,Il,l),a(s,L,l),a(s,fl,l),a(s,O,l),a(s,$l,l),i(ss,s,l),a(s,bl,l),a(s,ls,l),a(s,kl,l),i(I,s,l),a(s,dl,l),i(ns,s,l),a(s,ql,l),a(s,as,l),a(s,Ql,l),a(s,ts,l),a(s,Al,l),i(ps,s,l),a(s,Bl,l),a(s,es,l),a(s,El,l),i(Ms,s,l),a(s,zl,l),a(s,ys,l),a(s,Vl,l),i(is,s,l),a(s,Zl,l),i(js,s,l),a(s,vl,l),a(s,Js,l),a(s,Gl,l),i(cs,s,l),a(s,Sl,l),i(rs,s,l),a(s,_l,l),a(s,os,l),a(s,Nl,l),i(us,s,l),a(s,Hl,l),a(s,Us,l),a(s,Xl,l),i(Ts,s,l),a(s,Dl,l),a(s,hs,l),a(s,Wl,l),i(ws,s,l),a(s,Rl,l),a(s,xs,l),a(s,Yl,l),i(Cs,s,l),a(s,Pl,l),i(ms,s,l),a(s,Kl,l),a(s,gs,l),a(s,Fl,l),i(Is,s,l),a(s,Ll,l),i(fs,s,l),a(s,Ol,l),a(s,$s,l),a(s,sn,l),i(bs,s,l),a(s,ln,l),a(s,ks,l),a(s,nn,l),i(ds,s,l),a(s,an,l),a(s,qs,l),a(s,tn,l),i(Qs,s,l),a(s,pn,l),i(As,s,l),a(s,en,l),a(s,Bs,l),a(s,Mn,l),i(Es,s,l),a(s,yn,l),a(s,zs,l),a(s,jn,l),i(Vs,s,l),a(s,Jn,l),i(Zs,s,l),a(s,cn,l),a(s,vs,l),a(s,rn,l),i(Gs,s,l),a(s,on,l),i(Ss,s,l),a(s,un,l),i(f,s,l),a(s,Un,l),a(s,_s,l),a(s,Tn,l),i(Ns,s,l),a(s,hn,l),a(s,Hs,l),a(s,wn,l),i(Xs,s,l),a(s,xn,l),i(Ds,s,l),a(s,Cn,l),i($,s,l),a(s,mn,l),a(s,Ws,l),a(s,gn,l),i(Rs,s,l),a(s,In,l),a(s,Ks,l),fn=!0},p(s,[l]){const ia={};l&2&&(ia.$$scope={dirty:l,ctx:s}),C.$set(ia);const ja={};l&2&&(ja.$$scope={dirty:l,ctx:s}),m.$set(ja);const Ja={};l&2&&(Ja.$$scope={dirty:l,ctx:s}),g.$set(Ja);const ca={};l&2&&(ca.$$scope={dirty:l,ctx:s}),I.$set(ca);const ra={};l&2&&(ra.$$scope={dirty:l,ctx:s}),f.$set(ra);const oa={};l&2&&(oa.$$scope={dirty:l,ctx:s}),$.$set(oa)},i(s){fn||(j(b.$$.fragment,s),j(k.$$.fragment,s),j(q.$$.fragment,s),j(C.$$.fragment,s),j(Q.$$.fragment,s),j(B.$$.fragment,s),j(m.$$.fragment,s),j(v.$$.fragment,s),j(_.$$.fragment,s),j(X.$$.fragment,s),j(W.$$.fragment,s),j(Y.$$.fragment,s),j(g.$$.fragment,s),j(K.$$.fragment,s),j(ss.$$.fragment,s),j(I.$$.fragment,s),j(ns.$$.fragment,s),j(ps.$$.fragment,s),j(Ms.$$.fragment,s),j(is.$$.fragment,s),j(js.$$.fragment,s),j(cs.$$.fragment,s),j(rs.$$.fragment,s),j(us.$$.fragment,s),j(Ts.$$.fragment,s),j(ws.$$.fragment,s),j(Cs.$$.fragment,s),j(ms.$$.fragment,s),j(Is.$$.fragment,s),j(fs.$$.fragment,s),j(bs.$$.fragment,s),j(ds.$$.fragment,s),j(Qs.$$.fragment,s),j(As.$$.fragment,s),j(Es.$$.fragment,s),j(Vs.$$.fragment,s),j(Zs.$$.fragment,s),j(Gs.$$.fragment,s),j(Ss.$$.fragment,s),j(f.$$.fragment,s),j(Ns.$$.fragment,s),j(Xs.$$.fragment,s),j(Ds.$$.fragment,s),j($.$$.fragment,s),j(Rs.$$.fragment,s),fn=!0)},o(s){J(b.$$.fragment,s),J(k.$$.fragment,s),J(q.$$.fragment,s),J(C.$$.fragment,s),J(Q.$$.fragment,s),J(B.$$.fragment,s),J(m.$$.fragment,s),J(v.$$.fragment,s),J(_.$$.fragment,s),J(X.$$.fragment,s),J(W.$$.fragment,s),J(Y.$$.fragment,s),J(g.$$.fragment,s),J(K.$$.fragment,s),J(ss.$$.fragment,s),J(I.$$.fragment,s),J(ns.$$.fragment,s),J(ps.$$.fragment,s),J(Ms.$$.fragment,s),J(is.$$.fragment,s),J(js.$$.fragment,s),J(cs.$$.fragment,s),J(rs.$$.fragment,s),J(us.$$.fragment,s),J(Ts.$$.fragment,s),J(ws.$$.fragment,s),J(Cs.$$.fragment,s),J(ms.$$.fragment,s),J(Is.$$.fragment,s),J(fs.$$.fragment,s),J(bs.$$.fragment,s),J(ds.$$.fragment,s),J(Qs.$$.fragment,s),J(As.$$.fragment,s),J(Es.$$.fragment,s),J(Vs.$$.fragment,s),J(Zs.$$.fragment,s),J(Gs.$$.fragment,s),J(Ss.$$.fragment,s),J(f.$$.fragment,s),J(Ns.$$.fragment,s),J(Xs.$$.fragment,s),J(Ds.$$.fragment,s),J($.$$.fragment,s),J(Rs.$$.fragment,s),fn=!1},d(s){s&&(n(h),n(U),n(w),n(Fs),n(Ls),n(d),n(Os),n(sl),n(ll),n(nl),n(A),n(al),n(tl),n(E),n(pl),n(z),n(el),n(Ml),n(V),n(yl),n(Z),n(il),n(jl),n(G),n(Jl),n(S),n(cl),n(rl),n(N),n(ol),n(H),n(ul),n(Ul),n(D),n(Tl),n(hl),n(R),n(wl),n(xl),n(P),n(Cl),n(ml),n(gl),n(F),n(Il),n(L),n(fl),n(O),n($l),n(bl),n(ls),n(kl),n(dl),n(ql),n(as),n(Ql),n(ts),n(Al),n(Bl),n(es),n(El),n(zl),n(ys),n(Vl),n(Zl),n(vl),n(Js),n(Gl),n(Sl),n(_l),n(os),n(Nl),n(Hl),n(Us),n(Xl),n(Dl),n(hs),n(Wl),n(Rl),n(xs),n(Yl),n(Pl),n(Kl),n(gs),n(Fl),n(Ll),n(Ol),n($s),n(sn),n(ln),n(ks),n(nn),n(an),n(qs),n(tn),n(pn),n(en),n(Bs),n(Mn),n(yn),n(zs),n(jn),n(Jn),n(cn),n(vs),n(rn),n(on),n(un),n(Un),n(_s),n(Tn),n(hn),n(Hs),n(wn),n(xn),n(Cn),n(mn),n(Ws),n(gn),n(In),n(Ks)),n(e),c(b,s),c(k,s),c(q,s),c(C,s),c(Q,s),c(B,s),c(m,s),c(v,s),c(_,s),c(X,s),c(W,s),c(Y,s),c(g,s),c(K,s),c(ss,s),c(I,s),c(ns,s),c(ps,s),c(Ms,s),c(is,s),c(js,s),c(cs,s),c(rs,s),c(us,s),c(Ts,s),c(ws,s),c(Cs,s),c(ms,s),c(Is,s),c(fs,s),c(bs,s),c(ds,s),c(Qs,s),c(As,s),c(Es,s),c(Vs,s),c(Zs,s),c(Gs,s),c(Ss,s),c(f,s),c(Ns,s),c(Xs,s),c(Ds,s),c($,s),c(Rs,s)}}}const Ba='{"title":"Byte-Pair Encoding tokenization","local":"byte-pair-encoding-tokenization","sections":[{"title":"อัลกอริทึมที่ใช้ในการเทรน","local":"อลกอรทมทใชในการเทรน","sections":[],"depth":2},{"title":"Tokenization algorithm","local":"tokenization-algorithm","sections":[],"depth":2},{"title":"การสร้าง BPE (Implementing BPE)","local":"การสราง-bpe-implementing-bpe","sections":[],"depth":2}],"depth":1}';function Ea(x){return ha(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Na extends wa{constructor(e){super(),xa(this,e,Ea,Aa,Ta,{})}}export{Na as component};

Xet Storage Details

Size:
73.9 kB
·
Xet hash:
14ec8510c31e388d19d885c5a40a4bfaa7591f2b8fb2f8d636bc1ac2d00dcf02

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