DÉMARCHES

*** EPISODE I : LE NAVIRE EST À QUAI***

Dans ce chapitre, nous allons parler de notre projet, comme nous vous l’avons déjà annoncé dans notre présentation qui se trouve dans la page A propos, nous sommes trois étudiants en M1 Traitements Automatique des Langues, qui ont pour objectif à faire un Weblog (Web site + Blog ) pour notre cours de Projet Encadré. Dans le tout premier cours on a appris ce que vaut dire les termes (Shell,Bash,Linux etc), Leurs fonctionnalités, du quoi ils s’agissent et à quoi servent-ils ? Ne paniquez Pas, car tout cela nous apparait bizarre et incompréhensive pour la première fois mais après et petit à petit on a compris.

Pour ce Projet il y a une date limite où nous devons achever notre blog et le site internet et sera fin de semestre vers la fin de mois de décembre.

21/09/2016

*** EPISODE II : LES MARINS SE METTENT AU TRAVAIL ***

Dans ce chapitre, nous allons travailler sur le terminal afin d’effectuer quelques tâches, mais avant, nous allons vous faire une petite introduction pour vous expliquer ce que vaut dire Shell,terminal ou autrement dit (ligne de commande, la console) :

Shell est plus généralement employé pour désigner un interpréteur de lignes de commandes pouvant accéder aux services et interagir avec le noyau d’un système d’exploitation. Dans le cas d’Ubuntu, un shell interagit avec le noyau Linux.

Le rôle de l’interpréteur de lignes de commandes est de traiter une ligne de commande, comprendre son contenu et exécuter la tâche associée. Le shell est intimement lié avec la notion de terminal, qui est une interface en mode texte dans lequel des lignes de commandes peuvent être saisies. Une fois une ligne de commande écrite dans un terminal, celui-ci l’envoie à l’interpréteur de lignes de commandes, qui la décortique et l’exécute.

Il existe de nombreux interpréteurs de lignes de commandes, qui fonctionnent tous plus ou moins pareillement. Par défaut, le shell associé à un compte d’utilisateur dans Ubuntu est Bourne-Again Shell (Bash) ; toutes les commandes saisies par un utilisateur dans un émulateur de terminal sont traitées par Bash.

tout notre travail sera fait sur le système d’exploitation UNIX et pour démarrer une fenêtre de commande (terminal) il faut : 1- pour Ubuntu c’est le systeme Unix 2_ pour Mac Os c’est Unix également 3_ Pour les utilisateurs de Windows7,8 faut installer Cygwin par contre pour les utilisateurs de Windows 10 il y a un environnement Ubuntu déjà intégré.

Commençons par apprendre quelques commandes sur la ligne de commande :

Ceci est le forme de la fenêtre de commande lorsqu’on l’ouvre.

  • Voilà une liste de commandes :

1- whoami : Affiche votre véritable nom d’utilisateur

2- pwd : Affiche le dossier actuel où se trouve l’utilisateur

3- ls : Liste le contenu d’un fichier répertoire

4- ls -color / : Affiche les couleurs

5- ls -a : Affiche une liste détaillé

