27 janvier 2008

Danger : accidents mortels !

Je ne connais pas du tout la blogosphère américaine (d'ailleurs, commencer à publier en anglais est aussi un moyen, j'espère, d'en récupérer quelques échos) mais il y a un blog anglophone que je visite régulièrement, xkcd, recueil de vignettes de BD tordantes... pour un public plutôt initié (comprenez : aussi geek que son auteur Randall Munroe, à l'origine d'autres jolis coups).

J'ai particulièrement apprécié une des dernières vignettes, qui fait appel aux nombres de résultats Google, comme ça m'est déjà arrivé sur ce blog pour l'orthographe, la célébrité des députés, ou la date de naissance du web :

Activités dangereuses
Indexées par le nombre de résultats Google pour
"mort dans un accident de ..."

Type d'accident - Résultats Google
parachutisme - 710
ascenseur - 575
surf - 496
skateboard - 473
camping - 166
jardinage - 100
patinage - 94
couture - 7
blogage - 2

Cette vignette a créé une Google Bomb slashdottée en faisant exploser le nombre de réponses pour "died in a blogging accident". L'expression avait bien sûr marqué les esprits de tous les blogueurs, qui ont repris la vignette en ajoutant les résultats de leurs propres recherches Google sur le sujet. On peut voir sur ce site ou dans le forum xkcd de nombreuses tentatives pour trouver la perle rare de l'activité dangereuse originale.

Sauf que la langue anglaise a un avantage sur le français : elle exprime ses noms d'activités par des verbes au participe présent. Là vous commencez à voir où je veux en venir, et si on envoyait carrément à Google tous les verbes anglais, pour qu'il nous dise lequel est le plus accidentogène ? Comment le faire techniquement ?

Première étape, récupérer une liste de tous les verbes anglais. Pas évident, comme en témoignent cette question Google Answers pleine de liens morts, ou ces 5 pages de réponses inutiles ou périmées de forumeurs... Bref, je me suis résolu à faire confiance à mon moteur de recherche préféré, en lui envoyant une liste de tous les verbes qui me sont passés par la tête. Manque de chance, elle renvoyait naturellement des dictionnaires complets, j'interdis donc d'un nom commun, hat, et en troisième page pour -hat strike give abandon wipe rub search seek hang eat adjust draw conclude reappear reconsolidate create destroy dream cut put drive, j'arrive enfin à une page du projet VerbNet qui présente plus de 3500 fichiers nommés par des verbes, plus quelques intrus. Même si on peut faire mieux, je m'en suis contenté...

Deuxième étape, générer les participes présents. Verbe + ing ? Oui mais il y a quelques subtilités, en fonction des dernières lettres de l'infinitif ! Heureusement que mon logiciel de tableur préféré me permet de coder quelques bouts de programmes, voilà la formule magique pour le "calcul" des participes présents (histoire de ne pas me perdre dans les parenthèses, je l'ai séparée en plusieurs cellules dans mon fichier tableur, mais pour le fun je la mets en un seul morceau) :
B1=IF(RIGHT(A1;1)="e";=IF(LEFT(RIGHT(A1;2);1)="i";CONCATENATE(LEFT(A1;LEN(A1)-2);"ying");CONCATENATE(LEFT(A1;LEN(A1)-1);"ing"));=IF(OR(RIGHT(A1;1)="d";RIGHT(A1;1)="g";RIGHT(A1;1)="m";RIGHT(A1;1)="n";RIGHT(A1;1)="p";RIGHT(A1;1)="t");=IF(OR(LEFT(RIGHT(A1;2);1)="a";LEFT(RIGHT(A1;2);1)="e";LEFT(RIGHT(A1;2);1)="i";LEFT(RIGHT(A1;2);1)="o";LEFT(RIGHT(A1;2);1)="u");=IF(OR(LEFT(RIGHT(A1;3);1)="a";LEFT(RIGHT(A1;3);1)="e";LEFT(RIGHT(A1;3);1)="i";LEFT(RIGHT(A1;3);1)="o";LEFT(RIGHT(A1;3);1)="u";AND(LEFT(RIGHT(A1;2);1)="e";RIGHT(A1;1)="n"));CONCATENATE(A1;"ing");CONCATENATE(A1;RIGHT(A1;1);"ing"));CONCATENATE(A1;"ing"));CONCATENATE(A1;"ing")))

