import{s as D,n as I,o as J}from"../chunks/scheduler.37c15a92.js";import{S as K,i as Q,g as r,s,r as y,A as V,h as o,f as n,c as l,j as R,u as k,x,k as W,y as X,a,v as S,d as q,t as A,w as N}from"../chunks/index.2bf4358c.js";import{C as Y}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{H as Z,E as tt}from"../chunks/getInferenceSnippets.648f38f6.js";function et(U){let i,b,g,d,m,C,p,P,f,j="在 [第三章] (/course/chapter3) 中，我們研究瞭如何在給定任務上微調模型。 當我們這樣做時，我們需要使用與模型預訓練相同的標記器——但是當我們想從頭開始訓練模型時該怎麼辦？ 不過，使用在來自其他領域或語言的語料庫上預訓練的標記器通常不是最理想的。 例如，在英語語料庫上訓練的標記器在日語文本語料庫上表現不佳，因為兩種語言中空格和標點符號的使用非常不同。",T,u,B='在本章中，您將學習如何在文本語料庫上訓練一個全新的標記器，然後將其用於預訓練語言模型。 這一切都將在 <a href="https://github.com/huggingface/tokenizers" rel="nofollow">🤗 Tokenizers</a> 庫的幫助下完成，該庫在 [🤗 Transformers](<a href="https://github.com" rel="nofollow">https://github.com</a> /huggingface/transformers) 庫之內。 我們將仔細研究這個庫提供的功能，並探討快速標記器與“慢”版本的區別。',w,c,F="我們將涵蓋的主題包括：",L,h,G="<li>如何訓練一個新的標記器，類似於給定檢查點在新的文本語料庫上使用的標記器</li> <li>快速標記器的特殊功能</li> <li>目前 NLP 中使用的三種主要子詞標記化算法之間的差異</li> <li>如何使用🤗 Tokenizers 庫從頭開始構建標記器並在一些數據上對其進行訓練</li>",H,$,O='本章介紹的技術將使您為 <a href="/course/chapter7/6">第 7 章</a> 中的部分做好準備，在那部分中，我們著眼於為 Python 源代碼創建語言模型。 讓我們首先看一下什麼是“訓練”標記器？',M,_,z,v,E;return m=new Z({props:{title:"本章簡介",local:"本章簡介",headingTag:"h1"}}),p=new Y({props:{chapter:6,classNames:"absolute z-10 right-0 top-0"}}),_=new tt({props:{source:"https://github.com/huggingface/course/blob/main/chapters/zh-TW/chapter6/1.mdx"}}),{c(){i=r("meta"),b=s(),g=r("p"),d=s(),y(m.$$.fragment),C=s(),y(p.$$.fragment),P=s(),f=r("p"),f.textContent=j,T=s(),u=r("p"),u.innerHTML=B,w=s(),c=r("p"),c.textContent=F,L=s(),h=r("ul"),h.innerHTML=G,H=s(),$=r("p"),$.innerHTML=O,M=s(),y(_.$$.fragment),z=s(),v=r("p"),this.h()},l(t){const e=V("svelte-u9bgzb",document.head);i=o(e,"META",{name:!0,content:!0}),e.forEach(n),b=l(t),g=o(t,"P",{}),R(g).forEach(n),d=l(t),k(m.$$.fragment,t),C=l(t),k(p.$$.fragment,t),P=l(t),f=o(t,"P",{"data-svelte-h":!0}),x(f)!=="svelte-1g8dvux"&&(f.textContent=j),T=l(t),u=o(t,"P",{"data-svelte-h":!0}),x(u)!=="svelte-1iwds7q"&&(u.innerHTML=B),w=l(t),c=o(t,"P",{"data-svelte-h":!0}),x(c)!=="svelte-zt3sbf"&&(c.textContent=F),L=l(t),h=o(t,"UL",{"data-svelte-h":!0}),x(h)!=="svelte-1eaps4v"&&(h.innerHTML=G),H=l(t),$=o(t,"P",{"data-svelte-h":!0}),x($)!=="svelte-3nhfrl"&&($.innerHTML=O),M=l(t),k(_.$$.fragment,t),z=l(t),v=o(t,"P",{}),R(v).forEach(n),this.h()},h(){W(i,"name","hf:doc:metadata"),W(i,"content",nt)},m(t,e){X(document.head,i),a(t,b,e),a(t,g,e),a(t,d,e),S(m,t,e),a(t,C,e),S(p,t,e),a(t,P,e),a(t,f,e),a(t,T,e),a(t,u,e),a(t,w,e),a(t,c,e),a(t,L,e),a(t,h,e),a(t,H,e),a(t,$,e),a(t,M,e),S(_,t,e),a(t,z,e),a(t,v,e),E=!0},p:I,i(t){E||(q(m.$$.fragment,t),q(p.$$.fragment,t),q(_.$$.fragment,t),E=!0)},o(t){A(m.$$.fragment,t),A(p.$$.fragment,t),A(_.$$.fragment,t),E=!1},d(t){t&&(n(b),n(g),n(d),n(C),n(P),n(f),n(T),n(u),n(w),n(c),n(L),n(h),n(H),n($),n(M),n(z),n(v)),n(i),N(m,t),N(p,t),N(_,t)}}}const nt='{"title":"本章簡介","local":"本章簡介","sections":[],"depth":1}';function at(U){return J(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ot extends K{constructor(i){super(),Q(this,i,at,et,D,{})}}export{ot as component};
