banniere.png
Document Actions

08/20/2007

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.




Categories: coding 0 comments - commenter | Trackbacks (432) |

08/13/2007

Ressources Python

Cette page regroupe une liste de ressources web pour le langage Python, organisées en catégories. Elle démarre à peine et sera mise à jour régulièrement.

Catégories:

  • Référence du langage
  • Aide-mémoire
  • Bibliothèques tierces
  • Frameworks web
  • Blogs
  • Sites web
  • Présentations, tutoriels

Référence du langage


http://docs.python.org/ est le point de départ pour rechercher de la documentation en ligne sur la syntaxe de Python. Les sections les plus importantes sont:

Aide-mémoire


Laurent Pointal maintient une Quick Reference Card qui regroupe sur une feuille A4 une cheatsheet.
 

Bibliothèques tierces




Frameworks web




Comparatifs en français : Django vs Turbogears

Blogs



-> si vous avez un blog, n'hésitez pas à le signaler en commentant

Sites web




Présentations, tutoriels



N'hésitez pas à commenter ce billet pour le compléter

08/10/2007

Un widget flash pour luvdit!

Julien m'a fait un petit widget flash pour ludvit!. Le code récupère un flux xml sur le site, qui permet de lister les 5 derniers items commentés ou ajoutés par un utilisateur donné. Il apparaît sur mon blog à gauche.

Voici le code à inclure:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
width="80" height="450" id="widget" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="FlashVars" value="user=tarek">
<param name="wmode" value="transparent" />
<param name="movie" value="http://fr.luvdit.com/js/widget.swf" />
<param name="loop" value="false" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="http://fr.luvdit.com/js/widget.swf"
FlashVars="user=tarek" loop="false" menu="false"
quality="high" bgcolor="#ffffff" width="80"
height="450" name="widget" align="middle"
allowScriptAccess="sameDomain"
wmode="transparent"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
<br/>
<a href="http://fr.luvdit.com">luvdit!</a>
Si vous avez un compte sur le site, il suffit de remplacer 'tarek' par votre login dans les paramètres du widget.
Categories: coding 0 comments - commenter | Trackbacks (441) |

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