Wikipedia est une gigantesque source de contenu pour celui qui a besoin d’ une grand quantité de données en format texte.
Récupérer ces données est autorisé, Wikipedia fourni même des moyens pour récupérer tous styles de données ainsi que de la documentation (sommaire et fouillie) à cette adresse.
Mon expérience personnelle permet de faire les constats suivants:
- Il est difficile de parser le balisage propre à Wiki (Wikicode ou Wikitext), même si de nombreux outils existent en Java ( Mylyn etc..) la présence de templates spécifiques Wikipedia rend certaines substitutions impossibles simplement.
- Le meilleur parser de Wikitext est Wikipedia lui même…
- Installer un mirroir exact de Wikipedia en local est long fastidieux et assez mal documenté
- La récupération des articles parsés directement par Wikipedia à 1 article par seconde ne pose pas de problème à Wikipedia, mais le processus est très long (1 article = 1 sec <=> 100000 articles = 1 jour)
- Les articles doivent être filtrés car on a de tout, le meilleurs comme le pire
J’ai pu récupérer les données de Wikipedia de la manière suivante:
- Pré requis
Serveur et outils MySQL
Machine virtuelle java (le chemin de java.exe doit être dans la variable d’environnement PATH)
L’utilitaire maison java WikiDump [ Sources - Version compilée ] (dans la version compilée un batch est fourni pour lancer une démo, l’exception qui apparait est voulue, elle n’interrompt pas le traitement ) - Se rendre sur le site http://dumps.wikimedia.org/frwiki/latest/ afin de télécharger les dumps MySQL:
: Contenant la liste des catégories et le nombre d’articles qui s’y ratache.
frwiki-latest-category.sql.gz: Permettant de faire le lien entre les articles et les catégories.
frwiki-latest-categorylinks.sql.gz - Importer les scripts dans une base de données MySQL (sous Windows j’ai utilisé
MySQL Administrator).
Note: Le processus est relativement long (3 heures environ). - Filtrer les articles voulus en lançant la requête suivante afin de récupérer les catégories
Portail:SELECT * FROM category WHERE cat_pages > 0 AND cat_title LIKE “Portail:%” ORDER BY cat_pages DESCUne fois les portails choisis (
A prendreetA refuser), il est nécessaire d’en sélectionner les articles. Lancer la requête suivante en mettant votre propre liste de portails:SELECT cl_data_in.cl_from FROM ((SELECT DISTINCT cl3.cl_from FROM categorylinks AS cl3 WHERE cl3.cl_to IN ("Portail:APrendre1,Portail:APrendre2")) AS cl_data_in)
WHERE cl_data_in.cl_from NOT IN (SELECT DISTINCT cl2.cl_from FROM categorylinks AS cl2 WHERE LOWER(cl2.cl_to LIKE "liste d%") OR cl2.cl_to IN ("Homonymie","Portail:ARefuser1"))Une fois la liste des articles récupérés les exporter dans un fichier
csvou autre, le format importe peu, l’essentiel est d’avoir un identifiant par ligne.Nettoyer le fichier en supprimant le nom de colonne et les ligne vides.
- Pour lancer la récupération du contenu, dans la ligne de commande, tapper:
java -jar WikiDump.jar Chemin_fichier_articles Repertoire_de_destination > log.txt
Une fois le dernier (long) traitement effectué, vous avez pu récupérer une quantité de données au delà de vos espérances.
Par courtoisie, si vous effectuez un gros ramassage, n’oubliez pas de faire à un don à Wikipedia.