Vous êtes sur la page 1sur 6

Tp1 Communication Langagiere

Stoian Andreea Diana


Exercice 0 : Transformer tout le texte RADIOS.txt en majuscules
Pour transformer le texte RADIOS.txt en majuscules on utilise la commande tr :
tr -t [:lower:] [:upper:] < RADIOS.txt
Q1) On peut utiliser la commande sed comme alternative :
sed 's/.*/\U&/'
ou s est responsable pour la substitution, .*-pour tous les caractres et tous leur
apparitions, U pour lettre majuscule.
Q2)Pour prendre en compte les accentes :
cat RADIOS.txt| sed 's/.*/\U&/' | head
Exercice 1 : Trouver la suite d'instructions qui permet de compter les mots dans un
texte
cat RADIOS.txt | tr " " "\n" | grep -e "^$" -v | sort | uniq -c > RADIOS.hist
tr est utilise pour remplacer les espaces qui dlimitent les mots par une
nouvelle ligne;
grep est utilise pour liminer les lignes vides au cas que les mots taient
spars par plusieurs espaces
sort et uniq -c pour trier et compter les occurrences de chaque mot.
Q1)Le mot qui apparat exactement 1732 fois dans ce texte est le mot trois.
Q2) Le mot "orange" apparat dans ce texte de 16 fois.
Exercice 2 : Trier les mots (sort)
par frquence d'apparition:
cat RADIOS.txt | tr " " "\n" | grep -e "^$" -v | sort | uniq -c | sort -nr
par ordre alphabtique:
cat RADIOS.txt | tr " " "\n" | grep -e "^$" -v | sort | uniq -c | sort
par ordre "rhymique"
cat RADIOS.txt | tr " " "\n" | grep -e "^$" -v | sort | uniq -c | rev | sort | rev
Exercice 3 : Co-occurences de mots ou bigrammes
Pour trouver les bigrammes :
On spare les mots;
On met dans un fichier tous les mots du document et puis dans un autre, les
mots mais cette fois-ci en utilisant la commande tail -n+2
On utilise la commande paste pour unifier les deux fichiers
On compte le nombre d'apparition de chaque bigramme
cat RADIOS.txt | tr " " "\n" | grep -e "^$" -v > premierMots.txt
tail -n + 2 premierMots.txt > secondMots.txt
paste premierMots.txt secondMots.txt > bigramme13.txt

Pour trouver les trigrammes, on applique le mme algorithme :


cat RADIOS.txt | tr " " "\n" | grep -e "^$" -v > premierMots.txt
tail -n + 2 premierMots.txt > secondMots.txt
tail -n + 3 premierMots.txt > troisiemeMots.txt
paste premierMots.txt secondMots.txt.txt troisiemeMots.txt > trigrammes.txt
Pout trouver les 4- grammes on ajoute encore les commandes :
tail -n + 4 premierMots.txt > quatriemesMots.txt
paste trigrammes.txt quatriemesMots.txt > quatreGrammes.txt
Q1) Le 2-gramme "il est" apparat dans ce texte de 999 fois. On a trouve cette
valeur en triant et comptant les bigrammes :
cat bigrammes13.txt | sort | uniq -c > bigrammeFreq.txt
Q2) Pour trouver le nombre de trigrammes distincts :
cat trigrammes.txt | sort | uniq -c > trigrammeFreq.txt
wc -l trigrammeFreq.txt
La dernire commande a eu comme rsultat : 620510 qui est le nombre de
trigrammes diffrents existants dans le fichier RADIOS.txt
Q3) 236 sa majest
le
roi c'est le 4-gramme la plus frquente, avec un
nombre d'apparitions de 236.
cat quatreGrammes.txt | sort | uniq -c | sort -r -n > quatreGrammesFreq.txt
head quatreGrammesFreq.txt
Exercice 4 : filtres (grep)
Q1) Pour trouver les mots de 9 lettres, on a utilise la commande grep de facon
suivante :
grep -c '^.........$' premierMots.txt , ou premierMots.txt est un fichier ou on garde
chaque mot sur une ligne, il existe des duplicates dans ce fichier, ce sont tous les mots
du fichier RADIOS.txt. Dans ce cas nous avons 31347 des mots de 9 lettres. Si on
considre un fichier comme RADIOS.hist nous avons seulement 2878 mots distincts
de 9 lettres;
Q2) Oui, il y a des mots sans voyelles, identifies grce a la commande
grep '^[^aeiou]*$' premierMots.txt | sort | uniq -c > noVowel2.txt
head noVowel2.txt
18515
4 '
3
52 b
18 b
25 bb
13 bbc
14 bbs
1 bcbg
9 bd
Exercice 5 : Langage awk

