AbstractExtractor
De Dbpedia.fr.
(nettoyage) |
|||
(18 versions intermédiaires masquées) | |||
Ligne 23 : | Ligne 23 : | ||
- | == | + | == Produire les résumés == |
Pour fonctionner cet extracteur doit interroger l'API mediawiki d'une image de wikipédia. | Pour fonctionner cet extracteur doit interroger l'API mediawiki d'une image de wikipédia. | ||
- | De par le nombre d'appels à l'API (une par article), il n'est pas possible d'interroger l'API de fr.wikipédia.org, il faut installer une version locale. | + | De par le nombre d'appels à l'API (une par article), il n'est pas possible d'interroger l'API de http://fr.wikipédia.org, il faut installer une version locale. |
- | + | En pratique, seuls les résumés en français sont obtenus à l'aide de cet extracteur, les résumés dans d'autres langues sont importés de DBpedia.org. | |
+ | === Extraire les résumés en français === | ||
- | + | Les explications de cette section sont tirées de https://github.com/dbpedia/extraction-framework/wiki/Dbpedia-Abstract-Extraction-step-by-step-guide | |
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | ==== Mise en place du miroir de wikipedia en français ==== | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | Il faut installer mediawiki avec la configuration particulière pour DBpedia (ne pas faire l'installation de mediawiki par l'interface web). | ||
+ | Dans la suite, ''[dépôtDBpedia]'' désigne le répertoire où a été téléchargé le dépôt git de [https://github.com/dbpedia/extraction-framework DBpedia]. | ||
- | |||
- | + | ===== Installer les dépendances de mediawiki ===== | |
- | + | * serveur web apache2 (parfois appelé httpd). | |
- | + | * mysql-serveur | |
- | + | * php, php-xml (parfois déjà inclus dans le package php) et php-acl (parfois appelé php-pecl-acl). | |
- | + | ||
- | + | ||
- | + | ||
- | |||
- | * | + | ===== Installer mediawiki===== |
- | * TODO: | + | * Téléchargez la dernière version de mediawiki dans un répertoire accessible par apache (groupe ''apache'' ou ''www-data'', le plus simple est de le rendre accessible à tous).: |
- | * | + | <nowiki>git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git .</nowiki> |
+ | Dans la suite on note ''[RacineMediawiki]'' le répertoire d'installation de mediawiki | ||
+ | |||
+ | * Copier le contenu du répertoire ''[dépôtDBpedia]/dump/src/main/mediawiki/'' dans ''[RacineMediawiki]''. | ||
+ | |||
+ | * Installer les extensions listées à la fin du fichier ''[RacineMediawiki]/LocalSettings.php'', depuis le répertoire ''[RacineMediawiki]/extensions'': | ||
+ | <nowiki>git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Babel.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CategoryTree.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CharInsert.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Cite.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ExpandTemplates.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ImageMap.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/InputBox.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Interwiki.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Math.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/OggHandler.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ParserFunctions.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Poem.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/StringFunctionsEscaped.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/SyntaxHighlight_GeSHi.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/timeline.git; \ | ||
+ | git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/wikihiero.git</nowiki> | ||
+ | |||
+ | |||
+ | ===== Configurer le serveur apache ===== | ||
+ | Faire correspondre l'adresse ''/mediawiki'' au dossier ''[RacineMediawiki]'', pour cela ajouter les lignes au fichier de configuration de apache (selon la configuration ''/etc/apache2/apache2.conf'' ou ''/etc/httpd/conf/httpd.conf''), voir dans un ''<nowiki><VirtualHost></nowiki>'': | ||
+ | <nowiki>Alias /mediawiki [RacineMediawiki] | ||
+ | <Directory /mediawiki> | ||
+ | Allow from all | ||
+ | </Directory></nowiki> | ||
+ | puis raffraîchir la configuration du serveur apache : | ||
+ | <nowiki>sudo service httpd reload</nowiki> | ||
+ | En tappant l'adresse ''http://localhost/mediawiki?uselang=fr'' dans un navigateur, vous devez obtenir une page qui contient le message : "Sorry! This site is experiencing technical difficulties", c'est parce qu'il faut encore mettre en place la base de données. | ||
+ | |||
+ | |||
+ | ===== Installer la base de données pour mediawiki ===== | ||
+ | Un script permet de créer une base de données pour mediawiki et d'y charger les modèles depuis le dump XML de wikipedia. | ||
+ | * La base de données est crée dans un répertoire propre avec des options particulières, il faut donc stopper le serveur mysql s'il tourne déjà: | ||
+ | <nowiki>sudo service mysqld stop</nowiki> | ||
+ | * Créer un répertoire ''[dossierMysql]'' où sera crée la base de données MySQL. | ||
+ | * Suivant l'installation de MySQL, les exécutables ne sont pas au même endroit, modifier le fichier ''[dépôtDBpedia]/dump/src/main/bash/mysql.sh'' afin de corriger l'appel aux eécutables de mysql (en tenant compte de la variable d'environnement ''$MYSQL_HOME'').('''TODO''': simplifier ça en ajoutant tout dans ''$PATH''). Puis lancer la création de la base de données : | ||
+ | <nowiki>[dépôtDBpedia]/dump/src/main/bash/mysql.sh install [dossierMysql] frwiki</nowiki> | ||
+ | |||
+ | Un fichier [dossierMysql]/mysql.sock doit avoir été créé. | ||
+ | Pour arrêter la base de données : | ||
+ | <nowiki>[dépôtDBpedia]/dump/src/main/bash/mysql.sh stop [dossierMysql] frwiki</nowiki> | ||
+ | Idem Pour la relancer, en remplaçant ''stop'' par ''start''. | ||
+ | |||
+ | '''Rq''' : Sous Ubuntu il a fallu modifier la configuration de apparmor pour autoriser la création d'une bd mysql dans le répertoire choisi. | ||
+ | |||
+ | Il faut configurer le mediawiki pour accéder à cette base de données, modifier la valeur de ''$wgDBserver'' dans le fichier ''[RacineMediawiki/LocalSettings.php'' : | ||
+ | <nowiki>$wgDBserver = ":[dossierMysql]/mysql.sock"</nowiki> | ||
+ | |||
+ | |||
+ | ===== Charger les modèles de Wikipedia dans la base de données ===== | ||
+ | |||
+ | Un programme scala extrait les modèles du dump XML de Wikipedia et les insère dans la base de données. | ||
+ | |||
+ | On note ''[racineDumps Wikipedia]'' le dossier racine des dumps Wikipedia. Les dumps sont organisés selon la structure de wikimedia : Ils se trouvent dans un sous-répertoire ''frwiki/[AAAAMMJJ]'' où ''[AAAAMMJJ]'' correspond à la date du dump, le dump lui-même a pour nom ''frwiki-[AAAAMMJJ]-pages-articles.xml.bz2''. | ||
+ | |||
+ | * modifier le fichier ''[RacineMediawiki]/maintenance/tables.sql'' pour remplacer ''ENGINE=MyISAM'' par | ||
+ | ENGINE=MyISAM COLLATE='utf8_general_ci'; | ||
+ | * modifier les paramètres du ''launcher'' ''import'' dans le fichier ''[dépôtDBpedia]/dump/pom.xml'': | ||
+ | <nowiki><launcher> | ||
+ | <id>import</id> | ||
+ | <mainClass>org.dbpedia.extraction.dump.sql.Import</mainClass> | ||
+ | <jvmArgs> | ||
+ | <jvmArg>-server</jvmArg> | ||
+ | </jvmArgs> | ||
+ | <args> | ||
+ | <arg>[racineDumps Wikipedia]</arg> | ||
+ | <arg>[RacineMediawiki]/maintenance/tables.sql</arg> | ||
+ | <arg>jdbc:mysql://localhost/?characterEncoding=UTF-8</arg> | ||
+ | <arg>false</arg><!-- require-download-complete --> | ||
+ | <arg>pages-articles.xml.bz2</arg><!-- file name: pages-articles.xml{,.bz2,.gz} --> | ||
+ | <arg>fr</arg><!-- languages and article count ranges, comma-separated --> | ||
+ | </args> | ||
+ | </launcher></nowiki> | ||
+ | * lancer l'import, depuis ''[dépôtDBpedia]/dump'': | ||
+ | mvn scala:run -Dlauncher=import | ||
+ | |||
+ | |||
+ | === Importer les résumés d'autres langues === | ||
+ | |||
+ | DBpedia.org contient les résumés dans de nombreuses langues, Ces résumés sont associés aux ressources de DBpedia.org mais on peut les importer modulo les liens d'équivalence avec les ressources de DBpedia en français. Pour importer les résumés d'une langue dont le code est ''<nowiki>[xx]</nowiki>'' (eg. ''fr'' pour le français, ''de'' pour l'allemand ...). | ||
+ | |||
+ | |||
+ | ==== Préparer les liens owl:sameAs fr-en ==== | ||
+ | |||
+ | Deux possibilités ! | ||
+ | * Utiliser le fichier ''frwiki-[AAAAMMJJ]-interlanguage-links.ttl.gz'' généré lors de l'extraction. Attention, les adresses des ressources de DBpedia.org doivent être dans le même format que pour les dumps de résumés que l'on va télécharger. A priori, il faut donc que les ressources de DBpedia fr soient identifiées par des URIs et celles de DBpedia en par des URIs. | ||
+ | $ gunzip -c frwiki-[AAAAMMJJ]-interlanguage-links.ttl.gz | grep "http://dbpedia" > same_as_fr_en.nt | ||
+ | |||
+ | * Importer ces liens depuis DBpedia.org : | ||
+ | $ wget http://downloads.dbpedia.org/current/fr/interlanguage_links_same_as_fr.nt.bz2 | ||
+ | $ bzcat interlanguage_links_same_as_fr.nt.bz2 | grep "http://dbpedia" > same_as_fr_en.nt | ||
+ | |||
+ | |||
+ | Ensuite trier le résultat selon les ressources de DBpedia en : | ||
+ | $ export LC_ALL=C (sinon les '_' sont ignorés lors du tri) | ||
+ | $ grep -v "^#" same_as_fr_en.nt | sort -k 3 > same_as_fr_en_sorted.nt | ||
+ | |||
+ | |||
+ | ==== Préparer les résumés de la langue voulue ==== | ||
+ | * Importer les résumés associés aux ressources DBpedia.org : | ||
+ | $ wget http://downloads.dbpedia.org/current/[xx]/long_abstracts_en_uris_[xx].nt.bz2 | ||
+ | $ wget http://downloads.dbpedia.org/current/[xx]/short_abstracts_en_uris_[xx].nt.bz2 | ||
+ | |||
+ | * Les trier selon les ressources de DBpedia en: | ||
+ | <nowiki> $ export LC_ALL=C (sinon les '_' sont ignorés lors du tri) | ||
+ | $ bzcat long_abstracts_en_uris_[xx].nt.bz2 | grep -v "^#" | \ | ||
+ | sort -k 1 > long_abstracts_en_uris_[xx]_sorted.nt | ||
+ | $ bzcat short_abstracts_en_uris_[xx].nt.bz2 | grep -v "^#" | \ | ||
+ | sort -k 1 > short_abstracts_en_uris_[xx]_sorted.nt</nowiki> | ||
+ | |||
+ | |||
+ | ==== Transposer les résumés aux ressources de DBpedia fr ==== | ||
+ | |||
+ | <nowiki> $ join -13 -21 same_as_fr_en_sorted.nt long_abstracts_en_uris_[xx]_sorted.nt | \ | ||
+ | sed "s/^<[^>]*> \(<[^>]*>\) <[^>]*> ./\1/" > long_abstracts_fr_iris_[xx].nt | ||
+ | $ join -13 -21 same_as_fr_en_sorted.nt short_abstracts_en_uris_[xx]_sorted.nt | \ | ||
+ | sed "s/^<[^>]*> \(<[^>]*>\) <[^>]*> ./\1/" > short_abstracts_fr_iris_[xx].nt</nowiki> |
Version actuelle en date du 27 septembre 2013 à 14:42
Génère deux triplets par articles correspondant à un résumé court et un résumé long de l'article.
Sommaire |
Triplets générés
short_abstract_fr.nt | ||
---|---|---|
dbr:[NomPage] | rdfs:comment | texte |
long_abstract_fr.nt | ||
---|---|---|
dbr:[NomPage] | dbpedia-owl:abstract | texte |
Produire les résumés
Pour fonctionner cet extracteur doit interroger l'API mediawiki d'une image de wikipédia. De par le nombre d'appels à l'API (une par article), il n'est pas possible d'interroger l'API de http://fr.wikipédia.org, il faut installer une version locale.
En pratique, seuls les résumés en français sont obtenus à l'aide de cet extracteur, les résumés dans d'autres langues sont importés de DBpedia.org.
Extraire les résumés en français
Les explications de cette section sont tirées de https://github.com/dbpedia/extraction-framework/wiki/Dbpedia-Abstract-Extraction-step-by-step-guide
Mise en place du miroir de wikipedia en français
Il faut installer mediawiki avec la configuration particulière pour DBpedia (ne pas faire l'installation de mediawiki par l'interface web). Dans la suite, [dépôtDBpedia] désigne le répertoire où a été téléchargé le dépôt git de DBpedia.
Installer les dépendances de mediawiki
- serveur web apache2 (parfois appelé httpd).
- mysql-serveur
- php, php-xml (parfois déjà inclus dans le package php) et php-acl (parfois appelé php-pecl-acl).
Installer mediawiki
- Téléchargez la dernière version de mediawiki dans un répertoire accessible par apache (groupe apache ou www-data, le plus simple est de le rendre accessible à tous).:
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git .
Dans la suite on note [RacineMediawiki] le répertoire d'installation de mediawiki
- Copier le contenu du répertoire [dépôtDBpedia]/dump/src/main/mediawiki/ dans [RacineMediawiki].
- Installer les extensions listées à la fin du fichier [RacineMediawiki]/LocalSettings.php, depuis le répertoire [RacineMediawiki]/extensions:
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Babel.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CategoryTree.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CharInsert.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Cite.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ExpandTemplates.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ImageMap.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/InputBox.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Interwiki.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Math.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/OggHandler.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ParserFunctions.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Poem.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/StringFunctionsEscaped.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/SyntaxHighlight_GeSHi.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/timeline.git; \ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/wikihiero.git
Configurer le serveur apache
Faire correspondre l'adresse /mediawiki au dossier [RacineMediawiki], pour cela ajouter les lignes au fichier de configuration de apache (selon la configuration /etc/apache2/apache2.conf ou /etc/httpd/conf/httpd.conf), voir dans un <VirtualHost>:
Alias /mediawiki [RacineMediawiki] <Directory /mediawiki> Allow from all </Directory>
puis raffraîchir la configuration du serveur apache :
sudo service httpd reload
En tappant l'adresse http://localhost/mediawiki?uselang=fr dans un navigateur, vous devez obtenir une page qui contient le message : "Sorry! This site is experiencing technical difficulties", c'est parce qu'il faut encore mettre en place la base de données.
Installer la base de données pour mediawiki
Un script permet de créer une base de données pour mediawiki et d'y charger les modèles depuis le dump XML de wikipedia.
- La base de données est crée dans un répertoire propre avec des options particulières, il faut donc stopper le serveur mysql s'il tourne déjà:
sudo service mysqld stop
- Créer un répertoire [dossierMysql] où sera crée la base de données MySQL.
- Suivant l'installation de MySQL, les exécutables ne sont pas au même endroit, modifier le fichier [dépôtDBpedia]/dump/src/main/bash/mysql.sh afin de corriger l'appel aux eécutables de mysql (en tenant compte de la variable d'environnement $MYSQL_HOME).(TODO: simplifier ça en ajoutant tout dans $PATH). Puis lancer la création de la base de données :
[dépôtDBpedia]/dump/src/main/bash/mysql.sh install [dossierMysql] frwiki
Un fichier [dossierMysql]/mysql.sock doit avoir été créé. Pour arrêter la base de données :
[dépôtDBpedia]/dump/src/main/bash/mysql.sh stop [dossierMysql] frwiki
Idem Pour la relancer, en remplaçant stop par start.
Rq : Sous Ubuntu il a fallu modifier la configuration de apparmor pour autoriser la création d'une bd mysql dans le répertoire choisi.
Il faut configurer le mediawiki pour accéder à cette base de données, modifier la valeur de $wgDBserver dans le fichier [RacineMediawiki/LocalSettings.php :
$wgDBserver = ":[dossierMysql]/mysql.sock"
Charger les modèles de Wikipedia dans la base de données
Un programme scala extrait les modèles du dump XML de Wikipedia et les insère dans la base de données.
On note [racineDumps Wikipedia] le dossier racine des dumps Wikipedia. Les dumps sont organisés selon la structure de wikimedia : Ils se trouvent dans un sous-répertoire frwiki/[AAAAMMJJ] où [AAAAMMJJ] correspond à la date du dump, le dump lui-même a pour nom frwiki-[AAAAMMJJ]-pages-articles.xml.bz2.
- modifier le fichier [RacineMediawiki]/maintenance/tables.sql pour remplacer ENGINE=MyISAM par
ENGINE=MyISAM COLLATE='utf8_general_ci';
- modifier les paramètres du launcher import dans le fichier [dépôtDBpedia]/dump/pom.xml:
<launcher> <id>import</id> <mainClass>org.dbpedia.extraction.dump.sql.Import</mainClass> <jvmArgs> <jvmArg>-server</jvmArg> </jvmArgs> <args> <arg>[racineDumps Wikipedia]</arg> <arg>[RacineMediawiki]/maintenance/tables.sql</arg> <arg>jdbc:mysql://localhost/?characterEncoding=UTF-8</arg> <arg>false</arg><!-- require-download-complete --> <arg>pages-articles.xml.bz2</arg><!-- file name: pages-articles.xml{,.bz2,.gz} --> <arg>fr</arg><!-- languages and article count ranges, comma-separated --> </args> </launcher>
- lancer l'import, depuis [dépôtDBpedia]/dump:
mvn scala:run -Dlauncher=import
Importer les résumés d'autres langues
DBpedia.org contient les résumés dans de nombreuses langues, Ces résumés sont associés aux ressources de DBpedia.org mais on peut les importer modulo les liens d'équivalence avec les ressources de DBpedia en français. Pour importer les résumés d'une langue dont le code est [xx] (eg. fr pour le français, de pour l'allemand ...).
Préparer les liens owl:sameAs fr-en
Deux possibilités !
- Utiliser le fichier frwiki-[AAAAMMJJ]-interlanguage-links.ttl.gz généré lors de l'extraction. Attention, les adresses des ressources de DBpedia.org doivent être dans le même format que pour les dumps de résumés que l'on va télécharger. A priori, il faut donc que les ressources de DBpedia fr soient identifiées par des URIs et celles de DBpedia en par des URIs.
$ gunzip -c frwiki-[AAAAMMJJ]-interlanguage-links.ttl.gz | grep "http://dbpedia" > same_as_fr_en.nt
- Importer ces liens depuis DBpedia.org :
$ wget http://downloads.dbpedia.org/current/fr/interlanguage_links_same_as_fr.nt.bz2 $ bzcat interlanguage_links_same_as_fr.nt.bz2 | grep "http://dbpedia" > same_as_fr_en.nt
Ensuite trier le résultat selon les ressources de DBpedia en :
$ export LC_ALL=C (sinon les '_' sont ignorés lors du tri) $ grep -v "^#" same_as_fr_en.nt | sort -k 3 > same_as_fr_en_sorted.nt
Préparer les résumés de la langue voulue
- Importer les résumés associés aux ressources DBpedia.org :
$ wget http://downloads.dbpedia.org/current/[xx]/long_abstracts_en_uris_[xx].nt.bz2 $ wget http://downloads.dbpedia.org/current/[xx]/short_abstracts_en_uris_[xx].nt.bz2
- Les trier selon les ressources de DBpedia en:
$ export LC_ALL=C (sinon les '_' sont ignorés lors du tri) $ bzcat long_abstracts_en_uris_[xx].nt.bz2 | grep -v "^#" | \ sort -k 1 > long_abstracts_en_uris_[xx]_sorted.nt $ bzcat short_abstracts_en_uris_[xx].nt.bz2 | grep -v "^#" | \ sort -k 1 > short_abstracts_en_uris_[xx]_sorted.nt
Transposer les résumés aux ressources de DBpedia fr
$ join -13 -21 same_as_fr_en_sorted.nt long_abstracts_en_uris_[xx]_sorted.nt | \ sed "s/^<[^>]*> \(<[^>]*>\) <[^>]*> ./\1/" > long_abstracts_fr_iris_[xx].nt $ join -13 -21 same_as_fr_en_sorted.nt short_abstracts_en_uris_[xx]_sorted.nt | \ sed "s/^<[^>]*> \(<[^>]*>\) <[^>]*> ./\1/" > short_abstracts_fr_iris_[xx].nt
- Dernière modification de cette page le 27 septembre 2013 à 14:42.
- Cette page a été consultée 7 734 fois.