Source

REX 2011 @PilotSystems&Libération / rook.rst

Full commit

Rook

Rook est une application Web qui complète l'expérience utilisateurs de twitter. A l'aide de mini-applications qui facilite l'utilisation de Twitter. Il s'agit d'une application développée par Pilot Systems sur laquelle je suis intervenu en tant que consultant fonctionnel et technique. Je devais penser à de nouvelles fonctionnalités et proposer des moyens de les implémenter.

Ma proposition est de reproduire le mur personnalisé de Facebook et de regrouper les tweets par thèmes comme cela est fait dans Google News.

La première étape a été de dresser un état de l'art dans le domaine de la recommandation de contenu. Je me suis rendu compte que le domaine de recherche à l'origine de ce type d'algorithme provenait le plus souvent de l'intelligence artificielle et plus particulièrement du domaine des machines apprenantes ou algorithmes d'aide à la décision. Les machines apprenantes utilisent différents types d'algorithmes basés sur des statistiques ou des mathématiques discrètes. Il y a une partie des algorithmes qui utilisent de l'information sémantique tiré d'un traitement automatique de la langue.

La catégorisation est aussi un problème qui peut-être résolu à l'aide d'une machine apprenante.

A partir de ces connaissances, j'ai conçu un programme qui doit permettre d'implémenter la recommandation de contenu, en minimisant l'effet de démarrage à froid, dans le cadre d'une implémentation dans Rook.

Ce chapitre se présente sous forme de trois parties, dans un premier temps je décris la base de connaissances et son support, ensuite les différentes méthodes qui permettront de faire de la recommandation, pour finir par un bilan sur le travail fait.

Base de connaissances

Connaissances

Les messages sur twitter ne font que 140 caractères, difficile dans ce cas de réaliser une analyse sémantique ou même statistique à l'aide d'un algorithme tel que LDA [1].

Un système apprenant a besoin d'informations, certains algorithmes fonctionnent mieux avec un grand nombre de donnée [2], et des algorithmes pour résoudre des problèmes avec de très nombreuses données existent [3].

En entrée du système, nous avons l'environnement social, les tweets et toutes les interactions avec les tweet:

  • personnes suivies
  • personnes suivantes
  • tweet dont hashtags
  • retweet(s) et les personne(s) qui retweete(nt)
  • réponse(s) et les personne(s) qui reponde(nt)
  • lu ou non
  • heure du tweet
  • mise en favoris

Ceci ne résout pas le problème de l'analyse sémantique des tweets. En effet, avoir un grand nombre de données est une chose, et pouvoir les corréler en est une autre. Pour nous faciliter la tâche, nous allons augmenter notre base de connaissances issue du Web à l'aide de ressources facilement exploitables telles que Wikipedia à travers dbpedia ou les sites catégorisées par exemple dmoz ou Yahoo. L'idée est de permettre d'enrichir le tweet avec des documents considérés similaires à l'aide d'une recherche full-text [5].

Bases

J'ai établi la matrice de comparaison des bases MySQL, PostgreSQL, Neo4j, OrientDB et MongoDB.

  MySQL, PostgreSQL Neo4j OrientDB MongoDB
Tuning et maintenance documentés oui      
Schema-less   oui oui oui
Nouvelles connexions faciles à créer   oui oui  
ACID oui oui oui au niveau document
CAP (une instance) CA CA CA CA
License GPL AGPLv3 Apache AGPLv3

Les données que nous allons recueillir sont d'une part de natures différentes, elles nécessiteront un grand nombre de tables et de connexions, d'autre part en tant que projet de recherche il est agréable de savoir que l'ajout d'attributs et de nouvelles connexions est facile. Les base neo4j et orientdb sont à privilégier.

Système intelligent

Il s'agit de regrouper par catégorie les articles et de donner une note aux tweets entrant d'un utilisateur. Comme je le montre dans la suite la catégorisation de tweet peut être utilisé pour la recommandation de tweet.

Catégorisation

Approche naive

Une approche consiste à regrouper les tweets par à l'aide des hashtags qui apparaissent dans un message. La fonction implémenté par Twitter actuellement permet de faire celà, mais ne permet pas de faire une recherche sur tout ce qui concerne un thème. Pour améliorer cette fonction il est possible d'utiliser les colocations des hashtags pour crée des hashtags similaire ou de manuellement entrée les hashtags dans des catégories au fur et à mesure de leur création.

Approche intermédiaire

L'approche intermediare consiste en plus en prendre en compte un corpus de textes catégorisés afin de permettre d'étendre la valeur sémantique de certains attributs du tweet et peut être en découvrir de nouveau. Par exemple, une recherche full-text d'un tweet sur wikipedia [5] qui nous retourne la page wikipedia sur un joueur de bilboquet nous permet de deviner que le tweet à un rapport avec le bilboquet et le sport.

Approche avancée

Les approches précédentes peuvent être améliorer en utilisant le contexte du tweet à savoir les interactions que d'autre utilisateurs ont eu avec le tweet. En prenant par exemple le cas d'un utilisateur passionné de golf, qui retransmet tous les matchs, il est possible que les interactions tweets qu'il a soient souvent en rapport avec le golf. De cette façon on peut augmenter la contribution du golf au tweet que cette utilisateur marque soit en y répondant, soit en le mettant en favoris ou alors en tweetant de nouveau le message.

Mur personnalisé

Approche naïve

L'approche naïve consiste augmenter la note d'un tweet en fonction de l'entropie que celui à généré dans l'univers Twitter. Cette méthode permet de ne pas rater des conversations qui peuvent être intéressantes.

Approche intermédiaire

La méthode précédente peut être améliorer pour permettre la découverte de tweet potentiellement intéressant mais non découvert par la méthode précédente. Pour cela nous allons utilisé tweet étendu sémentiquement lors de la catégorisation pour connaître les préférences de l'utilisateur ainsi que noté de manière à proprié les tweets. Cette approche peut peut-être tiré bénéfice d'utilisation de [6] et [7].

Approche avancée

Dans le cadre d'une connaissance plus poussé de Twitter. Il est possible de mettre en place des algorithmes de recommandation de tweet. Cette fonction permet de découvrir des tweets en dehors du cercles restreints des personnes que vous suivez. C'est une généralisation de l'approche intermédiaire.

Bilan

Ce travail de recherche et développement a été enrichissant. Il m'a permis de mettre au point différentes méthodes et idées de fonctions pour Rook. La recherche nécessite de la rigueur et ce projet supplémentaire m'a permis d'affiner mes techniques.