1 janvier 2008

tag cloud + tag tree = nuage arboré (2) Les voeux présidentiels pour 2008

De quoi nous a parlé notre Président dans ses voeux hier soir ? On avait eu droit l'an dernier aux nuages de mots des voeux des présidentiables pour nous en donner de jolies synthèses ; cette année, évolution technologique oblige, on va faire le nuage arboré de ce discours de 9 minutes. Pour ceux qui n'auraient pas suivi l'épisode précédent, ou le billet initial sur Aixtal, un nuage arboré, c'est le pouvoir de visualisation du nuage de mots, associé à celui de la classification hiérarchique en un arbre binaire non orienté !

La preuve en images pour tous les mots prononcés plus de deux fois :
nous donne :


La bonne nouvelle, c'est que si vous aussi vous souhaitez créer vous-même de tels nuages arborés, c'est possible en utilisant la nouvelle version 0.2 de TreeCloud Builder, associée au logiciel SplitsTree (introduction rapide à SplitsTree ici en français). La meilleure nouvelle, c'est que la prochaine version, actuellement en cours de codage et qui sera publiée en même temps que la troisième partie de ce billet, ne nécessitera plus d'utiliser SplitsTree.

La mauvaise nouvelle, c'est que dans la forme actuelle du logiciel (non documenté, fourni "tel quel" avec ses sources), l'arbre construit, même s'il reflète en un sens une certaine proximité entre les mots rapprochés dans ses sous-arbres, reste à prendre avec précaution. En effet l'enchaînement des algorithmes actuels ne me convainc pas. Je rentre dans les détails techniques, vous pouvez donc sauter la fin de ce paragraphe si ça ne vous passionne pas. Il y a actuellement plusieurs gros points faibles dans la construction de l'arbre. Tout d'abord le choix de la distance entre mots. TreeCloud Builder implémente la distance proposée dans le billet précédent, ainsi qu'une formule dérivée d'une formule de cooccurence classique : d1(a,b) = 1 - max(p(a|b),p(b|a)), où p(a|b) est la probabilité qu'une fenêtre de 20 mots autour du mot b contienne le mot a. Le problème avec cette distance d1 est qu'elle n'a rien d'arboré : tout arbre construit par des méthodes classiques en phylogénie ressemble très fortement à une étoile avec de longues branches menant aux feuilles, et des branches internes très courtes. Pour éviter ce problème je l'ai bricolée afin d'augmenter artificiellement la taille des branches internes du résultat obtenu (pour l'instant je ne comprends pas tout à fait comment ça marche, théoriquement, mais en pratique, ça marche) : d2(a,b) = log(101)-log(1+max(100p(a|b),100p(b|a))). Comme la matrice de distances obtenue contient beaucoup de log(101), les distances entre feuilles éloignées sont peu significatives, j'applique donc plutôt la méthode UPGMA (et voilà pourquoi ce billet n'est pas tagué phylogénie mais plutôt clustering) qui agglomère successivement dans l'arbre les mots les plus proches selon cette distance d2.

Revenons tout de même au nuage arboré créé. Même s'il est à prendre avec des pincettes, des phénomènes intéressants y apparaissent. Tout d'abord, l'urgence, vous n'avez pas pu louper l'anaphore alla Guaino. La figure de style apparaît dans l'arbre, puisqu'anaphore est accompagné dans "son sous-arbre" par des mots peu fréquents. Pas vraiment de grand concept-clé accolé à l'urgence, donc, mais une série de mesures. En revanche, le rôle de la France dans le monde, ça occupe un bon sous-arbre, et la représentation arborée permet notamment de désambiguïser le sens du mot vieux : Sarkozy ne parlait pas de nos chers aînés, mais bien de notre vieux pays. Remarquez aussi le sous-arbre des participes passés (voulu, pris, faite), organisés autour de l'ouverture, signes d'une promesse tenue. Même s'il est rigolo, le rapprochement de souci et coeur est artificiel, dû à la faible fréquence des deux mots, dommage pour les psychanalystes en arbre. Autres sous-arbres intéressants, celui des considérations présidentielles sur les valeurs de la vie (famille et travail), et celui plus grave sur la société et son avenir, pour lequel nous devons faire confiance à l'action du gouvernement...

Rendez-vous j'espère avant fin février pour une version aboutie et robuste théoriquement d'un TreeCloud Builder qui vous ferait vite et bien vos nuages arborés. En attendant, ce blog accueillera sous peu un nouvel utilitaire libre, qui permettra de récupérer d'une image les valeurs d'une courbe qu'elle contient. Fans des comparaisons Google Trends, Technorati Chart, Sous-marin Jaune, faites chauffer vos tableurs, c'est pour très bientôt !

Le programme TreeCloud.

11 commentaires:

Anonyme a dit…

excellent(s) outil(s), vivement la version suivante du TreeCloudBuilder !
En revanche, soit je manque une étape, soit je suis polio (soit autre chose..? :)) mais la colorisation me reste inaccessible.. Quand j'importe le fichier taxa via le bouton "Colorer", rien ne change...
J'ai supposé qu'il fallait "réimporter" dans SplitsTree le nouveau code au format Nexus obtenu... Mais l'exécution ne change rien non plus... Snif.

Philippe a dit…

Ni l'un ni l'autre, c'est moi qui ai oublié un point essentiel ! Comme vous l'aviez deviné, il faut réimporter dans SplitsTree le fichier obtenu. Sauf que je n'ai pas précisé comment procéder : il faut ouvrir un nouveau SplitsTree (depuis SplitsTree, File, New, parce que si on fait la procédure dans un fichier déjà ouvert dans SplitsTree le coloriage restera identique), cliquer sur l'onglet Source. Aller dans TreeCloud Builder, et faire Ctrl A pour sélectionner tout le fichier dans la case du bas, Ctrl C pour copier, retourner à SplitsTree dans l'onglet source et faire Ctrl V pour coller. Enfin cliquer sur l'onglet Network pour dessiner l'arbre, en choisissant éventuellement une méthode de dessin d'arbre (menu Trees, UPGMA) et un dessin avec branches aux longueurs égales (menu Draw, Equal Angle, décocher Use weights).

Bon c'est un peu complexe quand on n'a pas le coup de main, mais je ne pense pas améliorer ça dans le logiciel puisque le passage par SplitsTree n'est que temporaire et sera bientôt abandonné...

Anonyme a dit…

Merci pour votre réponse... Malheureusement, j'avais suspecté cette manoeuvre, et j'ai beau faire un New, voire relancer un SplitsTree, rien n'y fait, l'arbre obtenu reste désespérement monochrome... N'y a-t-il pas un paramétrage de SplitsTree qui manquerait..?
Bref, ça n'est pas gravissime :-) Disons que ça rend la sortie de la prochaine version du TreeCloudBuilder encore plus souhaitable. Bonne continuation.

Anonyme a dit…

Eh, l'idée est géniale !
Mais bon, ça n'a pas l'air simple d'utilisation à première vue.

Philippe a dit…

@laurentlc : ce que vous pouvez faire, c'est vérifier le fichier .nex que vous avez enregistré depuis SplitsTree (en l'ouvrant dans le bloc-notes par exemple), il doit contenir un bloc qui commence par BEGIN Network; et contient les sous-blocs : TRANSLATE, VERTICES, VLABELS, et EDGES.