6- cd : (change directory) Fr ( Se déplacer dans l’arborescence de répertoires

7- mkdir :  (Make directory)  Fr ( Créer un répertoire)

8- man : Affiche le manuel des commandes

9- touch + nom fichier : Créer un fichier vide

10- cat : Affiche le contenu d’un fichier

11- echo : Affiche une chaine de caractères vers la sortie standard e.g l’écran

11- wc : Word count  : permet de compter des bits, des mots, des caractères, des lignes dans un fichier.

12_ rm : Effacer un fichier

13- rm -R : Effacer toute l’arborescence

14- rmdir : (Remove directory)  Fr ( effacer un répertoire)

15- cp : Copy Fr Copier

16- mv : Move FR déplacer

SUITE..... PRATIQUE


Tout d’abord, j’ai tapé tous les codes dans le pdf pour bien réviser les commandes qu’on a déjà appris pendant le cours.


unnamed-file rm-qui date liste ls-l pwd1   rm-qui test1 who

mais on peut voir qu’il y a une erreur avec la commande quand je travaille sous Windows 10. en fait, quand je tape la même code sous Ubuntu, ça marche; (il faut demander au prof). Exercice A Ecrire un script (dans le dossier PROGRAMMES) permettant de générer dans le répertoire  DUMP-TEXT un fichier txt contenant 2 lignes ( sur la première, votre nom, sur la seconde, le mot choisi pour votre projet) j’écrit le script avec Gedit.  N’oubliez pas de sauvegarder les scripts avec les bons noms d’extension. Par exemple, pour le script bash, le nom d’extension est .sh, et pour le script html, le nom d’extension est  .htm ou .html.

capture-decran-2016-11-20-a-16-59-44

Pour exécuter, tapez dans bash la commande « sh exerciceA .sh » Exercice B Ecrire un script (dans le dossier PROGRAMMES) permettant de générer dans le répertoire   TABLEAUX un fichier html contenant 1 tableaux avec 2 lignes (sur la première, votre nom, sur  la seconde, le mot choisi pour votre projet). Pour faire l’exercice B, il faut d’abord savoir comment écrire un fichier html et comment insérer le tableaux dedans. Je cherche sur Internet et apprends à le faire.

html

Remarque: pour bien afficher le « è » dans notre mot du projet « frontière », il faut ajouter cette ligne dans le script: «  ». ensuite,  on peut l’ajouter dans notre script bash.


exercice-b1  

et voilà!

05/10 à 19/10/2016

 

*** EPISODE III : LA MER EST AGITÉE ***

UN PEU DE THEORIE…

Dans cette partie de notre blog, on expliquera brièvement comment on devra travailler pour la mise en œuvre de notre projet et quelles sont les commandes pour le faire apprises pendant le cours. Le but est de créer un fichier  de sortie HTML, avec un tableau où écrire des informations concernant nos URLs, comme le numéro du lien, la page aspirée, l’encodage, etc.  Tout doit être codé en UTF-8 (un codage de caractères informatiques). Pour arriver à ce résultat on partira de notre fichier contenant les URLs .

  1. La récupération des URLs sera effectuée avec  wget ou curl, qui nous permettront d’aspirer les pages web et numéroter les liens.
wget : permet le téléchargement d’un fichier depuis le web.

  • wget [options] [url] : permet l’enregistrement du fichier dans le dossier courant.

  • wget -i : lit les adresses depuis un fichier.txt.

  • wget -k : convertit les liens pour être disponible en consultation locale.

  • wget -p : télécharge tous les fichiers requis pour une consultation convenable d’une page HTML.

curl : un outil de commande qui permet de télécharger et envoyer des données sur différents protocoles.

  • curl [options] [url] : télécharge un fichier ou une page web et affiche son contenu dans la console.

  • curl -s  : utilisé pour détecter l’encodage de la page web.

  • curl -C : reprend un téléchargement que l’on avait arreté.

 
  1. Une fois les pages aspirées et stockées localement, on utilise la commande lynx pour la récupération du texte brut.
lynx : un navigateur web en mode texte utilisable via une console ou un terminal.

  • lynx [options] [url] : ouvre une page web dans la console.

  • lynx -dump : sortie formatée avec liste numérotée des liens.

  • lynx -source : donne le fichier source, non formaté.
 
  1. Après la récupération du texte brut, il faut changer l’encodage des données associés aux URLs en UTF-8 en utilisant les commandes file/egrep et iconv.
file : permet de déterminer le type d’un fichier.
  • file -i : donne des informations sur le fichier, comme par exemple son encodage.

egrep : commande qui utilise les expressions régulières pour chercher un motif (par exemple un mot) dans un fichier.

  • egrep -i  « mot » : pour trouver tous les mots présentent dans le fichier.

  • egrep -in « mot » : pour trouver les numéros des lignes où « mot » apparait.

  • egrep -inv « mot » : affiche les lignes que ne contiennent pas « mot ».

iconv : commande qui permet de convertir un fichier d’un codage dans un autre.

  • iconv -l : pour consulter la liste des encodages disponibles.

  LA PRATIQUE! Tout d’abord, on prépare l’environnement du travail: les répertoires et les arborescences. Avec de l’aide de la commande cd et mkdir, on peut facilement créer tous les fichiers dont on aura besoin dans le bon répertoire:



capture-decran-2016-11-20-a-17-18-23

screenshot-prepare-environnement

screenshot-from-2016-11-05-150423


Pour bien présenter les étapes qu’on dois faires pour le projet, on a fait une graphe synthétiaue qui explicite clairement le déroulement du programme: la graphe à faire Maintenant on va aller chercher les urls sur le navigateur. Dès que les urls sont pretes, on les placera toutes dans un fichier text brut, il nous faut au moins 50 urls  et il faut les placer dans le répertoire (dossier) qu’on a fait auparavant et qu’on l’a appelé URLS. Ensuite, pour bien nous entraîner, on a suivi les étapes du premier pdf de cette séance: page officielle du projet. Sur cette page, il y a déjà des solutions (scripts) proposées, mais quand je les lance directement sur mon ordinateur, ils me donnent des erreurs. Alors, je fais un peu des modifications pour que les scripts marchent avec mes urls sous mon ordinateur.



1) . Premier script: créer un tableau des liens