Q1) Les bigrammes qui apparaissent exactement 13 fois, a l'aide de la


commande awk peuvent tre identifis d'une manire suivante :
awk '$1 == 13 {print $2, $3}' bigrammeFreq.txt > bigrammes13R.txt
head 5 bigrammes13R.txt
zro hier
y aller
washington a
walter sisulu
vu le
On vrifie si la premire colonne du fichier bigrammeFreq.txt est egale a 13 avec $1
== 13 et si c'est vrai, on affiche les autres 2 colonnes $2 (le premier mot du bigramme
) et $3 (le deuxime mot du bigramme)
Q2) Pour vrifier si un mot est un palindrome on peut premirement mettre
tous les mots distincts existants dans le document RADIOS.txt dans un fichier et en
mme temps, mettre dans le mme fichier les mme mots mais inverse. On peut
calculer la frquence d'apparition dans le fichier de chaque mot et si la frquence est
suprieure ou gale a deux, alors on peut dire que nous avons un mot qui inverse est
gal a un autre mot ne-invers et qu'il est un palindrome. Pour cela, on a utilise la
prochaine suite de commandes:
cat premierMots.txt | sort -u > uniqueMots.txt
rev < uniqueMots.txt > reverseMots.txt
sort uniqueMots.txt reverseMots.txt | uniq -c | awk '$1 >= 2 {print $2}';
Exercice 6 : Remplacement avec sed
Q1) sed 's/$/./' < RADIOS.txt > sedQ1.txt
sed -e "s/\b\(.\)/\u\1/g" < sedQ1.txt
La premire expression met un point a la fin de chaque ligne, fin indique par le $.
La deuxime expression remplace chaque premire lettre de chaque mot, globalement
/g dans tout le document, avec une lettre majuscule, la limite est indique de \b et le
point indique entre les parenthses le remplacement d'un seul caractre, seulement
une fois \1.
Q2) Pour liminer les mots identiques et conscutifs, on peut utiliser
l'expression suivante :
sed -e 's/\b\([a-z]\+\)[ ,\n]\1/\1/g' < RADIOS.txt
Les mots conscutifs et identiques sont identifies par le ([a-z]\+\), on prend aussi en
compte la fin de la ligne en utilisant [ ,\n] pour qu'on puisse faire le match pour le
dernier mot qui se rpte ( sinon, pour le dernier mot, nous n'avons pas a la fin un
espace et le match faillit ). On garde seulement un mot et on fait cette action dans tout
le document \g.
Exercice 7 : Union de fichiers avec join
Premirement, on peut faire un fichier avec les donnes qu'on a dans le fichier
bigrammeFreq.txt, ou on trouve chaque bigramme avec sa frquence d'apparition.
Dans ce nouveau fichier, on va faire un swap entre les colonnes pour qu'on ait l'ordre
w1 w2 c(w1, w2). Pour le moment l'ordre est : c(w1,w2) w1 w2. Ce swap on peut le

faire a l'aide de la commande awk de faon suivante :


