Quantcast
Channel: Informatheque
Viewing all articles
Browse latest Browse all 7
↧

Enrichir son catalogue avec dbPedia ?

$
0
0

Décembre 2012, Google propose le knowledge graphà ses utilisateurs français. Octobre 2012,  l'Inria, le MinistÚre de la Culture et Wikimédia officialisent l'existence du dbpdia français sous le nom de code sémanticpédia. Ca bouge !

Et nos catalogues ? Comment les enrichir automatiquement avec dbpedia ?

Pour rĂ©pondre Ă  cette question ouverte par Lully sur son blog, j'ai tentĂ© quelques observations et expĂ©riences avec le langage d’interrogation SPARQL.

Certaines des requĂȘtes que vous aurez l'occasion de rencontrer peuvent sembler inutilies, des pages wikipĂ©dia existent pour dĂ©crire les mĂȘmes rĂ©sultats. Le but Ă©tait d'expĂ©rimenter. En outre, ces requĂȘtes peuvent ĂȘtre rĂ©utilisĂ©es pour en dĂ©couvrir plus.

L’idĂ©e de dĂ©part est de rĂ©cupĂ©rer la biographie des auteurs, musiciens et rĂ©alisateurs, ainsi que les prix et distinctions dont ils sont laurĂ©ats. Une fois ces donnĂ©es trouvĂ©es, il faudra ajouter un lien Ă  chaque prix afin d’afficher tous les laurĂ©ats. Ceci Ă©tant dit, commençons l’exploration du web sĂ©mantique culturelle !

Exploration du graphe d’un auteur.

Observons la ressource Milan Kundera. Plusieurs informations sont disponibles :

A premiĂšre vue, on peut donc se dire que ces propriĂ©tĂ©s suffisent. Pourtant  en suivant dbpedia-fr:Prix_MĂ©dicis, 21 auteurs sont liĂ©s au prix par l’intermĂ©diaire du prĂ©dicat « is dbpedia-owl:award of ». On peut aussi retrouver ces informations grĂące Ă  la requĂȘte saisie dans l’éditeur SPARQL qui retourne les rĂ©sultats:

SELECT?nomWHERE{{?auteurdbpedia-owl:award dbpedia-fr:Prix_Médicis}UNION{?auteurprop-fr:distinctions "Prix_Médicis"}?auteurrdfs:label ?nom.}ORDERBY?nom

Analyse quantitative des prix représentés

IntĂ©ressons nous maintenant au nombre de laurĂ©ats par prix littĂ©raires, essayons la requĂȘte suivante :

PREFIXcategorie:<http://fr.dbpedia.org/resource/Catégorie:>SELECT?nomPrix,(COUNT(?nom)AS?nombreLaureats)WHERE{# RécupÚre tous les graphes ayant un prédicat award?sdbpedia-owl:award ?prix{# Permet de récupérer tous les prix littéraires français{?prixdcterms:subject categorie:Prix_littéraire_en_France}UNION{?prixdbpedia-owl:wikiPageWikiLink dbpedia-fr:Prix_littéraire}?prixrdfs:label ?nomPrix.}?srdfs:label ?nom}ORDERBYDESC(?nombreLaureats)

Soient 166 prix dont 31 prix avec plus de 10 lauréats et 55 avec 1 seul lauréat. 

Cette solution Ă©tait la plus attirante. Simple (pas de traitement de chaĂźne, de filtre), rapide (un DESCIRBE de  la ressource suffisait). Elle n’est pas pourtant exhaustive et ne rĂ©pond pas aux problĂšmes des homonymies. Par exemple, l’auteur de BD Boulet qui est dĂ©crit comme Ă©tant un boulet.

Il faut donc trouver une autre technique.

Et les catégories entrent en scÚne

La puissance de wikipédia et donc de dbpédia réside aussi dans la catégorisation des données qui ne ferait pas rougir un catalogueur.  Ce principes va nous servir pour améliorer la qualité et la quantité des résultats retrouvés.

En regardant de nouveau la notice de  Milan Kundera, le prĂ©dicat dcterms:subject retourne toutes les catĂ©gories de la page wikipĂ©dia de < target="_blank"href="http://fr.wikipedia.org/wiki/Milan_Kundera">l’auteur. Parmi ces catĂ©gories :

  • dbpedia-fr:CatĂ©gorie:LaurĂ©at_du_prix_mondial_Cino_Del_Duca
  • dbpedia-fr:CatĂ©gorie:LaurĂ©at_du_prix_MĂ©dicis_Ă©tranger
  • dbpedia-fr:CatĂ©gorie:LaurĂ©at_du_grand_prix_de_littĂ©rature_de_l'AcadĂ©mie_française

On rĂ©cupĂšre donc l’information pour le prix de l’acadĂ©mie française, mais on perd les prix de JĂ©rusalem, le Prix Herder et le Prix de la BnF. Par contre, quand on passe la requĂȘte suivant dans l’éditeur SPARQL :

PREFIXcategorie:<http://fr.dbpedia.org/resource/Catégorie:>SELECT?nomWHERE{?auteurdcterms:subject categorie:Lauréat_du_prix_Médicis.?auteurrdfs:label ?nom.}ORDERBYDESC(?nom)

On obtient les rĂ©sultats suivants. Soient 53 rĂ©sultats pour le prix MĂ©dicis. Le compte est bon. Au moment de la gĂ©nĂ©ration de la base, le 2012 n’était pas connu.

