import{S as S3,i as L3,s as H3,e as o,k as d,w as f,t as n,M as R3,c as r,d as s,m as p,a as l,x as v,h as a,b as m,f as I3,F as t,g as u,y as h,q as _,o as g,B as $,v as U3}from"../../chunks/vendor-1e8b365d.js";import{T as Cs}from"../../chunks/Tip-62b14c6e.js";import{Y as $b}from"../../chunks/Youtube-c2a8cc39.js";import{I as ma}from"../../chunks/IconCopyLink-483c28ba.js";import{C as E}from"../../chunks/CodeBlock-e5764662.js";import{D as V3}from"../../chunks/DocNotebookDropdown-37d928d3.js";function F3(R){let c,C,b,w,y,x,j,z;return{c(){c=o("p"),C=n("\u270F\uFE0F "),b=o("strong"),w=n("Essayez !"),y=n(" Utilisez la fonction "),x=o("code"),j=n("Dataset.unique()"),z=n(" pour trouver le nombre de m\xE9dicaments et de conditions uniques dans les \xE9chantillons d\u2019entra\xEEnement et de test.")},l(q){c=r(q,"P",{});var D=l(c);C=a(D,"\u270F\uFE0F "),b=r(D,"STRONG",{});var P=l(b);w=a(P,"Essayez !"),P.forEach(s),y=a(D," Utilisez la fonction "),x=r(D,"CODE",{});var T=l(x);j=a(T,"Dataset.unique()"),T.forEach(s),z=a(D," pour trouver le nombre de m\xE9dicaments et de conditions uniques dans les \xE9chantillons d\u2019entra\xEEnement et de test."),D.forEach(s)},m(q,D){u(q,c,D),t(c,C),t(c,b),t(b,w),t(c,y),t(c,x),t(x,j),t(c,z)},d(q){q&&s(c)}}}function J3(R){let c,C,b,w,y,x,j,z;return{c(){c=o("p"),C=n("\u{1F64B} Une autre fa\xE7on d\u2019ajouter de nouvelles colonnes \xE0 un jeu de donn\xE9es consiste \xE0 utiliser la fonction "),b=o("code"),w=n("Dataset.add_column()"),y=n(". Cela vous permet de donner la colonne sous forme de liste Python ou de tableau NumPy et peut \xEAtre utile dans les situations o\xF9 "),x=o("code"),j=n("Dataset.map()"),z=n(" n\u2019est pas bien adapt\xE9 \xE0 votre analyse.")},l(q){c=r(q,"P",{});var D=l(c);C=a(D,"\u{1F64B} Une autre fa\xE7on d\u2019ajouter de nouvelles colonnes \xE0 un jeu de donn\xE9es consiste \xE0 utiliser la fonction "),b=r(D,"CODE",{});var P=l(b);w=a(P,"Dataset.add_column()"),P.forEach(s),y=a(D,". Cela vous permet de donner la colonne sous forme de liste Python ou de tableau NumPy et peut \xEAtre utile dans les situations o\xF9 "),x=r(D,"CODE",{});var T=l(x);j=a(T,"Dataset.map()"),T.forEach(s),z=a(D," n\u2019est pas bien adapt\xE9 \xE0 votre analyse."),D.forEach(s)},m(q,D){u(q,c,D),t(c,C),t(c,b),t(b,w),t(c,y),t(c,x),t(x,j),t(c,z)},d(q){q&&s(c)}}}function B3(R){let c,C,b,w,y,x,j,z,q,D,P;return{c(){c=o("p"),C=n("\u270F\uFE0F "),b=o("strong"),w=n("Essayez !"),y=n(" Utilisez la fonction "),x=o("code"),j=n("Dataset.sort()"),z=n(" pour inspecter les avis avec le plus grand nombre de mots. Consultez la "),q=o("a"),D=n("documentation"),P=n(" pour voir quel argument vous devez utiliser pour trier les avis par longueur dans l\u2019ordre d\xE9croissant."),this.h()},l(T){c=r(T,"P",{});var k=l(c);C=a(k,"\u270F\uFE0F "),b=r(k,"STRONG",{});var W=l(b);w=a(W,"Essayez !"),W.forEach(s),y=a(k," Utilisez la fonction "),x=r(k,"CODE",{});var A=l(x);j=a(A,"Dataset.sort()"),A.forEach(s),z=a(k," pour inspecter les avis avec le plus grand nombre de mots. Consultez la "),q=r(k,"A",{href:!0,rel:!0});var X=l(q);D=a(X,"documentation"),X.forEach(s),P=a(k," pour voir quel argument vous devez utiliser pour trier les avis par longueur dans l\u2019ordre d\xE9croissant."),k.forEach(s),this.h()},h(){m(q,"href","https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.sort"),m(q,"rel","nofollow")},m(T,k){u(T,c,k),t(c,C),t(c,b),t(b,w),t(c,y),t(c,x),t(x,j),t(c,z),t(c,q),t(q,D),t(c,P)},d(T){T&&s(c)}}}function G3(R){let c,C,b,w,y,x,j,z,q,D,P,T,k,W,A,X,Pe;return{c(){c=o("p"),C=n("\u270F\uFE0F "),b=o("strong"),w=n("Essayez !"),y=n(" Ex\xE9cutez la m\xEAme instruction avec et sans "),x=o("code"),j=n("batched=True"),z=n(", puis essayez-le avec un "),q=o("em"),D=n("tokenizer"),P=n(" lent (ajoutez "),T=o("code"),k=n("use_fast=False"),W=n(" dans la m\xE9thode "),A=o("code"),X=n("AutoTokenizer.from_pretrained()"),Pe=n(") afin que vous puissiez voir quels temps vous obtenez sur votre mat\xE9riel.")},l(K){c=r(K,"P",{});var O=l(c);C=a(O,"\u270F\uFE0F "),b=r(O,"STRONG",{});var Oe=l(b);w=a(Oe,"Essayez !"),Oe.forEach(s),y=a(O," Ex\xE9cutez la m\xEAme instruction avec et sans "),x=r(O,"CODE",{});var U=l(x);j=a(U,"batched=True"),U.forEach(s),z=a(O,", puis essayez-le avec un "),q=r(O,"EM",{});var se=l(q);D=a(se,"tokenizer"),se.forEach(s),P=a(O," lent (ajoutez "),T=r(O,"CODE",{});var _e=l(T);k=a(_e,"use_fast=False"),_e.forEach(s),W=a(O," dans la m\xE9thode "),A=r(O,"CODE",{});var Q=l(A);X=a(Q,"AutoTokenizer.from_pretrained()"),Q.forEach(s),Pe=a(O,") afin que vous puissiez voir quels temps vous obtenez sur votre mat\xE9riel."),O.forEach(s)},m(K,O){u(K,c,O),t(c,C),t(c,b),t(b,w),t(c,y),t(c,x),t(x,j),t(c,z),t(c,q),t(q,D),t(c,P),t(c,T),t(T,k),t(c,W),t(c,A),t(A,X),t(c,Pe)},d(K){K&&s(c)}}}function Y3(R){let c,C,b,w,y;return{c(){c=o("p"),C=n("Utiliser "),b=o("code"),w=n("num_proc"),y=n(" pour acc\xE9l\xE9rer votre traitement est g\xE9n\xE9ralement une bonne id\xE9e tant que la fonction que vous utilisez n\u2019effectue pas d\xE9j\xE0 une sorte de multitraitement.")},l(x){c=r(x,"P",{});var j=l(c);C=a(j,"Utiliser "),b=r(j,"CODE",{});var z=l(b);w=a(z,"num_proc"),z.forEach(s),y=a(j," pour acc\xE9l\xE9rer votre traitement est g\xE9n\xE9ralement une bonne id\xE9e tant que la fonction que vous utilisez n\u2019effectue pas d\xE9j\xE0 une sorte de multitraitement."),j.forEach(s)},m(x,j){u(x,c,j),t(c,C),t(c,b),t(b,w),t(c,y)},d(x){x&&s(c)}}}function W3(R){let c,C,b,w,y,x,j,z,q,D,P;return{c(){c=o("p"),C=n("\u{1F4A1} En machine learning, un "),b=o("em"),w=n("exemple"),y=n(" est g\xE9n\xE9ralement d\xE9fini comme l\u2019ensemble de "),x=o("em"),j=n("features"),z=n(" que nous donnons au mod\xE8le. Dans certains contextes, ces caract\xE9ristiques seront l\u2019ensemble des colonnes d\u2019un "),q=o("code"),D=n("Dataset"),P=n(", mais dans d\u2019autres (comme ici et pour la r\xE9ponse aux questions), plusieurs caract\xE9ristiques peuvent \xEAtre extraites d\u2019un seul exemple et appartenir \xE0 une seule colonne.")},l(T){c=r(T,"P",{});var k=l(c);C=a(k,"\u{1F4A1} En machine learning, un "),b=r(k,"EM",{});var W=l(b);w=a(W,"exemple"),W.forEach(s),y=a(k," est g\xE9n\xE9ralement d\xE9fini comme l\u2019ensemble de "),x=r(k,"EM",{});var A=l(x);j=a(A,"features"),A.forEach(s),z=a(k," que nous donnons au mod\xE8le. Dans certains contextes, ces caract\xE9ristiques seront l\u2019ensemble des colonnes d\u2019un "),q=r(k,"CODE",{});var X=l(q);D=a(X,"Dataset"),X.forEach(s),P=a(k,", mais dans d\u2019autres (comme ici et pour la r\xE9ponse aux questions), plusieurs caract\xE9ristiques peuvent \xEAtre extraites d\u2019un seul exemple et appartenir \xE0 une seule colonne."),k.forEach(s)},m(T,k){u(T,c,k),t(c,C),t(c,b),t(b,w),t(c,y),t(c,x),t(x,j),t(c,z),t(c,q),t(q,D),t(c,P)},d(T){T&&s(c)}}}function X3(R){let c,C,b,w,y,x,j,z,q,D,P,T,k,W,A,X,Pe,K,O,Oe,U,se,_e,Q,zs,dt;return{c(){c=o("p"),C=n("\u{1F6A8} Sous le capot, "),b=o("code"),w=n("Dataset.set_format()"),y=n(" change le format de retour pour la m\xE9thode "),x=o("code"),j=n("__getitem__()"),z=n(". Cela signifie que lorsque nous voulons cr\xE9er un nouvel objet comme "),q=o("code"),D=n("train_df"),P=n(" \xE0 partir d\u2019un "),T=o("code"),k=n("Dataset"),W=n(" au format "),A=o("code"),X=n('"pandas"'),Pe=n(", nous devons d\xE9couper tout le jeu de donn\xE9es pour obtenir un "),K=o("code"),O=n("pandas.DataFrame"),Oe=n(". Vous pouvez v\xE9rifier par vous-m\xEAme que le type de "),U=o("code"),se=n('drug_dataset["train"]'),_e=n(" est "),Q=o("code"),zs=n("Dataset"),dt=n(", quel que soit le format de sortie.")},l(pt){c=r(pt,"P",{});var N=l(c);C=a(N,"\u{1F6A8} Sous le capot, "),b=r(N,"CODE",{});var H=l(b);w=a(H,"Dataset.set_format()"),H.forEach(s),y=a(N," change le format de retour pour la m\xE9thode "),x=r(N,"CODE",{});var fa=l(x);j=a(fa,"__getitem__()"),fa.forEach(s),z=a(N,". Cela signifie que lorsque nous voulons cr\xE9er un nouvel objet comme "),q=r(N,"CODE",{});var At=l(q);D=a(At,"train_df"),At.forEach(s),P=a(N," \xE0 partir d\u2019un "),T=r(N,"CODE",{});var va=l(T);k=a(va,"Dataset"),va.forEach(s),W=a(N," au format "),A=r(N,"CODE",{});var ha=l(A);X=a(ha,'"pandas"'),ha.forEach(s),Pe=a(N,", nous devons d\xE9couper tout le jeu de donn\xE9es pour obtenir un "),K=r(N,"CODE",{});var Mt=l(K);O=a(Mt,"pandas.DataFrame"),Mt.forEach(s),Oe=a(N,". Vous pouvez v\xE9rifier par vous-m\xEAme que le type de "),U=r(N,"CODE",{});var _a=l(U);se=a(_a,'drug_dataset["train"]'),_a.forEach(s),_e=a(N," est "),Q=r(N,"CODE",{});var ga=l(Q);zs=a(ga,"Dataset"),ga.forEach(s),dt=a(N,", quel que soit le format de sortie."),N.forEach(s)},m(pt,N){u(pt,c,N),t(c,C),t(c,b),t(b,w),t(c,y),t(c,x),t(x,j),t(c,z),t(c,q),t(q,D),t(c,P),t(c,T),t(T,k),t(c,W),t(c,A),t(A,X),t(c,Pe),t(c,K),t(K,O),t(c,Oe),t(c,U),t(U,se),t(c,_e),t(c,Q),t(Q,zs),t(c,dt)},d(pt){pt&&s(c)}}}function K3(R){let c,C,b,w,y;return{c(){c=o("p"),C=n("\u270F\uFE0F "),b=o("strong"),w=n("Essayez !"),y=n(" Calculez la note moyenne par m\xE9dicament et stockez le r\xE9sultat dans un nouveau jeu de donn\xE9es.")},l(x){c=r(x,"P",{});var j=l(c);C=a(j,"\u270F\uFE0F "),b=r(j,"STRONG",{});var z=l(b);w=a(z,"Essayez !"),z.forEach(s),y=a(j," Calculez la note moyenne par m\xE9dicament et stockez le r\xE9sultat dans un nouveau jeu de donn\xE9es."),j.forEach(s)},m(x,j){u(x,c,j),t(c,C),t(c,b),t(b,w),t(c,y)},d(x){x&&s(c)}}}function Q3(R){let c,C,b,w,y,x,j,z,q,D,P,T,k,W,A,X,Pe,K,O,Oe,U,se,_e,Q,zs,dt,pt,N,H,fa,At,va,ha,Mt,_a,ga,Yo,Mm,Im,Wo,Sm,Lm,$a,Hm,Rm,ld,Me,Um,Ts,Xo,Vm,Fm,Ps,Ko,Jm,Bm,id,Ie,Gm,Qo,Ym,Wm,Zo,Xm,Km,ud,Os,dd,ge,Qm,er,Zm,ef,tr,tf,sf,sr,nf,af,pd,Ns,cd,$e,of,nr,rf,lf,ar,uf,df,or,pf,cf,md,As,fd,Ms,vd,Ee,mf,rr,ff,vf,lr,hf,_f,ir,gf,$f,hd,Se,Is,Ef,ur,bf,xf,jf,Ss,qf,dr,wf,Df,kf,ct,yf,pr,Cf,zf,cr,Tf,Pf,_d,be,Of,mr,Nf,Af,fr,Mf,If,vr,Sf,Lf,gd,Ls,$d,Le,Hf,hr,Rf,Uf,_r,Vf,Ff,Ed,Hs,bd,Rs,xd,It,jd,ae,Jf,gr,Bf,Gf,$r,Yf,Wf,Ea,Xf,Kf,Er,Qf,Zf,qd,Us,wd,Vs,Dd,oe,ev,br,tv,sv,xr,nv,av,jr,ov,rv,qr,lv,iv,kd,Fs,yd,He,uv,wr,dv,pv,Dr,cv,mv,Cd,Js,zd,re,fv,kr,vv,hv,Bs,_v,gv,yr,$v,Ev,Cr,bv,xv,Td,Gs,Pd,ba,jv,Od,Ys,Nd,Ws,Ad,xa,qv,Md,Xs,Id,Ks,Sd,xe,wv,Qs,Dv,kv,zr,yv,Cv,Tr,zv,Tv,Ld,Zs,Hd,Re,Pv,Pr,Ov,Nv,Or,Av,Mv,Rd,en,Ud,tn,Vd,ja,Iv,Fd,mt,St,Nr,sn,Sv,Ar,Lv,Jd,qa,Hv,Bd,wa,Rv,Gd,nn,Yd,Z,Uv,Mr,Vv,Fv,Ir,Jv,Bv,Sr,Gv,Yv,Lr,Wv,Xv,Hr,Kv,Qv,Wd,an,Xd,on,Kd,Ue,Zv,Rr,eh,th,Ur,sh,nh,Qd,rn,Zd,ln,ep,Da,ah,tp,Lt,sp,Ve,oh,Vr,rh,lh,Fr,ih,uh,np,un,ap,dn,op,ka,dh,rp,Ht,lp,Rt,ph,Jr,ch,mh,ip,pn,up,cn,dp,Ut,fh,Br,vh,hh,pp,mn,cp,Vt,_h,Gr,gh,$h,mp,ft,Ft,Yr,fn,Eh,ya,bh,Wr,xh,fp,le,jh,Xr,qh,wh,Kr,Dh,kh,Qr,yh,Ch,Zr,zh,Th,vp,ie,Ph,el,Oh,Nh,tl,Ah,Mh,sl,Ih,Sh,nl,Lh,Hh,hp,vn,_p,je,Rh,al,Uh,Vh,ol,Fh,Jh,rl,Bh,Gh,gp,ee,Yh,ll,Wh,Xh,il,Kh,Qh,ul,Zh,e_,Ca,t_,s_,dl,n_,a_,$p,hn,Ep,te,o_,za,r_,l_,pl,i_,u_,cl,d_,p_,ml,c_,m_,fl,f_,v_,bp,_n,xp,Jt,h_,vl,__,g_,jp,Bt,qp,Gt,$_,hl,E_,b_,wp,Yt,_l,vt,Ta,x_,j_,gn,gl,q_,w_,D_,$n,$l,k_,y_,C_,En,ht,Pa,El,z_,T_,Oa,P_,O_,Na,N_,A_,_t,Aa,bl,M_,I_,Ma,S_,L_,Ia,H_,Dp,ue,R_,xl,U_,V_,jl,F_,J_,ql,B_,G_,wl,Y_,W_,kp,Fe,X_,Dl,K_,Q_,kl,Z_,e2,yp,ne,yl,t2,s2,Cl,n2,a2,zl,o2,r2,Tl,l2,i2,Pl,u2,d2,Cp,bn,zp,Sa,p2,Tp,Wt,Ol,gt,La,c2,m2,xn,Nl,f2,v2,h2,jn,Al,_2,g2,$2,Ne,$t,Ha,Ml,E2,b2,Ra,x2,j2,Ua,q2,w2,Et,Va,Il,D2,k2,Fa,y2,C2,Ja,z2,T2,bt,Xt,Sl,P2,O2,Ll,N2,A2,Ba,M2,I2,Ga,S2,L2,xt,Kt,Hl,H2,R2,Rl,U2,V2,Ya,F2,J2,Wa,B2,Pp,V,G2,Ul,Y2,W2,Vl,X2,K2,Fl,Q2,Z2,Jl,e1,t1,Bl,s1,n1,Gl,a1,o1,Op,Qt,Np,qe,r1,Yl,l1,i1,Wl,u1,d1,Xa,p1,c1,Ap,Zt,Mp,we,m1,Xl,f1,v1,Kl,h1,_1,Ql,g1,$1,Ip,qn,Sp,es,E1,Zl,b1,x1,Lp,wn,Hp,Dn,Rp,ts,j1,ei,q1,w1,Up,kn,Vp,yn,Fp,Je,D1,Cn,k1,y1,ti,C1,z1,Jp,de,T1,si,P1,O1,ni,N1,A1,ai,M1,I1,oi,S1,L1,Bp,zn,Gp,Ka,H1,Yp,Tn,Wp,Pn,Xp,De,R1,ri,U1,V1,li,F1,J1,ii,B1,G1,Kp,On,Qp,ss,Y1,ui,W1,X1,Zp,Nn,ec,An,tc,Qa,K1,sc,pe,Q1,di,Z1,eg,pi,tg,sg,ci,ng,ag,mi,og,rg,nc,jt,ns,fi,Mn,lg,qt,ig,vi,ug,dg,hi,pg,cg,ac,In,oc,ce,mg,_i,fg,vg,gi,hg,_g,$i,gg,$g,Ei,Eg,bg,rc,Sn,lc,as,xg,bi,jg,qg,ic,Ln,uc,Be,xi,M,dc,wg,ji,Dg,kg,qi,yg,Cg,wi,zg,Tg,Di,Pg,Og,ki,Ng,Ag,yi,Mg,Ig,Ci,Sg,Lg,zi,Hg,Rg,wt,I,Ti,Ug,Vg,Pi,Fg,Jg,Oi,Bg,Gg,Ni,Yg,Wg,Ai,Xg,Kg,Mi,Qg,Zg,Ii,e$,t$,Si,s$,n$,Li,a$,o$,S,Hi,r$,l$,Ri,i$,u$,Ui,d$,p$,Vi,c$,m$,Fi,f$,v$,Ji,h$,_$,Bi,g$,$$,Gi,E$,b$,Yi,x$,j$,L,Wi,q$,w$,Xi,D$,k$,Ki,y$,C$,Qi,z$,T$,Zi,P$,O$,eu,N$,A$,tu,M$,I$,su,S$,L$,nu,H$,pc,Ge,R$,au,U$,V$,ou,F$,J$,cc,Hn,mc,os,fc,rs,B$,ru,G$,Y$,vc,Rn,hc,Ye,lu,We,_c,W$,iu,X$,K$,uu,Q$,Z$,he,Dt,du,eE,tE,pu,sE,nE,cu,aE,oE,kt,mu,rE,lE,fu,iE,uE,vu,dE,pE,yt,hu,cE,mE,_u,fE,vE,gu,hE,_E,Ct,$u,gE,$E,Eu,EE,bE,bu,xE,jE,zt,xu,qE,wE,ju,DE,kE,qu,yE,gc,Xe,CE,wu,zE,TE,Du,PE,OE,$c,Un,Ec,Vn,bc,ls,xc,me,NE,ku,AE,ME,yu,IE,SE,Cu,LE,HE,zu,RE,UE,jc,Fn,qc,Tt,is,Tu,Jn,VE,Pu,FE,wc,Za,JE,Dc,F,BE,Ou,GE,YE,Nu,WE,XE,Au,KE,QE,Mu,ZE,e7,Iu,t7,s7,Su,n7,a7,kc,Bn,yc,Gn,Cc,Ke,o7,eo,r7,l7,Lu,i7,u7,zc,Pt,us,Hu,Yn,d7,Ru,p7,Tc,Wn,Pc,Qe,c7,Uu,m7,f7,Vu,v7,h7,Oc,ds,Fu,Xn,to,_7,g7,so,$7,E7,Ot,Kn,no,b7,x7,ao,Ju,j7,q7,Qn,oo,w7,D7,ro,Bu,k7,y7,Zn,lo,C7,z7,io,Gu,T7,Nc,uo,P7,Ac,ea,Mc,po,O7,Ic,ta,Sc,ke,N7,Yu,A7,M7,Wu,I7,S7,Xu,L7,H7,Lc,ps,R7,Ku,U7,V7,Hc,sa,Rc,na,Uc,cs,F7,Qu,J7,B7,Vc,aa,Fc,ms,G7,oa,Y7,W7,Jc,ra,Bc,la,Gc,fs,X7,co,K7,Q7,Yc,ia,Wc,vs,Z7,Zu,eb,tb,Xc,hs,ua,sb,mo,nb,ab,ob,Nt,rb,ed,lb,ib,fo,ub,db,Kc,_s,pb,td,cb,mb,Qc;return x=new ma({}),P=new V3({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter5/section3.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter5/section3.ipynb"}]}}),O=new $b({props:{id:"tqfSFcPMgOI"}}),Q=new ma({}),Os=new E({props:{code:`!wget "https://archive.ics.uci.edu/ml/machine-learning-databases/00462/drugsCom_raw.zip"
!unzip drugsCom_raw.zip`,highlighted:`!wget <span class="hljs-string">&quot;https://archive.ics.uci.edu/ml/machine-learning-databases/00462/drugsCom_raw.zip&quot;</span>
!unzip drugsCom_raw.<span class="hljs-built_in">zip</span>`}}),Ns=new E({props:{code:`from datasets import load_dataset

data_files = {"train": "drugsComTrain_raw.tsv", "test": "drugsComTest_raw.tsv"}
# \\t is the tab character in Python
drug_dataset = load_dataset("csv", data_files=data_files, delimiter="\\t")`,highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

data_files = {<span class="hljs-string">&quot;train&quot;</span>: <span class="hljs-string">&quot;drugsComTrain_raw.tsv&quot;</span>, <span class="hljs-string">&quot;test&quot;</span>: <span class="hljs-string">&quot;drugsComTest_raw.tsv&quot;</span>}
<span class="hljs-comment"># \\t is the tab character in Python</span>
drug_dataset = load_dataset(<span class="hljs-string">&quot;csv&quot;</span>, data_files=data_files, delimiter=<span class="hljs-string">&quot;\\t&quot;</span>)`}}),As=new E({props:{code:`drug_sample = drug_dataset["train"].shuffle(seed=42).select(range(1000))
# Un coup d'\u0153il sur les premiers exemples
drug_sample[:3]`,highlighted:`drug_sample = drug_dataset[<span class="hljs-string">&quot;train&quot;</span>].shuffle(seed=<span class="hljs-number">42</span>).select(<span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>))
<span class="hljs-comment"># Un coup d&#x27;\u0153il sur les premiers exemples</span>
drug_sample[:<span class="hljs-number">3</span>]`}}),Ms=new E({props:{code:`{'Unnamed: 0': [87571, 178045, 80482],
 'drugName': ['Naproxen', 'Duloxetine', 'Mobic'],
 'condition': ['Gout, Acute', 'ibromyalgia', 'Inflammatory Conditions'], #['Goutte aigu\xEB', 'ibromyalgie', 'Affections inflammatoires']
 'review': ['"like the previous person mention, I&#039;m a strong believer of aleve, it works faster for my gout than the prescription meds I take. No more going to the doctor for refills.....Aleve works!"', # comme la personne pr\xE9c\xE9dente l'a mentionn\xE9, je suis un fervent partisan de l'aleve, il fonctionne plus rapidement pour ma goutte que les m\xE9dicaments sur ordonnance que je prends. Je n'ai plus besoin d'aller chez le m\xE9decin pour des renouvellements.....Aleve fonctionne !"
  '"I have taken Cymbalta for about a year and a half for fibromyalgia pain. It is great\\r\\nas a pain reducer and an anti-depressant, however, the side effects outweighed \\r\\nany benefit I got from it. I had trouble with restlessness, being tired constantly,\\r\\ndizziness, dry mouth, numbness and tingling in my feet, and horrible sweating. I am\\r\\nbeing weaned off of it now. Went from 60 mg to 30mg and now to 15 mg. I will be\\r\\noff completely in about a week. The fibro pain is coming back, but I would rather deal with it than the side effects."', # J'ai pris du Cymbalta pendant environ un an et demi pour des douleurs de la fibromyalgie. C'est un excellent analg\xE9sique et un antid\xE9presseur, mais les effets secondaires l'ont emport\xE9 sur tous les avantages que j'en ai tir\xE9s. J'ai eu des probl\xE8mes d'agitation, de fatigue constante, de vertiges, de bouche s\xE8che, d'engourdissement, de picotements dans les pieds, et de transpiration horrible. Je suis en train de m'en sevrer maintenant. Je suis pass\xE9e de 60 mg \xE0 30 mg et maintenant \xE0 15 mg. Je l'arr\xEAterai compl\xE8tement dans environ une semaine. La douleur de la fibrose revient, mais je pr\xE9f\xE8re la supporter plut\xF4t que les effets secondaires.
  '"I have been taking Mobic for over a year with no side effects other than an elevated blood pressure.  I had severe knee and ankle pain which completely went away after taking Mobic.  I attempted to stop the medication however pain returned after a few days."'], # J'ai pris Mobic pendant plus d'un an sans effets secondaires autres qu'une pression sanguine \xE9lev\xE9e.  J'avais de fortes douleurs au genou et \xE0 la cheville qui ont compl\xE8tement disparu apr\xE8s avoir pris Mobic. J'ai essay\xE9 d'arr\xEAter le m\xE9dicament mais la douleur est revenue apr\xE8s quelques jours."
 'rating': [9.0, 3.0, 10.0],
 'date': ['September 2, 2015', 'November 7, 2011', 'June 5, 2013'], #['2 septembre 2015', '7 novembre 2011', '5 juin 2013']
 'usefulCount': [36, 13, 128]}`,highlighted:`{<span class="hljs-string">&#x27;Unnamed: 0&#x27;</span>: [<span class="hljs-number">87571</span>, <span class="hljs-number">178045</span>, <span class="hljs-number">80482</span>],
 <span class="hljs-string">&#x27;drugName&#x27;</span>: [<span class="hljs-string">&#x27;Naproxen&#x27;</span>, <span class="hljs-string">&#x27;Duloxetine&#x27;</span>, <span class="hljs-string">&#x27;Mobic&#x27;</span>],
 <span class="hljs-string">&#x27;condition&#x27;</span>: [<span class="hljs-string">&#x27;Gout, Acute&#x27;</span>, <span class="hljs-string">&#x27;ibromyalgia&#x27;</span>, <span class="hljs-string">&#x27;Inflammatory Conditions&#x27;</span>], <span class="hljs-comment">#[&#x27;Goutte aigu\xEB&#x27;, &#x27;ibromyalgie&#x27;, &#x27;Affections inflammatoires&#x27;]</span>
 <span class="hljs-string">&#x27;review&#x27;</span>: [<span class="hljs-string">&#x27;&quot;like the previous person mention, I&amp;#039;m a strong believer of aleve, it works faster for my gout than the prescription meds I take. No more going to the doctor for refills.....Aleve works!&quot;&#x27;</span>, <span class="hljs-comment"># comme la personne pr\xE9c\xE9dente l&#x27;a mentionn\xE9, je suis un fervent partisan de l&#x27;aleve, il fonctionne plus rapidement pour ma goutte que les m\xE9dicaments sur ordonnance que je prends. Je n&#x27;ai plus besoin d&#x27;aller chez le m\xE9decin pour des renouvellements.....Aleve fonctionne !&quot;</span>
  <span class="hljs-string">&#x27;&quot;I have taken Cymbalta for about a year and a half for fibromyalgia pain. It is great\\r\\nas a pain reducer and an anti-depressant, however, the side effects outweighed \\r\\nany benefit I got from it. I had trouble with restlessness, being tired constantly,\\r\\ndizziness, dry mouth, numbness and tingling in my feet, and horrible sweating. I am\\r\\nbeing weaned off of it now. Went from 60 mg to 30mg and now to 15 mg. I will be\\r\\noff completely in about a week. The fibro pain is coming back, but I would rather deal with it than the side effects.&quot;&#x27;</span>, <span class="hljs-comment"># J&#x27;ai pris du Cymbalta pendant environ un an et demi pour des douleurs de la fibromyalgie. C&#x27;est un excellent analg\xE9sique et un antid\xE9presseur, mais les effets secondaires l&#x27;ont emport\xE9 sur tous les avantages que j&#x27;en ai tir\xE9s. J&#x27;ai eu des probl\xE8mes d&#x27;agitation, de fatigue constante, de vertiges, de bouche s\xE8che, d&#x27;engourdissement, de picotements dans les pieds, et de transpiration horrible. Je suis en train de m&#x27;en sevrer maintenant. Je suis pass\xE9e de 60 mg \xE0 30 mg et maintenant \xE0 15 mg. Je l&#x27;arr\xEAterai compl\xE8tement dans environ une semaine. La douleur de la fibrose revient, mais je pr\xE9f\xE8re la supporter plut\xF4t que les effets secondaires.</span>
  <span class="hljs-string">&#x27;&quot;I have been taking Mobic for over a year with no side effects other than an elevated blood pressure.  I had severe knee and ankle pain which completely went away after taking Mobic.  I attempted to stop the medication however pain returned after a few days.&quot;&#x27;</span>], <span class="hljs-comment"># J&#x27;ai pris Mobic pendant plus d&#x27;un an sans effets secondaires autres qu&#x27;une pression sanguine \xE9lev\xE9e.  J&#x27;avais de fortes douleurs au genou et \xE0 la cheville qui ont compl\xE8tement disparu apr\xE8s avoir pris Mobic. J&#x27;ai essay\xE9 d&#x27;arr\xEAter le m\xE9dicament mais la douleur est revenue apr\xE8s quelques jours.&quot;</span>
 <span class="hljs-string">&#x27;rating&#x27;</span>: [<span class="hljs-number">9.0</span>, <span class="hljs-number">3.0</span>, <span class="hljs-number">10.0</span>],
 <span class="hljs-string">&#x27;date&#x27;</span>: [<span class="hljs-string">&#x27;September 2, 2015&#x27;</span>, <span class="hljs-string">&#x27;November 7, 2011&#x27;</span>, <span class="hljs-string">&#x27;June 5, 2013&#x27;</span>], <span class="hljs-comment">#[&#x27;2 septembre 2015&#x27;, &#x27;7 novembre 2011&#x27;, &#x27;5 juin 2013&#x27;]</span>
 <span class="hljs-string">&#x27;usefulCount&#x27;</span>: [<span class="hljs-number">36</span>, <span class="hljs-number">13</span>, <span class="hljs-number">128</span>]}`}}),Ls=new E({props:{code:`for split in drug_dataset.keys():
    assert len(drug_dataset[split]) == len(drug_dataset[split].unique("Unnamed: 0"))`,highlighted:`<span class="hljs-keyword">for</span> split <span class="hljs-keyword">in</span> drug_dataset.keys():
    <span class="hljs-keyword">assert</span> <span class="hljs-built_in">len</span>(drug_dataset[split]) == <span class="hljs-built_in">len</span>(drug_dataset[split].unique(<span class="hljs-string">&quot;Unnamed: 0&quot;</span>))`}}),Hs=new E({props:{code:`drug_dataset = drug_dataset.rename_column(
    original_column_name="Unnamed: 0", new_column_name="patient_id"
)
drug_dataset`,highlighted:`drug_dataset = drug_dataset.rename_column(
    original_column_name=<span class="hljs-string">&quot;Unnamed: 0&quot;</span>, new_column_name=<span class="hljs-string">&quot;patient_id&quot;</span>
)
drug_dataset`}}),Rs=new E({props:{code:`DatasetDict({
    train: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount'],
        num_rows: 161297
    })
    test: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount'],
        num_rows: 53766
    })
})`,highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>],
        num_rows: <span class="hljs-number">161297</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>],
        num_rows: <span class="hljs-number">53766</span>
    })
})`}}),It=new Cs({props:{$$slots:{default:[F3]},$$scope:{ctx:R}}}),Us=new E({props:{code:`def lowercase_condition(example):
    return {"condition": example["condition"].lower()}


