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,r as E,A as W,h as o,f as n,c as l,j as R,u as k,x as v,k as D,y as X,a,v as q,d as N,t as S,w as A}from"../chunks/index.2bf4358c.js";import{C as Y}from"../chunks/CourseFloatingBanner.06521e8b.js";import{H as Z,E as tt}from"../chunks/EditOnGithub.8916dc7c.js";function et(U){let i,C,g,b,m,d,f,P,p,j="在 [第三章] (/course/chapter3) 中，我们研究了如何在给定任务上微调模型。 当我们这样做时，我们需要使用与模型预训练相同的标记器——但是当我们想从头开始训练模型时该怎么办？ 不过，使用在来自其他领域或语言的语料库上预训练的标记器通常不是最理想的。 例如，在英语语料库上训练的标记器在日语文本语料库上表现不佳，因为两种语言中空格和标点符号的使用非常不同。",w,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) 库之内。 我们将仔细研究这个库提供的功能，并探讨快速标记器与“慢”版本的区别。',T,c,F="我们将涵盖的主题包括：",L,h,G="<li>如何训练一个新的标记器，类似于给定检查点在新的文本语料库上使用的标记器</li> <li>快速标记器的特殊功能</li> <li>目前 NLP 中使用的三种主要子词标记化算法之间的差异</li> <li>如何使用🤗 Tokenizers 库从头开始构建标记器并在一些数据上对其进行训练</li>",z,$,O='本章介绍的技术将使您为 <a href="/course/chapter7/6">第 7 章</a> 中的部分做好准备，在那部分中，我们着眼于为 Python 源代码创建语言模型。 让我们首先看一下什么是“训练”标记器？',H,_,M,x,y;return m=new Z({props:{title:"本章简介",local:"本章简介",headingTag:"h1"}}),f=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-CN/chapter6/1.mdx"}}),{c(){i=r("meta"),C=s(),g=r("p"),b=s(),E(m.$$.fragment),d=s(),E(f.$$.fragment),P=s(),p=r("p"),p.textContent=j,w=s(),u=r("p"),u.innerHTML=B,T=s(),c=r("p"),c.textContent=F,L=s(),h=r("ul"),h.innerHTML=G,z=s(),$=r("p"),$.innerHTML=O,H=s(),E(_.$$.fragment),M=s(),x=r("p"),this.h()},l(t){const e=W("svelte-u9bgzb",document.head);i=o(e,"META",{name:!0,content:!0}),e.forEach(n),C=l(t),g=o(t,"P",{}),R(g).forEach(n),b=l(t),k(m.$$.fragment,t),d=l(t),k(f.$$.fragment,t),P=l(t),p=o(t,"P",{"data-svelte-h":!0}),v(p)!=="svelte-10dzuqf"&&(p.textContent=j),w=l(t),u=o(t,"P",{"data-svelte-h":!0}),v(u)!=="svelte-w57z0c"&&(u.innerHTML=B),T=l(t),c=o(t,"P",{"data-svelte-h":!0}),v(c)!=="svelte-1e8c8fi"&&(c.textContent=F),L=l(t),h=o(t,"UL",{"data-svelte-h":!0}),v(h)!=="svelte-1ktxruf"&&(h.innerHTML=G),z=l(t),$=o(t,"P",{"data-svelte-h":!0}),v($)!=="svelte-qyer7c"&&($.innerHTML=O),H=l(t),k(_.$$.fragment,t),M=l(t),x=o(t,"P",{}),R(x).forEach(n),this.h()},h(){D(i,"name","hf:doc:metadata"),D(i,"content",nt)},m(t,e){X(document.head,i),a(t,C,e),a(t,g,e),a(t,b,e),q(m,t,e),a(t,d,e),q(f,t,e),a(t,P,e),a(t,p,e),a(t,w,e),a(t,u,e),a(t,T,e),a(t,c,e),a(t,L,e),a(t,h,e),a(t,z,e),a(t,$,e),a(t,H,e),q(_,t,e),a(t,M,e),a(t,x,e),y=!0},p:J,i(t){y||(N(m.$$.fragment,t),N(f.$$.fragment,t),N(_.$$.fragment,t),y=!0)},o(t){S(m.$$.fragment,t),S(f.$$.fragment,t),S(_.$$.fragment,t),y=!1},d(t){t&&(n(C),n(g),n(b),n(d),n(P),n(p),n(w),n(u),n(T),n(c),n(L),n(h),n(z),n($),n(H),n(M),n(x)),n(i),A(m,t),A(f,t),A(_,t)}}}const nt='{"title":"本章简介","local":"本章简介","sections":[],"depth":1}';function at(U){return K(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ot extends Q{constructor(i){super(),V(this,i,at,et,I,{})}}export{ot as component};
