import{s as I,n as J,o as K}from"../chunks/scheduler.37c15a92.js";import{S as Q,i as V,g as l,s as i,r as E,A as W,h as o,f as n,c as r,j as R,u as y,x as k,k as D,y as X,a,v as q,d as N,t as S,w as j}from"../chunks/index.2bf4358c.js";import{C as Y}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{H as Z,E as ee}from"../chunks/index.b8688d36.js";function te(A){let s,v,z,T,m,x,f,P,p,U='在 <a href="/course/chapter3">第三章</a> 中，我们研究了如何在特定任务上微调模型。当我们需要微调模型时，我们需要使用与模型预训练相同的 tokenizer —— 但是当我们想从头开始训练模型时应该选用哪个 tokenizer ？使用在来自其他领域或语言的语料库上预训练的 tokenizer 通常不是最理想的。例如，在英语语料库上训练的 tokenizer 在日语文本语料库上效果会大打折扣，因为两种语言在空格和标点的使用上有着显著的差异。',b,u,B='在本章中，你将学习如何在一份文本语料库上训练一个全新的 tokenizer，然后将使用它来预训练语言模型。这一切都将在 <a href="https://github.com/huggingface/tokenizers" rel="nofollow">🤗 Tokenizers</a> 库的帮助下完成，该库提供了 <a href="https://github.com/huggingface/transformers" rel="nofollow">🤗 Transformers</a> 库中的“快速” tokenizer 。 我们将深入探讨这个库所提供的功能，并研究“快速” tokenizer 与“慢速”版本的区别。',d,c,F="本章将涵盖以下主题：",w,h,G="<li>如何在新的文本语料库上训练一个类似于给定 checkpoint 所使用的新 tokenizer</li> <li>快速 tokenizer 的特殊功能</li> <li>目前 NLP 中使用的三种主要子词 tokenization 算法之间的差异</li> <li>如何使用🤗 Tokenizers 库从头开始构建 tokenizer 并在一些数据上进行训练</li>",C,$,O='本章介绍的技术将使你为 <a href="/course/chapter7/6">第七章</a> 中的部分做好准备，在那部分中，我们将尝试为 Python 源代码创建语言模型。让我们首先看一下什么是“训练” tokenizer',L,_,H,g,M;return m=new Z({props:{title:"本章简介",local:"本章简介",headingTag:"h1"}}),f=new Y({props:{chapter:6,classNames:"absolute z-10 right-0 top-0"}}),_=new ee({props:{source:"https://github.com/huggingface/course/blob/main/chapters/zh-CN/chapter6/1.mdx"}}),{c(){s=l("meta"),v=i(),z=l("p"),T=i(),E(m.$$.fragment),x=i(),E(f.$$.fragment),P=i(),p=l("p"),p.innerHTML=U,b=i(),u=l("p"),u.innerHTML=B,d=i(),c=l("p"),c.textContent=F,w=i(),h=l("ul"),h.innerHTML=G,C=i(),$=l("p"),$.innerHTML=O,L=i(),E(_.$$.fragment),H=i(),g=l("p"),this.h()},l(e){const t=W("svelte-u9bgzb",document.head);s=o(t,"META",{name:!0,content:!0}),t.forEach(n),v=r(e),z=o(e,"P",{}),R(z).forEach(n),T=r(e),y(m.$$.fragment,e),x=r(e),y(f.$$.fragment,e),P=r(e),p=o(e,"P",{"data-svelte-h":!0}),k(p)!=="svelte-1vwg0it"&&(p.innerHTML=U),b=r(e),u=o(e,"P",{"data-svelte-h":!0}),k(u)!=="svelte-jqcgos"&&(u.innerHTML=B),d=r(e),c=o(e,"P",{"data-svelte-h":!0}),k(c)!=="svelte-szqer8"&&(c.textContent=F),w=r(e),h=o(e,"UL",{"data-svelte-h":!0}),k(h)!=="svelte-1cs0r0f"&&(h.innerHTML=G),C=r(e),$=o(e,"P",{"data-svelte-h":!0}),k($)!=="svelte-10n18m7"&&($.innerHTML=O),L=r(e),y(_.$$.fragment,e),H=r(e),g=o(e,"P",{}),R(g).forEach(n),this.h()},h(){D(s,"name","hf:doc:metadata"),D(s,"content",ne)},m(e,t){X(document.head,s),a(e,v,t),a(e,z,t),a(e,T,t),q(m,e,t),a(e,x,t),q(f,e,t),a(e,P,t),a(e,p,t),a(e,b,t),a(e,u,t),a(e,d,t),a(e,c,t),a(e,w,t),a(e,h,t),a(e,C,t),a(e,$,t),a(e,L,t),q(_,e,t),a(e,H,t),a(e,g,t),M=!0},p:J,i(e){M||(N(m.$$.fragment,e),N(f.$$.fragment,e),N(_.$$.fragment,e),M=!0)},o(e){S(m.$$.fragment,e),S(f.$$.fragment,e),S(_.$$.fragment,e),M=!1},d(e){e&&(n(v),n(z),n(T),n(x),n(P),n(p),n(b),n(u),n(d),n(c),n(w),n(h),n(C),n($),n(L),n(H),n(g)),n(s),j(m,e),j(f,e),j(_,e)}}}const ne='{"title":"本章简介","local":"本章简介","sections":[],"depth":1}';function ae(A){return K(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class oe extends Q{constructor(s){super(),V(this,s,ae,te,I,{})}}export{oe as component};