Allez, une petite explication rapide. Si la dernière lettre est un "e", alors :
  • si l'avant-dernière est un "i", je transforme en "ying" (die -> dying)
  • sinon, je supprime le "e" et ajoute "ing" (love -> loving)
sinon :
  • si le verbe se termine par "en", j'ajoute simplement "ing" (sharpen -> sharpening)
  • sinon, si l'avant-dernière est un "d", "g", "m", "n", "p", "t", je vais la doubler si elle est précédée par une voyelle qui n'est pas précédée par une voyelle (bid -> bidding, put -> putting, mais claim -> claiming, feed -> feeding)
  • sinon, j'ajoute simplement "ing" (speak -> speaking)
J'ai créé ces règles intuitivement, en fait pour le doublement de la consonne finale, il faut vérifier si la dernière syllabe est accentuée, ma version a un très petit nombre d'exceptions, je n'ai identifié que des verbes se terminant par "on" (abandon -> abandoning, alors que con -> conning est correct).

Dernière étape, entourer chaque participe à gauche par "died in a (ou "died in an si le verbe commence par une voyelle) et à droite par accident", et envoyer chaque expression ainsi créée à Google, en utilisant FuryPopularity. J'en ai profité pour mettre le programme à jour, parce que Google a changé le style de ses résultats, et apparemment durci sa politique de détection de spam de requêtes : au bout de 200 requêtes envoyées toutes les 5 secondes, le moteur m'a empêché de continuer, et m'a débloqué seulement après captcha. En laissant une dizaine de secondes, ça passe. Je suis preneur de toute information sur leur algorithme de détection : se fonde-t-il seulement sur la fréquence (si oui, ils doivent identifier les proxys générateurs de nombreuses requêtes, non ?) ou sur la périodicité des requêtes, ou encore les actions effectuées suite aux requêtes ?

Voici le nuage brut de mots trouvés :
En analysant avec précaution ceux qui apparaissent moins fréquemment, on ne tombe malheureusement pas que sur des prétendants aux Darwin Awards. Tout d'abord, quelques parasites issus des réactions au dessin de xkcd, ou des décès d'animaux, mais aussi des choses plus gênantes : des adjectifs (amusing, embarrassing, interesting...) et des verbes n'indiquant pas une activité, mais plutôt des circonstances (exploding, crushing, choking...). Pour ces derniers, je n'ai pas de solution. On peut en revanche enlever les adjectifs verbaux assez facilement de façon automatique. Bien sûr, c'est possible en utilisant un analyseur syntaxique, voire un dictionnaire, mais je préfère rester dans l'utilisation des nombres de résultats Google.

