De la liste de patrons au graphe de mots

Nous disposons désormais des données nécessaires à mésurer les "forces d'attirance" qui existent entre les mots. Pour rendres visibles les relations entre les mots, nous allons créer un graphe à travers le logiciel Pajek. Afin de mettre nos données au format démandé par Pajek, il faut passer par deux étapes intermédiaires:


Création d'un document structuré en format GraphML

GraphML

GraphML est un métalangage basé sur XML qui permet de structurer des documents représentant des graphes. Dans notre cas, les objets à décrire sont de deux types:

Les données apparaissant dans ce document peuvent être soit des mots, soit des nombres indiquant la fréquence des cooccurrence. Ce typage est défini dans l'entête du document GraphML ainsi:

<graphml>
<key id="d0" for="node" attr.name="forme" attr.type="string"/>
<key id="d1" for="edge" attr.name="frequence" attr.type="double"/>


Pour mieux comprendre prenons un exemple simple. Nous avons la liste de patrons suivante:

développement durable
développement industriel
développement durable
pôle industriel

A chaque forme doit correspondre un seul noeud, et à chaque couple nom-adjectif un seul arc indiquant la fréquence. On aura donc (peu importe dans quel ordre):

<!-- les noeuds: -->
<node id="1">
<data key="d0">développement</data>
</node>
<node id="2">
<data key="d0">durable</data>
</node>
<node id="3">
<data key="d0">industriel</data>
</node>
<node id="4">
<data key="d0">pôle</data>
</node>

<!-- les arcs: -->
<!-- (la source et la cible peuvent être échangées) -->
<edge source="2" target="1">  <!-- pour le couple "développement durable" -->
<data key="d1">2</data>       <!-- apparaissant 2 fois dans le corpus     -->
</edge>
<edge source="3" target="1"> <!-- pour le couple "développement industriel" -->
<data key="d1">1</data>
</edge>
<edge source="3" target="4"> <!-- pour le couple "pôle industriel" -->
<data key="d1">2</data>
</edge>

Le script Perl

Nous savons ce que nous voulons créer, encore faut-il automatiser la tâche...
L'opération n'est pas des plus simples: dans un premier temps il faudra lire le fichier pour faire de chaque mot gauche la clé d'un hachage (%listeMot) auquelle est associée une référence à un tableau de scalaires contenant les mots droits liés à ce mot gauche-là. Par exemple:

développement ... ref1--> [durable, industriel] 
pôle ............ ref2--> [industriel]
En même temps on calcule la fréquence de chaque patron.

Deuxiemment, on parcourt le hachage (clé, valeur, clé, valeur...) pour crééer des noeuds. A chaque fois on vérifie d'abord si le mot en question ne constitue déjà un noeud. Si une nouvelle association apparaît, un nouveau arc est créé.
Pour visualiser le script cliquez ici: patron2graphml.pl, pour la sortie cliquez ici: patron-graphml.xml.

Visualisation du réseau de mots

Transformation en format Pajek

Pour mettre nos données en format Pajek nous appliquons la feuille XSL GraphML2Pajek.xsl.
Les éditeurs XML à interface graphique tels Cooktop et Copy Editor incluent un processeur d'XSL. Cependant il est préferable d'utiliser des outils en ligne de commande quand la taille des données à traiter est vraiment immportante. Nous avons testé Saxon et Altova.

Voici un extrait de la sortie en format Pajek:

*Vertices 208 
1 "tournoi"
2 "qualificatif"
3 "secrétaire"
4 "d"
5 "candidature"
6 "turque"
7 "médiation"
8 "africaine"
9 "jeunes"
10 "Africains"
...
*Edges
1 2 1
3 4 6 
5 6 3
7 8 2
9 10 4
11 12 2
13 4 2
14 4 2

Création du graphe par Pajek

Pajek (en slovène: "araignéé") est un logiciel libre d'analyse et visualisation de réseaux. Développé en Pascal par une équipe de l'Université de Ljubljana, Pajek n'est pas à priori destiné au traitement de données linguistiques, mais, puisqu'il sait créér une représentation graphique d'un réseaux de données, il s'adapte bien à nos exigences.

Nous lançons Pajek, chargeons le fichier obtenu par la feuille XSL. L'option Draw permet de construire le graphe, ensuite on ajuste la position des noeud manuellement pour rendre le graphe mieux lisible.

Ce graphe ne contient qu'une partie des patrons extraits du corpus. Cliquez sur l'image pour l'agrandir.

Le résultat est bon à première vue, mais il y a des regions où le bruit est important. Notamment le noeud qui a le plus de relations est le mot "d"... Il s'agit tout simplement d'une erreur d'étiquetage, puisqu'en effet la préposition élidée d' a été prise à tort comme un adjectif. Quelques noms propres non reconnus par l'étiqueteur figurent aussi dans le graphe (Alexandra Rosenfeld, Tracy Chapman...).

Les "constellations" représentent des objets diverses. Certains couples Nom-Adj sont des entités nommées: Comité interministériel, Parti communiste, Banque centrale, rivière Songhua.

Il est aussi intéressant d'observer la présence de syntagmes très employés qui s'approchent du statut de mots composés: élections législatives, ressources minières, pouvoir exécutif, contrôle judiciaire, désastre écologique, ...femme instable (??).

Aller à la conclusion