drug_dataset.map(lowercase_condition)`,highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">lowercase_condition</span>(<span class="hljs-params">example</span>):
    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;condition&quot;</span>: example[<span class="hljs-string">&quot;condition&quot;</span>].lower()}


drug_dataset.<span class="hljs-built_in">map</span>(lowercase_condition)`}}),Vs=new E({props:{code:"AttributeError: 'NoneType' object has no attribute 'lower'",highlighted:'AttributeError: <span class="hljs-string">&#x27;NoneType&#x27;</span> <span class="hljs-built_in">object</span> has no attribute <span class="hljs-string">&#x27;lower&#x27;</span>'}}),Fs=new E({props:{code:`def filter_nones(x):
    return x["condition"] is not None`,highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">filter_nones</span>(<span class="hljs-params">x</span>):
    <span class="hljs-keyword">return</span> x[<span class="hljs-string">&quot;condition&quot;</span>] <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-literal">None</span>`}}),Js=new E({props:{code:"lambda <arguments> : <expression>",highlighted:'lambda <span class="hljs-tag">&lt;<span class="hljs-name">arguments</span>&gt;</span> : <span class="hljs-tag">&lt;<span class="hljs-name">expression</span>&gt;</span>'}}),Gs=new E({props:{code:"lambda x : x * x",highlighted:'lambda <span class="hljs-keyword">x</span> : <span class="hljs-keyword">x</span> * <span class="hljs-keyword">x</span>'}}),Ys=new E({props:{code:"(lambda x: x * x)(3)",highlighted:'(<span class="hljs-keyword">lambda</span> x: x * x)(<span class="hljs-number">3</span>)'}}),Ws=new E({props:{code:"9",highlighted:'<span class="hljs-number">9</span>'}}),Xs=new E({props:{code:"(lambda base, height: 0.5 * base * height)(4, 8)",highlighted:'(<span class="hljs-keyword">lambda</span> base, height: <span class="hljs-number">0.5</span> * base * height)(<span class="hljs-number">4</span>, <span class="hljs-number">8</span>)'}}),Ks=new E({props:{code:"16.0",highlighted:'<span class="hljs-number">16.0</span>'}}),Zs=new E({props:{code:'drug_dataset = drug_dataset.filter(lambda x: x["condition"] is not None)',highlighted:'drug_dataset = drug_dataset.<span class="hljs-built_in">filter</span>(<span class="hljs-keyword">lambda</span> x: x[<span class="hljs-string">&quot;condition&quot;</span>] <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-literal">None</span>)'}}),en=new E({props:{code:`drug_dataset = drug_dataset.map(lowercase_condition)
# V\xE9rification que la mise en minuscule a fonctionn\xE9
drug_dataset["train"]["condition"][:3]`,highlighted:`drug_dataset = drug_dataset.<span class="hljs-built_in">map</span>(lowercase_condition)
<span class="hljs-comment"># V\xE9rification que la mise en minuscule a fonctionn\xE9</span>
drug_dataset[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-string">&quot;condition&quot;</span>][:<span class="hljs-number">3</span>]`}}),tn=new E({props:{code:"['left ventricular dysfunction', 'adhd', 'birth control']",highlighted:'[<span class="hljs-string">&#x27;left ventricular dysfunction&#x27;</span>, <span class="hljs-string">&#x27;adhd&#x27;</span>, <span class="hljs-string">&#x27;birth control&#x27;</span>]'}}),sn=new ma({}),nn=new E({props:{code:`def compute_review_length(example):
    return {"review_length": len(example["review"].split())}`,highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_review_length</span>(<span class="hljs-params">example</span>):
    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;review_length&quot;</span>: <span class="hljs-built_in">len</span>(example[<span class="hljs-string">&quot;review&quot;</span>].split())}`}}),an=new E({props:{code:`drug_dataset = drug_dataset.map(compute_review_length)
# Inspecter le premier exemple d'entra\xEEnement
drug_dataset["train"][0]`,highlighted:`drug_dataset = drug_dataset.<span class="hljs-built_in">map</span>(compute_review_length)
<span class="hljs-comment"># Inspecter le premier exemple d&#x27;entra\xEEnement</span>
drug_dataset[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]`}}),on=new E({props:{code:`{'patient_id': 206461,
 'drugName': 'Valsartan',
 'condition': 'left ventricular dysfunction', # dysfonctionnement du ventricule gauche
 'review': '"It has no side effect, I take it in combination of Bystolic 5 Mg and Fish Oil"', # Il n'a aucun effet secondaire, je le prends en combinaison avec Bystolic 5 mg et de l'huile de poisson.
 'rating': 9.0,
 'date': 'May 20, 2012', # 20 mai 2012
 'usefulCount': 27,
 'review_length': 17}`,highlighted:`{<span class="hljs-string">&#x27;patient_id&#x27;</span>: <span class="hljs-number">206461</span>,
 <span class="hljs-string">&#x27;drugName&#x27;</span>: <span class="hljs-string">&#x27;Valsartan&#x27;</span>,
 <span class="hljs-string">&#x27;condition&#x27;</span>: <span class="hljs-string">&#x27;left ventricular dysfunction&#x27;</span>, <span class="hljs-comment"># dysfonctionnement du ventricule gauche</span>
 <span class="hljs-string">&#x27;review&#x27;</span>: <span class="hljs-string">&#x27;&quot;It has no side effect, I take it in combination of Bystolic 5 Mg and Fish Oil&quot;&#x27;</span>, <span class="hljs-comment"># Il n&#x27;a aucun effet secondaire, je le prends en combinaison avec Bystolic 5 mg et de l&#x27;huile de poisson.</span>
 <span class="hljs-string">&#x27;rating&#x27;</span>: <span class="hljs-number">9.0</span>,
 <span class="hljs-string">&#x27;date&#x27;</span>: <span class="hljs-string">&#x27;May 20, 2012&#x27;</span>, <span class="hljs-comment"># 20 mai 2012</span>
 <span class="hljs-string">&#x27;usefulCount&#x27;</span>: <span class="hljs-number">27</span>,
 <span class="hljs-string">&#x27;review_length&#x27;</span>: <span class="hljs-number">17</span>}`}}),rn=new E({props:{code:'drug_dataset["train"].sort("review_length")[:3]',highlighted:'drug_dataset[<span class="hljs-string">&quot;train&quot;</span>].sort(<span class="hljs-string">&quot;review_length&quot;</span>)[:<span class="hljs-number">3</span>]'}}),ln=new E({props:{code:`{'patient_id': [103488, 23627, 20558],
 'drugName': ['Loestrin 21 1 / 20', 'Chlorzoxazone', 'Nucynta'],
 'condition': ['birth control', 'muscle spasm', 'pain'], # contraception, spasme musculaire, douleur.
 'review': ['"Excellent."', '"useless"', '"ok"'], # Excellent, inutile, ok 
 'rating': [10.0, 1.0, 6.0],
 'date': ['November 4, 2008', 'March 24, 2017', 'August 20, 2016'], # 4 novembre 2008, 24 mars 2017, 20 ao\xFBt 2016
 'usefulCount': [5, 2, 10],
 'review_length': [1, 1, 1]}`,highlighted:`{<span class="hljs-string">&#x27;patient_id&#x27;</span>: [<span class="hljs-number">103488</span>, <span class="hljs-number">23627</span>, <span class="hljs-number">20558</span>],
 <span class="hljs-string">&#x27;drugName&#x27;</span>: [<span class="hljs-string">&#x27;Loestrin 21 1 / 20&#x27;</span>, <span class="hljs-string">&#x27;Chlorzoxazone&#x27;</span>, <span class="hljs-string">&#x27;Nucynta&#x27;</span>],
 <span class="hljs-string">&#x27;condition&#x27;</span>: [<span class="hljs-string">&#x27;birth control&#x27;</span>, <span class="hljs-string">&#x27;muscle spasm&#x27;</span>, <span class="hljs-string">&#x27;pain&#x27;</span>], <span class="hljs-comment"># contraception, spasme musculaire, douleur.</span>
 <span class="hljs-string">&#x27;review&#x27;</span>: [<span class="hljs-string">&#x27;&quot;Excellent.&quot;&#x27;</span>, <span class="hljs-string">&#x27;&quot;useless&quot;&#x27;</span>, <span class="hljs-string">&#x27;&quot;ok&quot;&#x27;</span>], <span class="hljs-comment"># Excellent, inutile, ok </span>
 <span class="hljs-string">&#x27;rating&#x27;</span>: [<span class="hljs-number">10.0</span>, <span class="hljs-number">1.0</span>, <span class="hljs-number">6.0</span>],
 <span class="hljs-string">&#x27;date&#x27;</span>: [<span class="hljs-string">&#x27;November 4, 2008&#x27;</span>, <span class="hljs-string">&#x27;March 24, 2017&#x27;</span>, <span class="hljs-string">&#x27;August 20, 2016&#x27;</span>], <span class="hljs-comment"># 4 novembre 2008, 24 mars 2017, 20 ao\xFBt 2016</span>
 <span class="hljs-string">&#x27;usefulCount&#x27;</span>: [<span class="hljs-number">5</span>, <span class="hljs-number">2</span>, <span class="hljs-number">10</span>],
 <span class="hljs-string">&#x27;review_length&#x27;</span>: [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>]}`}}),Lt=new Cs({props:{$$slots:{default:[J3]},$$scope:{ctx:R}}}),un=new E({props:{code:`drug_dataset = drug_dataset.filter(lambda x: x["review_length"] > 30)
print(drug_dataset.num_rows)`,highlighted:`drug_dataset = drug_dataset.<span class="hljs-built_in">filter</span>(<span class="hljs-keyword">lambda</span> x: x[<span class="hljs-string">&quot;review_length&quot;</span>] &gt; <span class="hljs-number">30</span>)
<span class="hljs-built_in">print</span>(drug_dataset.num_rows)`}}),dn=new E({props:{code:"{'train': 138514, 'test': 46108}",highlighted:'{<span class="hljs-string">&#x27;train&#x27;</span>: <span class="hljs-number">138514</span>, <span class="hljs-string">&#x27;test&#x27;</span>: <span class="hljs-number">46108</span>}'}}),Ht=new Cs({props:{$$slots:{default:[B3]},$$scope:{ctx:R}}}),pn=new E({props:{code:`import html

text = "I&#039;m a transformer called BERT"
html.unescape(text)`,highlighted:`<span class="hljs-keyword">import</span> html

text = <span class="hljs-string">&quot;I&amp;#039;m a transformer called BERT&quot;</span>
html.unescape(text)`}}),cn=new E({props:{code:`"I'm a transformer called BERT"`,highlighted:'<span class="hljs-string">&quot;I&#x27;m a transformer called BERT&quot;</span>'}}),mn=new E({props:{code:'drug_dataset = drug_dataset.map(lambda x: {"review": html.unescape(x["review"])})',highlighted:'drug_dataset = drug_dataset.<span class="hljs-built_in">map</span>(<span class="hljs-keyword">lambda</span> x: {<span class="hljs-string">&quot;review&quot;</span>: html.unescape(x[<span class="hljs-string">&quot;review&quot;</span>])})'}}),fn=new ma({}),vn=new E({props:{code:`new_drug_dataset = drug_dataset.map(
    lambda x: {"review": [html.unescape(o) for o in x["review"]]}, batched=True
)`,highlighted:`new_drug_dataset = drug_dataset.<span class="hljs-built_in">map</span>(
    <span class="hljs-keyword">lambda</span> x: {<span class="hljs-string">&quot;review&quot;</span>: [html.unescape(o) <span class="hljs-keyword">for</span> o <span class="hljs-keyword">in</span> x[<span class="hljs-string">&quot;review&quot;</span>]]}, batched=<span class="hljs-literal">True</span>
)`}}),hn=new E({props:{code:`from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")


def tokenize_function(examples):
    return tokenizer(examples["review"], truncation=True)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)


<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">examples</span>):
    <span class="hljs-keyword">return</span> tokenizer(examples[<span class="hljs-string">&quot;review&quot;</span>], truncation=<span class="hljs-literal">True</span>)`}}),_n=new E({props:{code:"%time tokenized_dataset = drug_dataset.map(tokenize_function, batched=True)",highlighted:'%time tokenized_dataset = drug_dataset.<span class="hljs-built_in">map</span>(tokenize_function, batched=<span class="hljs-literal">True</span>)'}}),Bt=new Cs({props:{$$slots:{default:[G3]},$$scope:{ctx:R}}}),bn=new E({props:{code:`slow_tokenizer = AutoTokenizer.from_pretrained("bert-base-cased", use_fast=False)


def slow_tokenize_function(examples):
    return slow_tokenizer(examples["review"], truncation=True)


tokenized_dataset = drug_dataset.map(slow_tokenize_function, batched=True, num_proc=8)`,highlighted:`slow_tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>, use_fast=<span class="hljs-literal">False</span>)


<span class="hljs-keyword">def</span> <span class="hljs-title function_">slow_tokenize_function</span>(<span class="hljs-params">examples</span>):
    <span class="hljs-keyword">return</span> slow_tokenizer(examples[<span class="hljs-string">&quot;review&quot;</span>], truncation=<span class="hljs-literal">True</span>)


tokenized_dataset = drug_dataset.<span class="hljs-built_in">map</span>(slow_tokenize_function, batched=<span class="hljs-literal">True</span>, num_proc=<span class="hljs-number">8</span>)`}}),Qt=new Cs({props:{$$slots:{default:[Y3]},$$scope:{ctx:R}}}),Zt=new Cs({props:{$$slots:{default:[W3]},$$scope:{ctx:R}}}),qn=new E({props:{code:`def tokenize_and_split(examples):
    return tokenizer(
        examples["review"],
        truncation=True,
        max_length=128,
        return_overflowing_tokens=True,
    )`,highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_and_split</span>(<span class="hljs-params">examples</span>):
    <span class="hljs-keyword">return</span> tokenizer(
        examples[<span class="hljs-string">&quot;review&quot;</span>],
        truncation=<span class="hljs-literal">True</span>,
        max_length=<span class="hljs-number">128</span>,
        return_overflowing_tokens=<span class="hljs-literal">True</span>,
    )`}}),wn=new E({props:{code:`result = tokenize_and_split(drug_dataset["train"][0])
[len(inp) for inp in result["input_ids"]]`,highlighted:`result = tokenize_and_split(drug_dataset[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>])
[<span class="hljs-built_in">len</span>(inp) <span class="hljs-keyword">for</span> inp <span class="hljs-keyword">in</span> result[<span class="hljs-string">&quot;input_ids&quot;</span>]]`}}),Dn=new E({props:{code:"[128, 49]",highlighted:'[<span class="hljs-number">128</span>, <span class="hljs-number">49</span>]'}}),kn=new E({props:{code:"tokenized_dataset = drug_dataset.map(tokenize_and_split, batched=True)",highlighted:'tokenized_dataset = drug_dataset.<span class="hljs-built_in">map</span>(tokenize_and_split, batched=<span class="hljs-literal">True</span>)'}}),yn=new E({props:{code:"ArrowInvalid: Column 1 named condition expected length 1463 but got length 1000",highlighted:'ArrowInvalid: Column <span class="hljs-number">1</span> named condition expected length <span class="hljs-number">1463</span> but got length <span class="hljs-number">1000</span>'}}),zn=new E({props:{code:`tokenized_dataset = drug_dataset.map(
    tokenize_and_split, batched=True, remove_columns=drug_dataset["train"].column_names
)`,highlighted:`tokenized_dataset = drug_dataset.<span class="hljs-built_in">map</span>(
    tokenize_and_split, batched=<span class="hljs-literal">True</span>, remove_columns=drug_dataset[<span class="hljs-string">&quot;train&quot;</span>].column_names
)`}}),Tn=new E({props:{code:'len(tokenized_dataset["train"]), len(drug_dataset["train"])',highlighted:'<span class="hljs-built_in">len</span>(tokenized_dataset[<span class="hljs-string">&quot;train&quot;</span>]), <span class="hljs-built_in">len</span>(drug_dataset[<span class="hljs-string">&quot;train&quot;</span>])'}}),Pn=new E({props:{code:"(206772, 138514)",highlighted:'(<span class="hljs-number">206772</span>, <span class="hljs-number">138514</span>)'}}),On=new E({props:{code:`def tokenize_and_split(examples):
    result = tokenizer(
        examples["review"],
        truncation=True,
        max_length=128,
        return_overflowing_tokens=True,
    )
    # Extract mapping between new and old indices
    sample_map = result.pop("overflow_to_sample_mapping")
    for key, values in examples.items():
        result[key] = [values[i] for i in sample_map]
    return result`,highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_and_split</span>(<span class="hljs-params">examples</span>):
    result = tokenizer(
        examples[<span class="hljs-string">&quot;review&quot;</span>],
        truncation=<span class="hljs-literal">True</span>,
        max_length=<span class="hljs-number">128</span>,
        return_overflowing_tokens=<span class="hljs-literal">True</span>,
    )
    <span class="hljs-comment"># Extract mapping between new and old indices</span>
    sample_map = result.pop(<span class="hljs-string">&quot;overflow_to_sample_mapping&quot;</span>)
    <span class="hljs-keyword">for</span> key, values <span class="hljs-keyword">in</span> examples.items():
        result[key] = [values[i] <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> sample_map]
    <span class="hljs-keyword">return</span> result`}}),Nn=new E({props:{code:`tokenized_dataset = drug_dataset.map(tokenize_and_split, batched=True)
tokenized_dataset`,highlighted:`tokenized_dataset = drug_dataset.<span class="hljs-built_in">map</span>(tokenize_and_split, batched=<span class="hljs-literal">True</span>)
tokenized_dataset`}}),An=new E({props:{code:`DatasetDict({
    train: Dataset({
        features: ['attention_mask', 'condition', 'date', 'drugName', 'input_ids', 'patient_id', 'rating', 'review', 'review_length', 'token_type_ids', 'usefulCount'],
        num_rows: 206772
    })
    test: Dataset({
        features: ['attention_mask', 'condition', 'date', 'drugName', 'input_ids', 'patient_id', 'rating', 'review', 'review_length', 'token_type_ids', 'usefulCount'],
        num_rows: 68876
    })
})`,highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;attention_mask&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;input_ids&#x27;</span>, <span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>, <span class="hljs-string">&#x27;token_type_ids&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>],
        num_rows: <span class="hljs-number">206772</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;attention_mask&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;input_ids&#x27;</span>, <span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>, <span class="hljs-string">&#x27;token_type_ids&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>],
        num_rows: <span class="hljs-number">68876</span>
    })
})`}}),Mn=new ma({}),In=new $b({props:{id:"tfcY1067A5Q"}}),Sn=new E({props:{code:'drug_dataset.set_format("pandas")',highlighted:'drug_dataset.set_format(<span class="hljs-string">&quot;pandas&quot;</span>)'}}),Ln=new E({props:{code:'drug_dataset["train"][:3]',highlighted:'drug_dataset[<span class="hljs-string">&quot;train&quot;</span>][:<span class="hljs-number">3</span>]'}}),Hn=new E({props:{code:'train_df = drug_dataset["train"][:]',highlighted:'train_df = drug_dataset[<span class="hljs-string">&quot;train&quot;</span>][:]'}}),os=new Cs({props:{$$slots:{default:[X3]},$$scope:{ctx:R}}}),Rn=new E({props:{code:`frequencies = (
    train_df["condition"]
    .value_counts()
    .to_frame()
    .reset_index()
    .rename(columns={"index": "condition", "condition": "frequency"})
)
frequencies.head()`,highlighted:`frequencies = (
    train_df[<span class="hljs-string">&quot;condition&quot;</span>]
    .value_counts()
    .to_frame()
    .reset_index()
    .rename(columns={<span class="hljs-string">&quot;index&quot;</span>: <span class="hljs-string">&quot;condition&quot;</span>, <span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;frequency&quot;</span>})
)
frequencies.head()`}}),Un=new E({props:{code:`from datasets import Dataset

freq_dataset = Dataset.from_pandas(frequencies)
freq_dataset`,highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Dataset

freq_dataset = Dataset.from_pandas(frequencies)
freq_dataset`}}),Vn=new E({props:{code:`Dataset({
    features: ['condition', 'frequency'],
    num_rows: 819
})`,highlighted:`Dataset({
    features: [<span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;frequency&#x27;</span>],
    num_rows: <span class="hljs-number">819</span>
})`}}),ls=new Cs({props:{$$slots:{default:[K3]},$$scope:{ctx:R}}}),Fn=new E({props:{code:"drug_dataset.reset_format()",highlighted:"drug_dataset.reset_format()"}}),Jn=new ma({}),Bn=new E({props:{code:`drug_dataset_clean = drug_dataset["train"].train_test_split(train_size=0.8, seed=42)
# Rename the default "test" split to "validation"
drug_dataset_clean["validation"] = drug_dataset_clean.pop("test")
# Add the "test" set to our \`DatasetDict\`
drug_dataset_clean["test"] = drug_dataset["test"]
drug_dataset_clean`,highlighted:`drug_dataset_clean = drug_dataset[<span class="hljs-string">&quot;train&quot;</span>].train_test_split(train_size=<span class="hljs-number">0.8</span>, seed=<span class="hljs-number">42</span>)
<span class="hljs-comment"># Rename the default &quot;test&quot; split to &quot;validation&quot;</span>
drug_dataset_clean[<span class="hljs-string">&quot;validation&quot;</span>] = drug_dataset_clean.pop(<span class="hljs-string">&quot;test&quot;</span>)
<span class="hljs-comment"># Add the &quot;test&quot; set to our \`DatasetDict\`</span>
drug_dataset_clean[<span class="hljs-string">&quot;test&quot;</span>] = drug_dataset[<span class="hljs-string">&quot;test&quot;</span>]
drug_dataset_clean`}}),Gn=new E({props:{code:`DatasetDict({
    train: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount', 'review_length', 'review_clean'],
        num_rows: 110811
    })
    validation: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount', 'review_length', 'review_clean'],
        num_rows: 27703
    })
    test: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount', 'review_length', 'review_clean'],
        num_rows: 46108
    })
})`,highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>, <span class="hljs-string">&#x27;review_clean&#x27;</span>],
        num_rows: <span class="hljs-number">110811</span>
    })
    validation: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>, <span class="hljs-string">&#x27;review_clean&#x27;</span>],
        num_rows: <span class="hljs-number">27703</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>, <span class="hljs-string">&#x27;review_clean&#x27;</span>],
        num_rows: <span class="hljs-number">46108</span>
    })
})`}}),Yn=new ma({}),Wn=new $b({props:{id:"blF9uxYcKHo"}}),ea=new E({props:{code:'drug_dataset_clean.save_to_disk("drug-reviews")',highlighted:'drug_dataset_clean.save_to_disk(<span class="hljs-string">&quot;drug-reviews&quot;</span>)'}}),ta=new E({props:{code:`drug-reviews/
\u251C\u2500\u2500 dataset_dict.json
\u251C\u2500\u2500 test
\u2502   \u251C\u2500\u2500 dataset.arrow
\u2502   \u251C\u2500\u2500 dataset_info.json
\u2502   \u2514\u2500\u2500 state.json
\u251C\u2500\u2500 train
\u2502   \u251C\u2500\u2500 dataset.arrow
\u2502   \u251C\u2500\u2500 dataset_info.json
\u2502   \u251C\u2500\u2500 indices.arrow
\u2502   \u2514\u2500\u2500 state.json
\u2514\u2500\u2500 validation
    \u251C\u2500\u2500 dataset.arrow
    \u251C\u2500\u2500 dataset_info.json
    \u251C\u2500\u2500 indices.arrow
    \u2514\u2500\u2500 state.json`,highlighted:`drug-reviews/
\u251C\u2500\u2500 dataset_dict.json
\u251C\u2500\u2500 test
\u2502   \u251C\u2500\u2500 dataset.arrow
\u2502   \u251C\u2500\u2500 dataset_info.json
\u2502   \u2514\u2500\u2500 <span class="hljs-keyword">state</span>.json
\u251C\u2500\u2500 train
\u2502   \u251C\u2500\u2500 dataset.arrow
\u2502   \u251C\u2500\u2500 dataset_info.json
\u2502   \u251C\u2500\u2500 indices.arrow
\u2502   \u2514\u2500\u2500 <span class="hljs-keyword">state</span>.json
\u2514\u2500\u2500 validation
    \u251C\u2500\u2500 dataset.arrow
    \u251C\u2500\u2500 dataset_info.json
    \u251C\u2500\u2500 indices.arrow
    \u2514\u2500\u2500 <span class="hljs-keyword">state</span>.json`}}),sa=new E({props:{code:`from datasets import load_from_disk