screenshot-from-2016-11-09-001720

le résultat du premier script:


screenshot-from-2016-11-09-001909


2). second script: liens externes et liens internes


screenshot-from-2016-11-09-010940

créer un variable ( une autre colonne « pages aspirées ») dans le tableau:

 

le résultat du second script:


screenshot-from-2016-11-09-010258 3). troisième script: créer un tableau de liens avec 3 colonnes ( URLS, PAGES ASPIRÉES et DUMP) screenshot-from-2016-11-09-011657


Le résultat du troisième script:


screenshot-from-2016-11-09-011827


Enfin, je lance le grand script que le prof a montré pendant le cours et qu’il a bien expliqué, et on a eu le bon résultat:


screenshot-from-2016-11-09-012716

bravo! et on veut aussi mettre sur notre blog les scripts détaillés dans la page officielle du projet, il est très bien expliqué et très claire;


bb

26/10/2016

*** EPISODE IV : UNE LUEUR À L'HORIZON ***

Récapitulation

 Dernièrement on a vu et appris comment traiter les urls :

1- Préparer l’environnement du travail

2-Chercher les urls du mot concerné sur le navigateur et les rassembler dans un fichier text brut.

3- Aspirer le text brut contenant les urls en utilisant le script qu’on vous a déjà montré.

4- Sauvegarder les urls aspireés dans un fichier Html.

           Expression régulierès (REGEX)

cover-regex

Dans cette partie je vais vous expliquer les expressions régulières, ne vous arrachez pas les cheveux ;D pour la première fois ça l’air incompréhensible mais je vous promets que à la fin de cette partie, vous partirez avec une connaissance suffisante pour traiter vos textes facilement. Maintenant on se trouve avec des fichiers où on trouve une masse de données contextuelle, des fois ces données sont importantes des fois ces données sont inutiles. la question qui se pose à  ce stade est : comment on peut arriver à séparer les données qui nous intéresse de celles qu’on veut se débarrasser ? C’est à ce point où les Expressions Régulières devient inévitable et d’une importance majeure. Alors que signifie une EXREG ? Une  expression régulière, est, en informatique, une chaîne de caractères, que l’on appelle parfois un motif, qui décrit, selon une syntaxe précise, un ensemble de chaînes de caractères possibles. Regardez l’exemple suivant : (b|c)*(ba|abc$) pour certaines personnes, cela est de charabia mais en fait c’est une expression régulière qui a un début et une fin et surtout un objectif. Pour arriver à comprendre ces expressions régulières, je vous invites à regarder leurs syntaxes et comment on les forme : La syntaxe est la suivante : egrep —->(Exreg)—-> fichier.  On utilise toujours le mot egrep avec l’expression régulière et on travaille toujours sur un fichier. Par exemple si vous voulez utiliser les Exreg sur un navigateur, cela ne va pas marcher. Comme nous avons dit, il y a un syntaxe pour écrire une expression régulière mais aussi il y a des opérateurs à comprendre et à savoir leurs fonctions. Voilà un tableau des opérateurs qui va vous éclaircit :

Métacaractère//// Comportement Exemple
* Correspond zéro ou plusieurs fois au caractère  qui précède.

Équivalent à {0,}.

Lo*ng correspond à « lng » ou « long » ou « loong » ou « loooooooong »
+ Correspond une ou plusieurs fois au caractère ou à la sous-expression qui précède.

Équivalent à {1,}.

zo+  correspond à « zo » et « zoo », mais pas à « z ».
? Correspond zéro ou une fois au caractère ou à la sous-expression qui précède.

Équivalent à {0,1}.

zo?  correspond à « z » et « zo », mais pas à « zoo ».

^ Lorsqu’il est utilisé comme premier caractère dans une expression hors crochets Correspond à la position au début de la chaîne recherchée.

