11 mai 2009

Multinuage des programmes aux élections européennes

Le logiciel TagCloud Builder de construction de nuages de mots, présenté ici il y a déjà quelque temps, a bénéficié d'une mise à jour la semaine dernière : il permet désormais de représenter les mots de plusieurs textes au sein d'un seul nuage, en attribuant une couleur à chaque texte.

Cette idée m'a été proposée par Kirsten Talbot, qui termine son master en sciences sociales en Afrique du Sud, et voulait représenter ainsi ses données sur les stéréotypes communautaires dans l'Afrique du Sud post-apartheid. En attendant de pouvoir découvrir ses visualisations et ses résultats, voici un exemple d'utilisation de cette visualisation en multinuage de mots, sur les programmes (ou ce qui y ressemble le plus...) des quatre partis français en tête dans les sondages pour les européennes selon Ipsos :

Je trouve que le résultat obtenu est bien meilleur que la simple juxtaposition de nuages créés pour chaque texte, comme celle que j'avais tentée pour les programmes PS et UMP des présidentielles il y a deux ans. Mentalement, on peut soit se focaliser sur une couleur, et bien voir les mots qui apparaissent pour celle-ci, soit lire le nuage "linéairement", et comparer pour chaque mot à quelle taille il apparaît dans chaque couleur (cette deuxième lecture permet donc le contraste des deux nuages, sans se préoccuper de trouver une bonne formule de contraste). Il manque la possibilité de cliquer sur un mot pour voir ses occurrences dans un concordancier - comme Jean l'avait fait ici pour la constitution européenne par exemple - ça ne devrait pas tarder.

Et le style n'est pas aussi chouette que les nuages Wordle. Si quelqu'un connaît (ou programme) une implémentation libre de cette méthode de visualisation (l'algorithme de placement est pour l'instant © IBM), je suis très intéressé !

En ce qui concerne les améliorations arborées des nuages de mots, voici une présentation en français du principe et des détails techniques, donnée la semaine dernière au séminaire doctorants de mon labo. Ca vous donnera peut-être envie de tester TreeCloud qui est maintenant disponible avec une interface graphique facilitant son utilisation et un manuel d'utilisateur.

