import{s as K,n as Q,o as V}from"../chunks/scheduler.cc52f4b9.js";import{S as W,i as X,e as s,s as l,c as S,h as Y,a as m,d as n,b as i,f as I,g as j,j as v,k as J,l as Z,m as a,n as q,t as N,o as U,p as A}from"../chunks/index.85964560.js";import{C as ee,H as te,E as ne}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.4cab8d21.js";import{C as ae}from"../chunks/CourseFloatingBanner.d24cbe55.js";function le(B){let r,T,b,d,o,y,f,L,p,w,u,F=`ใน<a href="/course/chapter3">บทที่ 3</a> คุณได้เรียนเกี่ยวกับการ fine-tune โมเดลเพื่อนำไปใช้ในงานที่คุณต้องการ ตอนนั้นเราใช้ตัวตัดคำ(tokenizer)แบบเดียวกับตัวที่มากับโมเดล แต่หากคุณอยากจะเทรนโมเดลตั้งแต่เริ่มต้นเลย คุณควรจะเลือกใช้ตัวตัดคำแบบไหนดี
ในกรณีนี้ถ้าคุณใช้ตัวตัดคำที่เทรนจากคลังข้อมูล(corpus)ที่ไม่ใช่ภาษาเดียวกับโมเดลหรือคลังข้อมูลที่มาจากโดเมนอื่น(แปลว่าเนื้อหาของข้อมูลที่ใช้เทรนตัวตัดคำและใช้เทรนโมเดลมีความแตกต่างกันมาก)ก็จะไม่เหมาะสมนัก
ตัวอย่างเช่น ตัวตัดคำที่เทรนมาสำหรับตัดคำภาษาอังกฤษ เมื่อนำมาใช้เพื่อตัดคำภาษาญี่ปุ่นก็จะได้ผลลัพธ์ที่ไม่ดี เพราะว่าทั้งสองภาษามีการใช้ช่องว่าง(space)และเครื่องหมายวรรคตอน(punctuation)ที่ต่างกันมาก`,C,c,G=`ในบทนี้คุณจะได้เรียนเกี่ยวกับการเทรนตัวตัดคำจากคลังข้อความ(corpus of texts) เพื่อให้ได้ตัวตัดคำที่เหมาะสมกับ language model ที่คุณต้องการจะเทรน
เราจะใช้ library ที่ชื่อว่า <a href="https://github.com/huggingface/tokenizers" rel="nofollow">🤗 Tokenizers</a> ซึ่งมีตัวตัดคำแบบ “เร็ว” ให้ผู้ใช้เลือกได้ ใน <a href="https://github.com/huggingface/transformers" rel="nofollow">🤗 Transformers</a> library
เราจะมาดู features ต่างๆของ library นี้กันและมาเรียนรู้ว่าตัวตัดคำแบบเร็วและแบบช้านั้นต่างกันอย่างไร`,M,$,O="หัวข้อที่เราจะเรียนกันในบทนี้:",P,h,R="<li>การสร้างตัวตัดคำขึ้นมาใหม่ให้คล้ายกับตัวที่ใช้ใน checkpoint โดนใช้ชุดข้อมูลใหม่ในการเทรน</li> <li>feature พิเศษของตัวตัดคำแบบเร็ว</li> <li>ความแตกต่างระหว่างอัลกอริทึม 3 แบบที่ใช้ในการสร้างตัวตัดคำประเภท subword ที่ใช้ใน NLP ทุกวันนี้</li> <li>การสร้างและเทรนตัวตัดคำตั้งแต่เริ่มต้นด้วย 🤗 Tokenizers library</li>",H,g,D=`เทคนิคต่างๆที่คุณจะได้เรียนในบทนี้จะเป็นเตรียมให้คุณพร้อมสำหรับ<a href="/course/chapter7/6">บทที่ 7</a> ซึ่งคุณจะได้เรียนเกี่ยวกับการสร้าง language model ด้วย Python
เรามาเริ่มกันที่ความหมายของการ “เทรน” ตัวตัดคำ`,k,_,z,x,E;return o=new ee({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),f=new te({props:{title:"บทนำ",local:"บทนำ",headingTag:"h1"}}),p=new ae({props:{chapter:6,classNames:"absolute z-10 right-0 top-0"}}),_=new ne({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter6/1.mdx"}}),{c(){r=s("meta"),T=l(),b=s("p"),d=l(),S(o.$$.fragment),y=l(),S(f.$$.fragment),L=l(),S(p.$$.fragment),w=l(),u=s("p"),u.innerHTML=F,C=l(),c=s("p"),c.innerHTML=G,M=l(),$=s("p"),$.textContent=O,P=l(),h=s("ul"),h.innerHTML=R,H=l(),g=s("p"),g.innerHTML=D,k=l(),S(_.$$.fragment),z=l(),x=s("p"),this.h()},l(e){const t=Y("svelte-u9bgzb",document.head);r=m(t,"META",{name:!0,content:!0}),t.forEach(n),T=i(e),b=m(e,"P",{}),I(b).forEach(n),d=i(e),j(o.$$.fragment,e),y=i(e),j(f.$$.fragment,e),L=i(e),j(p.$$.fragment,e),w=i(e),u=m(e,"P",{"data-svelte-h":!0}),v(u)!=="svelte-k1tf0a"&&(u.innerHTML=F),C=i(e),c=m(e,"P",{"data-svelte-h":!0}),v(c)!=="svelte-ezm1gv"&&(c.innerHTML=G),M=i(e),$=m(e,"P",{"data-svelte-h":!0}),v($)!=="svelte-14jylli"&&($.textContent=O),P=i(e),h=m(e,"UL",{"data-svelte-h":!0}),v(h)!=="svelte-vgtu2e"&&(h.innerHTML=R),H=i(e),g=m(e,"P",{"data-svelte-h":!0}),v(g)!=="svelte-7kfnqw"&&(g.innerHTML=D),k=i(e),j(_.$$.fragment,e),z=i(e),x=m(e,"P",{}),I(x).forEach(n),this.h()},h(){J(r,"name","hf:doc:metadata"),J(r,"content",ie)},m(e,t){Z(document.head,r),a(e,T,t),a(e,b,t),a(e,d,t),q(o,e,t),a(e,y,t),q(f,e,t),a(e,L,t),q(p,e,t),a(e,w,t),a(e,u,t),a(e,C,t),a(e,c,t),a(e,M,t),a(e,$,t),a(e,P,t),a(e,h,t),a(e,H,t),a(e,g,t),a(e,k,t),q(_,e,t),a(e,z,t),a(e,x,t),E=!0},p:Q,i(e){E||(N(o.$$.fragment,e),N(f.$$.fragment,e),N(p.$$.fragment,e),N(_.$$.fragment,e),E=!0)},o(e){U(o.$$.fragment,e),U(f.$$.fragment,e),U(p.$$.fragment,e),U(_.$$.fragment,e),E=!1},d(e){e&&(n(T),n(b),n(d),n(y),n(L),n(w),n(u),n(C),n(c),n(M),n($),n(P),n(h),n(H),n(g),n(k),n(z),n(x)),n(r),A(o,e),A(f,e),A(p,e),A(_,e)}}}const ie='{"title":"บทนำ","local":"บทนำ","sections":[],"depth":1}';function re(B){return V(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class pe extends W{constructor(r){super(),X(this,r,re,le,K,{})}}export{pe as component};