drug_dataset_reloaded = load_from_disk("drug-reviews")
drug_dataset_reloaded`,highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_from_disk

drug_dataset_reloaded = load_from_disk(<span class="hljs-string">&quot;drug-reviews&quot;</span>)
drug_dataset_reloaded`}}),na=new E({props:{code:`DatasetDict({
    train: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount', 'review_length'],
        num_rows: 110811
    })
    validation: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount', 'review_length'],
        num_rows: 27703
    })
    test: Dataset({
        features: ['patient_id', 'drugName', 'condition', 'review', 'rating', 'date', 'usefulCount', 'review_length'],
        num_rows: 46108
    })
})`,highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>],
        num_rows: <span class="hljs-number">110811</span>
    })
    validation: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>],
        num_rows: <span class="hljs-number">27703</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;patient_id&#x27;</span>, <span class="hljs-string">&#x27;drugName&#x27;</span>, <span class="hljs-string">&#x27;condition&#x27;</span>, <span class="hljs-string">&#x27;review&#x27;</span>, <span class="hljs-string">&#x27;rating&#x27;</span>, <span class="hljs-string">&#x27;date&#x27;</span>, <span class="hljs-string">&#x27;usefulCount&#x27;</span>, <span class="hljs-string">&#x27;review_length&#x27;</span>],
        num_rows: <span class="hljs-number">46108</span>
    })
})`}}),aa=new E({props:{code:`for split, dataset in drug_dataset_clean.items():
    dataset.to_json(f"drug-reviews-{split}.jsonl")`,highlighted:`<span class="hljs-keyword">for</span> split, dataset <span class="hljs-keyword">in</span> drug_dataset_clean.items():
    dataset.to_json(<span class="hljs-string">f&quot;drug-reviews-<span class="hljs-subst">{split}</span>.jsonl&quot;</span>)`}}),ra=new E({props:{code:"!head -n 1 drug-reviews-train.jsonl",highlighted:'!head -n <span class="hljs-number">1</span> drug-reviews-train.jsonl'}}),la=new E({props:{code:`{"patient_id":141780,"drugName":"Escitalopram","condition":"depression","review":"\\"I seemed to experience the regular side effects of LEXAPRO, insomnia, low sex drive, sleepiness during the day. I am taking it at night because my doctor said if it made me tired to take it at night. I assumed it would and started out taking it at night. Strange dreams, some pleasant. I was diagnosed with fibromyalgia. Seems to be helping with the pain. Have had anxiety and depression in my family, and have tried quite a few other medications that haven't worked. Only have been on it for two weeks but feel more positive in my mind, want to accomplish more in my life. Hopefully the side effects will dwindle away, worth it to stick with it from hearing others responses. Great medication.\\"","rating":9.0,"date":"May 29, 2011","usefulCount":10,"review_length":125}`,highlighted:'{<span class="hljs-string">&quot;patient_id&quot;</span>:<span class="hljs-number">141780</span>,<span class="hljs-string">&quot;drugName&quot;</span>:<span class="hljs-string">&quot;Escitalopram&quot;</span>,<span class="hljs-string">&quot;condition&quot;</span>:<span class="hljs-string">&quot;depression&quot;</span>,<span class="hljs-string">&quot;review&quot;</span>:<span class="hljs-string">&quot;\\&quot;I seemed to experience the regular side effects of LEXAPRO, insomnia, low sex drive, sleepiness during the day. I am taking it at night because my doctor said if it made me tired to take it at night. I assumed it would and started out taking it at night. Strange dreams, some pleasant. I was diagnosed with fibromyalgia. Seems to be helping with the pain. Have had anxiety and depression in my family, and have tried quite a few other medications that haven&#x27;t worked. Only have been on it for two weeks but feel more positive in my mind, want to accomplish more in my life. Hopefully the side effects will dwindle away, worth it to stick with it from hearing others responses. Great medication.\\&quot;&quot;</span>,<span class="hljs-string">&quot;rating&quot;</span>:<span class="hljs-number">9.0</span>,<span class="hljs-string">&quot;date&quot;</span>:<span class="hljs-string">&quot;May 29, 2011&quot;</span>,<span class="hljs-string">&quot;usefulCount&quot;</span>:<span class="hljs-number">10</span>,<span class="hljs-string">&quot;review_length&quot;</span>:<span class="hljs-number">125</span>}'}}),ia=new E({props:{code:`data_files = {
    "train": "drug-reviews-train.jsonl",
    "validation": "drug-reviews-validation.jsonl",
    "test": "drug-reviews-test.jsonl",
}
drug_dataset_reloaded = load_dataset("json", data_files=data_files)`,highlighted:`data_files = {
    <span class="hljs-string">&quot;train&quot;</span>: <span class="hljs-string">&quot;drug-reviews-train.jsonl&quot;</span>,
    <span class="hljs-string">&quot;validation&quot;</span>: <span class="hljs-string">&quot;drug-reviews-validation.jsonl&quot;</span>,
    <span class="hljs-string">&quot;test&quot;</span>: <span class="hljs-string">&quot;drug-reviews-test.jsonl&quot;</span>,
}
drug_dataset_reloaded = load_dataset(<span class="hljs-string">&quot;json&quot;</span>, data_files=data_files)`}}),{c(){c=o("meta"),C=d(),b=o("h1"),w=o("a"),y=o("span"),f(x.$$.fragment),j=d(),z=o("span"),q=n("Il est temps de trancher et de d\xE9couper"),D=d(),f(P.$$.fragment),T=d(),k=o("p"),W=n("La plupart du temps, les donn\xE9es avec lesquelles vous travaillez ne sont pas parfaitement pr\xE9par\xE9es pour l\u2019entra\xEEnements de mod\xE8les. Dans cette section, nous allons explorer les diff\xE9rentes fonctionnalit\xE9s fournies par \u{1F917} "),A=o("em"),X=n("Datasets"),Pe=n(" pour nettoyer vos jeux de donn\xE9es."),K=d(),f(O.$$.fragment),Oe=d(),U=o("h2"),se=o("a"),_e=o("span"),f(Q.$$.fragment),zs=d(),dt=o("span"),pt=n("Trancher et d\xE9couper nos donn\xE9es"),N=d(),H=o("p"),fa=n("Semblable \xE0 Pandas, \u{1F917} "),At=o("em"),va=n("Datasets"),ha=n(" fournit plusieurs fonctions pour manipuler le contenu des objets "),Mt=o("code"),_a=n("Dataset"),ga=n(" et "),Yo=o("code"),Mm=n("DatasetDict"),Im=n(". Nous avons d\xE9j\xE0 rencontr\xE9 la m\xE9thode "),Wo=o("code"),Sm=n("Dataset.map()"),Lm=n(" dans le "),$a=o("a"),Hm=n("Chapitre 3"),Rm=n(" et dans cette section nous allons explorer certaines des autres fonctions \xE0 notre disposition."),ld=d(),Me=o("p"),Um=n("Pour cet exemple, nous utiliserons le "),Ts=o("a"),Xo=o("em"),Vm=n("Drug Review Dataset"),Fm=n(" qui est h\xE9berg\xE9 sur "),Ps=o("a"),Ko=o("em"),Jm=n("UC Irvine Machine Learning Repository"),Bm=n(" et contenant des avis de patients sur divers m\xE9dicaments ainsi que la condition trait\xE9e et une note de 10 \xE9toiles sur la satisfaction du patient."),id=d(),Ie=o("p"),Gm=n("Nous devons d\u2019abord t\xE9l\xE9charger et extraire les donn\xE9es, ce qui peut \xEAtre fait avec les commandes "),Qo=o("code"),Ym=n("wget"),Wm=n(" et "),Zo=o("code"),Xm=n("unzip"),Km=n(" :"),ud=d(),f(Os.$$.fragment),dd=d(),ge=o("p"),Qm=n("\xC9tant donn\xE9 que TSV n\u2019est qu\u2019une variante de CSV qui utilise des tabulations au lieu de virgules comme s\xE9parateurs, nous pouvons charger ces fichiers en utilisant le script de chargement "),er=o("code"),Zm=n("csv"),ef=n(" et en sp\xE9cifiant l\u2019argument "),tr=o("code"),tf=n("delimiter"),sf=n(" dans la fonction "),sr=o("code"),nf=n("load_dataset()"),af=n(" comme suit :"),pd=d(),f(Ns.$$.fragment),cd=d(),$e=o("p"),of=n("Une bonne pratique lors de toute sorte d\u2019analyse de donn\xE9es consiste \xE0 pr\xE9lever un petit \xE9chantillon al\xE9atoire pour avoir une id\xE9e rapide du type de donn\xE9es avec lesquelles vous travaillez. Dans \u{1F917} "),nr=o("em"),rf=n("Datasets"),lf=n(", nous pouvons cr\xE9er un \xE9chantillon al\xE9atoire en encha\xEEnant les fonctions "),ar=o("code"),uf=n("Dataset.shuffle()"),df=n(" et "),or=o("code"),pf=n("Dataset.select()"),cf=n(" :"),md=d(),f(As.$$.fragment),fd=d(),f(Ms.$$.fragment),vd=d(),Ee=o("p"),mf=n("Notez que nous avons corrig\xE9 la graine dans "),rr=o("code"),ff=n("Dataset.shuffle()"),vf=n(" \xE0 des fins de reproductibilit\xE9. "),lr=o("code"),hf=n("Dataset.select()"),_f=n(" attend un it\xE9rable d\u2019indices, nous avons donc pass\xE9 "),ir=o("code"),gf=n("range(1000)"),$f=n(" pour r\xE9cup\xE9rer les 1 000 premiers exemples du jeu de donn\xE9es m\xE9lang\xE9. \xC0 partir de cet \xE9chantillon, nous pouvons d\xE9j\xE0 voir quelques bizarreries dans notre jeu de donn\xE9es :"),hd=d(),Se=o("ul"),Is=o("li"),Ef=n("la colonne "),ur=o("code"),bf=n("Unnamed: 0"),xf=n(" ressemble \xE9trangement \xE0 un identifiant anonyme pour chaque patient,"),jf=d(),Ss=o("li"),qf=n("la colonne "),dr=o("code"),wf=n("condition"),Df=n(" comprend un m\xE9lange d\u2019\xE9tiquettes en majuscules et en minuscules,"),kf=d(),ct=o("li"),yf=n("les avis sont de longueur variable et contiennent un m\xE9lange de s\xE9parateurs de lignes Python ("),pr=o("code"),Cf=n("\\r\\n"),zf=n(") ainsi que des codes de caract\xE8res HTML comme "),cr=o("code"),Tf=n("&\\#039;"),Pf=n("."),_d=d(),be=o("p"),Of=n("Voyons comment nous pouvons utiliser \u{1F917} "),mr=o("em"),Nf=n("Datasets"),Af=n(" pour traiter chacun de ces probl\xE8mes. Pour tester l\u2019hypoth\xE8se de l\u2019ID patient pour la colonne "),fr=o("code"),Mf=n("Unnamed : 0"),If=n(", nous pouvons utiliser la fonction "),vr=o("code"),Sf=n("Dataset.unique()"),Lf=n(" pour v\xE9rifier que le nombre d\u2019ID correspond au nombre de lignes dans chaque division :"),gd=d(),f(Ls.$$.fragment),$d=d(),Le=o("p"),Hf=n("Cela semble confirmer notre hypoth\xE8se, alors nettoyons un peu en renommant la colonne "),hr=o("code"),Rf=n("Unnamed: 0"),Uf=n(" en quelque chose d\u2019un peu plus interpr\xE9table. Nous pouvons utiliser la fonction "),_r=o("code"),Vf=n("DatasetDict.rename_column()"),Ff=n(" pour renommer la colonne sur les deux divisions en une seule fois :"),Ed=d(),f(Hs.$$.fragment),bd=d(),f(Rs.$$.fragment),xd=d(),f(It.$$.fragment),jd=d(),ae=o("p"),Jf=n("Ensuite, normalisons toutes les \xE9tiquettes "),gr=o("code"),Bf=n("condition"),Gf=n(" en utilisant "),$r=o("code"),Yf=n("Dataset.map()"),Wf=n(". Comme nous l\u2019avons fait avec la tokenisation dans le "),Ea=o("a"),Xf=n("chapitre 3"),Kf=n(", nous pouvons d\xE9finir une fonction simple qui peut \xEAtre appliqu\xE9e sur toutes les lignes de chaque division dans "),Er=o("code"),Qf=n("drug_dataset"),Zf=n(" :"),qd=d(),f(Us.$$.fragment),wd=d(),f(Vs.$$.fragment),Dd=d(),oe=o("p"),ev=n("Oh non, nous rencontrons un probl\xE8me avec notre fonction ! \xC0 partir de l\u2019erreur, nous pouvons d\xE9duire que certaines des entr\xE9es de la colonne "),br=o("code"),tv=n("condition"),sv=n(" sont "),xr=o("code"),nv=n("None"),av=n(" ne pouvant donc pas \xEAtre mises en minuscules car ce ne sont pas des cha\xEEnes. Supprimons ces lignes en utilisant "),jr=o("code"),ov=n("Dataset.filter()"),rv=n(", qui fonctionne de mani\xE8re similaire \xE0 "),qr=o("code"),lv=n("Dataset.map()"),iv=n(" et attend une fonction qui re\xE7oit un seul exemple issu du jeu de donn\xE9es. Au lieu d\u2019\xE9crire une fonction explicite comme :"),kd=d(),f(Fs.$$.fragment),yd=d(),He=o("p"),uv=n("puis ex\xE9cuter "),wr=o("code"),dv=n("drug_dataset.filter(filter_nones)"),pv=n(", nous pouvons le faire en une seule ligne en utilisant une "),Dr=o("em"),cv=n("fonction lambda"),mv=n(". En Python, les fonctions lambda sont de petites fonctions que vous pouvez d\xE9finir sans les nommer explicitement. Ils prennent la forme g\xE9n\xE9rale :"),Cd=d(),f(Js.$$.fragment),zd=d(),re=o("p"),fv=n("o\xF9 "),kr=o("code"),vv=n("lambda"),hv=n(" est l\u2019un des "),Bs=o("a"),_v=n("mots cl\xE9s"),gv=n(" sp\xE9ciaux de Python, "),yr=o("code"),$v=n("<arguments>"),Ev=n(" est une liste/ensemble de valeurs s\xE9par\xE9es par des virgules qui d\xE9finissent les entr\xE9es de la fonction et "),Cr=o("code"),bv=n("<expression>"),xv=n(" repr\xE9sente les op\xE9rations que vous souhaitez ex\xE9cuter. Par exemple, nous pouvons d\xE9finir une simple fonction lambda qui met au carr\xE9 un nombre comme suit :"),Td=d(),f(Gs.$$.fragment),Pd=d(),ba=o("p"),jv=n("Pour appliquer cette fonction \xE0 une entr\xE9e, nous devons l\u2019envelopper ainsi que l\u2019entr\xE9e entre parenth\xE8ses :"),Od=d(),f(Ys.$$.fragment),Nd=d(),f(Ws.$$.fragment),Ad=d(),xa=o("p"),qv=n("De m\xEAme, nous pouvons d\xE9finir des fonctions lambda avec plusieurs arguments en les s\xE9parant par des virgules. Par exemple, nous pouvons calculer l\u2019aire d\u2019un triangle comme suit :"),Md=d(),f(Xs.$$.fragment),Id=d(),f(Ks.$$.fragment),Sd=d(),xe=o("p"),wv=n("Les fonctions lambda sont pratiques lorsque vous souhaitez d\xE9finir de petites fonctions \xE0 usage unique (pour plus d\u2019informations \xE0 leur sujet, nous vous recommandons de lire l\u2019excellent "),Qs=o("a"),Dv=n("tutoriel Real Python"),kv=n(" d\u2019Andr\xE9 Burgaud) . Dans le contexte de la biblioth\xE8que \u{1F917} "),zr=o("em"),yv=n("Datasets"),Cv=n(", nous pouvons utiliser des fonctions lambda pour d\xE9finir des op\xE9rations simples de mappage et de filtrage. Utilisons cette astuce pour \xE9liminer les entr\xE9es "),Tr=o("code"),zv=n("None"),Tv=n(" dans notre jeu de donn\xE9es :"),Ld=d(),f(Zs.$$.fragment),Hd=d(),Re=o("p"),Pv=n("Avec les entr\xE9es "),Pr=o("code"),Ov=n("None"),Nv=n(" supprim\xE9es, nous pouvons normaliser notre colonne "),Or=o("code"),Av=n("condition"),Mv=n(" :"),Rd=d(),f(en.$$.fragment),Ud=d(),f(tn.$$.fragment),Vd=d(),ja=o("p"),Iv=n("\xC7a marche ! Maintenant que nous avons nettoy\xE9 les \xE9tiquettes, examinons le nettoyage des avis eux-m\xEAmes."),Fd=d(),mt=o("h2"),St=o("a"),Nr=o("span"),f(sn.$$.fragment),Sv=d(),Ar=o("span"),Lv=n("Cr\xE9ation de nouvelles colonnes"),Jd=d(),qa=o("p"),Hv=n("Chaque fois que vous avez affaire \xE0 des avis de clients, une bonne pratique consiste \xE0 v\xE9rifier le nombre de mots dans chaque avis. Une critique peut \xEAtre un simple mot comme \xAB G\xE9nial ! \xBB ou un essai complet avec des milliers de mots. Selon le cas d\u2019usage, vous devrez g\xE9rer ces extr\xEAmes diff\xE9remment. Pour calculer le nombre de mots dans chaque r\xE9vision, nous utiliserons une heuristique approximative bas\xE9e sur la division de chaque texte par des espaces."),Bd=d(),wa=o("p"),Rv=n("D\xE9finissons une fonction simple qui compte le nombre de mots dans chaque avis :"),Gd=d(),f(nn.$$.fragment),Yd=d(),Z=o("p"),Uv=n("Contrairement \xE0 notre fonction "),Mr=o("code"),Vv=n("lowercase_condition()"),Fv=n(", "),Ir=o("code"),Jv=n("compute_review_length()"),Bv=n(" renvoie un dictionnaire dont la cl\xE9 ne correspond pas \xE0 l\u2019un des noms de colonne du jeu de donn\xE9es. Dans ce cas, lorsque "),Sr=o("code"),Gv=n("compute_review_length()"),Yv=n(" est pass\xE9 \xE0 "),Lr=o("code"),Wv=n("Dataset.map()"),Xv=n(", il est appliqu\xE9 \xE0 toutes les lignes du jeu de donn\xE9es pour cr\xE9er une nouvelle colonne "),Hr=o("code"),Kv=n("review_length"),Qv=n(" :"),Wd=d(),f(an.$$.fragment),Xd=d(),f(on.$$.fragment),Kd=d(),Ue=o("p"),Zv=n("Comme pr\xE9vu, nous pouvons voir qu\u2019une colonne "),Rr=o("code"),eh=n("review_length"),th=n(" a \xE9t\xE9 ajout\xE9e \xE0 notre jeu d\u2019entra\xEEnement. Nous pouvons trier cette nouvelle colonne avec "),Ur=o("code"),sh=n("Dataset.sort()"),nh=n(" pour voir \xE0 quoi ressemblent les valeurs extr\xEAmes :"),Qd=d(),f(rn.$$.fragment),Zd=d(),f(ln.$$.fragment),ep=d(),Da=o("p"),ah=n("Comme nous le soup\xE7onnions, certaines critiques ne contiennent qu\u2019un seul mot, ce qui, bien que cela puisse convenir \xE0 l\u2019analyse des sentiments, n\u2019est pas informatif si nous voulons pr\xE9dire la condition."),tp=d(),f(Lt.$$.fragment),sp=d(),Ve=o("p"),oh=n("Utilisons la fonction "),Vr=o("code"),rh=n("Dataset.filter()"),lh=n(" pour supprimer les avis contenant moins de 30 mots. De la m\xEAme mani\xE8re que nous l\u2019avons fait avec la colonne "),Fr=o("code"),ih=n("condition"),uh=n(", nous pouvons filtrer les avis tr\xE8s courts en exigeant que les avis aient une longueur sup\xE9rieure \xE0 ce seuil :"),np=d(),f(un.$$.fragment),ap=d(),f(dn.$$.fragment),op=d(),ka=o("p"),dh=n("Comme vous pouvez le constater, cela a supprim\xE9 environ 15 % des avis de nos jeux d\u2019entra\xEEnement et de test d\u2019origine."),rp=d(),f(Ht.$$.fragment),lp=d(),Rt=o("p"),ph=n("La derni\xE8re chose \xE0 laquelle nous devons faire face est la pr\xE9sence de caract\xE8res HTML dans nos avis. Nous pouvons utiliser le module "),Jr=o("code"),ch=n("html"),mh=n(" de Python pour supprimer ces caract\xE8res, comme ceci :"),ip=d(),f(pn.$$.fragment),up=d(),f(cn.$$.fragment),dp=d(),Ut=o("p"),fh=n("Nous utilisons "),Br=o("code"),vh=n("Dataset.map()"),hh=n(" pour d\xE9masquer tous les caract\xE8res HTML de notre corpus :"),pp=d(),f(mn.$$.fragment),cp=d(),Vt=o("p"),_h=n("Comme vous pouvez le voir, la m\xE9thode "),Gr=o("code"),gh=n("Dataset.map()"),$h=n(" est tr\xE8s utile pour le traitement des donn\xE9es. Et nous n\u2019avons m\xEAme pas effleur\xE9 la surface de tout ce qu\u2019elle peut faire !"),mp=d(),ft=o("h2"),Ft=o("a"),Yr=o("span"),f(fn.$$.fragment),Eh=d(),ya=o("span"),bh=n("Les superpouvoirs de la m\xE9thode "),Wr=o("code"),xh=n("map()"),fp=d(),le=o("p"),jh=n("La m\xE9thode "),Xr=o("code"),qh=n("Dataset.map()"),wh=n(" prend un argument "),Kr=o("code"),Dh=n("batched"),kh=n(" qui, s\u2019il est d\xE9fini sur "),Qr=o("code"),yh=n("True"),Ch=n(", l\u2019am\xE8ne \xE0 envoyer un batch d\u2019exemples \xE0 la fonction map en une seule fois (la taille du batch est configurable mais est fix\xE9 par d\xE9faut \xE0 1 000). Par exemple, la fonction "),Zr=o("code"),zh=n("map()"),Th=n(" pr\xE9c\xE9dente qui supprime tout le code HTML prend un peu de temps \xE0 s\u2019ex\xE9cuter (vous pouvez lire le temps pris dans les barres de progression). On peut acc\xE9l\xE9rer cela en traitant plusieurs \xE9l\xE9ments en m\xEAme temps \xE0 l\u2019aide d\u2019une compr\xE9hension de liste."),vp=d(),ie=o("p"),Ph=n("Lorsque vous sp\xE9cifiez "),el=o("code"),Oh=n("batched=True"),Nh=n(", la fonction re\xE7oit un dictionnaire avec les champs du jeu de donn\xE9es mais chaque valeur est maintenant une "),tl=o("em"),Ah=n("liste de valeurs"),Mh=n(" et non plus une seule valeur. La valeur retourn\xE9e par "),sl=o("code"),Ih=n("Dataset.map()"),Sh=n(" devrait \xEAtre la m\xEAme : un dictionnaire avec les champs que nous voulons mettre \xE0 jour ou ajouter \xE0 notre jeu de donn\xE9es, et une liste de valeurs. Par exemple, voici une autre fa\xE7on de supprimer tous les caract\xE8res HTML, mais en utilisant "),nl=o("code"),Lh=n("batched=True"),Hh=n(" :"),hp=d(),f(vn.$$.fragment),_p=d(),je=o("p"),Rh=n("Si vous ex\xE9cutez ce code dans un "),al=o("em"),Uh=n("notebook"),Vh=n(", vous verrez que cette commande s\u2019ex\xE9cute beaucoup plus rapidement que la pr\xE9c\xE9dente. Et ce n\u2019est pas parce que nos critiques ont d\xE9j\xE0 \xE9t\xE9 scann\xE9es au format HTML. Si vous r\xE9-ex\xE9cutez l\u2019instruction de la section pr\xE9c\xE9dente (sans "),ol=o("code"),Fh=n("batched=True"),Jh=n("), cela prendra le m\xEAme temps qu\u2019avant. En effet, les compr\xE9hensions de liste sont g\xE9n\xE9ralement plus rapides que l\u2019ex\xE9cution du m\xEAme code dans une boucle "),rl=o("code"),Bh=n("for"),Gh=n(" et nous gagnons \xE9galement en performances en acc\xE9dant \xE0 de nombreux \xE9l\xE9ments en m\xEAme temps au lieu d\u2019un par un."),gp=d(),ee=o("p"),Yh=n("L\u2019utilisation de "),ll=o("code"),Wh=n("Dataset.map()"),Xh=n(" avec "),il=o("code"),Kh=n("batched=True"),Qh=n(" est essentielle pour les "),ul=o("em"),Zh=n("tokenizers rapides"),e_=n(" que nous rencontrerons dans le "),Ca=o("a"),t_=n("Chapitre 6"),s_=n(" et qui peuvent rapidement tokeniser de grandes listes de textes. Par exemple, pour tokeniser toutes les critiques de m\xE9dicaments avec un "),dl=o("em"),n_=n("tokenizer"),a_=n(" rapide nous pouvons utiliser une fonction comme celle-ci :"),$p=d(),f(hn.$$.fragment),Ep=d(),te=o("p"),o_=n("Comme vous l\u2019avez vu dans le "),za=o("a"),r_=n("Chapitre 3"),l_=n(", nous pouvons passer un ou plusieurs exemples au "),pl=o("em"),i_=n("tokenizer"),u_=n(". Nous pouvons donc utiliser cette fonction avec ou sans "),cl=o("code"),d_=n("batched=True"),p_=n(". Profitons-en pour comparer les performances des diff\xE9rentes options. Dans un "),ml=o("em"),c_=n("notebook"),m_=n(", vous pouvez chronom\xE9trer une instruction d\u2019une ligne en ajoutant "),fl=o("code"),f_=n("%time"),v_=n(" avant la ligne de code que vous souhaitez mesurer :"),bp=d(),f(_n.$$.fragment),xp=d(),Jt=o("p"),h_=n("Vous pouvez \xE9galement chronom\xE9trer une cellule enti\xE8re en mettant "),vl=o("code"),__=n("%%time"),g_=n(" au d\xE9but de la cellule. Sur le mat\xE9riel sur lequel nous avons ex\xE9cut\xE9 cela, cela affichait 10,8 s pour cette instruction (c\u2019est le nombre \xE9crit apr\xE8s \u201CWall time\u201D)."),jp=d(),f(Bt.$$.fragment),qp=d(),Gt=o("p"),$_=n("Voici les r\xE9sultats que nous avons obtenus avec et sans batching, avec un "),hl=o("em"),E_=n("tokenizer"),b_=n(" rapide et un lent :"),wp=d(),Yt=o("table"),_l=o("thead"),vt=o("tr"),Ta=o("th"),x_=n("Options"),j_=d(),gn=o("th"),gl=o("em"),q_=n("Tokenizer"),w_=n(" rapide"),D_=d(),$n=o("th"),$l=o("em"),k_=n("Tokenizer"),y_=n(" lent"),C_=d(),En=o("tbody"),ht=o("tr"),Pa=o("td"),El=o("code"),z_=n("batched=True"),T_=d(),Oa=o("td"),P_=n("10.8s"),O_=d(),Na=o("td"),N_=n("4min41s"),A_=d(),_t=o("tr"),Aa=o("td"),bl=o("code"),M_=n("batched=False"),I_=d(),Ma=o("td"),S_=n("59.2s"),L_=d(),Ia=o("td"),H_=n("5min3s"),Dp=d(),ue=o("p"),R_=n("Cela signifie que l\u2019utilisation d\u2019un "),xl=o("em"),U_=n("tokenizer"),V_=n(" rapide avec l\u2019option "),jl=o("code"),F_=n("batched=True"),J_=n(" est 30 fois plus rapide que son homologue lent sans batch. C\u2019est vraiment incroyable ! C\u2019est la raison principale pour laquelle les "),ql=o("em"),B_=n("tokenizers"),G_=n(" rapides sont la valeur par d\xE9faut lors de l\u2019utilisation de "),wl=o("code"),Y_=n("AutoTokenizer"),W_=n(" (et pourquoi ils sont appel\xE9s \xAB rapides \xBB). Ils sont capables d\u2019atteindre une telle vitesse car en coulisses le code de tokenisation est ex\xE9cut\xE9 en Rust qui est un langage facilitant la parall\xE9lisation de l\u2019ex\xE9cution du code."),kp=d(),Fe=o("p"),X_=n("La parall\xE9lisation est \xE9galement la raison du gain de vitesse de pr\xE8s de 6 fois obtenue par le "),Dl=o("em"),K_=n("tokenizer"),Q_=n(" rapide avec batch. Vous ne pouvez pas parall\xE9liser une seule op\xE9ration de tokenisation, mais lorsque vous souhaitez "),kl=o("em"),Z_=n("tokeniser"),e2=n(" de nombreux textes en m\xEAme temps, vous pouvez simplement r\xE9partir l\u2019ex\xE9cution sur plusieurs processus. Chacun responsable de ses propres textes."),yp=d(),ne=o("p"),yl=o("code"),t2=n("Dataset.map()"),s2=n(" poss\xE8de aussi ses propres capacit\xE9s de parall\xE9lisation. Comme elles ne sont pas soutenus par Rust, un "),Cl=o("em"),n2=n("tokenizer"),a2=n(" lent ne peut pas rattraper un rapide mais cela peut toujours \xEAtre utile (surtout si vous utilisez un "),zl=o("em"),o2=n("tokenizer"),r2=n(" qui n\u2019a pas de version rapide). Pour activer le multitraitement, utilisez l\u2019argument "),Tl=o("code"),l2=n("num_proc"),i2=n(" et sp\xE9cifiez le nombre de processus \xE0 utiliser dans votre appel \xE0 "),Pl=o("code"),u2=n("Dataset.map()"),d2=n(" :"),Cp=d(),f(bn.$$.fragment),zp=d(),Sa=o("p"),p2=n("Vous pouvez faire des tests pour d\xE9terminer le nombre optimal de processus \xE0 utiliser. Dans notre cas 8 semble produire le meilleur gain de vitesse. Voici les chiffres que nous avons obtenus avec et sans multitraitement :"),Tp=d(),Wt=o("table"),Ol=o("thead"),gt=o("tr"),La=o("th"),c2=n("Options"),m2=d(),xn=o("th"),Nl=o("em"),f2=n("Tokenizer"),v2=n(" rapide"),h2=d(),jn=o("th"),Al=o("em"),_2=n("Tokenizer"),g2=n(" lent"),$2=d(),Ne=o("tbody"),$t=o("tr"),Ha=o("td"),Ml=o("code"),E2=n("batched=True"),b2=d(),Ra=o("td"),x2=n("10.8s"),j2=d(),Ua=o("td"),q2=n("4min41s"),w2=d(),Et=o("tr"),Va=o("td"),Il=o("code"),D2=n("batched=False"),k2=d(),Fa=o("td"),y2=n("59.2s"),C2=d(),Ja=o("td"),z2=n("5min3s"),T2=d(),bt=o("tr"),Xt=o("td"),Sl=o("code"),P2=n("batched=True"),O2=n(", "),Ll=o("code"),N2=n("num_proc=8"),A2=d(),Ba=o("td"),M2=n("6.52s"),I2=d(),Ga=o("td"),S2=n("41.3s"),L2=d(),xt=o("tr"),Kt=o("td"),Hl=o("code"),H2=n("batched=False"),R2=n(", "),Rl=o("code"),U2=n("num_proc=8"),V2=d(),Ya=o("td"),F2=n("9.49s"),J2=d(),Wa=o("td"),B2=n("45.2s"),Pp=d(),V=o("p"),G2=n("Ce sont des r\xE9sultats beaucoup plus raisonnables pour le "),Ul=o("em"),Y2=n("tokenizer"),W2=n(" lent mais les performances du "),Vl=o("em"),X2=n("tokenizer"),K2=n(" rapide ont \xE9galement \xE9t\xE9 consid\xE9rablement am\xE9lior\xE9es. Notez, cependant, que ce ne sera pas toujours le cas : pour des valeurs de "),Fl=o("code"),Q2=n("num_proc"),Z2=n(" autres que 8, nos tests ont montr\xE9 qu\u2019il \xE9tait plus rapide d\u2019utiliser "),Jl=o("code"),e1=n("batched=True"),t1=n(" sans cette option. En g\xE9n\xE9ral, nous ne recommandons pas d\u2019utiliser le multitraitement pour les "),Bl=o("em"),s1=n("tokenizers"),n1=n(" rapides avec "),Gl=o("code"),a1=n("batched=True"),o1=n("."),Op=d(),f(Qt.$$.fragment),Np=d(),qe=o("p"),r1=n("Toutes ces fonctionnalit\xE9s condens\xE9es en une seule m\xE9thode sont d\xE9j\xE0 assez \xE9tonnantes, mais il y a plus ! Avec "),Yl=o("code"),l1=n("Dataset.map()"),i1=n(" et "),Wl=o("code"),u1=n("batched=True"),d1=n(" vous pouvez modifier le nombre d\u2019\xE9l\xE9ments dans votre jeu de donn\xE9es. Ceci est tr\xE8s utile dans de nombreuses situations o\xF9 vous souhaitez cr\xE9er plusieurs fonctionnalit\xE9s d\u2019entra\xEEnement \xE0 partir d\u2019un exemple. Nous devrons le faire dans le cadre du pr\xE9traitement de plusieurs des t\xE2ches de traitement du langage naturel que nous entreprendrons dans le "),Xa=o("a"),p1=n("Chapitre 7"),c1=n("."),Ap=d(),f(Zt.$$.fragment),Mp=d(),we=o("p"),m1=n("Voyons comment cela fonctionne ! Ici, nous allons tokeniser nos exemples et les tronquer \xE0 une longueur maximale de 128 mais nous demanderons au "),Xl=o("em"),f1=n("tokenizer"),v1=n(" de renvoyer "),Kl=o("em"),h1=n("tous"),_1=n(" les morceaux des textes au lieu du premier. Cela peut \xEAtre fait avec "),Ql=o("code"),g1=n("return_overflowing_tokens=True"),$1=n(" :"),Ip=d(),f(qn.$$.fragment),Sp=d(),es=o("p"),E1=n("Testons cela sur un exemple avant d\u2019utiliser "),Zl=o("code"),b1=n("Dataset.map()"),x1=n(" sur le jeu de donn\xE9es :"),Lp=d(),f(wn.$$.fragment),Hp=d(),f(Dn.$$.fragment),Rp=d(),ts=o("p"),j1=n("Notre premier exemple du jeu d\u2019entra\xEEnement est devenu deux caract\xE9ristiques car il a \xE9t\xE9 segment\xE9 \xE0 plus que le nombre maximum de "),ei=o("em"),q1=n("tokens"),w1=n(" que nous avons sp\xE9cifi\xE9 : le premier de longueur 128 et le second de longueur 49. Faisons maintenant cela pour tous les \xE9l\xE9ments du jeu de donn\xE9es !"),Up=d(),f(kn.$$.fragment),Vp=d(),f(yn.$$.fragment),Fp=d(),Je=o("p"),D1=n("Oh non ! Cela n\u2019a pas fonctionn\xE9 ! Pourquoi ? L\u2019examen du message d\u2019erreur nous donne un indice : il y a une incompatibilit\xE9 dans les longueurs de l\u2019une des colonnes. L\u2019une \xE9tant de longueur 1 463 et l\u2019autre de longueur 1 000. Si vous avez consult\xE9 la "),Cn=o("a"),k1=n("documentation"),y1=n(" de "),ti=o("code"),C1=n("Dataset.map()"),z1=n(", vous vous souvenez peut-\xEAtre qu\u2019il s\u2019agit du nombre d\u2019\xE9chantillons pass\xE9s \xE0 la fonction que nous mappons. Ici, ces 1 000 exemples ont donn\xE9 1 463 nouvelles caract\xE9ristiques, entra\xEEnant une erreur de forme."),Jp=d(),de=o("p"),T1=n("Le probl\xE8me est que nous essayons de m\xE9langer deux jeux de donn\xE9es diff\xE9rents de tailles diff\xE9rentes : les colonnes "),si=o("code"),P1=n("drug_dataset"),O1=n(" auront un certain nombre d\u2019exemples (les 1 000 dans notre erreur), mais le "),ni=o("code"),N1=n("tokenized_dataset"),A1=n(" que nous construisons en aura plus (le 1 463 dans le message d\u2019erreur). Cela ne fonctionne pas pour un "),ai=o("code"),M1=n("Dataset"),I1=n(", nous devons donc soit supprimer les colonnes de l\u2019ancien jeu de donn\xE9es, soit leur donner la m\xEAme taille que dans le nouveau jeu de donn\xE9es. Nous pouvons faire la premi\xE8re option avec l\u2019argument "),oi=o("code"),S1=n("remove_columns"),L1=n(" :"),Bp=d(),f(zn.$$.fragment),Gp=d(),Ka=o("p"),H1=n("Maintenant, cela fonctionne sans erreur. Nous pouvons v\xE9rifier que notre nouveau jeu de donn\xE9es contient beaucoup plus d\u2019\xE9l\xE9ments que le jeu de donn\xE9es d\u2019origine en comparant les longueurs :"),Yp=d(),f(Tn.$$.fragment),Wp=d(),f(Pn.$$.fragment),Xp=d(),De=o("p"),R1=n("Nous avons mentionn\xE9 que nous pouvions \xE9galement r\xE9soudre le probl\xE8me de longueur non concordante en donnant aux anciennes colonnes la m\xEAme taille que les nouvelles. Pour ce faire, nous avons besoin du champ "),ri=o("code"),U1=n("overflow_to_sample_mapping"),V1=n(" que le "),li=o("em"),F1=n("tokenizer"),J1=n(" renvoie lorsque nous d\xE9finissons "),ii=o("code"),B1=n("return_overflowing_tokens=True"),G1=n(". Il nous donne une correspondance entre un nouvel index de caract\xE9ristique et l\u2019index de l\u2019\xE9chantillon dont il est issu. Gr\xE2ce \xE0 cela, nous pouvons associer chaque cl\xE9 pr\xE9sente dans notre jeu de donn\xE9es d\u2019origine \xE0 une liste de valeurs de la bonne taille en r\xE9p\xE9tant les valeurs de chaque exemple autant de fois qu\u2019il g\xE9n\xE8re de nouvelles caract\xE9ristiques :"),Kp=d(),f(On.$$.fragment),Qp=d(),ss=o("p"),Y1=n("Nous pouvons voir que cela fonctionne avec "),ui=o("code"),W1=n("Dataset.map()"),X1=n(" sans que nous ayons besoin de supprimer les anciennes colonnes :"),Zp=d(),f(Nn.$$.fragment),ec=d(),f(An.$$.fragment),tc=d(),Qa=o("p"),K1=n("Nous obtenons le m\xEAme nombre de caract\xE9ristiques d\u2019entra\xEEnement qu\u2019auparavant, mais ici nous avons conserv\xE9 tous les anciens champs. Si vous en avez besoin pour un post-traitement apr\xE8s l\u2019application de votre mod\xE8le, vous pouvez utiliser cette approche."),sc=d(),pe=o("p"),Q1=n("Vous avez maintenant vu comment \u{1F917} "),di=o("em"),Z1=n("Datasets"),eg=n(" peut \xEAtre utilis\xE9 pour pr\xE9traiter un jeu de donn\xE9es de diff\xE9rentes mani\xE8res. Bien que les fonctions de traitement de \u{1F917} "),pi=o("em"),tg=n("Datasets"),sg=n(" couvrent la plupart de vos besoins, il peut arriver que vous deviez passer \xE0 Pandas pour acc\xE9der \xE0 des fonctionnalit\xE9s plus puissantes, telles que "),ci=o("code"),ng=n("DataFrame.groupby()"),ag=n(" ou des API de haut niveau pour la visualisation. Heureusement, \u{1F917} "),mi=o("em"),og=n("Datasets"),rg=n(" est con\xE7u pour \xEAtre interop\xE9rable avec des biblioth\xE8ques telles que Pandas, NumPy, PyTorch, TensorFlow et JAX. Voyons comment cela fonctionne."),nc=d(),jt=o("h2"),ns=o("a"),fi=o("span"),f(Mn.$$.fragment),lg=d(),qt=o("span"),ig=n("De "),vi=o("code"),ug=n("Dataset"),dg=n(" \xE0 "),hi=o("code"),pg=n("DataFrame"),cg=n(" et vice versa"),ac=d(),f(In.$$.fragment),oc=d(),ce=o("p"),mg=n("Pour permettre la conversion entre diverses biblioth\xE8ques tierces, \u{1F917} "),_i=o("em"),fg=n("Datasets"),vg=n(" fournit une fonction "),gi=o("code"),hg=n("Dataset.set_format()"),_g=n(". Cette fonction ne modifie que le "),$i=o("em"),gg=n("format de sortie"),$g=n(" du jeu de donn\xE9es. Vous pouvez donc facilement passer \xE0 un autre format sans affecter le "),Ei=o("em"),Eg=n("format de donn\xE9es"),bg=n(" sous-jacent, qui est Apache Arrow. Le formatage se fait sur place. Pour d\xE9montrer, convertissons notre jeu de donn\xE9es vers Pandas :"),rc=d(),f(Sn.$$.fragment),lc=d(),as=o("p"),xg=n("Maintenant, lorsque nous acc\xE9dons aux \xE9l\xE9ments du jeu de donn\xE9es, nous obtenons un "),bi=o("code"),jg=n("pandas.DataFrame"),qg=n(" au lieu d\u2019un dictionnaire :"),ic=d(),f(Ln.$$.fragment),uc=d(),Be=o("table"),xi=o("thead"),M=o("tr"),dc=o("th"),wg=d(),ji=o("th"),Dg=n("patient_id"),kg=d(),qi=o("th"),yg=n("drugName"),Cg=d(),wi=o("th"),zg=n("condition"),Tg=d(),Di=o("th"),Pg=n("review"),Og=d(),ki=o("th"),Ng=n("rating"),Ag=d(),yi=o("th"),Mg=n("date"),Ig=d(),Ci=o("th"),Sg=n("usefulCount"),Lg=d(),zi=o("th"),Hg=n("review_length"),Rg=d(),wt=o("tbody"),I=o("tr"),Ti=o("th"),Ug=n("0"),Vg=d(),Pi=o("td"),Fg=n("95260"),Jg=d(),Oi=o("td"),Bg=n("Guanfacine"),Gg=d(),Ni=o("td"),Yg=n("adhd"),Wg=d(),Ai=o("td"),Xg=n('"My son is halfway through his fourth week of Intuniv..."'),Kg=d(),Mi=o("td"),Qg=n("8.0"),Zg=d(),Ii=o("td"),e$=n("April 27, 2010"),t$=d(),Si=o("td"),s$=n("192"),n$=d(),Li=o("td"),a$=n("141"),o$=d(),S=o("tr"),Hi=o("th"),r$=n("1"),l$=d(),Ri=o("td"),i$=n("92703"),u$=d(),Ui=o("td"),d$=n("Lybrel"),p$=d(),Vi=o("td"),c$=n("birth control"),m$=d(),Fi=o("td"),f$=n('"I used to take another oral contraceptive, which had 21 pill cycle, and was very happy- very light periods, max 5 days, no other side effects..."'),v$=d(),Ji=o("td"),h$=n("5.0"),_$=d(),Bi=o("td"),g$=n("December 14, 2009"),$$=d(),Gi=o("td"),E$=n("17"),b$=d(),Yi=o("td"),x$=n("134"),j$=d(),L=o("tr"),Wi=o("th"),q$=n("2"),w$=d(),Xi=o("td"),D$=n("138000"),k$=d(),Ki=o("td"),y$=n("Ortho Evra"),C$=d(),Qi=o("td"),z$=n("birth control"),T$=d(),Zi=o("td"),P$=n('"This is my first time using any form of birth control..."'),O$=d(),eu=o("td"),N$=n("8.0"),A$=d(),tu=o("td"),M$=n("November 3, 2015"),I$=d(),su=o("td"),S$=n("10"),L$=d(),nu=o("td"),H$=n("89"),pc=d(),Ge=o("p"),R$=n("Cr\xE9ons un "),au=o("code"),U$=n("pandas.DataFrame"),V$=n(" pour l\u2019ensemble d\u2019entra\xEEnement en s\xE9lectionnant tous les \xE9l\xE9ments de "),ou=o("code"),F$=n('drug_dataset["train"]'),J$=n(" :"),cc=d(),f(Hn.$$.fragment),mc=d(),f(os.$$.fragment),fc=d(),rs=o("p"),B$=n("De l\xE0, nous pouvons utiliser toutes les fonctionnalit\xE9s Pandas que nous voulons. Par exemple, nous pouvons faire un cha\xEEnage sophistiqu\xE9 pour calculer la distribution de classe parmi les entr\xE9es "),ru=o("code"),G$=n("condition"),Y$=n(" :"),vc=d(),f(Rn.$$.fragment),hc=d(),Ye=o("table"),lu=o("thead"),We=o("tr"),_c=o("th"),W$=d(),iu=o("th"),X$=n("condition"),K$=d(),uu=o("th"),Q$=n("frequency"),Z$=d(),he=o("tbody"),Dt=o("tr"),du=o("th"),eE=n("0"),tE=d(),pu=o("td"),sE=n("birth control"),nE=d(),cu=o("td"),aE=n("27655"),oE=d(),kt=o("tr"),mu=o("th"),rE=n("1"),lE=d(),fu=o("td"),iE=n("depression"),uE=d(),vu=o("td"),dE=n("8023"),pE=d(),yt=o("tr"),hu=o("th"),cE=n("2"),mE=d(),_u=o("td"),fE=n("acne"),vE=d(),gu=o("td"),hE=n("5209"),_E=d(),Ct=o("tr"),$u=o("th"),gE=n("3"),$E=d(),Eu=o("td"),EE=n("anxiety"),bE=d(),bu=o("td"),xE=n("4991"),jE=d(),zt=o("tr"),xu=o("th"),qE=n("4"),wE=d(),ju=o("td"),DE=n("pain"),kE=d(),qu=o("td"),yE=n("4744"),gc=d(),Xe=o("p"),CE=n("Et une fois que nous avons termin\xE9 notre analyse Pandas, nous pouvons toujours cr\xE9er un nouvel objet "),wu=o("code"),zE=n("Dataset"),TE=n(" en utilisant la fonction "),Du=o("code"),PE=n("Dataset.from_pandas()"),OE=n(" comme suit :"),$c=d(),f(Un.$$.fragment),Ec=d(),f(Vn.$$.fragment),bc=d(),f(ls.$$.fragment),xc=d(),me=o("p"),NE=n("Ceci conclut notre visite des diff\xE9rentes techniques de pr\xE9traitement disponibles dans \u{1F917} "),ku=o("em"),AE=n("Datasets"),ME=n(". Pour compl\xE9ter la section, cr\xE9ons un ensemble de validation pour pr\xE9parer le jeu de donn\xE9es \xE0 l\u2019entra\xEEnement d\u2019un classifieur. Avant cela, nous allons r\xE9initialiser le format de sortie de "),yu=o("code"),IE=n("drug_dataset"),SE=n(" de "),Cu=o("code"),LE=n('"pandas"'),HE=n(" \xE0 "),zu=o("code"),RE=n('"arrow"'),UE=n(" :"),jc=d(),f(Fn.$$.fragment),qc=d(),Tt=o("h2"),is=o("a"),Tu=o("span"),f(Jn.$$.fragment),VE=d(),Pu=o("span"),FE=n("Cr\xE9ation d'un ensemble de validation"),wc=d(),Za=o("p"),JE=n("Bien que nous ayons un jeu de test que nous pourrions utiliser pour l\u2019\xE9valuation, il est recommand\xE9 de ne pas toucher au jeu de test et de cr\xE9er un jeu de validation s\xE9par\xE9 pendant le d\xE9veloppement. Une fois que vous \xEAtes satisfait des performances de vos mod\xE8les sur l\u2019ensemble de validation, vous pouvez effectuer une derni\xE8re v\xE9rification d\u2019int\xE9grit\xE9 sur l\u2019ensemble test. Ce processus permet d\u2019att\xE9nuer le risque de surentra\xEEnement sur le jeu de test et de d\xE9ployer un mod\xE8le qui \xE9choue sur des donn\xE9es du monde r\xE9el."),Dc=d(),F=o("p"),BE=n("\u{1F917} "),Ou=o("em"),GE=n("Datasets"),YE=n(" fournit une fonction "),Nu=o("code"),WE=n("Dataset.train_test_split()"),XE=n(" bas\xE9e sur la c\xE9l\xE8bre fonctionnalit\xE9 de "),Au=o("code"),KE=n("scikit-learn"),QE=n(". Utilisons-la pour diviser notre ensemble d\u2019entra\xEEnement "),Mu=o("code"),ZE=n("train"),e7=n(" et "),Iu=o("code"),t7=n("validation"),s7=n(" (nous d\xE9finissons l\u2019argument "),Su=o("code"),n7=n("seed"),a7=n(" pour la reproductibilit\xE9) :"),kc=d(),f(Bn.$$.fragment),yc=d(),f(Gn.$$.fragment),Cc=d(),Ke=o("p"),o7=n("G\xE9nial, nous avons maintenant pr\xE9par\xE9 un jeu de donn\xE9es pr\xEAt pour l\u2019entra\xEEnement de certains mod\xE8les ! Dans la "),eo=o("a"),r7=n("section 5"),l7=n(", nous vous montrerons comment t\xE9l\xE9charger des jeux de donn\xE9es sur le "),Lu=o("em"),i7=n("Hub"),u7=n(". Mais pour l\u2019instant, terminons notre analyse en examinant quelques fa\xE7ons d\u2019enregistrer des jeux de donn\xE9es sur votre ordinateur local."),zc=d(),Pt=o("h2"),us=o("a"),Hu=o("span"),f(Yn.$$.fragment),d7=d(),Ru=o("span"),p7=n("Enregistrer un jeu de donn\xE9es"),Tc=d(),f(Wn.$$.fragment),Pc=d(),Qe=o("p"),c7=n("Bien que \u{1F917} "),Uu=o("em"),m7=n("Datasets"),f7=n(" mette en cache chaque jeu de donn\xE9es t\xE9l\xE9charg\xE9 et les op\xE9rations qui y sont effectu\xE9es, il y a des moments o\xF9 vous voudrez enregistrer un jeu de donn\xE9es sur le disque (par exemple, au cas o\xF9 le cache serait supprim\xE9). Comme indiqu\xE9 dans le tableau ci-dessous, \u{1F917} "),Vu=o("em"),v7=n("Datasets"),h7=n(" fournit trois fonctions principales pour enregistrer votre jeu de donn\xE9es dans diff\xE9rents formats :"),Oc=d(),ds=o("table"),Fu=o("thead"),Xn=o("tr"),to=o("th"),_7=n("Format de donn\xE9es"),g7=d(),so=o("th"),$7=n("Fonction"),E7=d(),Ot=o("tbody"),Kn=o("tr"),no=o("td"),b7=n("Arrow"),x7=d(),ao=o("td"),Ju=o("code"),j7=n("Dataset.save_to_disk()"),q7=d(),Qn=o("tr"),oo=o("td"),w7=n("CSV"),D7=d(),ro=o("td"),Bu=o("code"),k7=n("Dataset.to_csv()"),y7=d(),Zn=o("tr"),lo=o("td"),C7=n("JSON"),z7=d(),io=o("td"),Gu=o("code"),T7=n("Dataset.to_json()"),Nc=d(),uo=o("p"),P7=n("Par exemple, enregistrons notre jeu de donn\xE9es nettoy\xE9 au format Arrow :"),Ac=d(),f(ea.$$.fragment),Mc=d(),po=o("p"),O7=n("Cela cr\xE9era un r\xE9pertoire avec la structure suivante :"),Ic=d(),f(ta.$$.fragment),Sc=d(),ke=o("p"),N7=n("o\xF9 nous pouvons voir que chaque division est associ\xE9e \xE0 sa propre table "),Yu=o("em"),A7=n("dataset.arrow"),M7=n(" et \xE0 certaines m\xE9tadonn\xE9es dans "),Wu=o("em"),I7=n("dataset_info.json"),S7=n(" et "),Xu=o("em"),L7=n("state.json"),H7=n(". Vous pouvez consid\xE9rer le format Arrow comme un tableau sophistiqu\xE9 de colonnes et de lignes optimis\xE9 pour la cr\xE9ation d\u2019applications hautes performances qui traitent et transportent de grands ensembles de donn\xE9es."),Lc=d(),ps=o("p"),R7=n("Une fois le jeu de donn\xE9es enregistr\xE9, nous pouvons le charger en utilisant la fonction "),Ku=o("code"),U7=n("load_from_disk()"),V7=n(" comme suit :"),Hc=d(),f(sa.$$.fragment),Rc=d(),f(na.$$.fragment),Uc=d(),cs=o("p"),F7=n("Pour les formats CSV et JSON, nous devons stocker chaque fractionnement dans un fichier s\xE9par\xE9. Pour ce faire, vous pouvez parcourir les cl\xE9s et les valeurs de l\u2019objet "),Qu=o("code"),J7=n("DatasetDict"),B7=n(" :"),Vc=d(),f(aa.$$.fragment),Fc=d(),ms=o("p"),G7=n("Cela enregistre chaque fractionnement au "),oa=o("a"),Y7=n("format JSON Lines"),W7=n(", o\xF9 chaque ligne du jeu de donn\xE9es est stock\xE9e sous la forme d\u2019une seule ligne de JSON. Voici \xE0 quoi ressemble le premier exemple :"),Jc=d(),f(ra.$$.fragment),Bc=d(),f(la.$$.fragment),Gc=d(),fs=o("p"),X7=n("Nous pouvons ensuite utiliser les techniques de "),co=o("a"),K7=n("section 2"),Q7=n(" pour charger les fichiers JSON comme suit :"),Yc=d(),f(ia.$$.fragment),Wc=d(),vs=o("p"),Z7=n("Et c\u2019est tout pour notre excursion dans la manipulation des donn\xE9es avec \u{1F917} "),Zu=o("em"),eb=n("Datasets"),tb=n(" ! Maintenant que nous disposons d\u2019un ensemble de donn\xE9es nettoy\xE9 pour entra\xEEner un mod\xE8le, voici quelques id\xE9es que vous pouvez essayer :"),Xc=d(),hs=o("ol"),ua=o("li"),sb=n("Utilisez les techniques du "),mo=o("a"),nb=n("Chapitre 3"),ab=n(" pour entra\xEEner un classifieur capable de pr\xE9dire l\u2019\xE9tat du patient en fonction de l\u2019examen du m\xE9dicament."),ob=d(),Nt=o("li"),rb=n("Utilisez le pipeline "),ed=o("code"),lb=n("summarization"),ib=n(" du "),fo=o("a"),ub=n("Chapitre 1"),db=n(" pour g\xE9n\xE9rer des r\xE9sum\xE9s des r\xE9visions."),Kc=d(),_s=o("p"),pb=n("Ensuite, nous verrons comment \u{1F917} "),td=o("em"),cb=n("Datasets"),mb=n(" peut vous permettre de travailler avec d\u2019\xE9normes jeux de donn\xE9es sans faire exploser votre ordinateur portable !"),this.h()},l(e){const i=R3('[data-svelte="svelte-1phssyn"]',document.head);c=r(i,"META",{name:!0,content:!0}),i.forEach(s),C=p(e),b=r(e,"H1",{class:!0});var da=l(b);w=r(da,"A",{id:!0,class:!0,href:!0});var sd=l(w);y=r(sd,"SPAN",{});var nd=l(y);v(x.$$.fragment,nd),nd.forEach(s),sd.forEach(s),j=p(da),z=r(da,"SPAN",{});var ad=l(z);q=a(ad,"Il est temps de trancher et de d\xE9couper"),ad.forEach(s),da.forEach(s),D=p(e),v(P.$$.fragment,e),T=p(e),k=r(e,"P",{});var pa=l(k);W=a(pa,"La plupart du temps, les donn\xE9es avec lesquelles vous travaillez ne sont pas parfaitement pr\xE9par\xE9es pour l\u2019entra\xEEnements de mod\xE8les. Dans cette section, nous allons explorer les diff\xE9rentes fonctionnalit\xE9s fournies par \u{1F917} "),A=r(pa,"EM",{});var od=l(A);X=a(od,"Datasets"),od.forEach(s),Pe=a(pa," pour nettoyer vos jeux de donn\xE9es."),pa.forEach(s),K=p(e),v(O.$$.fragment,e),Oe=p(e),U=r(e,"H2",{class:!0});var ca=l(U);se=r(ca,"A",{id:!0,class:!0,href:!0});var rd=l(se);_e=r(rd,"SPAN",{});var Eb=l(_e);v(Q.$$.fragment,Eb),Eb.forEach(s),rd.forEach(s),zs=p(ca),dt=r(ca,"SPAN",{});var bb=l(dt);pt=a(bb,"Trancher et d\xE9couper nos donn\xE9es"),bb.forEach(s),ca.forEach(s),N=p(e),H=r(e,"P",{});var ye=l(H);fa=a(ye,"Semblable \xE0 Pandas, \u{1F917} "),At=r(ye,"EM",{});var xb=l(At);va=a(xb,"Datasets"),xb.forEach(s),ha=a(ye," fournit plusieurs fonctions pour manipuler le contenu des objets "),Mt=r(ye,"CODE",{});var jb=l(Mt);_a=a(jb,"Dataset"),jb.forEach(s),ga=a(ye," et "),Yo=r(ye,"CODE",{});var qb=l(Yo);Mm=a(qb,"DatasetDict"),qb.forEach(s),Im=a(ye,". Nous avons d\xE9j\xE0 rencontr\xE9 la m\xE9thode "),Wo=r(ye,"CODE",{});var wb=l(Wo);Sm=a(wb,"Dataset.map()"),wb.forEach(s),Lm=a(ye," dans le "),$a=r(ye,"A",{href:!0});var Db=l($a);Hm=a(Db,"Chapitre 3"),Db.forEach(s),Rm=a(ye," et dans cette section nous allons explorer certaines des autres fonctions \xE0 notre disposition."),ye.forEach(s),ld=p(e),Me=r(e,"P",{});var vo=l(Me);Um=a(vo,"Pour cet exemple, nous utiliserons le "),Ts=r(vo,"A",{href:!0,rel:!0});var kb=l(Ts);Xo=r(kb,"EM",{});var yb=l(Xo);Vm=a(yb,"Drug Review Dataset"),yb.forEach(s),kb.forEach(s),Fm=a(vo," qui est h\xE9berg\xE9 sur "),Ps=r(vo,"A",{href:!0,rel:!0});var Cb=l(Ps);Ko=r(Cb,"EM",{});var zb=l(Ko);Jm=a(zb,"UC Irvine Machine Learning Repository"),zb.forEach(s),Cb.forEach(s),Bm=a(vo," et contenant des avis de patients sur divers m\xE9dicaments ainsi que la condition trait\xE9e et une note de 10 \xE9toiles sur la satisfaction du patient."),vo.forEach(s),id=p(e),Ie=r(e,"P",{});var ho=l(Ie);Gm=a(ho,"Nous devons d\u2019abord t\xE9l\xE9charger et extraire les donn\xE9es, ce qui peut \xEAtre fait avec les commandes "),Qo=r(ho,"CODE",{});var Tb=l(Qo);Ym=a(Tb,"wget"),Tb.forEach(s),Wm=a(ho," et "),Zo=r(ho,"CODE",{});var Pb=l(Zo);Xm=a(Pb,"unzip"),Pb.forEach(s),Km=a(ho," :"),ho.forEach(s),ud=p(e),v(Os.$$.fragment,e),dd=p(e),ge=r(e,"P",{});var gs=l(ge);Qm=a(gs,"\xC9tant donn\xE9 que TSV n\u2019est qu\u2019une variante de CSV qui utilise des tabulations au lieu de virgules comme s\xE9parateurs, nous pouvons charger ces fichiers en utilisant le script de chargement "),er=r(gs,"CODE",{});var Ob=l(er);Zm=a(Ob,"csv"),Ob.forEach(s),ef=a(gs," et en sp\xE9cifiant l\u2019argument "),tr=r(gs,"CODE",{});var Nb=l(tr);tf=a(Nb,"delimiter"),Nb.forEach(s),sf=a(gs," dans la fonction "),sr=r(gs,"CODE",{});var Ab=l(sr);nf=a(Ab,"load_dataset()"),Ab.forEach(s),af=a(gs," comme suit :"),gs.forEach(s),pd=p(e),v(Ns.$$.fragment,e),cd=p(e),$e=r(e,"P",{});var $s=l($e);of=a($s,"Une bonne pratique lors de toute sorte d\u2019analyse de donn\xE9es consiste \xE0 pr\xE9lever un petit \xE9chantillon al\xE9atoire pour avoir une id\xE9e rapide du type de donn\xE9es avec lesquelles vous travaillez. Dans \u{1F917} "),nr=r($s,"EM",{});var Mb=l(nr);rf=a(Mb,"Datasets"),Mb.forEach(s),lf=a($s,", nous pouvons cr\xE9er un \xE9chantillon al\xE9atoire en encha\xEEnant les fonctions "),ar=r($s,"CODE",{});var Ib=l(ar);uf=a(Ib,"Dataset.shuffle()"),Ib.forEach(s),df=a($s," et "),or=r($s,"CODE",{});var Sb=l(or);pf=a(Sb,"Dataset.select()"),Sb.forEach(s),cf=a($s," :"),$s.forEach(s),md=p(e),v(As.$$.fragment,e),fd=p(e),v(Ms.$$.fragment,e),vd=p(e),Ee=r(e,"P",{});var Es=l(Ee);mf=a(Es,"Notez que nous avons corrig\xE9 la graine dans "),rr=r(Es,"CODE",{});var Lb=l(rr);ff=a(Lb,"Dataset.shuffle()"),Lb.forEach(s),vf=a(Es," \xE0 des fins de reproductibilit\xE9. "),lr=r(Es,"CODE",{});var Hb=l(lr);hf=a(Hb,"Dataset.select()"),Hb.forEach(s),_f=a(Es," attend un it\xE9rable d\u2019indices, nous avons donc pass\xE9 "),ir=r(Es,"CODE",{});var Rb=l(ir);gf=a(Rb,"range(1000)"),Rb.forEach(s),$f=a(Es," pour r\xE9cup\xE9rer les 1 000 premiers exemples du jeu de donn\xE9es m\xE9lang\xE9. \xC0 partir de cet \xE9chantillon, nous pouvons d\xE9j\xE0 voir quelques bizarreries dans notre jeu de donn\xE9es :"),Es.forEach(s),hd=p(e),Se=r(e,"UL",{});var _o=l(Se);Is=r(_o,"LI",{});var Zc=l(Is);Ef=a(Zc,"la colonne "),ur=r(Zc,"CODE",{});var Ub=l(ur);bf=a(Ub,"Unnamed: 0"),Ub.forEach(s),xf=a(Zc," ressemble \xE9trangement \xE0 un identifiant anonyme pour chaque patient,"),Zc.forEach(s),jf=p(_o),Ss=r(_o,"LI",{});var em=l(Ss);qf=a(em,"la colonne "),dr=r(em,"CODE",{});var Vb=l(dr);wf=a(Vb,"condition"),Vb.forEach(s),Df=a(em," comprend un m\xE9lange d\u2019\xE9tiquettes en majuscules et en minuscules,"),em.forEach(s),kf=p(_o),ct=r(_o,"LI",{});var go=l(ct);yf=a(go,"les avis sont de longueur variable et contiennent un m\xE9lange de s\xE9parateurs de lignes Python ("),pr=r(go,"CODE",{});var Fb=l(pr);Cf=a(Fb,"\\r\\n"),Fb.forEach(s),zf=a(go,") ainsi que des codes de caract\xE8res HTML comme "),cr=r(go,"CODE",{});var Jb=l(cr);Tf=a(Jb,"&\\#039;"),Jb.forEach(s),Pf=a(go,"."),go.forEach(s),_o.forEach(s),_d=p(e),be=r(e,"P",{});var bs=l(be);Of=a(bs,"Voyons comment nous pouvons utiliser \u{1F917} "),mr=r(bs,"EM",{});var Bb=l(mr);Nf=a(Bb,"Datasets"),Bb.forEach(s),Af=a(bs," pour traiter chacun de ces probl\xE8mes. Pour tester l\u2019hypoth\xE8se de l\u2019ID patient pour la colonne "),fr=r(bs,"CODE",{});var Gb=l(fr);Mf=a(Gb,"Unnamed : 0"),Gb.forEach(s),If=a(bs,", nous pouvons utiliser la fonction "),vr=r(bs,"CODE",{});var Yb=l(vr);Sf=a(Yb,"Dataset.unique()"),Yb.forEach(s),Lf=a(bs," pour v\xE9rifier que le nombre d\u2019ID correspond au nombre de lignes dans chaque division :"),bs.forEach(s),gd=p(e),v(Ls.$$.fragment,e),$d=p(e),Le=r(e,"P",{});var $o=l(Le);Hf=a($o,"Cela semble confirmer notre hypoth\xE8se, alors nettoyons un peu en renommant la colonne "),hr=r($o,"CODE",{});var Wb=l(hr);Rf=a(Wb,"Unnamed: 0"),Wb.forEach(s),Uf=a($o," en quelque chose d\u2019un peu plus interpr\xE9table. Nous pouvons utiliser la fonction "),_r=r($o,"CODE",{});var Xb=l(_r);Vf=a(Xb,"DatasetDict.rename_column()"),Xb.forEach(s),Ff=a($o," pour renommer la colonne sur les deux divisions en une seule fois :"),$o.forEach(s),Ed=p(e),v(Hs.$$.fragment,e),bd=p(e),v(Rs.$$.fragment,e),xd=p(e),v(It.$$.fragment,e),jd=p(e),ae=r(e,"P",{});var Ze=l(ae);Jf=a(Ze,"Ensuite, normalisons toutes les \xE9tiquettes "),gr=r(Ze,"CODE",{});var Kb=l(gr);Bf=a(Kb,"condition"),Kb.forEach(s),Gf=a(Ze," en utilisant "),$r=r(Ze,"CODE",{});var Qb=l($r);Yf=a(Qb,"Dataset.map()"),Qb.forEach(s),Wf=a(Ze,". Comme nous l\u2019avons fait avec la tokenisation dans le "),Ea=r(Ze,"A",{href:!0});var Zb=l(Ea);Xf=a(Zb,"chapitre 3"),Zb.forEach(s),Kf=a(Ze,", nous pouvons d\xE9finir une fonction simple qui peut \xEAtre appliqu\xE9e sur toutes les lignes de chaque division dans "),Er=r(Ze,"CODE",{});var ex=l(Er);Qf=a(ex,"drug_dataset"),ex.forEach(s),Zf=a(Ze," :"),Ze.forEach(s),qd=p(e),v(Us.$$.fragment,e),wd=p(e),v(Vs.$$.fragment,e),Dd=p(e),oe=r(e,"P",{});var et=l(oe);ev=a(et,"Oh non, nous rencontrons un probl\xE8me avec notre fonction ! \xC0 partir de l\u2019erreur, nous pouvons d\xE9duire que certaines des entr\xE9es de la colonne "),br=r(et,"CODE",{});var tx=l(br);tv=a(tx,"condition"),tx.forEach(s),sv=a(et," sont "),xr=r(et,"CODE",{});var sx=l(xr);nv=a(sx,"None"),sx.forEach(s),av=a(et," ne pouvant donc pas \xEAtre mises en minuscules car ce ne sont pas des cha\xEEnes. Supprimons ces lignes en utilisant "),jr=r(et,"CODE",{});var nx=l(jr);ov=a(nx,"Dataset.filter()"),nx.forEach(s),rv=a(et,", qui fonctionne de mani\xE8re similaire \xE0 "),qr=r(et,"CODE",{});var ax=l(qr);lv=a(ax,"Dataset.map()"),ax.forEach(s),iv=a(et," et attend une fonction qui re\xE7oit un seul exemple issu du jeu de donn\xE9es. Au lieu d\u2019\xE9crire une fonction explicite comme :"),et.forEach(s),kd=p(e),v(Fs.$$.fragment,e),yd=p(e),He=r(e,"P",{});var Eo=l(He);uv=a(Eo,"puis ex\xE9cuter "),wr=r(Eo,"CODE",{});var ox=l(wr);dv=a(ox,"drug_dataset.filter(filter_nones)"),ox.forEach(s),pv=a(Eo,", nous pouvons le faire en une seule ligne en utilisant une "),Dr=r(Eo,"EM",{});var rx=l(Dr);cv=a(rx,"fonction lambda"),rx.forEach(s),mv=a(Eo,". En Python, les fonctions lambda sont de petites fonctions que vous pouvez d\xE9finir sans les nommer explicitement. Ils prennent la forme g\xE9n\xE9rale :"),Eo.forEach(s),Cd=p(e),v(Js.$$.fragment,e),zd=p(e),re=r(e,"P",{});var tt=l(re);fv=a(tt,"o\xF9 "),kr=r(tt,"CODE",{});var lx=l(kr);vv=a(lx,"lambda"),lx.forEach(s),hv=a(tt," est l\u2019un des "),Bs=r(tt,"A",{href:!0,rel:!0});var ix=l(Bs);_v=a(ix,"mots cl\xE9s"),ix.forEach(s),gv=a(tt," sp\xE9ciaux de Python, "),yr=r(tt,"CODE",{});var ux=l(yr);$v=a(ux,"<arguments>"),ux.forEach(s),Ev=a(tt," est une liste/ensemble de valeurs s\xE9par\xE9es par des virgules qui d\xE9finissent les entr\xE9es de la fonction et "),Cr=r(tt,"CODE",{});var dx=l(Cr);bv=a(dx,"<expression>"),dx.forEach(s),xv=a(tt," repr\xE9sente les op\xE9rations que vous souhaitez ex\xE9cuter. Par exemple, nous pouvons d\xE9finir une simple fonction lambda qui met au carr\xE9 un nombre comme suit :"),tt.forEach(s),Td=p(e),v(Gs.$$.fragment,e),Pd=p(e),ba=r(e,"P",{});var px=l(ba);jv=a(px,"Pour appliquer cette fonction \xE0 une entr\xE9e, nous devons l\u2019envelopper ainsi que l\u2019entr\xE9e entre parenth\xE8ses :"),px.forEach(s),Od=p(e),v(Ys.$$.fragment,e),Nd=p(e),v(Ws.$$.fragment,e),Ad=p(e),xa=r(e,"P",{});var cx=l(xa);qv=a(cx,"De m\xEAme, nous pouvons d\xE9finir des fonctions lambda avec plusieurs arguments en les s\xE9parant par des virgules. Par exemple, nous pouvons calculer l\u2019aire d\u2019un triangle comme suit :"),cx.forEach(s),Md=p(e),v(Xs.$$.fragment,e),Id=p(e),v(Ks.$$.fragment,e),Sd=p(e),xe=r(e,"P",{});var xs=l(xe);wv=a(xs,"Les fonctions lambda sont pratiques lorsque vous souhaitez d\xE9finir de petites fonctions \xE0 usage unique (pour plus d\u2019informations \xE0 leur sujet, nous vous recommandons de lire l\u2019excellent "),Qs=r(xs,"A",{href:!0,rel:!0});var mx=l(Qs);Dv=a(mx,"tutoriel Real Python"),mx.forEach(s),kv=a(xs," d\u2019Andr\xE9 Burgaud) . Dans le contexte de la biblioth\xE8que \u{1F917} "),zr=r(xs,"EM",{});var fx=l(zr);yv=a(fx,"Datasets"),fx.forEach(s),Cv=a(xs,", nous pouvons utiliser des fonctions lambda pour d\xE9finir des op\xE9rations simples de mappage et de filtrage. Utilisons cette astuce pour \xE9liminer les entr\xE9es "),Tr=r(xs,"CODE",{});var vx=l(Tr);zv=a(vx,"None"),vx.forEach(s),Tv=a(xs," dans notre jeu de donn\xE9es :"),xs.forEach(s),Ld=p(e),v(Zs.$$.fragment,e),Hd=p(e),Re=r(e,"P",{});var bo=l(Re);Pv=a(bo,"Avec les entr\xE9es "),Pr=r(bo,"CODE",{});var hx=l(Pr);Ov=a(hx,"None"),hx.forEach(s),Nv=a(bo," supprim\xE9es, nous pouvons normaliser notre colonne "),Or=r(bo,"CODE",{});var _x=l(Or);Av=a(_x,"condition"),_x.forEach(s),Mv=a(bo," :"),bo.forEach(s),Rd=p(e),v(en.$$.fragment,e),Ud=p(e),v(tn.$$.fragment,e),Vd=p(e),ja=r(e,"P",{});var gx=l(ja);Iv=a(gx,"\xC7a marche ! Maintenant que nous avons nettoy\xE9 les \xE9tiquettes, examinons le nettoyage des avis eux-m\xEAmes."),gx.forEach(s),Fd=p(e),mt=r(e,"H2",{class:!0});var tm=l(mt);St=r(tm,"A",{id:!0,class:!0,href:!0});var $x=l(St);Nr=r($x,"SPAN",{});var Ex=l(Nr);v(sn.$$.fragment,Ex),Ex.forEach(s),$x.forEach(s),Sv=p(tm),Ar=r(tm,"SPAN",{});var bx=l(Ar);Lv=a(bx,"Cr\xE9ation de nouvelles colonnes"),bx.forEach(s),tm.forEach(s),Jd=p(e),qa=r(e,"P",{});var xx=l(qa);Hv=a(xx,"Chaque fois que vous avez affaire \xE0 des avis de clients, une bonne pratique consiste \xE0 v\xE9rifier le nombre de mots dans chaque avis. Une critique peut \xEAtre un simple mot comme \xAB G\xE9nial ! \xBB ou un essai complet avec des milliers de mots. Selon le cas d\u2019usage, vous devrez g\xE9rer ces extr\xEAmes diff\xE9remment. Pour calculer le nombre de mots dans chaque r\xE9vision, nous utiliserons une heuristique approximative bas\xE9e sur la division de chaque texte par des espaces."),xx.forEach(s),Bd=p(e),wa=r(e,"P",{});var jx=l(wa);Rv=a(jx,"D\xE9finissons une fonction simple qui compte le nombre de mots dans chaque avis :"),jx.forEach(s),Gd=p(e),v(nn.$$.fragment,e),Yd=p(e),Z=r(e,"P",{});var Ce=l(Z);Uv=a(Ce,"Contrairement \xE0 notre fonction "),Mr=r(Ce,"CODE",{});var qx=l(Mr);Vv=a(qx,"lowercase_condition()"),qx.forEach(s),Fv=a(Ce,", "),Ir=r(Ce,"CODE",{});var wx=l(Ir);Jv=a(wx,"compute_review_length()"),wx.forEach(s),Bv=a(Ce," renvoie un dictionnaire dont la cl\xE9 ne correspond pas \xE0 l\u2019un des noms de colonne du jeu de donn\xE9es. Dans ce cas, lorsque "),Sr=r(Ce,"CODE",{});var Dx=l(Sr);Gv=a(Dx,"compute_review_length()"),Dx.forEach(s),Yv=a(Ce," est pass\xE9 \xE0 "),Lr=r(Ce,"CODE",{});var kx=l(Lr);Wv=a(kx,"Dataset.map()"),kx.forEach(s),Xv=a(Ce,", il est appliqu\xE9 \xE0 toutes les lignes du jeu de donn\xE9es pour cr\xE9er une nouvelle colonne "),Hr=r(Ce,"CODE",{});var yx=l(Hr);Kv=a(yx,"review_length"),yx.forEach(s),Qv=a(Ce," :"),Ce.forEach(s),Wd=p(e),v(an.$$.fragment,e),Xd=p(e),v(on.$$.fragment,e),Kd=p(e),Ue=r(e,"P",{});var xo=l(Ue);Zv=a(xo,"Comme pr\xE9vu, nous pouvons voir qu\u2019une colonne "),Rr=r(xo,"CODE",{});var Cx=l(Rr);eh=a(Cx,"review_length"),Cx.forEach(s),th=a(xo," a \xE9t\xE9 ajout\xE9e \xE0 notre jeu d\u2019entra\xEEnement. Nous pouvons trier cette nouvelle colonne avec "),Ur=r(xo,"CODE",{});var zx=l(Ur);sh=a(zx,"Dataset.sort()"),zx.forEach(s),nh=a(xo," pour voir \xE0 quoi ressemblent les valeurs extr\xEAmes :"),xo.forEach(s),Qd=p(e),v(rn.$$.fragment,e),Zd=p(e),v(ln.$$.fragment,e),ep=p(e),Da=r(e,"P",{});var Tx=l(Da);ah=a(Tx,"Comme nous le soup\xE7onnions, certaines critiques ne contiennent qu\u2019un seul mot, ce qui, bien que cela puisse convenir \xE0 l\u2019analyse des sentiments, n\u2019est pas informatif si nous voulons pr\xE9dire la condition."),Tx.forEach(s),tp=p(e),v(Lt.$$.fragment,e),sp=p(e),Ve=r(e,"P",{});var jo=l(Ve);oh=a(jo,"Utilisons la fonction "),Vr=r(jo,"CODE",{});var Px=l(Vr);rh=a(Px,"Dataset.filter()"),Px.forEach(s),lh=a(jo," pour supprimer les avis contenant moins de 30 mots. De la m\xEAme mani\xE8re que nous l\u2019avons fait avec la colonne "),Fr=r(jo,"CODE",{});var Ox=l(Fr);ih=a(Ox,"condition"),Ox.forEach(s),uh=a(jo,", nous pouvons filtrer les avis tr\xE8s courts en exigeant que les avis aient une longueur sup\xE9rieure \xE0 ce seuil :"),jo.forEach(s),np=p(e),v(un.$$.fragment,e),ap=p(e),v(dn.$$.fragment,e),op=p(e),ka=r(e,"P",{});var Nx=l(ka);dh=a(Nx,"Comme vous pouvez le constater, cela a supprim\xE9 environ 15 % des avis de nos jeux d\u2019entra\xEEnement et de test d\u2019origine."),Nx.forEach(s),rp=p(e),v(Ht.$$.fragment,e),lp=p(e),Rt=r(e,"P",{});var sm=l(Rt);ph=a(sm,"La derni\xE8re chose \xE0 laquelle nous devons faire face est la pr\xE9sence de caract\xE8res HTML dans nos avis. Nous pouvons utiliser le module "),Jr=r(sm,"CODE",{});var Ax=l(Jr);ch=a(Ax,"html"),Ax.forEach(s),mh=a(sm," de Python pour supprimer ces caract\xE8res, comme ceci :"),sm.forEach(s),ip=p(e),v(pn.$$.fragment,e),up=p(e),v(cn.$$.fragment,e),dp=p(e),Ut=r(e,"P",{});var nm=l(Ut);fh=a(nm,"Nous utilisons "),Br=r(nm,"CODE",{});var Mx=l(Br);vh=a(Mx,"Dataset.map()"),Mx.forEach(s),hh=a(nm," pour d\xE9masquer tous les caract\xE8res HTML de notre corpus :"),nm.forEach(s),pp=p(e),v(mn.$$.fragment,e),cp=p(e),Vt=r(e,"P",{});var am=l(Vt);_h=a(am,"Comme vous pouvez le voir, la m\xE9thode "),Gr=r(am,"CODE",{});var Ix=l(Gr);gh=a(Ix,"Dataset.map()"),Ix.forEach(s),$h=a(am," est tr\xE8s utile pour le traitement des donn\xE9es. Et nous n\u2019avons m\xEAme pas effleur\xE9 la surface de tout ce qu\u2019elle peut faire !"),am.forEach(s),mp=p(e),ft=r(e,"H2",{class:!0});var om=l(ft);Ft=r(om,"A",{id:!0,class:!0,href:!0});var Sx=l(Ft);Yr=r(Sx,"SPAN",{});var Lx=l(Yr);v(fn.$$.fragment,Lx),Lx.forEach(s),Sx.forEach(s),Eh=p(om),ya=r(om,"SPAN",{});var fb=l(ya);bh=a(fb,"Les superpouvoirs de la m\xE9thode "),Wr=r(fb,"CODE",{});var Hx=l(Wr);xh=a(Hx,"map()"),Hx.forEach(s),fb.forEach(s),om.forEach(s),fp=p(e),le=r(e,"P",{});var st=l(le);jh=a(st,"La m\xE9thode "),Xr=r(st,"CODE",{});var Rx=l(Xr);qh=a(Rx,"Dataset.map()"),Rx.forEach(s),wh=a(st," prend un argument "),Kr=r(st,"CODE",{});var Ux=l(Kr);Dh=a(Ux,"batched"),Ux.forEach(s),kh=a(st," qui, s\u2019il est d\xE9fini sur "),Qr=r(st,"CODE",{});var Vx=l(Qr);yh=a(Vx,"True"),Vx.forEach(s),Ch=a(st,", l\u2019am\xE8ne \xE0 envoyer un batch d\u2019exemples \xE0 la fonction map en une seule fois (la taille du batch est configurable mais est fix\xE9 par d\xE9faut \xE0 1 000). Par exemple, la fonction "),Zr=r(st,"CODE",{});var Fx=l(Zr);zh=a(Fx,"map()"),Fx.forEach(s),Th=a(st," pr\xE9c\xE9dente qui supprime tout le code HTML prend un peu de temps \xE0 s\u2019ex\xE9cuter (vous pouvez lire le temps pris dans les barres de progression). On peut acc\xE9l\xE9rer cela en traitant plusieurs \xE9l\xE9ments en m\xEAme temps \xE0 l\u2019aide d\u2019une compr\xE9hension de liste."),st.forEach(s),vp=p(e),ie=r(e,"P",{});var nt=l(ie);Ph=a(nt,"Lorsque vous sp\xE9cifiez "),el=r(nt,"CODE",{});var Jx=l(el);Oh=a(Jx,"batched=True"),Jx.forEach(s),Nh=a(nt,", la fonction re\xE7oit un dictionnaire avec les champs du jeu de donn\xE9es mais chaque valeur est maintenant une "),tl=r(nt,"EM",{});var Bx=l(tl);Ah=a(Bx,"liste de valeurs"),Bx.forEach(s),Mh=a(nt," et non plus une seule valeur. La valeur retourn\xE9e par "),sl=r(nt,"CODE",{});var Gx=l(sl);Ih=a(Gx,"Dataset.map()"),Gx.forEach(s),Sh=a(nt," devrait \xEAtre la m\xEAme : un dictionnaire avec les champs que nous voulons mettre \xE0 jour ou ajouter \xE0 notre jeu de donn\xE9es, et une liste de valeurs. Par exemple, voici une autre fa\xE7on de supprimer tous les caract\xE8res HTML, mais en utilisant "),nl=r(nt,"CODE",{});var Yx=l(nl);Lh=a(Yx,"batched=True"),Yx.forEach(s),Hh=a(nt," :"),nt.forEach(s),hp=p(e),v(vn.$$.fragment,e),_p=p(e),je=r(e,"P",{});var js=l(je);Rh=a(js,"Si vous ex\xE9cutez ce code dans un "),al=r(js,"EM",{});var Wx=l(al);Uh=a(Wx,"notebook"),Wx.forEach(s),Vh=a(js,", vous verrez que cette commande s\u2019ex\xE9cute beaucoup plus rapidement que la pr\xE9c\xE9dente. Et ce n\u2019est pas parce que nos critiques ont d\xE9j\xE0 \xE9t\xE9 scann\xE9es au format HTML. Si vous r\xE9-ex\xE9cutez l\u2019instruction de la section pr\xE9c\xE9dente (sans "),ol=r(js,"CODE",{});var Xx=l(ol);Fh=a(Xx,"batched=True"),Xx.forEach(s),Jh=a(js,"), cela prendra le m\xEAme temps qu\u2019avant. En effet, les compr\xE9hensions de liste sont g\xE9n\xE9ralement plus rapides que l\u2019ex\xE9cution du m\xEAme code dans une boucle "),rl=r(js,"CODE",{});var Kx=l(rl);Bh=a(Kx,"for"),Kx.forEach(s),Gh=a(js," et nous gagnons \xE9galement en performances en acc\xE9dant \xE0 de nombreux \xE9l\xE9ments en m\xEAme temps au lieu d\u2019un par un."),js.forEach(s),gp=p(e),ee=r(e,"P",{});var ze=l(ee);Yh=a(ze,"L\u2019utilisation de "),ll=r(ze,"CODE",{});var Qx=l(ll);Wh=a(Qx,"Dataset.map()"),Qx.forEach(s),Xh=a(ze," avec "),il=r(ze,"CODE",{});var Zx=l(il);Kh=a(Zx,"batched=True"),Zx.forEach(s),Qh=a(ze," est essentielle pour les "),ul=r(ze,"EM",{});var ej=l(ul);Zh=a(ej,"tokenizers rapides"),ej.forEach(s),e_=a(ze," que nous rencontrerons dans le "),Ca=r(ze,"A",{href:!0});var tj=l(Ca);t_=a(tj,"Chapitre 6"),tj.forEach(s),s_=a(ze," et qui peuvent rapidement tokeniser de grandes listes de textes. Par exemple, pour tokeniser toutes les critiques de m\xE9dicaments avec un "),dl=r(ze,"EM",{});var sj=l(dl);n_=a(sj,"tokenizer"),sj.forEach(s),a_=a(ze," rapide nous pouvons utiliser une fonction comme celle-ci :"),ze.forEach(s),$p=p(e),v(hn.$$.fragment,e),Ep=p(e),te=r(e,"P",{});var Te=l(te);o_=a(Te,"Comme vous l\u2019avez vu dans le "),za=r(Te,"A",{href:!0});var nj=l(za);r_=a(nj,"Chapitre 3"),nj.forEach(s),l_=a(Te,", nous pouvons passer un ou plusieurs exemples au "),pl=r(Te,"EM",{});var aj=l(pl);i_=a(aj,"tokenizer"),aj.forEach(s),u_=a(Te,". Nous pouvons donc utiliser cette fonction avec ou sans "),cl=r(Te,"CODE",{});var oj=l(cl);d_=a(oj,"batched=True"),oj.forEach(s),p_=a(Te,". Profitons-en pour comparer les performances des diff\xE9rentes options. Dans un "),ml=r(Te,"EM",{});var rj=l(ml);c_=a(rj,"notebook"),rj.forEach(s),m_=a(Te,", vous pouvez chronom\xE9trer une instruction d\u2019une ligne en ajoutant "),fl=r(Te,"CODE",{});var lj=l(fl);f_=a(lj,"%time"),lj.forEach(s),v_=a(Te," avant la ligne de code que vous souhaitez mesurer :"),Te.forEach(s),bp=p(e),v(_n.$$.fragment,e),xp=p(e),Jt=r(e,"P",{});var rm=l(Jt);h_=a(rm,"Vous pouvez \xE9galement chronom\xE9trer une cellule enti\xE8re en mettant "),vl=r(rm,"CODE",{});var ij=l(vl);__=a(ij,"%%time"),ij.forEach(s),g_=a(rm," au d\xE9but de la cellule. Sur le mat\xE9riel sur lequel nous avons ex\xE9cut\xE9 cela, cela affichait 10,8 s pour cette instruction (c\u2019est le nombre \xE9crit apr\xE8s \u201CWall time\u201D)."),rm.forEach(s),jp=p(e),v(Bt.$$.fragment,e),qp=p(e),Gt=r(e,"P",{});var lm=l(Gt);$_=a(lm,"Voici les r\xE9sultats que nous avons obtenus avec et sans batching, avec un "),hl=r(lm,"EM",{});var uj=l(hl);E_=a(uj,"tokenizer"),uj.forEach(s),b_=a(lm," rapide et un lent :"),lm.forEach(s),wp=p(e),Yt=r(e,"TABLE",{});var im=l(Yt);_l=r(im,"THEAD",{});var dj=l(_l);vt=r(dj,"TR",{});var qo=l(vt);Ta=r(qo,"TH",{align:!0});var pj=l(Ta);x_=a(pj,"Options"),pj.forEach(s),j_=p(qo),gn=r(qo,"TH",{align:!0});var vb=l(gn);gl=r(vb,"EM",{});var cj=l(gl);q_=a(cj,"Tokenizer"),cj.forEach(s),w_=a(vb," rapide"),vb.forEach(s),D_=p(qo),$n=r(qo,"TH",{align:!0});var hb=l($n);$l=r(hb,"EM",{});var mj=l($l);k_=a(mj,"Tokenizer"),mj.forEach(s),y_=a(hb," lent"),hb.forEach(s),qo.forEach(s),dj.forEach(s),C_=p(im),En=r(im,"TBODY",{});var um=l(En);ht=r(um,"TR",{});var wo=l(ht);Pa=r(wo,"TD",{align:!0});var fj=l(Pa);El=r(fj,"CODE",{});var vj=l(El);z_=a(vj,"batched=True"),vj.forEach(s),fj.forEach(s),T_=p(wo),Oa=r(wo,"TD",{align:!0});var hj=l(Oa);P_=a(hj,"10.8s"),hj.forEach(s),O_=p(wo),Na=r(wo,"TD",{align:!0});var _j=l(Na);N_=a(_j,"4min41s"),_j.forEach(s),wo.forEach(s),A_=p(um),_t=r(um,"TR",{});var Do=l(_t);Aa=r(Do,"TD",{align:!0});var gj=l(Aa);bl=r(gj,"CODE",{});var $j=l(bl);M_=a($j,"batched=False"),$j.forEach(s),gj.forEach(s),I_=p(Do),Ma=r(Do,"TD",{align:!0});var Ej=l(Ma);S_=a(Ej,"59.2s"),Ej.forEach(s),L_=p(Do),Ia=r(Do,"TD",{align:!0});var bj=l(Ia);H_=a(bj,"5min3s"),bj.forEach(s),Do.forEach(s),um.forEach(s),im.forEach(s),Dp=p(e),ue=r(e,"P",{});var at=l(ue);R_=a(at,"Cela signifie que l\u2019utilisation d\u2019un "),xl=r(at,"EM",{});var xj=l(xl);U_=a(xj,"tokenizer"),xj.forEach(s),V_=a(at," rapide avec l\u2019option "),jl=r(at,"CODE",{});var jj=l(jl);F_=a(jj,"batched=True"),jj.forEach(s),J_=a(at," est 30 fois plus rapide que son homologue lent sans batch. C\u2019est vraiment incroyable ! C\u2019est la raison principale pour laquelle les "),ql=r(at,"EM",{});var qj=l(ql);B_=a(qj,"tokenizers"),qj.forEach(s),G_=a(at," rapides sont la valeur par d\xE9faut lors de l\u2019utilisation de "),wl=r(at,"CODE",{});var wj=l(wl);Y_=a(wj,"AutoTokenizer"),wj.forEach(s),W_=a(at," (et pourquoi ils sont appel\xE9s \xAB rapides \xBB). Ils sont capables d\u2019atteindre une telle vitesse car en coulisses le code de tokenisation est ex\xE9cut\xE9 en Rust qui est un langage facilitant la parall\xE9lisation de l\u2019ex\xE9cution du code."),at.forEach(s),kp=p(e),Fe=r(e,"P",{});var ko=l(Fe);X_=a(ko,"La parall\xE9lisation est \xE9galement la raison du gain de vitesse de pr\xE8s de 6 fois obtenue par le "),Dl=r(ko,"EM",{});var Dj=l(Dl);K_=a(Dj,"tokenizer"),Dj.forEach(s),Q_=a(ko," rapide avec batch. Vous ne pouvez pas parall\xE9liser une seule op\xE9ration de tokenisation, mais lorsque vous souhaitez "),kl=r(ko,"EM",{});var kj=l(kl);Z_=a(kj,"tokeniser"),kj.forEach(s),e2=a(ko," de nombreux textes en m\xEAme temps, vous pouvez simplement r\xE9partir l\u2019ex\xE9cution sur plusieurs processus. Chacun responsable de ses propres textes."),ko.forEach(s),yp=p(e),ne=r(e,"P",{});var Ae=l(ne);yl=r(Ae,"CODE",{});var yj=l(yl);t2=a(yj,"Dataset.map()"),yj.forEach(s),s2=a(Ae," poss\xE8de aussi ses propres capacit\xE9s de parall\xE9lisation. Comme elles ne sont pas soutenus par Rust, un "),Cl=r(Ae,"EM",{});var Cj=l(Cl);n2=a(Cj,"tokenizer"),Cj.forEach(s),a2=a(Ae," lent ne peut pas rattraper un rapide mais cela peut toujours \xEAtre utile (surtout si vous utilisez un "),zl=r(Ae,"EM",{});var zj=l(zl);o2=a(zj,"tokenizer"),zj.forEach(s),r2=a(Ae," qui n\u2019a pas de version rapide). Pour activer le multitraitement, utilisez l\u2019argument "),Tl=r(Ae,"CODE",{});var Tj=l(Tl);l2=a(Tj,"num_proc"),Tj.forEach(s),i2=a(Ae," et sp\xE9cifiez le nombre de processus \xE0 utiliser dans votre appel \xE0 "),Pl=r(Ae,"CODE",{});var Pj=l(Pl);u2=a(Pj,"Dataset.map()"),Pj.forEach(s),d2=a(Ae," :"),Ae.forEach(s),Cp=p(e),v(bn.$$.fragment,e),zp=p(e),Sa=r(e,"P",{});var Oj=l(Sa);p2=a(Oj,"Vous pouvez faire des tests pour d\xE9terminer le nombre optimal de processus \xE0 utiliser. Dans notre cas 8 semble produire le meilleur gain de vitesse. Voici les chiffres que nous avons obtenus avec et sans multitraitement :"),Oj.forEach(s),Tp=p(e),Wt=r(e,"TABLE",{});var dm=l(Wt);Ol=r(dm,"THEAD",{});var Nj=l(Ol);gt=r(Nj,"TR",{});var yo=l(gt);La=r(yo,"TH",{align:!0});var Aj=l(La);c2=a(Aj,"Options"),Aj.forEach(s),m2=p(yo),xn=r(yo,"TH",{align:!0});var _b=l(xn);Nl=r(_b,"EM",{});var Mj=l(Nl);f2=a(Mj,"Tokenizer"),Mj.forEach(s),v2=a(_b," rapide"),_b.forEach(s),h2=p(yo),jn=r(yo,"TH",{align:!0});var gb=l(jn);Al=r(gb,"EM",{});var Ij=l(Al);_2=a(Ij,"Tokenizer"),Ij.forEach(s),g2=a(gb," lent"),gb.forEach(s),yo.forEach(s),Nj.forEach(s),$2=p(dm),Ne=r(dm,"TBODY",{});var qs=l(Ne);$t=r(qs,"TR",{});var Co=l($t);Ha=r(Co,"TD",{align:!0});var Sj=l(Ha);Ml=r(Sj,"CODE",{});var Lj=l(Ml);E2=a(Lj,"batched=True"),Lj.forEach(s),Sj.forEach(s),b2=p(Co),Ra=r(Co,"TD",{align:!0});var Hj=l(Ra);x2=a(Hj,"10.8s"),Hj.forEach(s),j2=p(Co),Ua=r(Co,"TD",{align:!0});var Rj=l(Ua);q2=a(Rj,"4min41s"),Rj.forEach(s),Co.forEach(s),w2=p(qs),Et=r(qs,"TR",{});var zo=l(Et);Va=r(zo,"TD",{align:!0});var Uj=l(Va);Il=r(Uj,"CODE",{});var Vj=l(Il);D2=a(Vj,"batched=False"),Vj.forEach(s),Uj.forEach(s),k2=p(zo),Fa=r(zo,"TD",{align:!0});var Fj=l(Fa);y2=a(Fj,"59.2s"),Fj.forEach(s),C2=p(zo),Ja=r(zo,"TD",{align:!0});var Jj=l(Ja);z2=a(Jj,"5min3s"),Jj.forEach(s),zo.forEach(s),T2=p(qs),bt=r(qs,"TR",{});var To=l(bt);Xt=r(To,"TD",{align:!0});var pm=l(Xt);Sl=r(pm,"CODE",{});var Bj=l(Sl);P2=a(Bj,"batched=True"),Bj.forEach(s),O2=a(pm,", "),Ll=r(pm,"CODE",{});var Gj=l(Ll);N2=a(Gj,"num_proc=8"),Gj.forEach(s),pm.forEach(s),A2=p(To),Ba=r(To,"TD",{align:!0});var Yj=l(Ba);M2=a(Yj,"6.52s"),Yj.forEach(s),I2=p(To),Ga=r(To,"TD",{align:!0});var Wj=l(Ga);S2=a(Wj,"41.3s"),Wj.forEach(s),To.forEach(s),L2=p(qs),xt=r(qs,"TR",{});var Po=l(xt);Kt=r(Po,"TD",{align:!0});var cm=l(Kt);Hl=r(cm,"CODE",{});var Xj=l(Hl);H2=a(Xj,"batched=False"),Xj.forEach(s),R2=a(cm,", "),Rl=r(cm,"CODE",{});var Kj=l(Rl);U2=a(Kj,"num_proc=8"),Kj.forEach(s),cm.forEach(s),V2=p(Po),Ya=r(Po,"TD",{align:!0});var Qj=l(Ya);F2=a(Qj,"9.49s"),Qj.forEach(s),J2=p(Po),Wa=r(Po,"TD",{align:!0});var Zj=l(Wa);B2=a(Zj,"45.2s"),Zj.forEach(s),Po.forEach(s),qs.forEach(s),dm.forEach(s),Pp=p(e),V=r(e,"P",{});var fe=l(V);G2=a(fe,"Ce sont des r\xE9sultats beaucoup plus raisonnables pour le "),Ul=r(fe,"EM",{});var eq=l(Ul);Y2=a(eq,"tokenizer"),eq.forEach(s),W2=a(fe," lent mais les performances du "),Vl=r(fe,"EM",{});var tq=l(Vl);X2=a(tq,"tokenizer"),tq.forEach(s),K2=a(fe," rapide ont \xE9galement \xE9t\xE9 consid\xE9rablement am\xE9lior\xE9es. Notez, cependant, que ce ne sera pas toujours le cas : pour des valeurs de "),Fl=r(fe,"CODE",{});var sq=l(Fl);Q2=a(sq,"num_proc"),sq.forEach(s),Z2=a(fe," autres que 8, nos tests ont montr\xE9 qu\u2019il \xE9tait plus rapide d\u2019utiliser "),Jl=r(fe,"CODE",{});var nq=l(Jl);e1=a(nq,"batched=True"),nq.forEach(s),t1=a(fe," sans cette option. En g\xE9n\xE9ral, nous ne recommandons pas d\u2019utiliser le multitraitement pour les "),Bl=r(fe,"EM",{});var aq=l(Bl);s1=a(aq,"tokenizers"),aq.forEach(s),n1=a(fe," rapides avec "),Gl=r(fe,"CODE",{});var oq=l(Gl);a1=a(oq,"batched=True"),oq.forEach(s),o1=a(fe,"."),fe.forEach(s),Op=p(e),v(Qt.$$.fragment,e),Np=p(e),qe=r(e,"P",{});var ws=l(qe);r1=a(ws,"Toutes ces fonctionnalit\xE9s condens\xE9es en une seule m\xE9thode sont d\xE9j\xE0 assez \xE9tonnantes, mais il y a plus ! Avec "),Yl=r(ws,"CODE",{});var rq=l(Yl);l1=a(rq,"Dataset.map()"),rq.forEach(s),i1=a(ws," et "),Wl=r(ws,"CODE",{});var lq=l(Wl);u1=a(lq,"batched=True"),lq.forEach(s),d1=a(ws," vous pouvez modifier le nombre d\u2019\xE9l\xE9ments dans votre jeu de donn\xE9es. Ceci est tr\xE8s utile dans de nombreuses situations o\xF9 vous souhaitez cr\xE9er plusieurs fonctionnalit\xE9s d\u2019entra\xEEnement \xE0 partir d\u2019un exemple. Nous devrons le faire dans le cadre du pr\xE9traitement de plusieurs des t\xE2ches de traitement du langage naturel que nous entreprendrons dans le "),Xa=r(ws,"A",{href:!0});var iq=l(Xa);p1=a(iq,"Chapitre 7"),iq.forEach(s),c1=a(ws,"."),ws.forEach(s),Ap=p(e),v(Zt.$$.fragment,e),Mp=p(e),we=r(e,"P",{});var Ds=l(we);m1=a(Ds,"Voyons comment cela fonctionne ! Ici, nous allons tokeniser nos exemples et les tronquer \xE0 une longueur maximale de 128 mais nous demanderons au "),Xl=r(Ds,"EM",{});var uq=l(Xl);f1=a(uq,"tokenizer"),uq.forEach(s),v1=a(Ds," de renvoyer "),Kl=r(Ds,"EM",{});var dq=l(Kl);h1=a(dq,"tous"),dq.forEach(s),_1=a(Ds," les morceaux des textes au lieu du premier. Cela peut \xEAtre fait avec "),Ql=r(Ds,"CODE",{});var pq=l(Ql);g1=a(pq,"return_overflowing_tokens=True"),pq.forEach(s),$1=a(Ds," :"),Ds.forEach(s),Ip=p(e),v(qn.$$.fragment,e),Sp=p(e),es=r(e,"P",{});var mm=l(es);E1=a(mm,"Testons cela sur un exemple avant d\u2019utiliser "),Zl=r(mm,"CODE",{});var cq=l(Zl);b1=a(cq,"Dataset.map()"),cq.forEach(s),x1=a(mm," sur le jeu de donn\xE9es :"),mm.forEach(s),Lp=p(e),v(wn.$$.fragment,e),Hp=p(e),v(Dn.$$.fragment,e),Rp=p(e),ts=r(e,"P",{});var fm=l(ts);j1=a(fm,"Notre premier exemple du jeu d\u2019entra\xEEnement est devenu deux caract\xE9ristiques car il a \xE9t\xE9 segment\xE9 \xE0 plus que le nombre maximum de "),ei=r(fm,"EM",{});var mq=l(ei);q1=a(mq,"tokens"),mq.forEach(s),w1=a(fm," que nous avons sp\xE9cifi\xE9 : le premier de longueur 128 et le second de longueur 49. Faisons maintenant cela pour tous les \xE9l\xE9ments du jeu de donn\xE9es !"),fm.forEach(s),Up=p(e),v(kn.$$.fragment,e),Vp=p(e),v(yn.$$.fragment,e),Fp=p(e),Je=r(e,"P",{});var Oo=l(Je);D1=a(Oo,"Oh non ! Cela n\u2019a pas fonctionn\xE9 ! Pourquoi ? L\u2019examen du message d\u2019erreur nous donne un indice : il y a une incompatibilit\xE9 dans les longueurs de l\u2019une des colonnes. L\u2019une \xE9tant de longueur 1 463 et l\u2019autre de longueur 1 000. Si vous avez consult\xE9 la "),Cn=r(Oo,"A",{href:!0,rel:!0});var fq=l(Cn);k1=a(fq,"documentation"),fq.forEach(s),y1=a(Oo," de "),ti=r(Oo,"CODE",{});var vq=l(ti);C1=a(vq,"Dataset.map()"),vq.forEach(s),z1=a(Oo,", vous vous souvenez peut-\xEAtre qu\u2019il s\u2019agit du nombre d\u2019\xE9chantillons pass\xE9s \xE0 la fonction que nous mappons. Ici, ces 1 000 exemples ont donn\xE9 1 463 nouvelles caract\xE9ristiques, entra\xEEnant une erreur de forme."),Oo.forEach(s),Jp=p(e),de=r(e,"P",{});var ot=l(de);T1=a(ot,"Le probl\xE8me est que nous essayons de m\xE9langer deux jeux de donn\xE9es diff\xE9rents de tailles diff\xE9rentes : les colonnes "),si=r(ot,"CODE",{});var hq=l(si);P1=a(hq,"drug_dataset"),hq.forEach(s),O1=a(ot," auront un certain nombre d\u2019exemples (les 1 000 dans notre erreur), mais le "),ni=r(ot,"CODE",{});var _q=l(ni);N1=a(_q,"tokenized_dataset"),_q.forEach(s),A1=a(ot," que nous construisons en aura plus (le 1 463 dans le message d\u2019erreur). Cela ne fonctionne pas pour un "),ai=r(ot,"CODE",{});var gq=l(ai);M1=a(gq,"Dataset"),gq.forEach(s),I1=a(ot,", nous devons donc soit supprimer les colonnes de l\u2019ancien jeu de donn\xE9es, soit leur donner la m\xEAme taille que dans le nouveau jeu de donn\xE9es. Nous pouvons faire la premi\xE8re option avec l\u2019argument "),oi=r(ot,"CODE",{});var $q=l(oi);S1=a($q,"remove_columns"),$q.forEach(s),L1=a(ot," :"),ot.forEach(s),Bp=p(e),v(zn.$$.fragment,e),Gp=p(e),Ka=r(e,"P",{});var Eq=l(Ka);H1=a(Eq,"Maintenant, cela fonctionne sans erreur. Nous pouvons v\xE9rifier que notre nouveau jeu de donn\xE9es contient beaucoup plus d\u2019\xE9l\xE9ments que le jeu de donn\xE9es d\u2019origine en comparant les longueurs :"),Eq.forEach(s),Yp=p(e),v(Tn.$$.fragment,e),Wp=p(e),v(Pn.$$.fragment,e),Xp=p(e),De=r(e,"P",{});var ks=l(De);R1=a(ks,"Nous avons mentionn\xE9 que nous pouvions \xE9galement r\xE9soudre le probl\xE8me de longueur non concordante en donnant aux anciennes colonnes la m\xEAme taille que les nouvelles. Pour ce faire, nous avons besoin du champ "),ri=r(ks,"CODE",{});var bq=l(ri);U1=a(bq,"overflow_to_sample_mapping"),bq.forEach(s),V1=a(ks," que le "),li=r(ks,"EM",{});var xq=l(li);F1=a(xq,"tokenizer"),xq.forEach(s),J1=a(ks," renvoie lorsque nous d\xE9finissons "),ii=r(ks,"CODE",{});var jq=l(ii);B1=a(jq,"return_overflowing_tokens=True"),jq.forEach(s),G1=a(ks,". Il nous donne une correspondance entre un nouvel index de caract\xE9ristique et l\u2019index de l\u2019\xE9chantillon dont il est issu. Gr\xE2ce \xE0 cela, nous pouvons associer chaque cl\xE9 pr\xE9sente dans notre jeu de donn\xE9es d\u2019origine \xE0 une liste de valeurs de la bonne taille en r\xE9p\xE9tant les valeurs de chaque exemple autant de fois qu\u2019il g\xE9n\xE8re de nouvelles caract\xE9ristiques :"),ks.forEach(s),Kp=p(e),v(On.$$.fragment,e),Qp=p(e),ss=r(e,"P",{});var vm=l(ss);Y1=a(vm,"Nous pouvons voir que cela fonctionne avec "),ui=r(vm,"CODE",{});var qq=l(ui);W1=a(qq,"Dataset.map()"),qq.forEach(s),X1=a(vm," sans que nous ayons besoin de supprimer les anciennes colonnes :"),vm.forEach(s),Zp=p(e),v(Nn.$$.fragment,e),ec=p(e),v(An.$$.fragment,e),tc=p(e),Qa=r(e,"P",{});var wq=l(Qa);K1=a(wq,"Nous obtenons le m\xEAme nombre de caract\xE9ristiques d\u2019entra\xEEnement qu\u2019auparavant, mais ici nous avons conserv\xE9 tous les anciens champs. Si vous en avez besoin pour un post-traitement apr\xE8s l\u2019application de votre mod\xE8le, vous pouvez utiliser cette approche."),wq.forEach(s),sc=p(e),pe=r(e,"P",{});var rt=l(pe);Q1=a(rt,"Vous avez maintenant vu comment \u{1F917} "),di=r(rt,"EM",{});var Dq=l(di);Z1=a(Dq,"Datasets"),Dq.forEach(s),eg=a(rt," peut \xEAtre utilis\xE9 pour pr\xE9traiter un jeu de donn\xE9es de diff\xE9rentes mani\xE8res. Bien que les fonctions de traitement de \u{1F917} "),pi=r(rt,"EM",{});var kq=l(pi);tg=a(kq,"Datasets"),kq.forEach(s),sg=a(rt," couvrent la plupart de vos besoins, il peut arriver que vous deviez passer \xE0 Pandas pour acc\xE9der \xE0 des fonctionnalit\xE9s plus puissantes, telles que "),ci=r(rt,"CODE",{});var yq=l(ci);ng=a(yq,"DataFrame.groupby()"),yq.forEach(s),ag=a(rt," ou des API de haut niveau pour la visualisation. Heureusement, \u{1F917} "),mi=r(rt,"EM",{});var Cq=l(mi);og=a(Cq,"Datasets"),Cq.forEach(s),rg=a(rt," est con\xE7u pour \xEAtre interop\xE9rable avec des biblioth\xE8ques telles que Pandas, NumPy, PyTorch, TensorFlow et JAX. Voyons comment cela fonctionne."),rt.forEach(s),nc=p(e),jt=r(e,"H2",{class:!0});var hm=l(jt);ns=r(hm,"A",{id:!0,class:!0,href:!0});var zq=l(ns);fi=r(zq,"SPAN",{});var Tq=l(fi);v(Mn.$$.fragment,Tq),Tq.forEach(s),zq.forEach(s),lg=p(hm),qt=r(hm,"SPAN",{});var No=l(qt);ig=a(No,"De "),vi=r(No,"CODE",{});var Pq=l(vi);ug=a(Pq,"Dataset"),Pq.forEach(s),dg=a(No," \xE0 "),hi=r(No,"CODE",{});var Oq=l(hi);pg=a(Oq,"DataFrame"),Oq.forEach(s),cg=a(No," et vice versa"),No.forEach(s),hm.forEach(s),ac=p(e),v(In.$$.fragment,e),oc=p(e),ce=r(e,"P",{});var lt=l(ce);mg=a(lt,"Pour permettre la conversion entre diverses biblioth\xE8ques tierces, \u{1F917} "),_i=r(lt,"EM",{});var Nq=l(_i);fg=a(Nq,"Datasets"),Nq.forEach(s),vg=a(lt," fournit une fonction "),gi=r(lt,"CODE",{});var Aq=l(gi);hg=a(Aq,"Dataset.set_format()"),Aq.forEach(s),_g=a(lt,". Cette fonction ne modifie que le "),$i=r(lt,"EM",{});var Mq=l($i);gg=a(Mq,"format de sortie"),Mq.forEach(s),$g=a(lt," du jeu de donn\xE9es. Vous pouvez donc facilement passer \xE0 un autre format sans affecter le "),Ei=r(lt,"EM",{});var Iq=l(Ei);Eg=a(Iq,"format de donn\xE9es"),Iq.forEach(s),bg=a(lt," sous-jacent, qui est Apache Arrow. Le formatage se fait sur place. Pour d\xE9montrer, convertissons notre jeu de donn\xE9es vers Pandas :"),lt.forEach(s),rc=p(e),v(Sn.$$.fragment,e),lc=p(e),as=r(e,"P",{});var _m=l(as);xg=a(_m,"Maintenant, lorsque nous acc\xE9dons aux \xE9l\xE9ments du jeu de donn\xE9es, nous obtenons un "),bi=r(_m,"CODE",{});var Sq=l(bi);jg=a(Sq,"pandas.DataFrame"),Sq.forEach(s),qg=a(_m," au lieu d\u2019un dictionnaire :"),_m.forEach(s),ic=p(e),v(Ln.$$.fragment,e),uc=p(e),Be=r(e,"TABLE",{border:!0,class:!0});var gm=l(Be);xi=r(gm,"THEAD",{});var Lq=l(xi);M=r(Lq,"TR",{style:!0});var J=l(M);dc=r(J,"TH",{}),l(dc).forEach(s),wg=p(J),ji=r(J,"TH",{});var Hq=l(ji);Dg=a(Hq,"patient_id"),Hq.forEach(s),kg=p(J),qi=r(J,"TH",{});var Rq=l(qi);yg=a(Rq,"drugName"),Rq.forEach(s),Cg=p(J),wi=r(J,"TH",{});var Uq=l(wi);zg=a(Uq,"condition"),Uq.forEach(s),Tg=p(J),Di=r(J,"TH",{});var Vq=l(Di);Pg=a(Vq,"review"),Vq.forEach(s),Og=p(J),ki=r(J,"TH",{});var Fq=l(ki);Ng=a(Fq,"rating"),Fq.forEach(s),Ag=p(J),yi=r(J,"TH",{});var Jq=l(yi);Mg=a(Jq,"date"),Jq.forEach(s),Ig=p(J),Ci=r(J,"TH",{});var Bq=l(Ci);Sg=a(Bq,"usefulCount"),Bq.forEach(s),Lg=p(J),zi=r(J,"TH",{});var Gq=l(zi);Hg=a(Gq,"review_length"),Gq.forEach(s),J.forEach(s),Lq.forEach(s),Rg=p(gm),wt=r(gm,"TBODY",{});var Ao=l(wt);I=r(Ao,"TR",{});var B=l(I);Ti=r(B,"TH",{});var Yq=l(Ti);Ug=a(Yq,"0"),Yq.forEach(s),Vg=p(B),Pi=r(B,"TD",{});var Wq=l(Pi);Fg=a(Wq,"95260"),Wq.forEach(s),Jg=p(B),Oi=r(B,"TD",{});var Xq=l(Oi);Bg=a(Xq,"Guanfacine"),Xq.forEach(s),Gg=p(B),Ni=r(B,"TD",{});var Kq=l(Ni);Yg=a(Kq,"adhd"),Kq.forEach(s),Wg=p(B),Ai=r(B,"TD",{});var Qq=l(Ai);Xg=a(Qq,'"My son is halfway through his fourth week of Intuniv..."'),Qq.forEach(s),Kg=p(B),Mi=r(B,"TD",{});var Zq=l(Mi);Qg=a(Zq,"8.0"),Zq.forEach(s),Zg=p(B),Ii=r(B,"TD",{});var e0=l(Ii);e$=a(e0,"April 27, 2010"),e0.forEach(s),t$=p(B),Si=r(B,"TD",{});var t0=l(Si);s$=a(t0,"192"),t0.forEach(s),n$=p(B),Li=r(B,"TD",{});var s0=l(Li);a$=a(s0,"141"),s0.forEach(s),B.forEach(s),o$=p(Ao),S=r(Ao,"TR",{});var G=l(S);Hi=r(G,"TH",{});var n0=l(Hi);r$=a(n0,"1"),n0.forEach(s),l$=p(G),Ri=r(G,"TD",{});var a0=l(Ri);i$=a(a0,"92703"),a0.forEach(s),u$=p(G),Ui=r(G,"TD",{});var o0=l(Ui);d$=a(o0,"Lybrel"),o0.forEach(s),p$=p(G),Vi=r(G,"TD",{});var r0=l(Vi);c$=a(r0,"birth control"),r0.forEach(s),m$=p(G),Fi=r(G,"TD",{});var l0=l(Fi);f$=a(l0,'"I used to take another oral contraceptive, which had 21 pill cycle, and was very happy- very light periods, max 5 days, no other side effects..."'),l0.forEach(s),v$=p(G),Ji=r(G,"TD",{});var i0=l(Ji);h$=a(i0,"5.0"),i0.forEach(s),_$=p(G),Bi=r(G,"TD",{});var u0=l(Bi);g$=a(u0,"December 14, 2009"),u0.forEach(s),$$=p(G),Gi=r(G,"TD",{});var d0=l(Gi);E$=a(d0,"17"),d0.forEach(s),b$=p(G),Yi=r(G,"TD",{});var p0=l(Yi);x$=a(p0,"134"),p0.forEach(s),G.forEach(s),j$=p(Ao),L=r(Ao,"TR",{});var Y=l(L);Wi=r(Y,"TH",{});var c0=l(Wi);q$=a(c0,"2"),c0.forEach(s),w$=p(Y),Xi=r(Y,"TD",{});var m0=l(Xi);D$=a(m0,"138000"),m0.forEach(s),k$=p(Y),Ki=r(Y,"TD",{});var f0=l(Ki);y$=a(f0,"Ortho Evra"),f0.forEach(s),C$=p(Y),Qi=r(Y,"TD",{});var v0=l(Qi);z$=a(v0,"birth control"),v0.forEach(s),T$=p(Y),Zi=r(Y,"TD",{});var h0=l(Zi);P$=a(h0,'"This is my first time using any form of birth control..."'),h0.forEach(s),O$=p(Y),eu=r(Y,"TD",{});var _0=l(eu);N$=a(_0,"8.0"),_0.forEach(s),A$=p(Y),tu=r(Y,"TD",{});var g0=l(tu);M$=a(g0,"November 3, 2015"),g0.forEach(s),I$=p(Y),su=r(Y,"TD",{});var $0=l(su);S$=a($0,"10"),$0.forEach(s),L$=p(Y),nu=r(Y,"TD",{});var E0=l(nu);H$=a(E0,"89"),E0.forEach(s),Y.forEach(s),Ao.forEach(s),gm.forEach(s),pc=p(e),Ge=r(e,"P",{});var Mo=l(Ge);R$=a(Mo,"Cr\xE9ons un "),au=r(Mo,"CODE",{});var b0=l(au);U$=a(b0,"pandas.DataFrame"),b0.forEach(s),V$=a(Mo," pour l\u2019ensemble d\u2019entra\xEEnement en s\xE9lectionnant tous les \xE9l\xE9ments de "),ou=r(Mo,"CODE",{});var x0=l(ou);F$=a(x0,'drug_dataset["train"]'),x0.forEach(s),J$=a(Mo," :"),Mo.forEach(s),cc=p(e),v(Hn.$$.fragment,e),mc=p(e),v(os.$$.fragment,e),fc=p(e),rs=r(e,"P",{});var $m=l(rs);B$=a($m,"De l\xE0, nous pouvons utiliser toutes les fonctionnalit\xE9s Pandas que nous voulons. Par exemple, nous pouvons faire un cha\xEEnage sophistiqu\xE9 pour calculer la distribution de classe parmi les entr\xE9es "),ru=r($m,"CODE",{});var j0=l(ru);G$=a(j0,"condition"),j0.forEach(s),Y$=a($m," :"),$m.forEach(s),vc=p(e),v(Rn.$$.fragment,e),hc=p(e),Ye=r(e,"TABLE",{border:!0,class:!0});var Em=l(Ye);lu=r(Em,"THEAD",{});var q0=l(lu);We=r(q0,"TR",{style:!0});var Io=l(We);_c=r(Io,"TH",{}),l(_c).forEach(s),W$=p(Io),iu=r(Io,"TH",{});var w0=l(iu);X$=a(w0,"condition"),w0.forEach(s),K$=p(Io),uu=r(Io,"TH",{});var D0=l(uu);Q$=a(D0,"frequency"),D0.forEach(s),Io.forEach(s),q0.forEach(s),Z$=p(Em),he=r(Em,"TBODY",{});var it=l(he);Dt=r(it,"TR",{});var So=l(Dt);du=r(So,"TH",{});var k0=l(du);eE=a(k0,"0"),k0.forEach(s),tE=p(So),pu=r(So,"TD",{});var y0=l(pu);sE=a(y0,"birth control"),y0.forEach(s),nE=p(So),cu=r(So,"TD",{});var C0=l(cu);aE=a(C0,"27655"),C0.forEach(s),So.forEach(s),oE=p(it),kt=r(it,"TR",{});var Lo=l(kt);mu=r(Lo,"TH",{});var z0=l(mu);rE=a(z0,"1"),z0.forEach(s),lE=p(Lo),fu=r(Lo,"TD",{});var T0=l(fu);iE=a(T0,"depression"),T0.forEach(s),uE=p(Lo),vu=r(Lo,"TD",{});var P0=l(vu);dE=a(P0,"8023"),P0.forEach(s),Lo.forEach(s),pE=p(it),yt=r(it,"TR",{});var Ho=l(yt);hu=r(Ho,"TH",{});var O0=l(hu);cE=a(O0,"2"),O0.forEach(s),mE=p(Ho),_u=r(Ho,"TD",{});var N0=l(_u);fE=a(N0,"acne"),N0.forEach(s),vE=p(Ho),gu=r(Ho,"TD",{});var A0=l(gu);hE=a(A0,"5209"),A0.forEach(s),Ho.forEach(s),_E=p(it),Ct=r(it,"TR",{});var Ro=l(Ct);$u=r(Ro,"TH",{});var M0=l($u);gE=a(M0,"3"),M0.forEach(s),$E=p(Ro),Eu=r(Ro,"TD",{});var I0=l(Eu);EE=a(I0,"anxiety"),I0.forEach(s),bE=p(Ro),bu=r(Ro,"TD",{});var S0=l(bu);xE=a(S0,"4991"),S0.forEach(s),Ro.forEach(s),jE=p(it),zt=r(it,"TR",{});var Uo=l(zt);xu=r(Uo,"TH",{});var L0=l(xu);qE=a(L0,"4"),L0.forEach(s),wE=p(Uo),ju=r(Uo,"TD",{});var H0=l(ju);DE=a(H0,"pain"),H0.forEach(s),kE=p(Uo),qu=r(Uo,"TD",{});var R0=l(qu);yE=a(R0,"4744"),R0.forEach(s),Uo.forEach(s),it.forEach(s),Em.forEach(s),gc=p(e),Xe=r(e,"P",{});var Vo=l(Xe);CE=a(Vo,"Et une fois que nous avons termin\xE9 notre analyse Pandas, nous pouvons toujours cr\xE9er un nouvel objet "),wu=r(Vo,"CODE",{});var U0=l(wu);zE=a(U0,"Dataset"),U0.forEach(s),TE=a(Vo," en utilisant la fonction "),Du=r(Vo,"CODE",{});var V0=l(Du);PE=a(V0,"Dataset.from_pandas()"),V0.forEach(s),OE=a(Vo," comme suit :"),Vo.forEach(s),$c=p(e),v(Un.$$.fragment,e),Ec=p(e),v(Vn.$$.fragment,e),bc=p(e),v(ls.$$.fragment,e),xc=p(e),me=r(e,"P",{});var ut=l(me);NE=a(ut,"Ceci conclut notre visite des diff\xE9rentes techniques de pr\xE9traitement disponibles dans \u{1F917} "),ku=r(ut,"EM",{});var F0=l(ku);AE=a(F0,"Datasets"),F0.forEach(s),ME=a(ut,". Pour compl\xE9ter la section, cr\xE9ons un ensemble de validation pour pr\xE9parer le jeu de donn\xE9es \xE0 l\u2019entra\xEEnement d\u2019un classifieur. Avant cela, nous allons r\xE9initialiser le format de sortie de "),yu=r(ut,"CODE",{});var J0=l(yu);IE=a(J0,"drug_dataset"),J0.forEach(s),SE=a(ut," de "),Cu=r(ut,"CODE",{});var B0=l(Cu);LE=a(B0,'"pandas"'),B0.forEach(s),HE=a(ut," \xE0 "),zu=r(ut,"CODE",{});var G0=l(zu);RE=a(G0,'"arrow"'),G0.forEach(s),UE=a(ut," :"),ut.forEach(s),jc=p(e),v(Fn.$$.fragment,e),qc=p(e),Tt=r(e,"H2",{class:!0});var bm=l(Tt);is=r(bm,"A",{id:!0,class:!0,href:!0});var Y0=l(is);Tu=r(Y0,"SPAN",{});var W0=l(Tu);v(Jn.$$.fragment,W0),W0.forEach(s),Y0.forEach(s),VE=p(bm),Pu=r(bm,"SPAN",{});var X0=l(Pu);FE=a(X0,"Cr\xE9ation d'un ensemble de validation"),X0.forEach(s),bm.forEach(s),wc=p(e),Za=r(e,"P",{});var K0=l(Za);JE=a(K0,"Bien que nous ayons un jeu de test que nous pourrions utiliser pour l\u2019\xE9valuation, il est recommand\xE9 de ne pas toucher au jeu de test et de cr\xE9er un jeu de validation s\xE9par\xE9 pendant le d\xE9veloppement. Une fois que vous \xEAtes satisfait des performances de vos mod\xE8les sur l\u2019ensemble de validation, vous pouvez effectuer une derni\xE8re v\xE9rification d\u2019int\xE9grit\xE9 sur l\u2019ensemble test. Ce processus permet d\u2019att\xE9nuer le risque de surentra\xEEnement sur le jeu de test et de d\xE9ployer un mod\xE8le qui \xE9choue sur des donn\xE9es du monde r\xE9el."),K0.forEach(s),Dc=p(e),F=r(e,"P",{});var ve=l(F);BE=a(ve,"\u{1F917} "),Ou=r(ve,"EM",{});var Q0=l(Ou);GE=a(Q0,"Datasets"),Q0.forEach(s),YE=a(ve," fournit une fonction "),Nu=r(ve,"CODE",{});var Z0=l(Nu);WE=a(Z0,"Dataset.train_test_split()"),Z0.forEach(s),XE=a(ve," bas\xE9e sur la c\xE9l\xE8bre fonctionnalit\xE9 de "),Au=r(ve,"CODE",{});var e3=l(Au);KE=a(e3,"scikit-learn"),e3.forEach(s),QE=a(ve,". Utilisons-la pour diviser notre ensemble d\u2019entra\xEEnement "),Mu=r(ve,"CODE",{});var t3=l(Mu);ZE=a(t3,"train"),t3.forEach(s),e7=a(ve," et "),Iu=r(ve,"CODE",{});var s3=l(Iu);t7=a(s3,"validation"),s3.forEach(s),s7=a(ve," (nous d\xE9finissons l\u2019argument "),Su=r(ve,"CODE",{});var n3=l(Su);n7=a(n3,"seed"),n3.forEach(s),a7=a(ve," pour la reproductibilit\xE9) :"),ve.forEach(s),kc=p(e),v(Bn.$$.fragment,e),yc=p(e),v(Gn.$$.fragment,e),Cc=p(e),Ke=r(e,"P",{});var Fo=l(Ke);o7=a(Fo,"G\xE9nial, nous avons maintenant pr\xE9par\xE9 un jeu de donn\xE9es pr\xEAt pour l\u2019entra\xEEnement de certains mod\xE8les ! Dans la "),eo=r(Fo,"A",{href:!0});var a3=l(eo);r7=a(a3,"section 5"),a3.forEach(s),l7=a(Fo,", nous vous montrerons comment t\xE9l\xE9charger des jeux de donn\xE9es sur le "),Lu=r(Fo,"EM",{});var o3=l(Lu);i7=a(o3,"Hub"),o3.forEach(s),u7=a(Fo,". Mais pour l\u2019instant, terminons notre analyse en examinant quelques fa\xE7ons d\u2019enregistrer des jeux de donn\xE9es sur votre ordinateur local."),Fo.forEach(s),zc=p(e),Pt=r(e,"H2",{class:!0});var xm=l(Pt);us=r(xm,"A",{id:!0,class:!0,href:!0});var r3=l(us);Hu=r(r3,"SPAN",{});var l3=l(Hu);v(Yn.$$.fragment,l3),l3.forEach(s),r3.forEach(s),d7=p(xm),Ru=r(xm,"SPAN",{});var i3=l(Ru);p7=a(i3,"Enregistrer un jeu de donn\xE9es"),i3.forEach(s),xm.forEach(s),Tc=p(e),v(Wn.$$.fragment,e),Pc=p(e),Qe=r(e,"P",{});var Jo=l(Qe);c7=a(Jo,"Bien que \u{1F917} "),Uu=r(Jo,"EM",{});var u3=l(Uu);m7=a(u3,"Datasets"),u3.forEach(s),f7=a(Jo," mette en cache chaque jeu de donn\xE9es t\xE9l\xE9charg\xE9 et les op\xE9rations qui y sont effectu\xE9es, il y a des moments o\xF9 vous voudrez enregistrer un jeu de donn\xE9es sur le disque (par exemple, au cas o\xF9 le cache serait supprim\xE9). Comme indiqu\xE9 dans le tableau ci-dessous, \u{1F917} "),Vu=r(Jo,"EM",{});var d3=l(Vu);v7=a(d3,"Datasets"),d3.forEach(s),h7=a(Jo," fournit trois fonctions principales pour enregistrer votre jeu de donn\xE9es dans diff\xE9rents formats :"),Jo.forEach(s),Oc=p(e),ds=r(e,"TABLE",{});var jm=l(ds);Fu=r(jm,"THEAD",{});var p3=l(Fu);Xn=r(p3,"TR",{});var qm=l(Xn);to=r(qm,"TH",{align:!0});var c3=l(to);_7=a(c3,"Format de donn\xE9es"),c3.forEach(s),g7=p(qm),so=r(qm,"TH",{align:!0});var m3=l(so);$7=a(m3,"Fonction"),m3.forEach(s),qm.forEach(s),p3.forEach(s),E7=p(jm),Ot=r(jm,"TBODY",{});var Bo=l(Ot);Kn=r(Bo,"TR",{});var wm=l(Kn);no=r(wm,"TD",{align:!0});var f3=l(no);b7=a(f3,"Arrow"),f3.forEach(s),x7=p(wm),ao=r(wm,"TD",{align:!0});var v3=l(ao);Ju=r(v3,"CODE",{});var h3=l(Ju);j7=a(h3,"Dataset.save_to_disk()"),h3.forEach(s),v3.forEach(s),wm.forEach(s),q7=p(Bo),Qn=r(Bo,"TR",{});var Dm=l(Qn);oo=r(Dm,"TD",{align:!0});var _3=l(oo);w7=a(_3,"CSV"),_3.forEach(s),D7=p(Dm),ro=r(Dm,"TD",{align:!0});var g3=l(ro);Bu=r(g3,"CODE",{});var $3=l(Bu);k7=a($3,"Dataset.to_csv()"),$3.forEach(s),g3.forEach(s),Dm.forEach(s),y7=p(Bo),Zn=r(Bo,"TR",{});var km=l(Zn);lo=r(km,"TD",{align:!0});var E3=l(lo);C7=a(E3,"JSON"),E3.forEach(s),z7=p(km),io=r(km,"TD",{align:!0});var b3=l(io);Gu=r(b3,"CODE",{});var x3=l(Gu);T7=a(x3,"Dataset.to_json()"),x3.forEach(s),b3.forEach(s),km.forEach(s),Bo.forEach(s),jm.forEach(s),Nc=p(e),uo=r(e,"P",{});var j3=l(uo);P7=a(j3,"Par exemple, enregistrons notre jeu de donn\xE9es nettoy\xE9 au format Arrow :"),j3.forEach(s),Ac=p(e),v(ea.$$.fragment,e),Mc=p(e),po=r(e,"P",{});var q3=l(po);O7=a(q3,"Cela cr\xE9era un r\xE9pertoire avec la structure suivante :"),q3.forEach(s),Ic=p(e),v(ta.$$.fragment,e),Sc=p(e),ke=r(e,"P",{});var ys=l(ke);N7=a(ys,"o\xF9 nous pouvons voir que chaque division est associ\xE9e \xE0 sa propre table "),Yu=r(ys,"EM",{});var w3=l(Yu);A7=a(w3,"dataset.arrow"),w3.forEach(s),M7=a(ys," et \xE0 certaines m\xE9tadonn\xE9es dans "),Wu=r(ys,"EM",{});var D3=l(Wu);I7=a(D3,"dataset_info.json"),D3.forEach(s),S7=a(ys," et "),Xu=r(ys,"EM",{});var k3=l(Xu);L7=a(k3,"state.json"),k3.forEach(s),H7=a(ys,". Vous pouvez consid\xE9rer le format Arrow comme un tableau sophistiqu\xE9 de colonnes et de lignes optimis\xE9 pour la cr\xE9ation d\u2019applications hautes performances qui traitent et transportent de grands ensembles de donn\xE9es."),ys.forEach(s),Lc=p(e),ps=r(e,"P",{});var ym=l(ps);R7=a(ym,"Une fois le jeu de donn\xE9es enregistr\xE9, nous pouvons le charger en utilisant la fonction "),Ku=r(ym,"CODE",{});var y3=l(Ku);U7=a(y3,"load_from_disk()"),y3.forEach(s),V7=a(ym," comme suit :"),ym.forEach(s),Hc=p(e),v(sa.$$.fragment,e),Rc=p(e),v(na.$$.fragment,e),Uc=p(e),cs=r(e,"P",{});var Cm=l(cs);F7=a(Cm,"Pour les formats CSV et JSON, nous devons stocker chaque fractionnement dans un fichier s\xE9par\xE9. Pour ce faire, vous pouvez parcourir les cl\xE9s et les valeurs de l\u2019objet "),Qu=r(Cm,"CODE",{});var C3=l(Qu);J7=a(C3,"DatasetDict"),C3.forEach(s),B7=a(Cm," :"),Cm.forEach(s),Vc=p(e),v(aa.$$.fragment,e),Fc=p(e),ms=r(e,"P",{});var zm=l(ms);G7=a(zm,"Cela enregistre chaque fractionnement au "),oa=r(zm,"A",{href:!0,rel:!0});var z3=l(oa);Y7=a(z3,"format JSON Lines"),z3.forEach(s),W7=a(zm,", o\xF9 chaque ligne du jeu de donn\xE9es est stock\xE9e sous la forme d\u2019une seule ligne de JSON. Voici \xE0 quoi ressemble le premier exemple :"),zm.forEach(s),Jc=p(e),v(ra.$$.fragment,e),Bc=p(e),v(la.$$.fragment,e),Gc=p(e),fs=r(e,"P",{});var Tm=l(fs);X7=a(Tm,"Nous pouvons ensuite utiliser les techniques de "),co=r(Tm,"A",{href:!0});var T3=l(co);K7=a(T3,"section 2"),T3.forEach(s),Q7=a(Tm," pour charger les fichiers JSON comme suit :"),Tm.forEach(s),Yc=p(e),v(ia.$$.fragment,e),Wc=p(e),vs=r(e,"P",{});var Pm=l(vs);Z7=a(Pm,"Et c\u2019est tout pour notre excursion dans la manipulation des donn\xE9es avec \u{1F917} "),Zu=r(Pm,"EM",{});var P3=l(Zu);eb=a(P3,"Datasets"),P3.forEach(s),tb=a(Pm," ! Maintenant que nous disposons d\u2019un ensemble de donn\xE9es nettoy\xE9 pour entra\xEEner un mod\xE8le, voici quelques id\xE9es que vous pouvez essayer :"),Pm.forEach(s),Xc=p(e),hs=r(e,"OL",{});var Om=l(hs);ua=r(Om,"LI",{});var Nm=l(ua);sb=a(Nm,"Utilisez les techniques du "),mo=r(Nm,"A",{href:!0});var O3=l(mo);nb=a(O3,"Chapitre 3"),O3.forEach(s),ab=a(Nm," pour entra\xEEner un classifieur capable de pr\xE9dire l\u2019\xE9tat du patient en fonction de l\u2019examen du m\xE9dicament."),Nm.forEach(s),ob=p(Om),Nt=r(Om,"LI",{});var Go=l(Nt);rb=a(Go,"Utilisez le pipeline "),ed=r(Go,"CODE",{});var N3=l(ed);lb=a(N3,"summarization"),N3.forEach(s),ib=a(Go," du "),fo=r(Go,"A",{href:!0});var A3=l(fo);ub=a(A3,"Chapitre 1"),A3.forEach(s),db=a(Go," pour g\xE9n\xE9rer des r\xE9sum\xE9s des r\xE9visions."),Go.forEach(s),Om.forEach(s),Kc=p(e),_s=r(e,"P",{});var Am=l(_s);pb=a(Am,"Ensuite, nous verrons comment \u{1F917} "),td=r(Am,"EM",{});var M3=l(td);cb=a(M3,"Datasets"),M3.forEach(s),mb=a(Am," peut vous permettre de travailler avec d\u2019\xE9normes jeux de donn\xE9es sans faire exploser votre ordinateur portable !"),Am.forEach(s),this.h()},h(){m(c,"name","hf:doc:metadata"),m(c,"content",JSON.stringify(Z3)),m(w,"id","il-est-temps-de-trancher-et-de-dcouper"),m(w,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(w,"href","#il-est-temps-de-trancher-et-de-dcouper"),m(b,"class","relative group"),m(se,"id","trancher-et-dcouper-nos-donnes"),m(se,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(se,"href","#trancher-et-dcouper-nos-donnes"),m(U,"class","relative group"),m($a,"href","/course/fr/chapter3"),m(Ts,"href","https://archive.ics.uci.edu/ml/datasets/Drug+Review+Dataset+%28Drugs.com%29"),m(Ts,"rel","nofollow"),m(Ps,"href","https://archive.ics.uci.edu/ml/index.php"),m(Ps,"rel","nofollow"),m(Ea,"href","/course/fr/chapter3"),m(Bs,"href","https://docs.python.org/3/reference/lexical_analysis.html#keywords"),m(Bs,"rel","nofollow"),m(Qs,"href","https://realpython.com/python-lambda/"),m(Qs,"rel","nofollow"),m(St,"id","cration-de-nouvelles-colonnes"),m(St,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(St,"href","#cration-de-nouvelles-colonnes"),m(mt,"class","relative group"),m(Ft,"id","les-superpouvoirs-de-la-mthode-map"),m(Ft,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(Ft,"href","#les-superpouvoirs-de-la-mthode-map"),m(ft,"class","relative group"),m(Ca,"href","/course/fr/chapter6"),m(za,"href","/course/fr/chapter3"),m(Ta,"align","center"),m(gn,"align","center"),m($n,"align","center"),m(Pa,"align","center"),m(Oa,"align","center"),m(Na,"align","center"),m(Aa,"align","center"),m(Ma,"align","center"),m(Ia,"align","center"),m(La,"align","center"),m(xn,"align","center"),m(jn,"align","center"),m(Ha,"align","center"),m(Ra,"align","center"),m(Ua,"align","center"),m(Va,"align","center"),m(Fa,"align","center"),m(Ja,"align","center"),m(Xt,"align","center"),m(Ba,"align","center"),m(Ga,"align","center"),m(Kt,"align","center"),m(Ya,"align","center"),m(Wa,"align","center"),m(Xa,"href","/course/fr/chapter7"),m(Cn,"href","https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map"),m(Cn,"rel","nofollow"),m(ns,"id","de-dataset-dataframe-et-vice-versa"),m(ns,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(ns,"href","#de-dataset-dataframe-et-vice-versa"),m(jt,"class","relative group"),I3(M,"text-align","right"),m(Be,"border","1"),m(Be,"class","dataframe"),I3(We,"text-align","right"),m(Ye,"border","1"),m(Ye,"class","dataframe"),m(is,"id","cration-dun-ensemble-de-validation"),m(is,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(is,"href","#cration-dun-ensemble-de-validation"),m(Tt,"class","relative group"),m(eo,"href","/course/fr/chapter5/5"),m(us,"id","enregistrer-un-jeu-de-donnes"),m(us,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),m(us,"href","#enregistrer-un-jeu-de-donnes"),m(Pt,"class","relative group"),m(to,"align","center"),m(so,"align","center"),m(no,"align","center"),m(ao,"align","center"),m(oo,"align","center"),m(ro,"align","center"),m(lo,"align","center"),m(io,"align","center"),m(oa,"href","https://jsonlines.org"),m(oa,"rel","nofollow"),m(co,"href","/course/fr/chapter5/2"),m(mo,"href","/course/fr/chapter3"),m(fo,"href","/course/fr/chapter1")},m(e,i){t(document.head,c),u(e,C,i),u(e,b,i),t(b,w),t(w,y),h(x,y,null),t(b,j),t(b,z),t(z,q),u(e,D,i),h(P,e,i),u(e,T,i),u(e,k,i),t(k,W),t(k,A),t(A,X),t(k,Pe),u(e,K,i),h(O,e,i),u(e,Oe,i),u(e,U,i),t(U,se),t(se,_e),h(Q,_e,null),t(U,zs),t(U,dt),t(dt,pt),u(e,N,i),u(e,H,i),t(H,fa),t(H,At),t(At,va),t(H,ha),t(H,Mt),t(Mt,_a),t(H,ga),t(H,Yo),t(Yo,Mm),t(H,Im),t(H,Wo),t(Wo,Sm),t(H,Lm),t(H,$a),t($a,Hm),t(H,Rm),u(e,ld,i),u(e,Me,i),t(Me,Um),t(Me,Ts),t(Ts,Xo),t(Xo,Vm),t(Me,Fm),t(Me,Ps),t(Ps,Ko),t(Ko,Jm),t(Me,Bm),u(e,id,i),u(e,Ie,i),t(Ie,Gm),t(Ie,Qo),t(Qo,Ym),t(Ie,Wm),t(Ie,Zo),t(Zo,Xm),t(Ie,Km),u(e,ud,i),h(Os,e,i),u(e,dd,i),u(e,ge,i),t(ge,Qm),t(ge,er),t(er,Zm),t(ge,ef),t(ge,tr),t(tr,tf),t(ge,sf),t(ge,sr),t(sr,nf),t(ge,af),u(e,pd,i),h(Ns,e,i),u(e,cd,i),u(e,$e,i),t($e,of),t($e,nr),t(nr,rf),t($e,lf),t($e,ar),t(ar,uf),t($e,df),t($e,or),t(or,pf),t($e,cf),u(e,md,i),h(As,e,i),u(e,fd,i),h(Ms,e,i),u(e,vd,i),u(e,Ee,i),t(Ee,mf),t(Ee,rr),t(rr,ff),t(Ee,vf),t(Ee,lr),t(lr,hf),t(Ee,_f),t(Ee,ir),t(ir,gf),t(Ee,$f),u(e,hd,i),u(e,Se,i),t(Se,Is),t(Is,Ef),t(Is,ur),t(ur,bf),t(Is,xf),t(Se,jf),t(Se,Ss),t(Ss,qf),t(Ss,dr),t(dr,wf),t(Ss,Df),t(Se,kf),t(Se,ct),t(ct,yf),t(ct,pr),t(pr,Cf),t(ct,zf),t(ct,cr),t(cr,Tf),t(ct,Pf),u(e,_d,i),u(e,be,i),t(be,Of),t(be,mr),t(mr,Nf),t(be,Af),t(be,fr),t(fr,Mf),t(be,If),t(be,vr),t(vr,Sf),t(be,Lf),u(e,gd,i),h(Ls,e,i),u(e,$d,i),u(e,Le,i),t(Le,Hf),t(Le,hr),t(hr,Rf),t(Le,Uf),t(Le,_r),t(_r,Vf),t(Le,Ff),u(e,Ed,i),h(Hs,e,i),u(e,bd,i),h(Rs,e,i),u(e,xd,i),h(It,e,i),u(e,jd,i),u(e,ae,i),t(ae,Jf),t(ae,gr),t(gr,Bf),t(ae,Gf),t(ae,$r),t($r,Yf),t(ae,Wf),t(ae,Ea),t(Ea,Xf),t(ae,Kf),t(ae,Er),t(Er,Qf),t(ae,Zf),u(e,qd,i),h(Us,e,i),u(e,wd,i),h(Vs,e,i),u(e,Dd,i),u(e,oe,i),t(oe,ev),t(oe,br),t(br,tv),t(oe,sv),t(oe,xr),t(xr,nv),t(oe,av),t(oe,jr),t(jr,ov),t(oe,rv),t(oe,qr),t(qr,lv),t(oe,iv),u(e,kd,i),h(Fs,e,i),u(e,yd,i),u(e,He,i),t(He,uv),t(He,wr),t(wr,dv),t(He,pv),t(He,Dr),t(Dr,cv),t(He,mv),u(e,Cd,i),h(Js,e,i),u(e,zd,i),u(e,re,i),t(re,fv),t(re,kr),t(kr,vv),t(re,hv),t(re,Bs),t(Bs,_v),t(re,gv),t(re,yr),t(yr,$v),t(re,Ev),t(re,Cr),t(Cr,bv),t(re,xv),u(e,Td,i),h(Gs,e,i),u(e,Pd,i),u(e,ba,i),t(ba,jv),u(e,Od,i),h(Ys,e,i),u(e,Nd,i),h(Ws,e,i),u(e,Ad,i),u(e,xa,i),t(xa,qv),u(e,Md,i),h(Xs,e,i),u(e,Id,i),h(Ks,e,i),u(e,Sd,i),u(e,xe,i),t(xe,wv),t(xe,Qs),t(Qs,Dv),t(xe,kv),t(xe,zr),t(zr,yv),t(xe,Cv),t(xe,Tr),t(Tr,zv),t(xe,Tv),u(e,Ld,i),h(Zs,e,i),u(e,Hd,i),u(e,Re,i),t(Re,Pv),t(Re,Pr),t(Pr,Ov),t(Re,Nv),t(Re,Or),t(Or,Av),t(Re,Mv),u(e,Rd,i),h(en,e,i),u(e,Ud,i),h(tn,e,i),u(e,Vd,i),u(e,ja,i),t(ja,Iv),u(e,Fd,i),u(e,mt,i),t(mt,St),t(St,Nr),h(sn,Nr,null),t(mt,Sv),t(mt,Ar),t(Ar,Lv),u(e,Jd,i),u(e,qa,i),t(qa,Hv),u(e,Bd,i),u(e,wa,i),t(wa,Rv),u(e,Gd,i),h(nn,e,i),u(e,Yd,i),u(e,Z,i),t(Z,Uv),t(Z,Mr),t(Mr,Vv),t(Z,Fv),t(Z,Ir),t(Ir,Jv),t(Z,Bv),t(Z,Sr),t(Sr,Gv),t(Z,Yv),t(Z,Lr),t(Lr,Wv),t(Z,Xv),t(Z,Hr),t(Hr,Kv),t(Z,Qv),u(e,Wd,i),h(an,e,i),u(e,Xd,i),h(on,e,i),u(e,Kd,i),u(e,Ue,i),t(Ue,Zv),t(Ue,Rr),t(Rr,eh),t(Ue,th),t(Ue,Ur),t(Ur,sh),t(Ue,nh),u(e,Qd,i),h(rn,e,i),u(e,Zd,i),h(ln,e,i),u(e,ep,i),u(e,Da,i),t(Da,ah),u(e,tp,i),h(Lt,e,i),u(e,sp,i),u(e,Ve,i),t(Ve,oh),t(Ve,Vr),t(Vr,rh),t(Ve,lh),t(Ve,Fr),t(Fr,ih),t(Ve,uh),u(e,np,i),h(un,e,i),u(e,ap,i),h(dn,e,i),u(e,op,i),u(e,ka,i),t(ka,dh),u(e,rp,i),h(Ht,e,i),u(e,lp,i),u(e,Rt,i),t(Rt,ph),t(Rt,Jr),t(Jr,ch),t(Rt,mh),u(e,ip,i),h(pn,e,i),u(e,up,i),h(cn,e,i),u(e,dp,i),u(e,Ut,i),t(Ut,fh),t(Ut,Br),t(Br,vh),t(Ut,hh),u(e,pp,i),h(mn,e,i),u(e,cp,i),u(e,Vt,i),t(Vt,_h),t(Vt,Gr),t(Gr,gh),t(Vt,$h),u(e,mp,i),u(e,ft,i),t(ft,Ft),t(Ft,Yr),h(fn,Yr,null),t(ft,Eh),t(ft,ya),t(ya,bh),t(ya,Wr),t(Wr,xh),u(e,fp,i),u(e,le,i),t(le,jh),t(le,Xr),t(Xr,qh),t(le,wh),t(le,Kr),t(Kr,Dh),t(le,kh),t(le,Qr),t(Qr,yh),t(le,Ch),t(le,Zr),t(Zr,zh),t(le,Th),u(e,vp,i),u(e,ie,i),t(ie,Ph),t(ie,el),t(el,Oh),t(ie,Nh),t(ie,tl),t(tl,Ah),t(ie,Mh),t(ie,sl),t(sl,Ih),t(ie,Sh),t(ie,nl),t(nl,Lh),t(ie,Hh),u(e,hp,i),h(vn,e,i),u(e,_p,i),u(e,je,i),t(je,Rh),t(je,al),t(al,Uh),t(je,Vh),t(je,ol),t(ol,Fh),t(je,Jh),t(je,rl),t(rl,Bh),t(je,Gh),u(e,gp,i),u(e,ee,i),t(ee,Yh),t(ee,ll),t(ll,Wh),t(ee,Xh),t(ee,il),t(il,Kh),t(ee,Qh),t(ee,ul),t(ul,Zh),t(ee,e_),t(ee,Ca),t(Ca,t_),t(ee,s_),t(ee,dl),t(dl,n_),t(ee,a_),u(e,$p,i),h(hn,e,i),u(e,Ep,i),u(e,te,i),t(te,o_),t(te,za),t(za,r_),t(te,l_),t(te,pl),t(pl,i_),t(te,u_),t(te,cl),t(cl,d_),t(te,p_),t(te,ml),t(ml,c_),t(te,m_),t(te,fl),t(fl,f_),t(te,v_),u(e,bp,i),h(_n,e,i),u(e,xp,i),u(e,Jt,i),t(Jt,h_),t(Jt,vl),t(vl,__),t(Jt,g_),u(e,jp,i),h(Bt,e,i),u(e,qp,i),u(e,Gt,i),t(Gt,$_),t(Gt,hl),t(hl,E_),t(Gt,b_),u(e,wp,i),u(e,Yt,i),t(Yt,_l),t(_l,vt),t(vt,Ta),t(Ta,x_),t(vt,j_),t(vt,gn),t(gn,gl),t(gl,q_),t(gn,w_),t(vt,D_),t(vt,$n),t($n,$l),t($l,k_),t($n,y_),t(Yt,C_),t(Yt,En),t(En,ht),t(ht,Pa),t(Pa,El),t(El,z_),t(ht,T_),t(ht,Oa),t(Oa,P_),t(ht,O_),t(ht,Na),t(Na,N_),t(En,A_),t(En,_t),t(_t,Aa),t(Aa,bl),t(bl,M_),t(_t,I_),t(_t,Ma),t(Ma,S_),t(_t,L_),t(_t,Ia),t(Ia,H_),u(e,Dp,i),u(e,ue,i),t(ue,R_),t(ue,xl),t(xl,U_),t(ue,V_),t(ue,jl),t(jl,F_),t(ue,J_),t(ue,ql),t(ql,B_),t(ue,G_),t(ue,wl),t(wl,Y_),t(ue,W_),u(e,kp,i),u(e,Fe,i),t(Fe,X_),t(Fe,Dl),t(Dl,K_),t(Fe,Q_),t(Fe,kl),t(kl,Z_),t(Fe,e2),u(e,yp,i),u(e,ne,i),t(ne,yl),t(yl,t2),t(ne,s2),t(ne,Cl),t(Cl,n2),t(ne,a2),t(ne,zl),t(zl,o2),t(ne,r2),t(ne,Tl),t(Tl,l2),t(ne,i2),t(ne,Pl),t(Pl,u2),t(ne,d2),u(e,Cp,i),h(bn,e,i),u(e,zp,i),u(e,Sa,i),t(Sa,p2),u(e,Tp,i),u(e,Wt,i),t(Wt,Ol),t(Ol,gt),t(gt,La),t(La,c2),t(gt,m2),t(gt,xn),t(xn,Nl),t(Nl,f2),t(xn,v2),t(gt,h2),t(gt,jn),t(jn,Al),t(Al,_2),t(jn,g2),t(Wt,$2),t(Wt,Ne),t(Ne,$t),t($t,Ha),t(Ha,Ml),t(Ml,E2),t($t,b2),t($t,Ra),t(Ra,x2),t($t,j2),t($t,Ua),t(Ua,q2),t(Ne,w2),t(Ne,Et),t(Et,Va),t(Va,Il),t(Il,D2),t(Et,k2),t(Et,Fa),t(Fa,y2),t(Et,C2),t(Et,Ja),t(Ja,z2),t(Ne,T2),t(Ne,bt),t(bt,Xt),t(Xt,Sl),t(Sl,P2),t(Xt,O2),t(Xt,Ll),t(Ll,N2),t(bt,A2),t(bt,Ba),t(Ba,M2),t(bt,I2),t(bt,Ga),t(Ga,S2),t(Ne,L2),t(Ne,xt),t(xt,Kt),t(Kt,Hl),t(Hl,H2),t(Kt,R2),t(Kt,Rl),t(Rl,U2),t(xt,V2),t(xt,Ya),t(Ya,F2),t(xt,J2),t(xt,Wa),t(Wa,B2),u(e,Pp,i),u(e,V,i),t(V,G2),t(V,Ul),t(Ul,Y2),t(V,W2),t(V,Vl),t(Vl,X2),t(V,K2),t(V,Fl),t(Fl,Q2),t(V,Z2),t(V,Jl),t(Jl,e1),t(V,t1),t(V,Bl),t(Bl,s1),t(V,n1),t(V,Gl),t(Gl,a1),t(V,o1),u(e,Op,i),h(Qt,e,i),u(e,Np,i),u(e,qe,i),t(qe,r1),t(qe,Yl),t(Yl,l1),t(qe,i1),t(qe,Wl),t(Wl,u1),t(qe,d1),t(qe,Xa),t(Xa,p1),t(qe,c1),u(e,Ap,i),h(Zt,e,i),u(e,Mp,i),u(e,we,i),t(we,m1),t(we,Xl),t(Xl,f1),t(we,v1),t(we,Kl),t(Kl,h1),t(we,_1),t(we,Ql),t(Ql,g1),t(we,$1),u(e,Ip,i),h(qn,e,i),u(e,Sp,i),u(e,es,i),t(es,E1),t(es,Zl),t(Zl,b1),t(es,x1),u(e,Lp,i),h(wn,e,i),u(e,Hp,i),h(Dn,e,i),u(e,Rp,i),u(e,ts,i),t(ts,j1),t(ts,ei),t(ei,q1),t(ts,w1),u(e,Up,i),h(kn,e,i),u(e,Vp,i),h(yn,e,i),u(e,Fp,i),u(e,Je,i),t(Je,D1),t(Je,Cn),t(Cn,k1),t(Je,y1),t(Je,ti),t(ti,C1),t(Je,z1),u(e,Jp,i),u(e,de,i),t(de,T1),t(de,si),t(si,P1),t(de,O1),t(de,ni),t(ni,N1),t(de,A1),t(de,ai),t(ai,M1),t(de,I1),t(de,oi),t(oi,S1),t(de,L1),u(e,Bp,i),h(zn,e,i),u(e,Gp,i),u(e,Ka,i),t(Ka,H1),u(e,Yp,i),h(Tn,e,i),u(e,Wp,i),h(Pn,e,i),u(e,Xp,i),u(e,De,i),t(De,R1),t(De,ri),t(ri,U1),t(De,V1),t(De,li),t(li,F1),t(De,J1),t(De,ii),t(ii,B1),t(De,G1),u(e,Kp,i),h(On,e,i),u(e,Qp,i),u(e,ss,i),t(ss,Y1),t(ss,ui),t(ui,W1),t(ss,X1),u(e,Zp,i),h(Nn,e,i),u(e,ec,i),h(An,e,i),u(e,tc,i),u(e,Qa,i),t(Qa,K1),u(e,sc,i),u(e,pe,i),t(pe,Q1),t(pe,di),t(di,Z1),t(pe,eg),t(pe,pi),t(pi,tg),t(pe,sg),t(pe,ci),t(ci,ng),t(pe,ag),t(pe,mi),t(mi,og),t(pe,rg),u(e,nc,i),u(e,jt,i),t(jt,ns),t(ns,fi),h(Mn,fi,null),t(jt,lg),t(jt,qt),t(qt,ig),t(qt,vi),t(vi,ug),t(qt,dg),t(qt,hi),t(hi,pg),t(qt,cg),u(e,ac,i),h(In,e,i),u(e,oc,i),u(e,ce,i),t(ce,mg),t(ce,_i),t(_i,fg),t(ce,vg),t(ce,gi),t(gi,hg),t(ce,_g),t(ce,$i),t($i,gg),t(ce,$g),t(ce,Ei),t(Ei,Eg),t(ce,bg),u(e,rc,i),h(Sn,e,i),u(e,lc,i),u(e,as,i),t(as,xg),t(as,bi),t(bi,jg),t(as,qg),u(e,ic,i),h(Ln,e,i),u(e,uc,i),u(e,Be,i),t(Be,xi),t(xi,M),t(M,dc),t(M,wg),t(M,ji),t(ji,Dg),t(M,kg),t(M,qi),t(qi,yg),t(M,Cg),t(M,wi),t(wi,zg),t(M,Tg),t(M,Di),t(Di,Pg),t(M,Og),t(M,ki),t(ki,Ng),t(M,Ag),t(M,yi),t(yi,Mg),t(M,Ig),t(M,Ci),t(Ci,Sg),t(M,Lg),t(M,zi),t(zi,Hg),t(Be,Rg),t(Be,wt),t(wt,I),t(I,Ti),t(Ti,Ug),t(I,Vg),t(I,Pi),t(Pi,Fg),t(I,Jg),t(I,Oi),t(Oi,Bg),t(I,Gg),t(I,Ni),t(Ni,Yg),t(I,Wg),t(I,Ai),t(Ai,Xg),t(I,Kg),t(I,Mi),t(Mi,Qg),t(I,Zg),t(I,Ii),t(Ii,e$),t(I,t$),t(I,Si),t(Si,s$),t(I,n$),t(I,Li),t(Li,a$),t(wt,o$),t(wt,S),t(S,Hi),t(Hi,r$),t(S,l$),t(S,Ri),t(Ri,i$),t(S,u$),t(S,Ui),t(Ui,d$),t(S,p$),t(S,Vi),t(Vi,c$),t(S,m$),t(S,Fi),t(Fi,f$),t(S,v$),t(S,Ji),t(Ji,h$),t(S,_$),t(S,Bi),t(Bi,g$),t(S,$$),t(S,Gi),t(Gi,E$),t(S,b$),t(S,Yi),t(Yi,x$),t(wt,j$),t(wt,L),t(L,Wi),t(Wi,q$),t(L,w$),t(L,Xi),t(Xi,D$),t(L,k$),t(L,Ki),t(Ki,y$),t(L,C$),t(L,Qi),t(Qi,z$),t(L,T$),t(L,Zi),t(Zi,P$),t(L,O$),t(L,eu),t(eu,N$),t(L,A$),t(L,tu),t(tu,M$),t(L,I$),t(L,su),t(su,S$),t(L,L$),t(L,nu),t(nu,H$),u(e,pc,i),u(e,Ge,i),t(Ge,R$),t(Ge,au),t(au,U$),t(Ge,V$),t(Ge,ou),t(ou,F$),t(Ge,J$),u(e,cc,i),h(Hn,e,i),u(e,mc,i),h(os,e,i),u(e,fc,i),u(e,rs,i),t(rs,B$),t(rs,ru),t(ru,G$),t(rs,Y$),u(e,vc,i),h(Rn,e,i),u(e,hc,i),u(e,Ye,i),t(Ye,lu),t(lu,We),t(We,_c),t(We,W$),t(We,iu),t(iu,X$),t(We,K$),t(We,uu),t(uu,Q$),t(Ye,Z$),t(Ye,he),t(he,Dt),t(Dt,du),t(du,eE),t(Dt,tE),t(Dt,pu),t(pu,sE),t(Dt,nE),t(Dt,cu),t(cu,aE),t(he,oE),t(he,kt),t(kt,mu),t(mu,rE),t(kt,lE),t(kt,fu),t(fu,iE),t(kt,uE),t(kt,vu),t(vu,dE),t(he,pE),t(he,yt),t(yt,hu),t(hu,cE),t(yt,mE),t(yt,_u),t(_u,fE),t(yt,vE),t(yt,gu),t(gu,hE),t(he,_E),t(he,Ct),t(Ct,$u),t($u,gE),t(Ct,$E),t(Ct,Eu),t(Eu,EE),t(Ct,bE),t(Ct,bu),t(bu,xE),t(he,jE),t(he,zt),t(zt,xu),t(xu,qE),t(zt,wE),t(zt,ju),t(ju,DE),t(zt,kE),t(zt,qu),t(qu,yE),u(e,gc,i),u(e,Xe,i),t(Xe,CE),t(Xe,wu),t(wu,zE),t(Xe,TE),t(Xe,Du),t(Du,PE),t(Xe,OE),u(e,$c,i),h(Un,e,i),u(e,Ec,i),h(Vn,e,i),u(e,bc,i),h(ls,e,i),u(e,xc,i),u(e,me,i),t(me,NE),t(me,ku),t(ku,AE),t(me,ME),t(me,yu),t(yu,IE),t(me,SE),t(me,Cu),t(Cu,LE),t(me,HE),t(me,zu),t(zu,RE),t(me,UE),u(e,jc,i),h(Fn,e,i),u(e,qc,i),u(e,Tt,i),t(Tt,is),t(is,Tu),h(Jn,Tu,null),t(Tt,VE),t(Tt,Pu),t(Pu,FE),u(e,wc,i),u(e,Za,i),t(Za,JE),u(e,Dc,i),u(e,F,i),t(F,BE),t(F,Ou),t(Ou,GE),t(F,YE),t(F,Nu),t(Nu,WE),t(F,XE),t(F,Au),t(Au,KE),t(F,QE),t(F,Mu),t(Mu,ZE),t(F,e7),t(F,Iu),t(Iu,t7),t(F,s7),t(F,Su),t(Su,n7),t(F,a7),u(e,kc,i),h(Bn,e,i),u(e,yc,i),h(Gn,e,i),u(e,Cc,i),u(e,Ke,i),t(Ke,o7),t(Ke,eo),t(eo,r7),t(Ke,l7),t(Ke,Lu),t(Lu,i7),t(Ke,u7),u(e,zc,i),u(e,Pt,i),t(Pt,us),t(us,Hu),h(Yn,Hu,null),t(Pt,d7),t(Pt,Ru),t(Ru,p7),u(e,Tc,i),h(Wn,e,i),u(e,Pc,i),u(e,Qe,i),t(Qe,c7),t(Qe,Uu),t(Uu,m7),t(Qe,f7),t(Qe,Vu),t(Vu,v7),t(Qe,h7),u(e,Oc,i),u(e,ds,i),t(ds,Fu),t(Fu,Xn),t(Xn,to),t(to,_7),t(Xn,g7),t(Xn,so),t(so,$7),t(ds,E7),t(ds,Ot),t(Ot,Kn),t(Kn,no),t(no,b7),t(Kn,x7),t(Kn,ao),t(ao,Ju),t(Ju,j7),t(Ot,q7),t(Ot,Qn),t(Qn,oo),t(oo,w7),t(Qn,D7),t(Qn,ro),t(ro,Bu),t(Bu,k7),t(Ot,y7),t(Ot,Zn),t(Zn,lo),t(lo,C7),t(Zn,z7),t(Zn,io),t(io,Gu),t(Gu,T7),u(e,Nc,i),u(e,uo,i),t(uo,P7),u(e,Ac,i),h(ea,e,i),u(e,Mc,i),u(e,po,i),t(po,O7),u(e,Ic,i),h(ta,e,i),u(e,Sc,i),u(e,ke,i),t(ke,N7),t(ke,Yu),t(Yu,A7),t(ke,M7),t(ke,Wu),t(Wu,I7),t(ke,S7),t(ke,Xu),t(Xu,L7),t(ke,H7),u(e,Lc,i),u(e,ps,i),t(ps,R7),t(ps,Ku),t(Ku,U7),t(ps,V7),u(e,Hc,i),h(sa,e,i),u(e,Rc,i),h(na,e,i),u(e,Uc,i),u(e,cs,i),t(cs,F7),t(cs,Qu),t(Qu,J7),t(cs,B7),u(e,Vc,i),h(aa,e,i),u(e,Fc,i),u(e,ms,i),t(ms,G7),t(ms,oa),t(oa,Y7),t(ms,W7),u(e,Jc,i),h(ra,e,i),u(e,Bc,i),h(la,e,i),u(e,Gc,i),u(e,fs,i),t(fs,X7),t(fs,co),t(co,K7),t(fs,Q7),u(e,Yc,i),h(ia,e,i),u(e,Wc,i),u(e,vs,i),t(vs,Z7),t(vs,Zu),t(Zu,eb),t(vs,tb),u(e,Xc,i),u(e,hs,i),t(hs,ua),t(ua,sb),t(ua,mo),t(mo,nb),t(ua,ab),t(hs,ob),t(hs,Nt),t(Nt,rb),t(Nt,ed),t(ed,lb),t(Nt,ib),t(Nt,fo),t(fo,ub),t(Nt,db),u(e,Kc,i),u(e,_s,i),t(_s,pb),t(_s,td),t(td,cb),t(_s,mb),Qc=!0},p(e,[i]){const da={};i&2&&(da.$$scope={dirty:i,ctx:e}),It.$set(da);const sd={};i&2&&(sd.$$scope={dirty:i,ctx:e}),Lt.$set(sd);const nd={};i&2&&(nd.$$scope={dirty:i,ctx:e}),Ht.$set(nd);const ad={};i&2&&(ad.$$scope={dirty:i,ctx:e}),Bt.$set(ad);const pa={};i&2&&(pa.$$scope={dirty:i,ctx:e}),Qt.$set(pa);const od={};i&2&&(od.$$scope={dirty:i,ctx:e}),Zt.$set(od);const ca={};i&2&&(ca.$$scope={dirty:i,ctx:e}),os.$set(ca);const rd={};i&2&&(rd.$$scope={dirty:i,ctx:e}),ls.$set(rd)},i(e){Qc||(_(x.$$.fragment,e),_(P.$$.fragment,e),_(O.$$.fragment,e),_(Q.$$.fragment,e),_(Os.$$.fragment,e),_(Ns.$$.fragment,e),_(As.$$.fragment,e),_(Ms.$$.fragment,e),_(Ls.$$.fragment,e),_(Hs.$$.fragment,e),_(Rs.$$.fragment,e),_(It.$$.fragment,e),_(Us.$$.fragment,e),_(Vs.$$.fragment,e),_(Fs.$$.fragment,e),_(Js.$$.fragment,e),_(Gs.$$.fragment,e),_(Ys.$$.fragment,e),_(Ws.$$.fragment,e),_(Xs.$$.fragment,e),_(Ks.$$.fragment,e),_(Zs.$$.fragment,e),_(en.$$.fragment,e),_(tn.$$.fragment,e),_(sn.$$.fragment,e),_(nn.$$.fragment,e),_(an.$$.fragment,e),_(on.$$.fragment,e),_(rn.$$.fragment,e),_(ln.$$.fragment,e),_(Lt.$$.fragment,e),_(un.$$.fragment,e),_(dn.$$.fragment,e),_(Ht.$$.fragment,e),_(pn.$$.fragment,e),_(cn.$$.fragment,e),_(mn.$$.fragment,e),_(fn.$$.fragment,e),_(vn.$$.fragment,e),_(hn.$$.fragment,e),_(_n.$$.fragment,e),_(Bt.$$.fragment,e),_(bn.$$.fragment,e),_(Qt.$$.fragment,e),_(Zt.$$.fragment,e),_(qn.$$.fragment,e),_(wn.$$.fragment,e),_(Dn.$$.fragment,e),_(kn.$$.fragment,e),_(yn.$$.fragment,e),_(zn.$$.fragment,e),_(Tn.$$.fragment,e),_(Pn.$$.fragment,e),_(On.$$.fragment,e),_(Nn.$$.fragment,e),_(An.$$.fragment,e),_(Mn.$$.fragment,e),_(In.$$.fragment,e),_(Sn.$$.fragment,e),_(Ln.$$.fragment,e),_(Hn.$$.fragment,e),_(os.$$.fragment,e),_(Rn.$$.fragment,e),_(Un.$$.fragment,e),_(Vn.$$.fragment,e),_(ls.$$.fragment,e),_(Fn.$$.fragment,e),_(Jn.$$.fragment,e),_(Bn.$$.fragment,e),_(Gn.$$.fragment,e),_(Yn.$$.fragment,e),_(Wn.$$.fragment,e),_(ea.$$.fragment,e),_(ta.$$.fragment,e),_(sa.$$.fragment,e),_(na.$$.fragment,e),_(aa.$$.fragment,e),_(ra.$$.fragment,e),_(la.$$.fragment,e),_(ia.$$.fragment,e),Qc=!0)},o(e){g(x.$$.fragment,e),g(P.$$.fragment,e),g(O.$$.fragment,e),g(Q.$$.fragment,e),g(Os.$$.fragment,e),g(Ns.$$.fragment,e),g(As.$$.fragment,e),g(Ms.$$.fragment,e),g(Ls.$$.fragment,e),g(Hs.$$.fragment,e),g(Rs.$$.fragment,e),g(It.$$.fragment,e),g(Us.$$.fragment,e),g(Vs.$$.fragment,e),g(Fs.$$.fragment,e),g(Js.$$.fragment,e),g(Gs.$$.fragment,e),g(Ys.$$.fragment,e),g(Ws.$$.fragment,e),g(Xs.$$.fragment,e),g(Ks.$$.fragment,e),g(Zs.$$.fragment,e),g(en.$$.fragment,e),g(tn.$$.fragment,e),g(sn.$$.fragment,e),g(nn.$$.fragment,e),g(an.$$.fragment,e),g(on.$$.fragment,e),g(rn.$$.fragment,e),g(ln.$$.fragment,e),g(Lt.$$.fragment,e),g(un.$$.fragment,e),g(dn.$$.fragment,e),g(Ht.$$.fragment,e),g(pn.$$.fragment,e),g(cn.$$.fragment,e),g(mn.$$.fragment,e),g(fn.$$.fragment,e),g(vn.$$.fragment,e),g(hn.$$.fragment,e),g(_n.$$.fragment,e),g(Bt.$$.fragment,e),g(bn.$$.fragment,e),g(Qt.$$.fragment,e),g(Zt.$$.fragment,e),g(qn.$$.fragment,e),g(wn.$$.fragment,e),g(Dn.$$.fragment,e),g(kn.$$.fragment,e),g(yn.$$.fragment,e),g(zn.$$.fragment,e),g(Tn.$$.fragment,e),g(Pn.$$.fragment,e),g(On.$$.fragment,e),g(Nn.$$.fragment,e),g(An.$$.fragment,e),g(Mn.$$.fragment,e),g(In.$$.fragment,e),g(Sn.$$.fragment,e),g(Ln.$$.fragment,e),g(Hn.$$.fragment,e),g(os.$$.fragment,e),g(Rn.$$.fragment,e),g(Un.$$.fragment,e),g(Vn.$$.fragment,e),g(ls.$$.fragment,e),g(Fn.$$.fragment,e),g(Jn.$$.fragment,e),g(Bn.$$.fragment,e),g(Gn.$$.fragment,e),g(Yn.$$.fragment,e),g(Wn.$$.fragment,e),g(ea.$$.fragment,e),g(ta.$$.fragment,e),g(sa.$$.fragment,e),g(na.$$.fragment,e),g(aa.$$.fragment,e),g(ra.$$.fragment,e),g(la.$$.fragment,e),g(ia.$$.fragment,e),Qc=!1},d(e){s(c),e&&s(C),e&&s(b),$(x),e&&s(D),$(P,e),e&&s(T),e&&s(k),e&&s(K),$(O,e),e&&s(Oe),e&&s(U),$(Q),e&&s(N),e&&s(H),e&&s(ld),e&&s(Me),e&&s(id),e&&s(Ie),e&&s(ud),$(Os,e),e&&s(dd),e&&s(ge),e&&s(pd),$(Ns,e),e&&s(cd),e&&s($e),e&&s(md),$(As,e),e&&s(fd),$(Ms,e),e&&s(vd),e&&s(Ee),e&&s(hd),e&&s(Se),e&&s(_d),e&&s(be),e&&s(gd),$(Ls,e),e&&s($d),e&&s(Le),e&&s(Ed),$(Hs,e),e&&s(bd),$(Rs,e),e&&s(xd),$(It,e),e&&s(jd),e&&s(ae),e&&s(qd),$(Us,e),e&&s(wd),$(Vs,e),e&&s(Dd),e&&s(oe),e&&s(kd),$(Fs,e),e&&s(yd),e&&s(He),e&&s(Cd),$(Js,e),e&&s(zd),e&&s(re),e&&s(Td),$(Gs,e),e&&s(Pd),e&&s(ba),e&&s(Od),$(Ys,e),e&&s(Nd),$(Ws,e),e&&s(Ad),e&&s(xa),e&&s(Md),$(Xs,e),e&&s(Id),$(Ks,e),e&&s(Sd),e&&s(xe),e&&s(Ld),$(Zs,e),e&&s(Hd),e&&s(Re),e&&s(Rd),$(en,e),e&&s(Ud),$(tn,e),e&&s(Vd),e&&s(ja),e&&s(Fd),e&&s(mt),$(sn),e&&s(Jd),e&&s(qa),e&&s(Bd),e&&s(wa),e&&s(Gd),$(nn,e),e&&s(Yd),e&&s(Z),e&&s(Wd),$(an,e),e&&s(Xd),$(on,e),e&&s(Kd),e&&s(Ue),e&&s(Qd),$(rn,e),e&&s(Zd),$(ln,e),e&&s(ep),e&&s(Da),e&&s(tp),$(Lt,e),e&&s(sp),e&&s(Ve),e&&s(np),$(un,e),e&&s(ap),$(dn,e),e&&s(op),e&&s(ka),e&&s(rp),$(Ht,e),e&&s(lp),e&&s(Rt),e&&s(ip),$(pn,e),e&&s(up),$(cn,e),e&&s(dp),e&&s(Ut),e&&s(pp),$(mn,e),e&&s(cp),e&&s(Vt),e&&s(mp),e&&s(ft),$(fn),e&&s(fp),e&&s(le),e&&s(vp),e&&s(ie),e&&s(hp),$(vn,e),e&&s(_p),e&&s(je),e&&s(gp),e&&s(ee),e&&s($p),$(hn,e),e&&s(Ep),e&&s(te),e&&s(bp),$(_n,e),e&&s(xp),e&&s(Jt),e&&s(jp),$(Bt,e),e&&s(qp),e&&s(Gt),e&&s(wp),e&&s(Yt),e&&s(Dp),e&&s(ue),e&&s(kp),e&&s(Fe),e&&s(yp),e&&s(ne),e&&s(Cp),$(bn,e),e&&s(zp),e&&s(Sa),e&&s(Tp),e&&s(Wt),e&&s(Pp),e&&s(V),e&&s(Op),$(Qt,e),e&&s(Np),e&&s(qe),e&&s(Ap),$(Zt,e),e&&s(Mp),e&&s(we),e&&s(Ip),$(qn,e),e&&s(Sp),e&&s(es),e&&s(Lp),$(wn,e),e&&s(Hp),$(Dn,e),e&&s(Rp),e&&s(ts),e&&s(Up),$(kn,e),e&&s(Vp),$(yn,e),e&&s(Fp),e&&s(Je),e&&s(Jp),e&&s(de),e&&s(Bp),$(zn,e),e&&s(Gp),e&&s(Ka),e&&s(Yp),$(Tn,e),e&&s(Wp),$(Pn,e),e&&s(Xp),e&&s(De),e&&s(Kp),$(On,e),e&&s(Qp),e&&s(ss),e&&s(Zp),$(Nn,e),e&&s(ec),$(An,e),e&&s(tc),e&&s(Qa),e&&s(sc),e&&s(pe),e&&s(nc),e&&s(jt),$(Mn),e&&s(ac),$(In,e),e&&s(oc),e&&s(ce),e&&s(rc),$(Sn,e),e&&s(lc),e&&s(as),e&&s(ic),$(Ln,e),e&&s(uc),e&&s(Be),e&&s(pc),e&&s(Ge),e&&s(cc),$(Hn,e),e&&s(mc),$(os,e),e&&s(fc),e&&s(rs),e&&s(vc),$(Rn,e),e&&s(hc),e&&s(Ye),e&&s(gc),e&&s(Xe),e&&s($c),$(Un,e),e&&s(Ec),$(Vn,e),e&&s(bc),$(ls,e),e&&s(xc),e&&s(me),e&&s(jc),$(Fn,e),e&&s(qc),e&&s(Tt),$(Jn),e&&s(wc),e&&s(Za),e&&s(Dc),e&&s(F),e&&s(kc),$(Bn,e),e&&s(yc),$(Gn,e),e&&s(Cc),e&&s(Ke),e&&s(zc),e&&s(Pt),$(Yn),e&&s(Tc),$(Wn,e),e&&s(Pc),e&&s(Qe),e&&s(Oc),e&&s(ds),e&&s(Nc),e&&s(uo),e&&s(Ac),$(ea,e),e&&s(Mc),e&&s(po),e&&s(Ic),$(ta,e),e&&s(Sc),e&&s(ke),e&&s(Lc),e&&s(ps),e&&s(Hc),$(sa,e),e&&s(Rc),$(na,e),e&&s(Uc),e&&s(cs),e&&s(Vc),$(aa,e),e&&s(Fc),e&&s(ms),e&&s(Jc),$(ra,e),e&&s(Bc),$(la,e),e&&s(Gc),e&&s(fs),e&&s(Yc),$(ia,e),e&&s(Wc),e&&s(vs),e&&s(Xc),e&&s(hs),e&&s(Kc),e&&s(_s)}}}const Z3={local:"il-est-temps-de-trancher-et-de-dcouper",sections:[{local:"trancher-et-dcouper-nos-donnes",title:"Trancher et d\xE9couper nos donn\xE9es"},{local:"cration-de-nouvelles-colonnes",title:"Cr\xE9ation de nouvelles colonnes"},{local:"les-superpouvoirs-de-la-mthode-map",title:"Les superpouvoirs de la m\xE9thode `map()`"},{local:"de-dataset-dataframe-et-vice-versa",title:"De `Dataset` \xE0 `DataFrame` et vice versa"},{local:"cration-dun-ensemble-de-validation",title:"Cr\xE9ation d'un ensemble de validation"},{local:"enregistrer-un-jeu-de-donnes",title:"Enregistrer un jeu de donn\xE9es"}],title:"Il est temps de trancher et de d\xE9couper"};function e4(R){return U3(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class l4 extends S3{constructor(c){super();L3(this,c,e4,Q3,H3,{})}}export{l4 as default,Z3 as metadata};
