Blog

Le module "L'essentiel de l'actu" est opérationnel. Ce module sélectionne, parmi les phrases du jours de fils rss d'actualités, les n plus représentatives. Ces phrases, assemblées, peuvent être considérées comme une certaine forme de résumé de l'actualité. En effet, du fait de la stratégie de sélection, ces phrases sont centrales et leur agglomération présente non pas une même information, la plus centrale, mais un maximum d'informations parmi les plus centrales, grâce à l'algorithme MMR (J. Goldstein et J. Carbonell, 1998) et la stratégie de score du "Centroïde" (Radev et al, 2004). Je décris ici l'algorithme de ce module.

Calcul du poids des mots

Tout d'abord, les flux rss sont analysés. Des pseudo-documents sont générés, qui contiennent l'actualité des 15 derniers jours par tranche de 24h. Le tf.idf (G. Salton, 1983) des mots contenus dans le pseudo-document le plus récent (celui des 24 dernières heures) est alors calculé. Cette mesure permet de scorer les mots selon leur fréquence d'apparition dans un document et l'inverse de leur probabilité d'apparition dans les autres documents. Un mot qui apparaît beaucoup dans un document donné mais peu dans les autres aura donc un poids fort dans ce document comparé à un mot qui apparaît beaucoup dans tous les documents ou encore à un mot qui apparaît peu dans ce document.

Calcul du résumé

Ici, j'ai choisi une technique simple au regard de LexRank, utilisée dans le démonstrateur de résumé automatique. En effet, la taille des fils rss peut vite devenir problématique pour un algorithme assez gourmand, qui nécessite de calculer les similarités entre chaque paire de phrases. Aujourd'hui par exemple, l'aggrégateur de fils rss recense 373 articles, soit environ 900 phrases, et donc un près 400.000 similarités à calculer. Si cela n'est pas effrayant en soi, surtout dans un environnement idéal (bon processeur, mémoire vive suffisante, et surtout programme compilé), une technique aussi gourmande ne convient pas à une application web avec un serveur dont les ressources sont limitées. J'ai donc choisi d'utiliser la technique du "Centroïde", bien moins gourmande, mais également moins efficace.

Génération d'un centroïde

Cette technique consiste à tout d'abord générer un centroïde. Le centroïde est un vecteur composé des mots les plus représentatifs des documents à résumer, et de leur poids. Ici, j'utilise comme poids le tf.idf, qui est également le moyen de sélection des mots. Dans l'idéal, il faudrait seuiller la sélection des mots selon leur tf.idf, c'est à dire ne sélectionner que les mots au-dessus d'un certain tfidf. Ce seuil est défini empiriquement, c'est-à-dire par l'expérience, en jugeant de la qualité des résumés produits en fonction du seuil. Cependant, à l'heure actuelle, cela fait moins d'une semaine que l'aggrégateur de flux fonctionne. Les valeurs seuils du tfidf valables aujourd'hui ne le seront sûrement plus demain. Par conséquent, en attendant que quinze jours aient passé, j'utilise un centroïde de taille fixe.

Scoring des phrases : centralité

Les phrases à résumer sont ensuite vectorisées, et une similarité est calculée entre chaque phrase et le centroïde. J'utilise ici la similarité cosinus, qui calcule le cosinus de l'angle entre deux vecteurs. Les phrases qui ont la similarité la plus élevée avec le centroïde sont donc les plus centrales vis-à-vis des documents à résumer. Cependant, ces phrases-ci ne peuvent pas constituer un résumé. En effet, leur sélection génèrerait un résumé extrêmement redondant. Il faut donc appliquer un "filtre" pour éviter la redondance.

Scoring des phrases : diversité

L'algorithme MMR permet de sélectionner des phrases en tenant compte à la fois de leur centralité, et de la diversité du résumé qu'elles génèrent. Le principe est simple : la première phrase sélectionnée est celle de score centroïde maximum. Par la suite, une phrase est sélectionnée à chaque étape, qui est de compromis maximum entre le score centroïde et la similarité avec la phrase la plus proche déjà sélectionnée.

Présentation des phrases

Une fois les phrases sélectionnées, celles-ci sont affichées. Pour les recontextualiser, mais également parce que c'est la loi, un survol d'une phrase affiche l'article dont elle est tirée, et la phrase est elle-même un lien vers cet article.

J'ai terminé la version bêta du module de résumé de l'actualité. Ce module propose les phrases les plus représentatives de l'actualité du jour. Cependant, je ne conçois pas le résumé comme un simple agglomérat de phrases. Dans le cas d'un site web, où l'on cherche un résumé indicatif, un outil de synthèse doit pointer vers les informations originales. Ce sera bientôt chose faite, comme pour le module de nuage de mots.


Pour le moment, vous trouverez sûrement les résultats "étranges". Je viens en effet de mettre à jour les sources d'actualité, et ajouté deux fournisseurs, et non des moindres puisqu'ils représentent à eux deux plus des deux tiers des informations d'aujourd'hui, malgré les quatre autres fournisseurs d'actualité déjà utilisés. Par conséquent, les résultats seront "étranges" pendant deux ou trois jours, le temps de constituer un historique de contenu suffisant pour ces deux flux supplémentaires.

J'ai fini de développer le coeur du composant de résumé automatique : le lien avec les données, et le moteur de résumé en lui-même. Il ne reste plus qu'à développer le module Joomla! permettant d'afficher tout ça.