Lorsqu’il est utilisé comme premier caractère dans une expression entre crochets, ^ vaut dire négation de ces caractères.

^[abc]correspond à 3 caractères au début de la chaîne recherchée.

[^abc] correspond à tout caractère sauf a, b, et c.

$ Correspond à la fin de la chaîne recherchée. ba$ correspond à « b » ou « ba ».
. Correspond à tout caractère unique sauf le caractère de saut de ligne \n. a.c  correspond à « abc », « a1c », et « a-c ».
[] Marque le début et la fin d’une expression entre crochets. [1-4]  correspond à « 1 », « 2 », « 3 » ou « 4 ».[^aAeEiIoOuU] correspond à tout caractère à l’exclusion des voyelles.
{} Marque le début et la fin d’une expression avec quantificateur. a{2,3}  correspond à « aa » et « aaa ».
() Marque le début et la fin d’une sous-expression. Les sous-expressions peuvent être enregistrées pour une utilisation ultérieure. A(\d)  a pour correspondance « A0 » à « A9 ». Le chiffre est enregistré pour une utilisation ultérieure.
| Indique un choix entre deux éléments ou plus. z|food  correspond à « z » ou « food ».(z|f)oodcorrespond à « zood » ou « food ».
\w un caractère lettre ou chiffre ; équivaut à [A-Za-z0-9] Dans la chaîne recherchée « le petit chien blanc… », \w+correspond à « le », « petit », « chien » et « blanc ».
\ Marque le caractère suivant comme un caractère spécial, un littéral, une référence arrière ou une séquence d’échappement octale. \n  correspond à un caractère de saut de ligne. \(correspond à « ( » . \\ correspond à « \ » .

 On peut également utiliser des options de l’outil egrep qui nous facilitent énormément la tache telles que :


1- egrep -v : Affiche les lignes qui ne contiennent pas le motif.

egrep-v


2- egrep -i : Permet de chercher le motif soit écrit en minuscule ou en majuscule.

egrep-i  


3- egrep -n : Affiche les lignes qui contiennent le motif et leurs numéros de ligne.

egrep-n


4- egrep -o : Affiche que le motif recherché.

egrep-o


5- egrep -b : Affiche les lignes qui sont avant le motif recherché.

egrep-b


6- egrep -a : Affiche les lignes qui sont après le motif recherché. 

egrep-a


Peut-être vous vous posez la question mais que signifie –color dans ce que j’ai écrit et la réponse se trouve dans le mot meme color ;D cela est une autre option qui vaut dire sors moi les résultats en couleur.

Un peu de pratique


Si on veut par exemple récupérer tous les mots dans un fichier qui commencent par un V majuscule alors l’expression régulière qui nous faut est : egrep ^[V] nomdefichier.txt


v


Si on veut récupérer les chiffres l’exreg qui nous faut est : egrep [0-9] et si on veut récupérer les résultats en couleur, on ajoute –color comme on l’a mentionné auparavant.


chiffre

Si on veut récupérer un mot qui commence soit par une lettre minuscule soit par une lettre majuscule l’exreg qui nous faut est : egrep -i  –color (le mot recherché) fichier.txt. Dans mon cas j’ai cherché le mot monsieur. Il y a une autre expression régulière qu’on peut utiliser dans ce cas là et c’est celle ci : egrep (M|m)onsieur.


monsieur

Maintenant à vous de jouer : Dans vos fichiers, trouvez tous les mots qui finissent par Z majuscule. Eliminez tous les mots qui contiennent des caractères spéciaux comme éàç&. Trouvez les lignes qui contiennent le mot que vous cherchez et leurs numéros de lignes.

   

*** EPISODE V : PANIQUE À BORD ***

Le script étape 1 :

On a recueilli 50 urls afin d’exécuter le script pour créer un tableau html contenant plusieurs colonnes dont : le n° de lien, le lien, statut curl, page aspirée, encodage,  dump initial, dump utf8, contexte utf8 et finalement la fréquence du motif.

On a exécuté le script et on a rencontré plusieurs problèmes : Problème n°1 : Curl a des limites : cela vaut dire que curl ne peut traiter que les liens qui ont un code de 200 et n’est pas capable de traiter les autres codes.


tab1 tab2


Solution : La solution était de remplacer Curl par une autre commande, dans notre cas, il s’agissait de FILE.


capture-decran-2016-12-20-a-16-16-16

Problème n°2 :

C’est que le tableau affiche l’encodage de utf8 ce qu’on demande mais il nous affiche aussi d’autres encodage, voire des fois, il n’affiche rien du tout. On doit transcoder tout encodage en utf8 et pour les liens où curl ne détecte rien, il faut trouver l’encodage.

tab5


Solution : Pour les encodages où curl arrive à détecter et qui ne sont pas de utf8, faut les transcoder, et pour cela nous avons utiliser la commande iconv, sachant que si l’encodage est reconnu par la commande iconv on continue sinon on laisse tomber.

tab6 tab7

Dans le 2e cas où Curl n’arrive pas à détecter l’encodage, ce qu’il faut faire est le suivant :


giphy

Et non ne vous inquitez pas il y a une solution un peu compliqué mais compréhensible.

Dans ce cas il faut utiliser la commande egrep avec  des expressions régulières, celui ci va détecter l’encodage directement dans les pages aspirés en cherchant le Charset. Bien sur comme vous allez voir dans l’expression régulière que des fois cette expression va nous afficher toute la ligne contenant le mot utf8 mais nous nous voulons que l‘encodage et rien d’autres c’est pour cela on a ajouté et modifié notre Regex afin d’afficher que l’encodage.

Inserer expression régulière cf l’explication du script détaillé.

2E

SCRIPT

tab8 tab9

Comme on mentionné auparavant que pour régler le problème de détection d’encodage, on a proposé de remplacer la commande Curl par la commande File. Mais celui ci nous a fait le bordel. Spécialement dans les lien chinois et arabe. Celui ci nous a détecté l’encodage Mais c’était pas le bon :O et à cause de cela file à continué de nous envoyé des faux résultats. La raison de ce problème ce que les langues chinoise et arabe utilisent un encodage spécial et des différentes conventions d’encodage.

Ces conventions sont heureusement reconnues par la commande iconv et on peut les transcoder en UTF-8 à l'aide de cette petite commande utile.

meta


Pour détecter l'encodage (charset) des page html téléchargés, on utilise la commande  egrep "meta.+charset" nomfichier.html


egrep-charset

mais, il ne marche pas toujours bien, souvant chez les URLs chinois ou arabes:


egrep-pb

la raison est qu'il n'y a pas que l'information d'encodage dans la même ligne, par exemple, ici, dans notre page aspirée, il y a un script qui suit. c'est pour ça, il faut rajouter une grande ligne d'expressions régulières pour les raffiner; cette expression contient 2 parties:


12

Remarque: dans le charset, il y a peut être des "-, :, on doit le préciser dans les expressions régulières.

Et pour obtenir que l'encodage comme UTF-8, on va préciser davantage dans les expressions régulières:

3

Remarque: la commande sed et cut: ils permettent de modifier ou de supprimer une partie d’une chaîne de caractères, par exemple pour remplacer un caractère par un autre dans un fichier, ou encore supprimer des chaînes de caractères inutiles.




*** EPISODE VI : Les marins s'approchent du port ***


La séance 10 est une séance de transition, on va finir la première phase de notre projet  et commencer à préparer des corpus pour l'analyser.

I. La fin du tableau

1). le programme "minigrep-multilingue"

Le programme "minigrep-multilingue" permet de rajouter une nouvelle colonne "CONTEXTE HTML" dans notre tableau de résultat; cette colonne est facultative mais elle rend les résultat plus clair et on décide de le faire.

on peut installer le programme en suivant les explications présentées ici et installer préalablement une bibliothèque Perl en suivant mode d'emploi ici.

et plus précisément, les étapes d'installation avec images sous Ubuntu :

makeperl-makefile-plsudomakeinstall

Après l'installation du programme minigrep, on va lire détaillement le script étape 3 pour bien comprendre comment ça marche avant de le lancer.

on va facilement trouver cette ligne dans le script: perl ./PROGRAMMES/minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cpttableau-$compteur.txt parametre-motif-extraction.txt;  en suivant ce répertoire, on met le dossier décompressé du minigrep dans le dossier PROGRAMME. et en exécutant cette ligne, une nouvelle colonne "CONTEXTE HTML" sera rajoutée dans le trableau, dans cette colonne où stocke notre corpus à analyser.

Maintenant, on peut lancer notre script étape 3, et voilà!

etape3-1tbetape3-e

pour la colonne "CONTEXTE HTML", ci-dessous la sortie d'un URL arabe:

Capture d’écran 2017-01-23 à 15.08.24.png

Et voilà pour le chinois:

minigrepchinois

II. Préparation des corpus pour l'analyse

On a quasiment fini la première phase du notre projet à l'aide du programme minigrep, mais avant de passer à la deuxième phase avec le Trameur, on va préparer des corpus pour l'analyser.

1). Concaténation des fichiers

