banniere.png

Recherche des similitudes par inférence Bayesienne

Le site fr.luvdit.com permet de proposer aux visiteurs une sélection de livres grâce au k-NN, mais il part du principe que ces derniers utilisent avec pertinence les étiquettes, ce qui est loin d'être systèmatique: seuls les geeks et les personnes habituées aux sites comme flickr ou delicious le font correctement.

Pour pallier à ce problème, une autre méthode de sélection peut venir renforcer celle du k-NN: l'inférence bayesienne. Cette technique permet d'associer à des catégories une liste de mots (==un texte). Lorsqu'une nouvelle liste de mots est rencontrée, le système calcul la probabilité d'appartenance à chacune des catégories existantes, en fonction des listes de mots déjà croisées. Pour augmenter la pertinence, les mots communs ou courts sont supprimés, pour tenter de conserver l'essence du texte.

Elle est appliquée ainsi au site:
  • Le résumé (==la liste des mots) de chaque livre commenté par un utilisateur est associé à une étiquette correspondant à la note que ce dernier a donné;
  • de la même manière, le résumé est associé à chaque étiquette que l'utilisateur a donné.

Lorsque des nouveaux livres sont ajoutés, le système va calculer pour chaque:
  • la note que l'utilisateur pourrait donner;
  • les étiquettes qu'il pourrait mettre.

Les propositions obtenues par le k-NN peuvent dès lors être renforcées par ce résultat:
  • les livres à note possible élevée sont mis en avant;
  • lorsque l'utilisateur choisi des étiquettes, celles calculées par le systèmes sont proposées.

Pour affiner les calculs, l'utilisateur pourra réfuter un livre en indiquant que ce dernier ne l'intéresse pas. Cette action aura pour effet de recalculer les probabilités des catégories. Le code-maquette est ici: http://hg.programmation-python.org/browser/classifier. Mais est encore affreusement lent à cause d'une mauvaise conception au niveau du stockage SQL. Il est en cours de refactorisation, mais fonctionne déjà. A terme le paquet classifier pourra servir à n'importe quel besoin d'inférence bayésienne (et il y en a partout). Le doctest montre le fonctionnement.




Vous aimez ce post ? partagez-le :


Trackback URL | Categories: coding 0 comments - add

Tarek Ziadé. Copyright 2006. Tous droits réservés. Licence contenu site
BuzTrucs
Add to Technorati Favorites