Pour un « grand prix », ça fonctionne mais pour les autres prix ? Essayons la requĂȘte suivante qui retourne le nombre de laurĂ©ats pour tous les prix littĂ©raires.

PREFIXcategorie:<http://fr.dbpedia.org/resource/Catégorie:>SELECTDISTINCT?nomPrix,(COUNT(?nom)AS?nombreLaureats)WHERE{?auteurdcterms:subject ?sujet.?auteurrdfs:label ?nom.{{#Récupération des sujets ayant un lien avec les prix littéraires.?sujetskos:broader categorie:Lauréat_de_prix_littéraire.?sujetrdfs:label ?nomPrix.}}}ORDERBYDESC(?nombreLaureats)

Soient 68 prix (donc moins que pour la méthode précédente) mais seulement 9 prix avec moins de 10 lauréats. 

Pour les autres prix,. le prix dĂ©cembre, ça marche (14). Prix de Flore (c’est bon). Par contre, pour le prix Locus (28) par exemple, on est bien  loin du compte. Pour s’en convaincre, la page wikipĂ©dia du prix.

La requĂȘte qui rĂ©cupĂšre tous les laurĂ©ats du MĂ©dicis et les informations biographiques.

PREFIXcategorie:<http://fr.dbpedia.org/resource/Catégorie:>SELECT?nom,?image,?abstractWHERE{?auteurdcterms:subject categorie:Lauréat_du_prix_Médicis.?auteurrdfs:label ?nom.OPTIONAL{?auteurdcterms:subject ?naissanceFILTERREGEX(?naissance, "Naissance_en_1", "i")}OPTIONAL{?auteurdbpedia-owl:thumbnail ?image}OPTIONAL{?auteurdbpedia-owl:abstract ?abstract}}ORDERBY?naissance

En conclusion

La seconde mĂ©thode semble donc plus complĂšte mais ça n’est toujours pas exhaustif. En plus, il va falloir spĂ©cifier que tel sujet est un prix et que tel autre n’est qu’une date de naissance ou une fonction, donc rĂ©cupĂ©rer les sujets contenant « laurĂ©at », « meilleur » ou « prix ». On passera donc peut ĂȘtre Ă  cĂŽtĂ© d’informations intĂ©ressantes.

Une autre solution est de faire une union du champs « award » et du sujet filtré. Il faut donc faire « comprendre » au programme que la catégorie « Lauréat du prix Médicis » correspond à la ressource « Prix médicis ». Le problÚme ? La relation est la suivante :

CatĂ©gorie:LaurĂ©at_du_prix_MĂ©dicis – skos :broader -> dbpedia-fr:CatĂ©gorie:Prix_MĂ©dicis - is dcterms:subject of -> http://fr.dbpedia.org/page/Prix_MĂ©dicis

Cette relation ne fonctionnera pas dans tous les cas. En plus, si j’ai bien compris, SPARQL  n’est pas conçu comme un langage de recherche mais comme un langage  de requĂȘte. Ce qui rĂ©duit encore le champ d’application.

Enfin dbpedia français est en encore en version bĂ©ta. Les rĂ©sultats dans ce cadre sont pourtant satisfaisants. Alors qu’est ce qu’on fait ? Le dbpedia français n’a que quelques mois et on peut imaginer que les mĂ©thodes de croisement des donnĂ©es vont sĂ»rement Ă©voluer pour parvenir Ă  plus de prĂ©cision. Les articles wikipĂ©dia vont s’étoffer. On pourrait mĂȘme imaginer (rĂȘvons
 C’est quand mĂȘme le premier article du blog !) que les bibliothĂ©caires arrĂȘtent  de cataloguer pour enrichir wikipĂ©dia qui enrichirait le catalogue !!!

Soyons optimistes
 Une expĂ©rience d’enrichissement du catalogue peut donc ĂȘtre tentĂ©e. Ca tombe bien wink. C’est dĂ©jĂ  fait. Vous pouvez voir une des notices de Milan Kundera et la liste des laurĂ©ats du prix MĂ©dicis Etranger  Comment on fait ? Dans un prochain article
  

UPDATE 18/01/2013 : DBpedia en français a réalisé une nouvelle extraction ce matin. Le prédicat dbpedia-owl:abstract a disparu.Dans tous les cas, une alternative est possible :

Interroger le chapitre en langue anglaise avec la requĂȘte suivante :

PREFIXdb:<http://dbpedia.org/resource/>PREFIXdbo:<http://dbpedia.org/ontology/>PREFIXdcterms:<http://purl.org/dc/terms/> 
SELECTDISTINCT?abstractWHERE{{?auteurrdfs:label "Milan Kundera"@fr}UNION{?auteurfoaf:name "Milan Kundera"@fr}.{?auteur a dbo:Person}UNION{?auteur a foaf:Person}{?auteurdbo:abstract ?abstract}.FILTER(LANG(?abstract)="fr")}

UPDATE 22/01/13 : AprÚs un mail à dbpedia fr, Julien Cojan m'a répondu qu'il avait déjà corrigé ce problÚme. Il m'invite aussi dans des cas similaires à interroger d'autres chapitres de dbpedia. C'est vraiment trÚs bien dbpedia !

licence: 
CC pixelperfectdigital.com
↧

Viewing all articles
Browse latest Browse all 7

Trending Articles