Pour mieux décrire le comportement du mot choisi, il faut l'analyser dans son context, et pour cela, on s'intéresse donc aux deux fichiers: DUMPS et CONTEXTES; le premier est le texte complet qui contient le mot et le deuxième est son vrai contexte, des lignes autour du mot choisi.

On va REGROUPER tous les fichiers  DUMPS (d'une même langue) dans un fichier pour le premier corpus et  les CONTEXTES pour le second corpus. Le prof nous a donné une archive  concat.zip qui contient un petit programme qui nous permet  de concaténer  tous les fichiers qui se trouvent dans un même répertoire. Puisque on a déjà lancé le programme minigrep, on a donc des pages html dans nos dossiers CONTXTES. Ensuite on les déplace temporairement et double-clic sur le programme qui est dedans. Génial, ça marche très bien!

conc

concat1

On fait la même chose pour le dossier DUMPS, oops, qui nous a trouvé des erreurs, concernant le chinois :

concat2

C'est parce que dans le fichier DUMPS, il y a des fichiers qui sont pas en UTF-8, on doit les déplacer et garder les fichiers transcodés en UTF-8 et le problème est résolu.

3

Concernant l'arabe, il nous a trouvé des problèmes également, ce ne sont pas des problèmes techniques, mais plutôt des problèmes issus du croisement des langues, car on est parti chercher les urls dans les journaux bilingues voire trilingues dont la concaténation extrait toutes les langues confondues.

capture-decran-2017-01-11-a-00-08-06

le script traite déjà ce problème mais si le script ne le fait pas, une expression régulière peut etre un bon remède à ce problème.

voilà le résultat après nettoyage  :

Capture d’écran 2017-01-23 à 15.28.49.png

Pour ce qui concerne la langue italienne, on n'a pas trouvé des problèmes d'encodage.

Par contre, le corpus des DUMPS contient les BUTTONS qui permettent de partager un article sur des reseaux sociaux comme Facebook, Twitter, etc.

Pour éviter que ceux-ci apparaissent dans notre analyse avec le Trameur comme des mots avec une fréquence élevée, il faut  alors nettoyer le corpus.

Voici notre corpus après la concatenation:

dump_ita_non_pulito

Voici maintenant notre corpus après le nottoyage fait graçe à des expressions regulières:

dump_ita_pulito

2). Segmentation du chinois (une des rares langues sans espaces)