1. { t = $1; $1 = $2; $2 = t; print; } ' bigrammeFreq.txt >
bigrammeFreqOrder1.txt
2. awk ' { t = $2; $2 = $3; $3 = t; print; } ' bigrammeFreqOrder1.txt >
bigrammeFreqOrder2.txt
Ensuite, il est ncessaire qu'on sorte ce fichier selon la colonne avec laquelle on va
faire le join. Pour l'instant, cette colonne est le premier mot, car on veut ajouter a
notre fichier le c(w1). Cela est possible avec :
1. sort -k 1,1 bigrammeFreqOrder2.txt > joinTable1.txt
2. sort -k 2,2 RADIOS.hist > joinTable2.txt
3. join -1 1 -2 2 joinTable1.txt joinTable2.txt > firstJoinTable.txt
Maintenant, pour le deuxime mot :
1. sort -k 2,2 firstJoinTable.txt > join1.txt
2. sort -k 2,2 RADIOS.hist> join2.txt
3. join -1 2 -2 2 join1.txt join2.txt > join3.txt
join3.txt est un fichier contenant les colonnes w1 w2 c(w1,w2) w1 w2
Pour trouver PIM, on a utilise AWK commande pour faire le calcul et pour afficher.
La suite des commandes a t la suivante :
1. awk '{ print $1,$2,$3,$4,$5, $4*$5/910068}' join3.txt > joinFinal1.txt -pour
calculer E(w1, w2), le nombre 910068 on l'a trouv a l'aide de la commande
wc -w RADIOS.txt
2. awk '{ print $1,$2,$3,$4,$5,$6, $3*log($3/$6)}' joinFinal1.txt > joinFinal2.txt
Q1)
sort -r -k 7,7 joinFinal2.txt > testPim.txt
head 5 testPim.txt
tel monde 3 919 106 0.10704 9.99949
payer faire 3 1299 75 0.107052 9.99916
soulignant maroc 2 409 30 0.0134825 9.99902
devant caen 2 30 409 0.0134825 9.99902
mots des 33 14089 103 1.59457 99.9868
Q2)
awk '$3<1000 {print $1,$2,$7}' testPim.txt > Q2Pim.txt
sort -r -k 3,3 Q2Pim.txt > sortedPim.txt
head 5 sortedPim.txt
tel monde 9.99949
payer faire 9.99916
soulignant maroc 9.99902
devant caen 9.99902
mots des 99.9868
Exercice 8 : observation des encodages
Q1) On observe des caractres tranges au lieu de texte a cause de la manire dont on
fait l'encodage de ce texte. Avec lencodage arabique par exemple, on peut
reprsenter surtout les caractres arabes et non tous les autres caractres. C'est pour
cela que c'est mieux pour l'internationaliser le contenu de texte et de l'encoder en

utilisant Unicode.
Q2) Si on fait un document html, cela sera mieux de spcifier dans meta-charset le
type d'encodage qu'on veut l'utiliser. Sinon, le browser peut interprter de manire
fausse les caractres et en plus il doit essayer de deviner le type d'encodage et c'est
vrai qu'il y a des fois quand le browser n'arrive pas a faire cela. Il y a aussi l'encodage
souvent spcifi dans les headers http pour savoir comment afficher le contenu qu'il
reoit aprs la requte HTTP.
Q3)Il y a cette possibilit parce-que certains encodages on t faits a l'aide d'autres
encodages en ajoutant des caractres spcifiques pour certaines langues. Par exemple,
ici on peut reprsenter les caractres accentus avec l'encodage turkish car le type
d'encodage qui supporte les caractres spcifiques a ce pays est ISO/IEC 8859-9 qui
est identique a ISO/IEC 8859-1 avec quelques exceptions.ISO/IEC 8859-1 contient les
caractres accentus spcifiques franaises et cela rend possible leur reprsentation
correcte.
Exercice 9 : analyse des encodages
Q1) Le mot d, en UTF -8, a 4 caractres qui sont encods en utilisant 7 bytes, 1
byte pour le d et 2 bytes pour les autres 3 lettres. Sa reprsentation en hexadcimal est
la suivante : 64C3A9C3A7C3A0
Q2) Gre a la reprsentation hexadcimale 47 72 C3 BC C3 9F 65.
Nous avons 5 caractres et 7 bytes. G, r, e sont reprsents chacun avec 1 byte et ,
avec 2 bytes.
Exercice 10: encodage et place occupe
Q1) En nombre d'octets utilise, iso8859-1 est plus efficace car chaque caractre est
stock sur un octet lorsque en UTF-8 la reprsentation d'un caractre peut avoir entre
1 et 4 octets.
Q2)Le caractre du dbut a 2 bytes dans la reprsentation UTF-8, avec une
reprsentation hexadcimale : C3A9 et 1 byte en Iso 8859 -1, avec la reprsentation
hexadcimale : E8.
Exercice 11 : conversion vers lUTF-8
Q1) Pour convertir on a utilis la commande :
iconv -f WINDOWS-1256 -t UTF-8

testAR.win

Les caractres sont affichs bien maintenant en VIM


c'est sont les caractres affichs en VIM.
Exercice 12 : conversion depuis lUTF-8
Pour la conversion : iconv -f UTF-8 -t UTF-16 testFR.txt.UTF-8
Q1) Il y a deux bytes au dbut du fichier encod avec UTF-16 : FF FE qui
reprsentent une manire pour transmettre que l'ordre des bytes est little endian ou
big endian. Dans notre cas, nous avons une ordre Little Endian.
Q2)La reprsentation de UTF -16 est exactement le code point Unicode.
Q3)Nous n'avons plus les premiers deux octets d'avant au dbut du fichier. C'est une

reprsentation qui utilise Big Endian comme ordre des bytes.