Recherche des similitudes par inférence BayesienneLe 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:
Lorsque des nouveaux livres sont ajoutés, le système va calculer pour chaque:
Les propositions obtenues par le k-NN peuvent dès lors être renforcées par ce résultat:
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.
|
A propos
|