Le mot "migrant" : variations sur le web

Corpus et méthodes

Dans cette rubrique, nous présentons nos méthodes de recherches pour constituer notre corpus, ainsi que nos méthodes de traitement des données.
Notre corpus est uniquement écrit, et provient entièrement du réseau internet. Comme nous avons 60 URLs par langue à traiter, il nous a fallu organiser nos données très clairement. L'idéal était de faire un tableau à plusieurs colones, afin de retrouver très rapidement toutes nos données avant ou après un traitement particulier. Le nombre d'URLs étant important, nous avons eu recours à un programme informatique que nous avons nous-mêmes constitué. Celui-ci nous a permises de gérer l'encodage (notamment pour le russe qui utilise un système d'écriture différent du nôtre), de nettoyer les pages aspirées, de récupérer notre motif, etc. Par la suite, nous avons utilisé plusieurs logiciels afin de travailler sur des statistiques.

Les recherches d'URLs

Pour le français :

Afin d’obtenir des URLs sur notre thème pour la langue française, nous nous sommes aidées de Google pour faire une recherche par mots. Pour la presse, nous avons tapé les mots-clés suivants : "migrant, immigration, nationalisme" ainsi que quelques noms de journaux (Le Monde, Le Figaro, Le Point…), qui nous permettaient de proposer un article au sujet des migrants. Par la suite, Nous nous sommes servis des pages d’accueils de journaux où nous avons pu faire une recherche par mots-clés, afin de trouver d'autres articles contenant le mot "migrant". Nous nous sommes aussi appuyées sur ce que nous proposait Google lorsque nous choisissions la catégorie "actualités".

Pour obtenir des liens intéressants sur le langage des citoyens, nous avons surtout travaillé à partir de Google où, après avoir tapé nos mots-clés, nous avons sélectionné les catégories "blogs", et "discussion", dans le but d’obtenir des adresses de blogs ou de forums, sur lesquels il était question de discussions entre citoyens concernant l’immigration. Nous avons ainsi constitué un corpus correspondant au langage quotidien dans l'opinion publique.

Pour les discours politiques, nous avons tapé "migrant, discours politique" sur Google, et nous avons eu comme résultat le site vie publique, qui nous a proposé un premier discours politique. A partir de la fonction recherche de ce site, nous avons pu taper le mot clé "migrant", qui nous a donné une liste de discours ou interviews de personnalités politiques concernant l’immigration. Nous avons pu constituer un corpus sur le dicsours politique, pour lequel nous avons gardé des discours assez récents : le plus ancien date de 2006.

Pour l'anglais :

La recherche des liens s’est aussi faite par le biais du moteur de recherche Google. Concernant le thème de la politique, nous avons accédé à des sites officiels concernant l'immigration. A partir de ces sites, nous avons obtenu une liste de liens vers plusieurs sites d'organismes similaires, ce qui a étendu la recherche.

Pour les sites de presse, nous avons récupéré une liste de liens d’après le site de presse britannique le plus connu.

Concernant le langage quotidien, nous avons recherché des blogs dans les sites qui énumèrent les blogs les plus visités des années précédentes. Pour vérifier la pertinence du blog ou du forum, nous avons tapé le mot-clé "migrant" dans la barre de recherche pour obtenir les pages dans lesquelles figure ce mot.

Constitution du programme

Pour traiter toutes ces URLs, nous avons mis au point un programme en langage BASH. Ce programme a pour but les fonctions suivantes :

Ci-dessous, nous résumons les fonctions BASH que nous avons utilisées :

Arborescence de travail

Avant toute chose, nous avons créé une arborescence de travail commune afin de centraliser les informations et de pouvoir s'entraider plus facilement sans s'y perdre. Cela permettait de pouvoir faire fonctionner les scripts sur tous nos ordinateurs. Cette arborscence nous servait à stocker les informations receuillies. Par exemple, nous stockions nos URLs retenues dans un fichier.txt (par langue), lui-même stocké dans un répertoire "URLS". Le programme devait lire les fichiers de ce répertoire et commencer son traitement, ligne à ligne.

Aspiration des pages

La commande wget récupère (de façon non-interactive) ou télécharge des fichiers à partir d’un site Web ou d’un site ftp. Avec l'option -O, le résultat est sauvegardé dans un fichier portant le même nom que le fichier téléchargé.

Syntaxe : wget -O url

Remarque : il est aussi possible d'utiliser la commande curl, mais celle-ci fonctionne différemment : elle peut afficher le résultat de la page téléchargée en ligne de commande.

Traitement de l'encodage

La commande iconv permet de convertir un fichier d’un codage à un autre. Ainsi, pour convertir un fichier "texte" du format ISO-8859-1 au format UTF-8, on utilise la commande comme ceci :

$ iconv -f (from) code ISO-8859-1 -t (to) code UTF-8 fichier_a_convertir > fichier_UTF-8

Voyons comment cette commande est utilisée dans notre script :

iconv -f $encodage -t utf-8 ../DUMP-TEXT/$i.txt > ../DUMP-TEXT/$i-utf-8.txt

