Blog entries

  • Rss feeds aggregator based on Scikits.learn and CubicWeb

    2011/10/17 by Vincent Michel

    During Euroscipy, the Logilab Team presented an original approach for querying news using semantic information: "Rss feeds aggregator based on Scikits.learn and CubicWeb" by Vincent Michel This work is based on two major pieces of software:

    http://www.cubicweb.org/data/index-cubicweb.png
    • CubicWeb, the pythonic semantic web framework, is used to store and query Dbpedia information. CubicWeb is able to reconstruct links from rdf/nt files, and can easily execute complex queries in a database with more than 8 millions entities and 75 millions links when using a PostgreSQL backend.
    http://scipy-lectures.github.com/_images/scikit-learn-logo.png
    • Scikit.learn is a cutting-edge python toolbox for machine learning. It provides algorithms that are simple and easy to use.
    http://www.pfeifermachinery.com/img/rss.png

    Based on these tools, we built a pure Python application to query the news:

    • Named Entities are extracted from RSS articles of a few mainstream English newspapers (New York Times, Reuteurs, BBC News, etc.), for each group of words in an article, we check if a Dbpedia entry has the same label. If so, we create a semantic link between the article and the Dbpedia entry.
    • An occurrence matrix of "RSS Articles" times "Named Entities" is constructed and may be used against several machine learning algorithms (MeanShift algorithm, Hierachical Clustering) in order to provide original and informative views of recent events.
    http://wiki.dbpedia.org/images/dbpedia_logo.png

    Moreover, queries may be used jointly with semantic information from Dbpedia:

    • All musical artists in the news:

      DISTINCT Any E, R WHERE E appears_in_rss R, E has_type T, T label "musical artist"
      
    • All living office holder persons in the news:

      DISTINCT Any E WHERE E appears_in_rss R, E has_type T, T label "office holder", E has_subject C, C label "Living people"
      
    • All news that talk about Barack Obama and any scientist:

      DISTINCT Any R WHERE E1 label "Barack Obama", E1 appears_in_rss R, E2 appears_in_rss R, E2 has_type T, T label "scientist"
      
    • All news that talk about a drug:

      Any X, R WHERE X appears_in_rss R, X has_type T, T label "drug"
      

    Such a tool may be used for informetrics and news analysis. Feel free to download the complete slides of the presentation.


  • Réseau social ouvert et distribué avec CubicWeb

    2012/07/18 by Nicolas Chauvat

    Qu'est-ce qu'un réseau social ?

    • descriptions de personnes (profil, histoire, etc)
    • liens avec les autres membres (carnet adresses, etc)
    • création de groupes
    • partage de contenu (photos, vidéos, présentations, etc)
    • discussion (blog, commentaires, forums, messages, microblog)
    • mise en relation (boulot, ludo, dodo, etc)
    • recommandation (lien, livre, achat, film, music, etc)
    • présence (fait quoi, avec qui, où, etc)

    Et l'interopérabilité ?

    • nombreuses applications / plate-formes
    • en majorité centralisées et fermées
    • ouverture progressive: protocoles et API en cours de dév
    • réseaux ouverts et distribués: appleseed, diaspora, onesocialweb, etc.
    • pourrait-on faire autrement ?

    API: openstack

    • découverte / discovery = xrd
    • identité / identity = openid
    • contrôle d'accès / access control = oauth
    • activités / streams = activity streams
    • personnes / people = portable contacts
    • applications = opensocial

    Et en utilisant les standards du Web ?

    Architecture ouverte et distribuée

    • vocabulaires RDF et protocole HTTP + REST
    • chacun son serveur
    • GET et éventuellement copie locale
    • abonnement si nécessaire (pubsub, xmpp, atom ?)
    • permissions gérées localement

    => social semantic network

    Pourquoi CubicWeb ?

    • plate-forme pour web sémantique (semantic web framework)
    • conçu pour avoir composants à assembler
    • chacun peut définir son application sur mesure
    • fait pour publier html et rdf en parallèle
    • fait pour exporter et importer données
    • déjà foaf, skos, sioc, doap, rss, atom, etc.

    Exemple

    • (micro)blog + book + link + file
    • pourrait ajouter: musique, photos, etc.
    • mais aussi: journal, recherche appartement, etc.

    Et ensuite ?

    Il y a bien longtemps...

    • découverte = who et cat /etc/passwd | cut -d: -f1
    • identité = login
    • contrôle accès = chmod, chgrp, su
    • activités = .plan
    • personnes = .addressbook
    • applications = vim ~/public_html/me.html

    Note

    Ce texte a été présenté en août 2010, lors de la conférence française des utilisateurs de Python (PyCon-Fr 2010)