J'ai fait plusieurs essais avant de trouver le critère discriminant. Comparer la fréquence de la forme participe présent par rapport à celle de l'infinitif (en espérant que ce soit plus élevé pour les adjectifs verbaux), ou trouver les pourcentages d'apparition du participe présent just après l'article "a", "more", ou "most". Dans le graphique ci-contre, les 5 premiers verbes donnent naissance à des adjectifs verbaux (amusant, effrayant, choquant, intéressant, dérangeant). On y voit que la stratégie du "a" ne fonctionne pas en particulier à cause des participes présents utilisés en anglais dans des mots composés : "a frying pan", une poële à frire, explique que "a frying" apparaisse si fréquemment. En revanche pas de contrexemple dans cette liste-test pour le superlatif avec "most" qui permet apparemment de faire la distinction (en fait la méthode laisse passer deux intrus : "ensuing" et "seeming" dans cette liste d'une centaine de verbes) :

Bref, une fois ce petit filtrage effectué, on peut regarder non seulement la fréquence de "died of a ... accident", mais aussi la comparer avec la fréquence de "a ... accident", ainsi que la popularité de l'activité elle-même, pour obtenir des sortes de taux d'accident (en bleu) et taux de mortalité (en rouge) :Et voilà ! Si votre activité favorite n'est pas dans la liste, vous avez au moins une base de comparaison pour tester sa dangerosité. Et si elle y est, faites attention à vous (surtout ceux qui ont prévu une petite joute équestre pour le weekend prochain...), mais ne vous inquiétez pas trop quand même, vous gardez aussi vos chances avec la bonne vieille tumeur ou la crise cardiaque !


This post is translated to English: Danger: deadly hobbies!
Et comme d'hab, les fichiers source : liste de plus de 3000 verbes anglais et la construction automatisée de leur participe présent, test des méthodes de détection des adjectifs verbaux, résultats des requête Google.

16 janvier 2008

Britney-Amy : duel mortel

Découverts grâce au Petit Journal de Canal + la semaine dernière, les sites WhenWillAmyWinehouseDie.com et WhenIsBritneyGoingToDie.com proposent un concept intéressant : pronostiquer la date de décès des deux divas, le plus proche gagnera qui un iPod Touch, qui une PS3. Buzz énorme, bien sûr, des milliers d'internautes se sont rués pour participer, laissant un petit messages de pré-condoléances au passage. Les deux sites sont évidemment optimisés pour récupérer des revenus publicitaires (contrairement à l'initiative plus confidentielle mais tout aussi "sympathique" du TopMort), et communiquent seulement les données brutes entrées par les signataires.

Il manquait donc un peu d'analyse de tous ces pronostics. Grâce à la formidable assistance de Matthieu Muffato, expert en domptage de Python, quelques lignes (de code) et quelques heures (d'exécution du programme) après que je lui aie parlé du problème, il m'envoyait son source avec les données récupérées.

La question que je m'étais initialement posé sur les pronostics était simple : quel est l'intervalle de temps le plus grand qui est encore libre, et permettant donc de maximiser a priori les chances de gagner ? A priori, c'est à dire en considérant que tout intervalle de temps d'une même durée est uniformément dangereux pour Amy et Britney, et uniformément choisi par les autres internautes.

Pas de chance, ces conditions idéales sont loin d'être vérifiées en pratique, pour une raison finalement toute simple : l'internaute veut gagner son iPod ou sa PS3 maintenant, et pas dans 30 ans ! Donc si vous voulez cibler pour le décès de votre Britney préférée un mois qui n'a encore pas été choisi par les autres visiteurs, il faudra attendre février 2023 ! Pour Amy, il y a eu moins de participants, donc si rien n'a changé depuis la récupération des données, novembre 2016 est encore libre, ou alors tenter l'année 2031, dont seul le mois d'octobre a été choisi. Je dois aussi préciser, comme Matthieu me l'a fait remarquer, qu'aucune date n'est enregistrée sur ces sites après janvier 2038, à cause probablement du codage des dates. Bref, passons aux choses "sérieuses", voilà un petit aperçu du nombre de pronostic par mois (avec simple renormalisation verticale pour Amy qui a reçu moins de votes) :
J'imagine que vous êtes aussi ahuris que je le fus quand les courbes sont apparues : elles sont quasiment identiques ! Coefficient de corrélation de 0.98, on obtient la même loi de puissance. Alors c'est l'occasion de faire un petit intermède mathématique. Pour détecter ce type de loi, on fait un tracé log/log des valeurs (c'est à dire on applique une fonction logarithmique aux abscisses, et aux ordonnées, pour afficher les points de coordonnées (log x,log y)) et on doit obtenir une droite. A vue d'oeil elle a à peu près pour équation Y=4-3X, c'est à dire quand on quitte le repère log/log et qu'on revient au linéaire : log10 y = 4-4/3 log10 x, et enfin y = 10 000 - x^(4/3), ce qui est l'équation de la courbe bleue.

En fait les lois de puissances arrivent très régulièrement dans les analyses de données réelles (en particulier de nombreux graphes petit monde ont une distribution des degrés en loi de puissance). Ce qui est remarquable est qu'ici les deux lois ont à peu près les mêmes paramètres. En regardant en détail on se rend quand même compte que les internautes ont plutôt privilégié 2008 pour Britney (qui semblait vraiment être au plus bas en ce début d'année) et 2009 pour Amy.

