import{s as K,n as Q,o as V}from"../chunks/scheduler.cc52f4b9.js";import{S as W,i as X,e as o,s as r,c as E,h as Y,a as u,d as n,b as i,f as R,g as j,j as _,k as J,l as Z,m as s,n as S,t as D,o as N,p as I}from"../chunks/index.9480bb2b.js";import{C as ee,H as te,E as ne}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.04d617be.js";import{C as se}from"../chunks/CourseFloatingBanner.cdc38ef1.js";function re(U){let a,b,v,q,l,z,m,k,p,L,c,A='Dans le <a href="/course/fr/chapter3">chapitre 3</a>, nous avons vu comment <em>finetuner</em> un modèle sur une tâche donnée. Pour ce faire, nous utilisons le même <em>tokenizer</em> que celui avec lequel le modèle a été pré-entraîné. Mais que faisons-nous lorsque nous voulons entraîner un modèle à partir de zéro ? Dans ces cas, l’utilisation d’un <em>tokenizer</em> qui a été pré-entraîné sur un corpus d’un autre domaine ou d’une autre langue est généralement sous-optimale. Par exemple, un <em>tokenizer</em> entraîné sur un corpus anglais sera peu performant sur un corpus de textes japonais car l’utilisation des espaces et de la ponctuation est très différente entre les deux langues.',T,f,B='Dans ce chapitre, vous apprendrez à entraîner un tout nouveau <em>tokenizer</em> sur un corpus de textes afin qu’il puisse ensuite être utilisé pour pré-entraîner un modèle de langue. Tout cela se fera à l’aide de la bibliothèque <a href="https://github.com/huggingface/tokenizers" rel="nofollow">🤗 <em>Tokenizers</em></a>, qui fournit les <em>tokenizers</em> « rapides » de la bibliothèque <a href="https://github.com/huggingface/transformers" rel="nofollow">🤗 <em>Transformers</em></a>. Nous examinerons de près les fonctionnalités offertes par cette bibliothèque et nous étudierons comment les <em>tokenizers</em> rapides diffèrent des versions « lentes ».',P,d,F="Les sujets que nous couvrirons comprennent :",C,h,G="<li>comment entraîner sur un nouveau corpus de textes, un nouveau <em>tokenizer</em> similaire à celui utilisé par un <em>checkpoint</em> donné,</li> <li>les caractéristiques spéciales des <em>tokenizers</em> rapides,</li> <li>les différences entre les trois principaux algorithmes de tokénisation utilisés aujourd’hui en NLP,</li> <li>comment construire un <em>tokenizer</em> à partir de zéro avec la bibliothèque 🤗 <em>Tokenizers</em> et l’entraîner sur des données.</li>",M,$,O='Les techniques présentées dans ce chapitre vous prépareront à la section du <a href="/course/fr/chapter7/6">chapitre 7</a> où nous verrons comment créer un modèle de langue pour le langage Python. Commençons par examiner ce que signifie « entraîner » un <em>tokenizer</em>.',w,g,H,x,y;return l=new ee({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),m=new te({props:{title:"Introduction",local:"introduction",headingTag:"h1"}}),p=new se({props:{chapter:6,classNames:"absolute z-10 right-0 top-0"}}),g=new ne({props:{source:"https://github.com/huggingface/course/blob/main/chapters/fr/chapter6/1.mdx"}}),{c(){a=o("meta"),b=r(),v=o("p"),q=r(),E(l.$$.fragment),z=r(),E(m.$$.fragment),k=r(),E(p.$$.fragment),L=r(),c=o("p"),c.innerHTML=A,T=r(),f=o("p"),f.innerHTML=B,P=r(),d=o("p"),d.textContent=F,C=r(),h=o("ul"),h.innerHTML=G,M=r(),$=o("p"),$.innerHTML=O,w=r(),E(g.$$.fragment),H=r(),x=o("p"),this.h()},l(e){const t=Y("svelte-u9bgzb",document.head);a=u(t,"META",{name:!0,content:!0}),t.forEach(n),b=i(e),v=u(e,"P",{}),R(v).forEach(n),q=i(e),j(l.$$.fragment,e),z=i(e),j(m.$$.fragment,e),k=i(e),j(p.$$.fragment,e),L=i(e),c=u(e,"P",{"data-svelte-h":!0}),_(c)!=="svelte-t1ff6g"&&(c.innerHTML=A),T=i(e),f=u(e,"P",{"data-svelte-h":!0}),_(f)!=="svelte-1oo9qum"&&(f.innerHTML=B),P=i(e),d=u(e,"P",{"data-svelte-h":!0}),_(d)!=="svelte-1uiouof"&&(d.textContent=F),C=i(e),h=u(e,"UL",{"data-svelte-h":!0}),_(h)!=="svelte-118c9qj"&&(h.innerHTML=G),M=i(e),$=u(e,"P",{"data-svelte-h":!0}),_($)!=="svelte-1l3x3qe"&&($.innerHTML=O),w=i(e),j(g.$$.fragment,e),H=i(e),x=u(e,"P",{}),R(x).forEach(n),this.h()},h(){J(a,"name","hf:doc:metadata"),J(a,"content",ie)},m(e,t){Z(document.head,a),s(e,b,t),s(e,v,t),s(e,q,t),S(l,e,t),s(e,z,t),S(m,e,t),s(e,k,t),S(p,e,t),s(e,L,t),s(e,c,t),s(e,T,t),s(e,f,t),s(e,P,t),s(e,d,t),s(e,C,t),s(e,h,t),s(e,M,t),s(e,$,t),s(e,w,t),S(g,e,t),s(e,H,t),s(e,x,t),y=!0},p:Q,i(e){y||(D(l.$$.fragment,e),D(m.$$.fragment,e),D(p.$$.fragment,e),D(g.$$.fragment,e),y=!0)},o(e){N(l.$$.fragment,e),N(m.$$.fragment,e),N(p.$$.fragment,e),N(g.$$.fragment,e),y=!1},d(e){e&&(n(b),n(v),n(q),n(z),n(k),n(L),n(c),n(T),n(f),n(P),n(d),n(C),n(h),n(M),n($),n(w),n(H),n(x)),n(a),I(l,e),I(m,e),I(p,e),I(g,e)}}}const ie='{"title":"Introduction","local":"introduction","sections":[],"depth":1}';function ae(U){return V(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class pe extends W{constructor(a){super(),X(this,a,ae,re,K,{})}}export{pe as component};