Quand on charge ce fichier depuis TagCloud Builder avec le bouton Colorer, il modifie les couleurs dans le sous-bloc VERTICES, puis les tailles des polices dans le sous-bloc VLABELS. Bref, je suppose que dans votre cas, c'est le bloc Network qui manque. Essayez alors de l'enregistrer autrement depuis SplitsTree, menu File, Export..., et cochez toutes les cases sur la gauche (dont Network).

Le coloriage devrait ensuite fonctionner. Si non, envoyez-moi le fichier problématique.

Philippe a dit…

@lds : l'idée, c'est plutôt Jean Véronis, hein ! Et pour l'utilisation effectivement pour l'instant le passage par SplitsTree n'est pas très ergonomique, mais une fois qu'on a l'habitude c'est très simple et rapide.

Anonyme a dit…

Pour répondre rapidement : le bloc Network est pourtant bien là, avec tous ses blocs... Mais rien de grave, j'attendrai la prochaine version de votre programme :-)

Anonyme a dit…

Bonsoir,

J'aimerais simplement savoir à quoi vous sert le fichier tabulaire avec les fréquences de chacune des occurrences ?
(dans votre exemple Voeux2008-dic.txt)

L'utilisez vous ? et si oui à quel moment ?
(puisque TreeCloud ne "charge" qu'un fichier texte [non structuré] et génère ensuite le code source pour SplitsTree [si j'ai bien tout suivi... :o)])


PS: joli travail!

Philippe a dit…

Bonsoir anonyme, vous avez parfaitement suivi en effet... sauf que j'ai aussi fait un petit nuage de mots pour l'image, en utilisant TagCloud Builder... et donc le programme Dico de Jean Véronis qui calcule les fréquences.

C'est vrai que pour TreeCloud Builder j'ai reprogrammé cette "brique logicielle", mais je ne l'ai pas encore intégrée pour la construction des nuages de mots... Il faut dire aussi que la version de Jean est plus rapide.

Anonyme a dit…

Bonjour, J'aimerais savoir a quoi sert ce programme car je vois que des utilisations superficielles .

C'est prévu pour les métérologues ou bien ? :P

Philippe a dit…

Ouép, anonyme, pour l'instant c'est plutôt superficiel simplement parce que la robustesse de la méthode n'a pas été testée. C'est justement en cours, et une fois que les nuages arborés seront fiables, on pourra les utiliser non seulement comme simple outil de visualisation sympa, mais aussi pour faire de l'analyse de données, voire de l'analyse littéraire. Publication en préparation, patience...