L’option -f affiche l’encodage du fichier en entrée (l’information sur l’encodage initial du fichier est stockée dans la variable $encodage) et -t spécifie l’encodage dans lequel nous souhaitons convertir le fichier (ici, utf-8).

Récupération des textes bruts

La commande lynx permet d'appeler le navigateur web "lynx", utilisé dans un script ou en ligne de commande (comme nous le faisions dans le temps!). Avec l’option −dump, nous récupérons le fichier d’un site web ou ftp de façon non interactive. Le paramètre -nolist enlève tous les liens du bas des pages aspirées.

Syntaxe : lynx −dump -nolist $list http://www.xyz23.com/file01.html >$FICHIER

Récupération du motif et du contexte

La commande egrep permet d’extraire un motif donné d’un fichier donné. Nous avons utilisé les options suivantes :

Syntaxe : egrep -i -o "\b$motif\b ./DUMP-TEXTE/$j/$i-utf-8.txt > ./CONTEXTES/$j/$i-utf-8.txt


Par la suite, nous avons utilisé un petit programme installé au préalable, que nous avons appelé dans notre script. Ce petit programme s'appelle "minigrep" et est écrit en langage Perl. Il permet de récupérer le contexte de notre motif dans les pages html. Il nous donne des résultats en html en nous relevant les lignes où il rencontre notre motif.

Syntaxe : perl ./PROGRAMMES/minigrepmultilingue/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXTE/$j/$i-utf-8.txt ./PROGRAMMES/minigrpemultilingue/motif.motif.txt

Concaténations des textes bruts et contextes

Pour travailler sur les statistiques et cooccurrences de notre motif, nous devions concaténer l'ensemble de nos fichiers "dump" d'une part, et "contextes" d'autre part. Nous avons utilisé la commande cat , qui permet de récupérer une suite de fichiers. Nous demandons ensuite de créer un ficher où cette liste récupérée sera concaténée.

Syntaxe : cat ./DUMP-TEXTE/$j/$i-utf8.txt >> DumpGlobaux.txt

La division du texte

Afin d'analyser notre corpus "global" (concaténé) de façon intelligente, nous avons fait en sorte que le texte soit découpé par langue et par thème (politique, presse, opinion publique). Pour ce faire, nous avons fait en sorte qu'après chaque concaténation de répertoire, le programme ajoute une balise permettant d'encadrer les dump concaténés d'une langue. Nous utilisons le même principe pour diviser les thèmes, sauf que la balise s'insère après la concaténation d'un fichier : par exemple, après avoir traité les urls de l'anglais dans les discours politiques, nous aurons une balise indiquant que le texte concerne l'anglais, puis une indiquant que le texte concerne les discours politiques. Lorsque ce fichier aura fini d'être traité, une balise suivante indiquera que le texte concerne l'anglais dans la presse, etc.

Grace à ces fichiers globaux, nous allons maintenant pouvoir nous intéresser aux statistiques des mots du texte, ainsi qu'aux cooccurrences de notre mot "migrant".
Rendez-vous maintenant sur les rubriques Nuages de Mots et Le Trameur pour connaître le fonctionnement des logiciels utilisés, ainsi que le résultat de nos analyses!

Problèmes rencontrés

Mis à part les problèmes d'étourderie (oublier de fermer une boucle dans le programme, mal nommer un fichier, etc), nous nous sommes heurtées à quelques problèmes plus difficiles à résoudre.
Pour les URLs des forum français, certaines pages ne s'apiraient pas. Nous avons mis un moment à comprendre qu'il s'agissait en réalité de "Google group", catégorie propre à Google où nous trouvons diverses discussions. Il a donc fallu trouver d'autres URLs, et le problème était résolu.

Pour rester sur la recherche de forum français, la tâche n'a pas été si facile. Les forums étaient difficiles à trouver, et il a fallu tenter plusieurs stratégies pour découvrir des adresses pertinentes. Taper le mot "migrant" ne suffisait pas toujours. Pour y remédier, il a fallu provoquer la recherche de forums où nous pouvions trouver une certaine controverse, en tapant par exemple "pour ou contre", "controverse", en plus de notre mot "migrant".

Nous avons rencontré quelques problèmes d'encodage, notamment avec le russe. L'encodage des pages n'était pas toujours indiqué. Nous avons fait en sorte de transcoder tout de même les pages en UTF-8 lorsque l'encodage initial n'était pas précisé.

Pour les pages qui n'étaient pas traitées, nous avons fait en sorte d'obtenir un retour d'aspiration de page, pour voir d'où venait le problème (voir les lignes en rouge sur les tableaux générés). Cette stratégies peut se faire à plusieurs endroits dans le script pour savoir d'où provient le problème.

Lorsque nous programmons, il est naturel d'obtenir toujours des erreurs. Mais globalement, nous n'avons pas rencontré un nombre important de problèmes, si nous ne prenons pas en compte les points-virgules oubliés ou une boucle mal fermée!

Master Ingénierie Linguistique - Corpus et méthodes