En regardant précisément les courbes, ont peut aussi noter une apparente périodicité. En tout cas elles ne sont pas monotones, et une représentation des proportions de pronostics de chaque mois dans l'année pour Miss Winehouse donne la courbe des pourcentages à gauche. Les variations sont étonnantes, entre novembre et août, on passe du simple au double ! Je n'ai pas d'explication a priori sur les choix réduits des mois de novembre, décembre, et février, peut-être que c'est un mécanisme similaire à celui que décrit Knuth dans un de ses premiers exos du tome 2 : demandez à un ami (ou un ennemi) un chiffre aléatoire, vous obtiendez plus souvent le nombre 7.

Pour en finir avec les chiffres, la représentation des pronostics par jour, toutes années confondues. J'ai enlevé le premier janvier qui était artificiellement haut à cause du problème du codage des années, qui a donné énormément de 01/07/1970.
Là à nouveau un phénomène de périodicité étonnant, les joueurs préfèrent visiblement les milieux de mois. Notez l'esprit retors qui fait apparaître aussi haut le 14 février, surtout pour la pauvre Britney. Même le point de son anniversaire le 2 décembre apparaît anormalement haut par rapport à ses voisins...

Alors pour oublier tout ça terminons sur une note de recueillement, d'émotion et de poésie, avec les nuages de mots des pré-condoléances pour les deux stars.
This post is translated to English: Britney-Amy, Celebrity Deathmatch.
Fichier tableur des pronostics par jour, par mois, autres fichiers source fournis sur demande, à moins que je les mette ici un jour.

11 janvier 2008

Sarkozy l'Orateur (2) : décryptage de l'impro-Sarko

Je les avais promis dans mon dernier billet, mais je ne les donnerai pas, les nuages arborés des deux versions (prévue, et prononcée) du discours de conférence de presse de Sarkozy. Pourquoi ? Je suis toujours loin d'être satisfait des détails techniques de la construction de ces objets, et même si je suis convaincu qu'un système de consensus d'arbres permet de bien les comparer (tiens, on s'approche de mon sujet de thèse, là...), quand les arbres à comparer ne sont pas très fiables, ça ne fonctionne pas. Bref, pas de jolie visualisation à l'interprétation casse-gueule, mais plutôt un bon vieux traitement semi-automatisé des différences entre les deux textes.

Nuages de mots des deux versions du discours de conférence de presse de SarkozyCommençons par la dynamique globale des changements. Je l'évoquais image à l'appui dans mon dernier billet, Sarkozy se lâche peu à peu dans son discours, et finit par improviser complètement en laissant de côté le texte prévu. Et à s'écarter des chemins balisés, on commet des erreurs. En particulier une de celles que j'adore, traque, et compile, une erreur d'accord de pronom relatif, dans sa forme la plus pure qu'est le "danlekel" invariable :

« Quelle est la ville dans lequel nous voulons vivre ? »
Dans le milieu du discours, on peut aussi noter une litote bien maladroite : "les enseignants sont plus victimes que coupables dans cette affaire" ! A moins qu'il faille vraiment prendre la phrase au pied de la lettre, et fustiger les enseignants coupables de ne pas passer leurs weekends à réparer et repeindre leur université... De même il est un peu cavalier en ajoutant qu'on ne parle jamais d'urbanisme pendant les campagnes politiques (hum, certes, ce sont des discours, pas des débats, dans Discours2007).

Maintenant voyons quels sont les thèmes des passages improvisés, et des passages supprimés (indiqués barrés) significatifs, ils expliquent bien sûr les mots mis en relief dans le nuage de mots "contrasté" de la version pronconcée :
Tous ces passages, c'est du pur Sarkozy. Pas de conseiller, pas de notes. Juste un freestyle présidentiel. Et là on peut se lancer dans l'analyse du style.

