Comptage des caractères d’un texte avec Xcas

Voici un petit programme Xcas permettant d’analyser un texte pour en connaĩtre la répartition de ses caractères. :

francais.xws.zip

Le programme « compte_car »


compte_car(Texte,List_car):= local m,n,nbcar,j,k; m:= size(Texte); n:=size(List_car); nbcar:=0; for (j:=1;j<=m;j:=j+1) for (k:=1;k<=n;k:=k+1) if (Texte[j-1]==List_car[k-1]) nbcar:=nbcar+1; return nbcar; :;

Le programme « analyse_texte »


analyse_texte(Texte):= local listes; local list_A,list_B,list_C,list_D,list_E,list_F,list_G,list_H,list_I,list_J; local list_K,list_L,list_M,list_N,list_O,list_P,list_Q,list_R,list_S,list_T; local list_U,list_V,list_W,list_X,list_Y,list_Z,list_espace,list_ponctuation; local j,M,S,Taille;

M:=matrix(31,3,0); Taille:=size(Texte);

list_A:=[« a », »A », »à », »á », »â », »ä », »å », »ã »]; list_B:=[« b », »B »]; list_C:=[« c », »C », »ç »]; list_D:=[« d », »D »]; list_E:=[« e », »E », »è », »é », »ê »]; list_F:=[« f », »F »]; list_G:=[« g », »G »]; list_H:=[« h », »H »]; list_I:=[« i », »I », »í », »ì »]; list_J:=[« j », »J »]; list_K:=[« k », »K »]; list_L:=[« l », »L »]; list_M:=[« m », »M »]; list_N:=[« n », »N »]; list_O:=[« o », »O », »ö », »õ », »ó », »ò »]; list_P:=[« p », »P »]; list_Q:=[« q », »Q »]; list_R:=[« r », »R »]; list_S:=[« s », »S »]; list_T:=[« t », »T »]; list_U:=[« u », »U », »ù », »ú », »ü »]; list_V:=[« v », »V »]; list_W:=[« w », »W »]; list_X:=[« x », »X »]; list_Y:=[« y », »Y »]; list_Z:=[« z », »Z »]; list_espace:=[ » « ]; list_ponctuation:=[« . », », », »: », »; », »! », »? »]; liste_retour_ligne:=( » « );

listes:=[list_A,list_B,list_C,list_D,list_E,list_F,list_G,list_H,list_I,list_J, list_K,list_L,list_M,list_N,list_O,list_P,list_Q,list_R,list_S,list_T, list_U,list_V,list_W,list_X,list_Y,list_Z,list_espace,list_ponctuation,liste_retour_ligne];

M[0,0]:= »a »; M[1,0]:= »b »; M[2,0]:= »c »; M[3,0]:= »d »; M[4,0]:= »e »; M[5,0]:= »f »; M[6,0]:= »g »; M[7,0]:= »h »; M[8,0]:= »i »; M[9,0]:= »j »; M[10,0]:= »k »; M[11,0]:= »l »; M[12,0]:= »m »; M[13,0]:= »n »; M[14,0]:= »o »; M[15,0]:= »p »; M[16,0]:= »q »; M[17,0]:= »r »; M[18,0]:= »s »; M[19,0]:= »t »; M[20,0]:= »u »; M[21,0]:= »v »; M[22,0]:= »w »; M[23,0]:= »x »; M[24,0]:= »y »; M[25,0]:= »z »; M[26,0]:= »espace »; M[27,0]:= »ponctuation »; M[28,0]:= »Retour a la ligne »; M[29,0]:= »autres »; M[30,0]:= »Total »;

S:=0; for (j:=1;j<=29;j:=j+1) M[j-1,1]:=compte_car(Texte,listes[j-1]); M[j-1,2]:=format(evalf(M[j-1,1]/Taille*100), »f2″); S:=S+M[j-1,1]; M[29,1]:=Taille-S; M[29,2]:=format(evalf(M[29,1]/Taille*100), »f2″); M[30,1]:=Taille; M[30,2]:=100;

return M; :;

Comment les utiliser ?


Dans un fichier xcas :

1) Rentrer le programme « compte_car ».

2) Rentrer le programme « analyse_texte ».

3) Rentrer un texte « T » ;

T:= »L’Union européenne (UE) est une famille de pays démocratiques européens décidés à ?uvrer ensemble à la paix et à la prospérité. Il ne s’agit pas d’un État destiné à se substituer aux États existants, mais l’Union européenne va plus loin que toute autre organisation internationale. En fait, c’est une organisation unique en son genre. Les États qui la composent ont mis en place des institutions communes auxquelles ils délèguent une partie de leur souveraineté, afin que les décisions sur des questions spécifiques d’intérêt commun puissent se prendre démocratiquement au niveau européen. L’Europe est un continent caractérisé par de nombreuses traditions et langues différentes, mais aussi par des valeurs communes. Ce sont ces valeurs que défend l’Union européenne en instaurant une coopération toujours plus étroite entre ses peuples, en renforçant l’unité tout en préservant la diversité et en faisant en sorte que les décisions soient prises le plus près possible du citoyen. Dans le monde de plus en plus interdépendant qui sera celui du XXIe siècle, le citoyen européen devra plus que jamais coopérer avec des peuples d’autres pays, dans un esprit de curiosité, de tolérance et de solidarité. »

4) Analyser le texte :

P:=analyse_texte(T)

On obtient la matrice avec la répartition des caractères :

$$ \left(\beginarraylll \mboxa & 66 & \mbox5.5 \\ \mboxb & 4 & \mbox0.33 \\ \mboxc & 27 & \mbox2.2 \\ \mboxd & 37 & \mbox3.1 \\ \mboxe & 176 & \mbox15 \\ \mboxf & 9 & \mbox0.75 \\ \mboxg & 6 & \mbox0.5 \\ \mboxh & 0 & \mbox0 \\ \mboxi & 73 & \mbox6.1 \\ \mboxj & 2 & \mbox0.17 \\ \mboxk & 0 & \mbox0 \\ \mboxl & 43 & \mbox3.6 \\ \mboxm & 18 & \mbox1.5 \\ \mboxn & 92 & \mbox7.6 \\ \mboxo & 55 & \mbox4.6 \\ \mboxp & 39 & \mbox3.2 \\ \mboxq & 13 & \mbox1.1 \\ \mboxr & 58 & \mbox4.8 \\ \mboxs & 96 & \mbox8 \\ \mboxt & 75 & \mbox6.2 \\ \mboxu & 73 & \mbox6.1 \\ \mboxv & 10 & \mbox0.83 \\ \mboxw & 0 & \mbox0 \\ \mboxx & 6 & \mbox0.5 \\ \mboxy & 4 & \mbox0.33 \\ \mboxz & 0 & \mbox0 \\ \mboxespace & 187 & \mbox16 \\ \mboxponctuation & 16 & \mbox1.3 \\ \mboxRetour a la ligne & 5 & \mbox0.41 \\ \mboxautres & 15 & \mbox1.2 \\ \mboxTotal & 1205 & 100 \endarray\right) $$