Voilà un avant-goût de ce que vous pourrez voir (résumé des 24 dernières heures d'actu) :


Après deux jours de débat, le Sénat a adopté dans la nuit le premier article du projet de loi Taubira.
Corée du Nord : Séoul et Washington relèvent leur niveau de surveillance militaire.
L'épicentre du tremblement de terre se situe à un peu moins de 100 km au sud de Bouchehr, où se situe la seule centrale nucléaire iranienne.
Le directeur général de la banque genevoise Reyl et Cie, qui gére le compte en Suisse, non déclaré au fisc français, de Jérôme Cahuzac a été entendu à sa demande mardi à Genève par le procureur...
L'édition 2014 de son dictionnaire définit le "mariage" comme l'"acte solennel par lequel deux personnes de sexe différent, ou de même sexe, établissent entre eux une union...


On remarquera que ça fait un an que l'actu tourne autour des mêmes thèmes : le nucléaire et les tremblements de terre, le mariage pour tous, la Corée du Nord et depuis 6 mois, l'"AFFAIRE" Cahuzac. Bref, je me demande si mon outil est si utile que ça.

La qualité des résumé produits par le démonstrateur étant en dessous de ce que j'ai avec les outils que j'avais développés pour moi, en utilisant la même technique et en enlevant toute analyse linguistique, je me suis posé des questions. J'ai bien fait, une "coquille" s'est glissée dans le calcul des similarités entre phrases, qui est à la base de la construction du graphe des phrases. Ce graphe permet d'établir la popularité des phrases, et d'extraire les plus populaires. La coquille est corrigée, et les résultats devraient suivre... (enfin j'espère)

"Les mots de l'actu" est un module que j'ai pensé, développé, et intégré au site. Il consiste en une analyse des fils rss "à la une" de diverses sources d'information. Je me suis appuyé sur magpierss, un très bon parser rss en php afin de décoder les fils rss.

"Les mots de l'actu" procède ensuite à une analyse statistique très simple des mots contenus dans les titres et les descriptions des actualités disponibles. Je parle d'analyse simple car les moyens à disposition avec l'hébergement mutualisé du site ne permettent pas de procéder à des tâches complexes, telles que de l'analyse terminologique ou de l'étiquetage morpho-syntaxique. Seuls les mots simples sont donc considérés lors de l'analyse statistiques, et non les mots composés fréquents, comme "erreur judiciaire" ou encore "abominable homme des neiges".

Les titres et descriptions des articles sont sauvegardés pendant deux semaines. Ces deux semaines d'actualités permettent d'avoir suffisamment de données afin d'extraire les mots les plus représentatifs de l'actualité des 24 dernières heures. Des mesures comme okapi (Robertson, Sparck-Jones, 1976) ou le tf.idf (G. Salton, 1983) -- utilisé ici -- permettent d'évaluer la pertinence d'un mot dans un document étant donné un contexte.

Les 20 mots les plus représentatifs de l'actualité du jour sont ensuite affichés à l'utilisateur sous la forme d'un nuage de mots.

Des extensions sont prévues pour ce module, et seront implémentées rapidement. L'objectif est de fournir non pas un résumé indicatif de l'actualité à un lecteur, mais un point d'accès à l'information essentielle.

Maintenant que l'outil "Les mots de l'actu" est quasiment terminé (il ne reste plus qu'à réussir à le lancer automatiquement à intervalles réguliers par cron) je vais m'atteler à un nouveau composant.

Ce nouveau composant sera chargé de résumer automatiquement l'actualité quotidienne. Les résumés seront générés par extraction, c'est-à-dire par sélection des phrases jugées les meilleures à être intégrées à un résumé. La pertinence de l'extraction d'une phrase est évaluée selon deux critères : sa centralité vis-à-vis de l'information quotidienne (elle doit véhiculer les informations les plus importantes) et la diversité qu'elle procurera au résumé (un résumé doit éviter au maximum toute information redondante).

Yapluka !

La première étape est franchie, j'ai développé un analyseur de fils rss et terminé les modules d'analyse statistique. Il ne reste plus qu'à attendre que les données soient suffisantes pour obtenir des résultats. L'analyseur est paramétré pour comparer les actualités à la une des dernières 24 heures de plusieurs fils d'actualité avec les actualités à la une des deux semaines qui les ont précédées. Il ne reste plus qu'à développer un module de nuage de mots pour Joomla ! et à espérer que tout ça roule tout seul. Un petit avant-goût avec les mots les plus fréquents de l'actualité des huit dernières heures :

  • Trois
  • affaire
  • ont
  • ans
  • France
  • Cahuzac
  • Français
  • Facebook
  • monte
  • Hollande
  • mort
  • avril
  • 2
  • grippe
  • Nouvelle
  • Pakistan
  • Elysée
  • Alexandre
  • agence

La pondération des fréquences de ces mots, que j'effectue(rai car les données ne sont pas encore là) avec une simple mesure tf.idf (G. Salton, 1983) sur les données de la quinzaine précédente, permettra de faire descendre certains mots trop fréquents. Je pense notamment, en voyant cette liste, à "Elysée" (quoiqu'avec l'affaire Cahuzac...), "agence", ou encore "ont" (qui bizarrement n'est pas dans ma stopliste).


A terme, je pense développer un résumeur automatique de l'actualité des 24 dernières heures, qui utilise les sorties de l'analyseur de fil rss.