Fantomas’side

Weblog open-source

Archives pour le tag : intelligence

Flux RSS de intelligence

Clustered Models

Je vous parlais récemment de l'application Django Clustered Sitemap, servant à établir la correspondance entre 2 objets sur des projets Django.

Après une review globale du code et l'ajout de certaines fonctionnalités, j'ai changé le nom du projet en Clustered models car il ne correspondait plus vraiment à la philosophie du projet.

La première modification à été d'ajouter une nouvelle version du sitemap, mais cette fois ci en nuage 2D.

Le code et les vues ont été rendu génériques pour en faciliter l'intégration et l'extensibilité.
Une feature intéressante est qu'il est possible de réutiliser la configuration des vues générique pour effectuer des groupements.

Ensuite un templatetag à été ajouté pour pouvoir voir les models associés à un autre model. Le résultat est qu'il est désormais possible de voir les articles associés sur le blog. :)

Le tout étant très facile à installer, voici un exemple du code pour réaliser mes sitemaps mélant les flatpages et les articles, dans le fichier urls.py du projet.

from clustered_models import VectorBuilder
from clustered_models.clusterers import DimensionalClusterer
from clustered_models.clusterers import HierarchicalClusterer from django.contrib.flatpages.models import FlatPage

entry_conf = {'queryset': Entry.published.all(), 'fields': ['content', 'title', 'excerpt']}
flatpage_conf = {'queryset': FlatPage.objects.all(),
'fields': ['title', 'content']}

vector = VectorBuilder(entry_conf, flatpage_conf)

urlpatterns += patterns(
'',
url(r'^sitemap/$', 'clustered_models.views.clustered_view',
{'vector': vector, 'clusterer': HierarchicalClusterer}),
url(r'^cloud-sitemap/$', 'clustered_models.views.clustered_view',
{'vector': vector, 'clusterer': DimensionalClusterer})
)

Je ne releaserais le module que si il y a un minimum d'intérêt pour ...

Continuer la lecture

Clustered Sitemap

Comme je vous en parlais dans mon précèdent article, je comptais faire quelque chose d'utile tiré de l'intelligence collective.
J'ai donc intégré une partie du code de mon projet Feed Clusterer pour en faire un module Django.

L'idée est de reprendre la configuration des vues génériques, et de spécifier les champs à inspecter pour effectuer une correspondance. Cette correspondance servira à l'établissement d'une cartographie des différentes vues d'un site en Django.

En modélisant ces données sous la forme d'un dendogramme on peut avoir un sitemap assez surprenant, que l'on peut retrouver sur la rubrique Carte en haut du site. Les regroupements se font à la fois sur les thèmes abordés, comme la programmation, ou les restaurants, tout en mélangeant les styles d'écritures et les catégories utilisées.

Cela permet de pouvoir orienter le visiteur vers les articles connexes du site, sans avoir à établir de relations aux préalables :). Regardez la section ou je parle d'Ogame cela suit ma logique de développement et regroupe à chaque fois l'article le plus proche.
Saisissant non ?

Concernant l'effet d'arbre dépliables, je tiens à en remercier l'auteur du site bassistance.de, qui a fait un travail excellent en se basant sur JQuery, un must !

Si le projet vous intéresse, je peux le releaser, il me reste que peu de travail pour le rendre générique.

Analyse hiérarchique par le contenu

Je suis actuellement en train de lire un livre sur les différents types d'intelligences dîtes collectives. C'est à dire l'analyse de données représentant les choix, ou les comportement de plusieurs personnes, et comment en extraire des vérités globales.

Une des première applications à laquelle je me suis attaqué à été de construire un Feed Clusterer en Python, servant à effectuer des regroupements par pertinences entre différents sites web.

Comment ca marche ?

Tout site web qui se respect propose un service de Flux RSS ou Atom, résumant les dernières actualités publiées sur le site. L'idée est d'en récupérer le contenu et d'en extraire une liste de mot pertinents.

En calculant le coefficient de Pearson en me basant sur les fréquences de mots comme vecteur, je peux en constituer des groupes et les classer de façon hiérarchique.

Pour visualiser cela, il suffit ensuite de tracer un dendogramme. Un dendogramme va représenter les groupes et la distance entre chaque groupes sur un ensemble de branches. Comme le montre l'image de l'article.

Ceci reste une expérience à petite échelle, mais imaginons maintenant toutes les données que récoltent les gros site web, en particulier ceux à vocations sociales, comme FaceBook, Twitter, MySpace, et n'oublions pas certains moteurs de recherches qui avec leurs dizaines de services sont capables de tracer toutes nos habitudes.

Je ne rentrerais pas dans le détails de toutes les applications inimaginables avec ces données pour tracer les gens, mais de plus avec l ...

Continuer la lecture