Données utilisées : détaillées ici.
Edit : merci à Vincent pour la correction du lapsus sur l'année !
D'autre part je n'ai pas commenté le nuage, qui me semble pourtant intéressant sur le fond : voici quelques mots (ou absences de mots) qui peuvent surprendre (ou au moins mériter d'aller examiner les contextes) : croissancefemmeidentité, développement, énergie, nouvelle, et d'autres tendances plus attendues : droite, dumping, social, automobile, biologique, mobilitécitoyen, coopération, ambition, décidé, histoire, sociale, protection, turquie, libéralisme-capitalisme.

Ah, tiens, IBM a un truc similaire dans ManyEyes, mais apparemment limité à deux textes.

8 commentaires:

Vicnent a dit…

quand tu proposes en fin de billet le mot (croissance) en couleur rose, je ne comprends pas son sens : seul le PS n'affiche pas le mot croissance ? BTW, Croissance est bien en rose dans le texte mais pas en vert ni en Orange ! So ?

Une donnée intéressante serait d'avoir le nuage en négatif : quels sont les mots de chaque parti qui sont absents alors que deux ou plus des trois autres en parlent.

Pour Wordle (Ah Bordel, mais quelle merveille !), je ne suis pas sûr que cela fasse partie de ma thèse, mais en tout cas, on en est pas loin... (si tu vois ce que je veux dire... un truc Open, qu'on appellerait Gamte ou Philvi...)

Philippe a dit…

Je ne pensais pas que la croissance, et surtout la "croissance forte", était une priorité (ou même un thème) de la gauche, en pensant que les crises financière et écologique incitaient à oublier les rêves de croissance à deux chiffres pour parler plutôt de développement durable. Ceci dit, le texte du PS étant plus petit que les autres, le mot n'y apparaît que 3 fois.

Je suis tout à fait d'accord avec toi sur l'intérêt des mots absents ! Quelle taille choisir ? La moyenne de celles dans les autres corpus ? Et finalement, au lieu de travailler en binaire avec présence/absence, peut-être choisir plutôt de visualiser plutôt la sous-représentation (il doit y avoir une formule statistique pour ça, genre dérivée de TF-IDF...).

Et donc pour OpenWordle on se tient au courant (je suis impatient de voir les résultats de tes premier travaux de thèse, au passage ;)). Mais bon, je te préviens, si je me lance, ce sera probablement un truc tout moche en Delphi !

Anonyme a dit…

Multi-nuages ?
Où ça des nuages ?
Ne s'agit-il pas plutôt d'un écrasement de maintes dimensions au bénéfice d'une comparaison simpliste d'apparition de mots en terme de fréquence.
Une présentation de type ACP ne serait-elle pas plus représentative ou du moins plus nuageuse.

Cela serait certes moins marketing. C'est curieux c'est le mot qui me vient à l'esprit pour qualifier la représentation affichée. Mais son intelligence m'échappe probablement !

A+

Philippe a dit…

"nuage" n'est pas utilisé au sens propre, mais au sens qu'il a dans l'expression figée "nuage de mots".

Quant à la disposition des mots en ACP, on reste dans le principe d'un "écrasement de maintes dimensions", tout le problème est de rendre le résultat lisible. Par exemple, ici, il l'est moyennement. Alors effectivement, les fans de visualisation "marketing" pourront envisager de créer un programme qui prend en entrée une liste de mots colorés, avec des tailles de police différente, et des coordonnées issuées de l'ACP, et tente de décaler un peu chaque mot pour qu'aucun ne se recouvre, en respectant au mieux les coordonnées de l'ACP. Quand je dis "au mieux", j'imagine que le problème est NP-complet (un candidat pour me fournir une réduction ?) mais qu'il est possible de coder rapidement une heuristique à la Wordle (un candidat pour le faire avant moi ?).

Enfin, je tiens à mentionner qu'il y a effectivement une certaine intelligence à cette simple disposition dans l'ordre alphabétique : c'est l'ordre idéal pour permettre au lecteur d'y retrouver rapidement un mot. Ca me paraît particulièrement pertinent dans le cas d'un programme politique : on pense à des mots, et on se demande s'ils sont mentionnés dans le programme des grands partis, et avec quelle importance.

Anonyme a dit…

Novatrice comme technique d'analyse, et très parlante, toute fois il faudrais peut-être avoir un effet de zoom un peu comme google map, zoom maxi contenant tous les mots, zoom mini ne contenant que les mots de grandes tailles. Mais ceci n'est qu'une toute petite amélioration qui n'enlève rien au remarquable aspect novateur déjà existant
Cordialement

Philippe a dit…

En fait on peut régler cela dans TagCloudBuilder, en choisissant, avant de charger les textes le nombre de mots les plus fréquents de chaque texte qu'on va mettre dans le multinuage. Mon billet contenait les 100 mots les plus fréquents, j'ai ajouté celui des 10 mots les plus fréquents de chaque texte ici.

Jean-Rémy Falleri a dit…

Dis donc ça pourrait être marrant de définir une distance entre programmes en imaginant que les programmes soient des vecteurs dans un espace de dimension k (k étant le nombre total de mots clés, il faut un threshold du genre les 100 mots les plus fréquents de chaque programme comme tu fais) et la coordonnée pour chaque dimension étant la fréquence d'apparition du mot-clé dans le programme... La similarité sémantique entre (-1 et 1) entre deux programmes pourrait être déduite de la valeur du cosinus entre les deux vecteurs correspondants... On peut ensuite calculer une distance en prenant l'arcos de la similarité. On pourrait ensuite l'appliquer sur tous les couples de programmes possibles pour voir qui est proche de qui, par exemple avec un bon vieil arbre :D (la technique décrite ici est très largement inspirée des vecteurs conceptuels)...

Philippe a dit…

En fait Jean-Rémy la distance intertextuelle est un sujet de recherche à part entière, regarde par exemple le numéro dédié du journal Corpus : n°2, déc. 2003.