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