Comme le chinois est normalement écrit sans espaces entre les mots contrairement aux autres langues dans notre corpus, j'ai été obligé de segmenter les textes avant de les traiter dans le Trameur. J'ai trouvé sur Internet un logiciel Stanford Word Segmenter pour segmenter le chinois.

Après avoir télécharger le logiciel, je l'ai décompressé et lu attentivement le manuel README. En suivant les instructions, j'ai choisi la manière appropriée de segmentation.

readme

Quand je lance la commande bash segment.sh -k pku CONCATFILE.txt utf-8 0 sur le terminal, il m'affiche que dans la ligne 65, java not found. Donc, j'ai cherché sur Internet et téléchargé le java 1.8 sur le teminal; ensuite je relance la commande:

segmenter

Il marche très bien et m'affiche directement le résultat sur le terminal!

Puis, afin d'écrire les résultats dans un fichier .txt au lieu de les afficher directement, je rajoute l'opérateur > à la fin de la commande:

bash segment.sh -k pku CONCATFILE.txt utf-8 0 > output.txt

et voilà, les résultats sont bien écrits dans le fichier output.txt.

output.png

Mais si on le lit déraillement, il reste encore des erreurs et des  négligences qui rendent le résultats de l'analyse moins fiables. Pour  diminuer les interférences, on peut examiner manuellement encore une fois les résultats.

Et on fait exactement la même chose pour le deuxième fichier de concaténation. N'oubliez pas de nommer autrement le output du 2e fichier, sinon, le 2e résultat va écraser le premier!