Malheureusement je n'ai pas les outils pour la détection et la mesure de l'anaphore. A vue de nez, j'ai quand même été tout à fait surpris d'en trouver un certain nombre ("comment..." ligne 112, "Paris doit" ligne 553, "L'Europe" ligne 844, "On aurait eu l'air malin" lignes 879 et 892, "Et bien sûr" ligne 1081...) dans les passages improvisés. Se serait-il donc converti au style Guaino, ou bien y a-t-il une autre explication ? Ils est de plus tout à fait frappant de noter à quel point elles sont renforcées à l'oral. Comme je l'expliquais, les retours à la ligne dans le texte prononcé indiquent des pauses dans le discours, et les anaphores arrivent toutes en début de ligne ! On peut aussi remarquer ligne 37 comment deux répétitions de "du respect" sont supprimées à l'oral, mais la suppression d'un "et" et une pause permettent de conserver la fonction rhétorique de l'anaphore.

Passons à une autre caractéristique du discours sarkozien : le pronom "je". Pour cela on fait mouliner le TagCloud Builder non pas sur les textes originaux, mais sur leurs listes contrastées et normalisées d'occurences de mots, ce que j'avais déjà fait sur les programmes du PS et de l'UMP (malheureusement cet outil de contraste est encore trop peu abouti pour le distribuer). J'ai pris bien soin pour une fois de laisser tous les mots dans le nuage, pronoms, conjonctions et interjections inclus, ce qui donne donc un aperçu du style oral de Sarkozy. Et les "je", alors ? Certes, le "j'" ressort, mais la fréquence des "je" est inférieure dans le texte prononcé par rapport au texte prévu ! Comptons les fréquences en détail (et c'est l'occasion de livrer une astuce pratique pour compter facilement le nombre d'occurences d'un mot dans un texte : ouvrez-le dans un éditeur ou traitement de texte, faites Rechercher/Remplacer, le mot éventuellement suivi d'un espace, par lui-même, choisissez Remplacer tout, et voilà la réponse !) : 14,99 fois pour 1000 mots dans le texte prononcé, contre 12,80 fois pour 1000 mots dans le texte prévu ! On a bien fait de ne pas s'arrêter à la première impression donnée par le nuage, et il ne pourra pas prétendre que ceux qui lui écrivent ses discours le forcent à se mettre en avant !

Dans le style familier à la Sarko, on peut noter le pronom "on", le "y" de "il y a" voire "y a", ou encore le "eh" de "eh ben" ou "eh bien". Au fait, vous vous rappelez du "naturellement" de Chirac ? Sarko préfère le "parfaitement" (fréquence d'environ 1 pour 1000 mots dans ce discours), ce qui semble aussi se confirmer avec ses discours de campagne.

Et pour finir sur le style Sarkozy, une remarque que je faisais dans le billet précédent et que je confirme aujourd'hui, l'emploi du verbe "épouser", deux fois à l'oral mardi, semble être conjoncturel (dans les discours recensés dans Discours2007 il apparaît moins de 0.1 pour 10 000 mots, contre plus d'une fois pour 10 000 ici).

Enfin, je l'ai omis dans mon dernier billet, je dois mentionner un outil qui m'a particulièrement aidé dans ma transcription : le Real Player Download & Recording Manager qui s'installe avec RealPlayer11 Basic (hein, mais ils font quoi, dans la blogsophère française ???), et qui propose de télécharger en un clic toutes les vidéos ou sons croisés sur internet. A quel point c'est légal ? Real n'est pas une petite boîte douteuse en tout cas, j'ai l'impression que comme Altavista, ce système va devenir un excellent assistant au piratage, pour initiés...


Ajout du 25 mars 2008 : et pour aller plus loin dans l'analyse du discours sarkozien, jetez-vous sur l'indispensable Les mots de Nicolas Sarkozy !

9 janvier 2008

Sarkozy l'Orateur (1) : version prévue et prononcée du discours de la conférence de presse

Devinette : du sketch de quel humoriste engagé sont tirées les lignes qui suivent ?

« Le G8, mais enfin qu'est-ce que c'est ? On se réunit deux jours et demi, sans la Chine, sans l'Inde, sans le Brésil, sans le Mexique, sans l'Afrique du Sud. Simplement, deux milliards et demi de gens qu'on oublie. Ah, alors évidemment, on les invite pour le déjeuner du troisième jour. Le plus extraordinaire c'est qu'ils viennent. »
Non, pas Bedos. Non, pas Dieudonné... Mais bien notre Président, dans la version prononcée de son discours de conférence de presse d'hier, que vous ne trouverez pas en PDF sur le site de l'Elysée.Un petit aperçu de la réaction du public, avec Morin et Kouchner, et un troisième que je ne reconnais pas, qui se bidonnent. Bon, en fait tout le discours n'était pas prononcé sur un style aussi décontracté, qui apparaissait seulement dans les impros de Nico sur le texte original.

Alors évidemment, c'est le texte original qui m'avait attiré tout d'abord, pour en faire le nuage arboré. Contrairement au discours de voeux, la version PDF sur le site de l'Elysée a un codage étrange qui m'empêche d'en récupérer le texte (si vous comprenez ce qui se passe, ou savez comment le récupérer quand même, ça m'intéresse beaucoup !), heureusement que Linternaute (je n'ai jamais dit tout le bien que je pense de ce site où on trouve absolument tout et n'importe quoi) est là pour me fournir un document exploitable. Malheureusement les différences avec le discours réellement prononcé sont importantes ! Ni une, ni deux, me voilà parti dans la transcription. Mon temps de sommeil en a un peu pâti, mais le résultat est . Non seulement vous avez le texte, mais aussi une intuition sur sa prononciation, puisque je suis allé à la ligne à chaque pause. Les sauts de ligne indiquent seulement une différence thématique, ils correspondent à peu près aux sauts de paragraphe du discours prévu. Evidemment j'ai pu y glisser des erreurs ou omissions, n'hésitez pas à me les signaler...

Bon, et maintenant, jouons aux 7 différences entre les deux versions. Pour comparer deux fichiers j'utilise habituellement CompareIt qui essaie d'identifier des lignes entre fichiers (fichier du texte originalement prévu), et présente une visualisation plutôt bien faite de l'alignement effectué, la bande verticale sur la gauche. Pour un meilleur contraste, j'ai mis les lignes identiques en noir, celles ajoutées en vert, celles supprimées en rouge, et celles modifiées en bleu. CompareIt permet aussi d'exporter un rapport des différences avec les textes sur deux colonnes, que vous trouverez ici.

Peut être trouvez-vous plus lisible de voir sur un seul texte les deux versions, comme Jean Véronis l'avait fait pour le discours de Ségolène Royal à Villepinte. Pour cela j'ai utilisé Diff'Doc, qui est gratuit, voilà donc la synthèse des textes prévu et prononcé.

Evidemment ce document est une mine d'informations pour qui veut analyser le style oratoire de Sarkozy, puisqu'on y trouve à la fois ses longs passage d'improvisation, mais aussi ses petites corrections de détail, ou encore les passages qu'il a finalement décidé d'oublier. Il est flagrant sur la bande-image de gauche qu'il se lâche au fur et à mesure, et finit son discours en oubliant complètement le dernier paragraphe initialement prévu.

Au programme de la seconde partie de ce billet, bien sûr les nuages arborés des deux textes : est-ce que les modifications lors de la prononciation du discours changent radicalement les arbres ? Et peut-être aussi une analyse plus en profondeur des différences (le verbe épouser a été ajouté oralement par deux fois par rapport au texte original ;))...


Pour ceux qui ont lu en diagonale : le discours prévu, le discours prononcé, le diff Diff'Doc sur 1 colonne de texte, le diff CompareIt sur deux colonnes de texte, mon billet suivant sur le sujet.

2 janvier 2008

Comparer les courbes de buzz avec le CaptuCourbes

Il y a un peu plus d'un an, alors que le candidat Bayrou commençait à faire buzzer la blogosphère, j'avais essayé de comparer plusieurs outils de mesure de buzz pour évaluer le bruit des trois principaux candidats sur le web, dans la presse, et dans les blogs. Une suite de décalquages et dilatations manuelles avait permis d'aboutir à une juxtaposition expressive mais peu satisfaisante, et j'avais commencé à réfléchir à un outil permettant de récupérer les valeurs d'une image de courbe. J'y avais réfléchi un peu plus fort à la fin de ma compilation manuelle des courbes de sondages du premier tour des présidentielles. Des outils permettant de numériser des courbes sont recensés sur cette page, mais la plupart ont disparu ou sont payants. Le premier, Engauge Digitizer, est très appétissant (logiciel libre, multi-plateformes, reconnaissance automatique de courbes), mais s'avère un peu lourd, et fournit un fichier avec une liste des points identifiés, aux coordonnées réelles, alors qu'on préfère dans un tableur avoir une liste de points aux abscisses entières et d'écart constant, pour reconstituer le graphique.

Bref, voilà un petit utilitaire libre (pour Windows) pour transformer une image de courbe en tableau ouvrable dans Excel ou OpenOffice, le CaptuCourbe ! L'idée est que vous allez lui indiquer la couleur de la courbe à récupérer, fixer l'échelle horizontale et verticale, ainsi que le pas de discrétisation, c'est à dire l'intervalle horizontal entre les points à récupérer. Cette démarche assez intuitive est détaillée dans le tutoriel du CaptuCourbe. Pour certaines images, la couleur de la courbe n'est pas uniforme, il suffira de la traiter en augmentant le contraste (un petit coup d'enhance colors dans le petit IrfanView par exemple), par exemple, pour diminuer le nombre de couleurs. Pensez aussi que la ou les couleurs de la courbe ne doivent pas être présentes dans le reste de l'image, si c'est le cas, il faudra penser à effacer les parties parasites.

