Accéder au contenu principal

#Article 8 : Le Traitement Du Japonais

Bien que l'aspiration des pages japonaises se soit déroulée sans l'ombre d'un problème d'encodage, dès lors que l'on s'attèle au traitement textuel, on se retrouve face à un obstacle non négligeable: l'absence d'espaces entre les mots.

Fort heureusement, nous ne sommes pas les seuls linguistes à passer par là, et les sentiers sont battus depuis quelques années déjà!
La solution réside dans l'emploi d'un analyseur-étiqueteur morphosyntaxique. Il en existe plusieurs, et après de chaotiques pérégrinations internautiques entre liens morts et problèmes de téléchargements, nous avons trouvé notre perle rare: Kytea!
...
Eh non, problème d'installation avec le makefile.
Nous nous tournons donc vers MeCab!
...
Même problème.
Le choix s'offre à nous: passer le restant de nos jours à triturer les rouages d'un Unix émulé sous Windows pour trouver l'éventuel fichier manquant, ou passer par une autre méthode.

Le flemmard a toujours raison, surtout quand la solution lui est servie sur un plateau d'argent: Janome, module python développé précisément pour ce genre de travail, possède même un tutoriel écrit par un de nos prédécesseurs en TAL.
C'est ainsi que Cinq Légendes M1 qui traitent le japonais dans leurs projets se sont réunis autour d'une table, 5 ordinateurs et 3 systèmes d'exploitation, pour comprendre comment fonctionne l’OEil du Serpent (Ja-no-Me).

Comme précisé ci-dessus, cet étiqueteur fonctionne en python. Il est d'une simplicité déconcertante, mais avant de pouvoir en faire l'expérience par nous-mêmes, il a fallu installer le module en question pour python.

Etape 0: vérifier que python est bien installé
Etape 1: lancer python
Etape 2: utiliser pip pour installer Janome: "python -m pip install janome"
Etape 3: pip n'est pas installé... installer pip: "sudo apt-get install python3-pip"
Etape 4: recommencer et installer janome "python -m pip install janome"
Etape 5: pip n'est toujours pas installé???
Etape 6: remettre sa vie en question (d'autant que sur Linux et Mac, tout marche bien!)
Etape 7: se rendre compte que "python" fait appel à python 2.7 et qu'il faut toujours spécifier "python3" pour utiliser ce dernier
Etape 8: installer janome pour python3: "python3 -m pip install janome"
Etape 9: lancer python 3 et vérifier que janome en est désormais bien un module
>>> from janome.tokenizer import Tokenizer
>>> t = Tokenizer()
>>> for token in t.tokenize(u'すもももももももものうち'):
...     print(token)
...
Etape 10: se féliciter et écrire enfin son programme!

Maintenant que ça marche, on peut élaborer un programme python qui fait le travail d'étiquetage et, surtout, de segmentation, pour que egrep, minigrep et consors puissent faire leur travail.

On modifie légèrement le programme précédent pour:
1) lui permettre de traiter un texte directement
2) lui permettre de récupérer des arguments mis dans la commande qui l'appellera, spécifiant les chemins d'entrée et de sortie des fichiers traités.
On obtient:

Il faut maintenant l'appeler au sein de notre script bash. Il ne faut cependant le faire que lorsque la liste d'URLs traitée concerne le japonais.
Dans ce cas en particulier, en conséquence de la répartition des tâches décidée en début de semestre, seuls l'italien et je japonais sont traités. Le fichier d'URLs japonaises étant le second à être parcouru par le script, on définit comme condition d'utilisation du présent script python que numerotableau soit égal à 2:


Dans la même logique, on a ajouté l'obligation de définir deux motifs en argument de la commande bash. Le premier sera, ici, pour l'italien, et le second pour le japonais. Par conséquent, on aura, pour egrep, 2 motifs différents à utiliser selon l'itération de la boucle principale, et de même deux fichiers contenant le motif à utiliser dans minigrep.
D'où la portion de code suivante:
Et sa répercussion dans minigrep:

On note au passage la possibilité de définir plusieurs motifs pour chaque ensemble d'URLs grâce à la reconnaissance d'expressions régulières par minigrep; par exemple, en japonais, on recherchera geek, nerd et otaku, donc le motif \bギーク|ナード|オタク\b .


Après toutes ces péripéties, le programme fonctionne à merveille, reconnaissant les motifs demandés selon la langue.

Une nouvelle victoire pour l'Equipe des Héros du Projet "Geek"!

Commentaires

Posts les plus consultés de ce blog

#Article 10 : Création du Site Web

Ce dixième et dernier article du blog aura pour objet la création de notre site web associé au projet. Nous avons choisi une mise en forme personnalisée, sur la base d'un modèle trouvé en ligne, et, ayant tous les trois quelques connaissances en HTML/CSS, nous avons ajouté et modifié nous-mêmes les pages dudit site. Il reprend certaines parties de ce blog: présentation de l'équipe, du projet. Nous y avons ajouté une section traitant des programmes utilisés tout au long de notre recherche, ainsi qu'une page dédiée aux données traitée. Par la suite, une section se consacre au script et à son écriture, une aux résultats obtenus, et enfin une à l'analyse de ces résultats. Contrairement à ce blog, le site contiendra plus de visuels et sera probablement un peu plus agréable dans sa navigation. Pour pouvoir travailler ensemble sur les fichiers, ceux-ci ont été partagés sur un drive commun. En effet, il serait autrement compliqué d'y avoir accès aisément depuis différentes

#Article2 Présentation de l’équipe

Avant de vous présenter le projet lui-même et de vous expliquer ce qui nous a amenés à choisir le mot « geek » pour notre étude, laissez-nous vous faire une rapide présentation de l’équipe. Aurore : (langues : français et anglais) : Je suis titulaire d’une licence en Sciences du Langage à Nanterre. En dernière année, avec le parcours Traitement Informatique de Corpus j’ai pu suivre une initiation à la linguistique informatique et la linguistique de corpus. Ayant apprécié l’expérience, j’ai décidé d’entreprendre le Master TAL. En 3ème année de licence, dans le cadre d’une enquête sociolinguistique, mes camarades et moi-même avions travaillé sur les anglicismes dans les jeux vidéos. C’est l’envie d’entreprendre un projet sur un sujet connexe qui m’a conduite à vouloir travail sur un thème proche du gaming. Corentin : (langues : français, japonais, italien) Titulaire d’une Licence en Science du Langage à Nanterre, passionné par langues et la linguistique, et versé dans l’informatique,

#Article 7 : Finalisation du script

Lors de notre dernier billet, nous avons cherché une manière d’obtenir les encodages de toutes les pages et de convertir en UTF-8 celles qui ne l’étaient pas déjà. Nous avons vu en cours une manière plus simple et efficace que celle que nous avions trouvée : egrep -io "charset=\"?[^\",]+\"?" ./PAGES-ASPIREES/$numerotableau-$compteur.html | cut -f2 -d"=" | tr -d '("|\\|>)' | sed "s/'//g" | tr '[a-z]' '[A-Z]' L’expression régulière charset=\"?[^\",]+\"? permet de trouver l’encodage, puis nous nous débarrassons de « charset= » grâce au cut -f2 -d"=" , ainsi que des éventuels guillemets (simples et doubles) encadrant l’encodage et autre signes (barres obliques et balises) avec tr -d '("|\\|>)' | sed "s/'//g" | , et enfin nous passons le résultat en majuscules avec tr '[a-z]' '[A-Z]' .   Nous   avons ajouté à cette commande les inst