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