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 3 Présentation du projet

Le sujet de notre projet est le résultat d’un débat qu’il nous semble intéressant de relater ici. Lorsque nous avons constitué notre équipe, ayant tous les trois un intérêt commun pour le gaming - les jeux vidéos -, nous avions convenu que notre projet porterait sur ce thème. Le mot « gaming » en lui-même ne nous semblant pas présenter d’intérêt linguistique particulier - en dehors de l’emprunt linguistique qu’il représente -, il nous restait donc encore à préciser le sujet. Deux idées ont alors émergé. D’un côté, nous nous sommes intéressés à l’e-sport, une discipline en plein essor depuis la fin des années 1980 dont le statut est discuté (est-ce un sport ? Peut-on véritablement en faire son métier ?) et dont la popularité et l’image peuvent différer significativement d’un pays à l’autre. D’un autre côté, nous avons pensé à étudier les différents mots servant à désigner les personnes en lien, de près ou de loin, avec le monde des « gamers ». Les mots « geek »

#Première étape du projet : Création du corpus

Rappel du mot d’étude : geek Rappel des langues étudiées : français, anglais, allemand, italien, japonais L’analyse linguistique que nous comptons réaliser concernant le mot geek sur le web se fonde sur un corpus que nous allons construire. Mais avant de s’intéresser à la partie informatique du problème, il convient d’établir les limites et la nature de ce fameux corpus multilingue.  Réflexion sur le corpus : Premièrement, nous souhaitons que les urls sélectionnées aient été créées au cours des cinq dernières années. La raison de ce choix se base sur le fait que nous souhaitons réaliser une étude synchronique du mot geek et non pas diachronique. Nous pensons qu’une période de cinq ans représente une durée suffisamment longue pour avoir de nombreuses données, tout en limitant les risques de biais que représentent les stéréotypes qui circulaient sur les geeks par le passé tels que “les geeks sont des personnes asociales qui restent enfermées toute la jo

#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