Une petite mise en application du logiciel ? J'ai récupéré et réuni (fichier OpenOffice ici) les données de graphiques de suivi de buzz pour les deux informations qui ont fait vibrer la toile fin décembre :
La première courbe a été choisie comme référence, les autres du même buzz ont été dilatées de sorte que leur moyenne sur la période du 17 au 19 décembre (le premier pic) soit identique. On remarque une grande uniformité des courbes sur le premier sujet, qui a plus fait causer sur les blogs que le second. Pour ce dernier, on peut noter l'énorme pic de recherche Google par rapport au buzz sur les blogs, le phénomène est expliqué ici.

Les outils sur les blogs donnent des courbes très similaires, bien que leurs bases soient de taille différente : Technorati revendique une base de 112 millions de blogs, 69 millions pour BlogPulse, et 17 millions pour BlogScope. Si l'on compare plus finement les trois courbes, BlogPulse apparaît toujours un peu en retard, de moins de 24h en tout cas (certainement une différence sur l'heure de début de la journée). BlogScope semble montrer des pics plus marqués, peut-être que leur base plus petite contient plutôt les blogs influents et toujours premiers sur les scoops, et moins les petits qui relaient l'info avec quelques heures de retard.

J'ai choisi d'ajouter les graphiques de Trendio, sorte de bourse aux mots clés ou aux noms de personnalités, qu'on pourrait penser un bon indicateur de buzz. Ce n'est pas vraiment le cas, les courbes sont beaucoup moins nerveuses que ce qu'on pourrait attendre, parasitées par l'incertitude des investisseurs...

Absent de cette comparaison, l'outil de veille2com, le Sous-Marin Jaune. En effet les requêtes dont les résultats ont été publiés ne correspondaient pas exactement à celles que j'ai utilisées dans la comparaison ci-dessus, et l'outil se semble pas être accessible au public. C'est d'ailleurs tout à fait regrettable : même si je comprends que ScanBlog préfère monnayer ses outils de suivi de buzz, en laisser une partie en accès public permettrait non seulement d'en faire parler, mais éventuellement de montrer la valeur ajoutée par rapport aux autres outils de suivi de la blogosphère cités ci-dessus (si les courbes obtenues montraient des tendances différentes par exemple). Enfin, l'ouverture partielle aux internautes permettrait de récupérer leurs requêtes pour constituer une base de données des intentions, ce qui devrait intéresser une entreprise dédiée au suivi des buzz.

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.