Projet:Requêter le Wiktionnaire

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

L’objectif de cette page projet est de voir comment utiliser au mieux les outils existants pour faire des requêtes dans le Wiktionnaire, donner des suggestions d’amélioration ou indiquer les recherches intéressantes que l’on a construites avec ces outils. Cela dans une perspective de contribution et de vérification du contenu du Wiktionnaire d’une part, mais également de sortie de données pour d’autres usages ou de visualisation de données.

Cinq voies sont aujourd’hui ouvertes :

  • Recherche avancée sur les lettres et les prononciations grâce à l’outil Anagrimes.
  • Explorer tout le contenu d’une copie des données à l’aide du logiciel AutoWikiBrowser.
  • Requêtes sur les catégories et les modèles grâce à l’outil extérieur PetScan.
  • Requêtes sur les données et les relations via la conversion de Dbnary.
  • Requêtes SPARQL sur les données et les relations via la conversion du Dictionnaire des francophones.
  • Requêtes SQL grâce à l’outil Quarry

Anagrimes[modifier le wikicode]

Accessible depuis la page Wiktionnaire:Recherche avancée dont un lien est inclus dans la colonne latérale, il fonctionne aussi en externe. Il est développé par Darkdadaah et s’appuie sur les copies de sauvegarde mensuelles, les dumps, pour en extraire les formes des mots, les classes de mots et les indications de prononciation. Il propose une copie de la base au format SQL.

Limites[modifier le wikicode]

  • L’outil nécessite JavaScript pour fonctionner, et de laisser cochée une case dans la liste des gadgets des utilisateurs.
  • L’outil ne permet pas de chercher des mots contenant à la fois des lettres données ET des sons donnés.
  • Le lien vers la page de recherche n’apparaît pas dans le menu latéral en consultation mobile.
  • Il utilise le dernier dump donc sa base peut avoir deux semaines de retard sur le Wiktionnaire.

Requêtes intéressantes[modifier le wikicode]

Cet outil permet de rechercher des anagrammes, des rimes ou bien des mots à partir d’une prononciation. Si vous utilisez cet outil pour contribuer, n’hésitez pas à détailler comment !


AutoWikiBrowser[modifier le wikicode]

Le logiciel AutoWikiBrowser, ou AWB, est un outil qui permet de modifier massivement les pages du Wiktionnaire. Une page de doc spécifique existe, Wiktionnaire:AutoWikiBrowser, mais elle est sommaire pour l’instant. Dommage, car l’outil permet de faire des requêtes à partir d’expressions régulières intéressantes grâce à son outil « Database Scanner ».

Limites[modifier le wikicode]

  • Il ne se lance que sur Windows.
  • Il est nécessaire de télécharger une copie des données, un dump, et le temps de calcul dépend de la puissance de la machine utilisée, ce qui peut s’avérer long.

Requêtes intéressantes[modifier le wikicode]

On peut les récupérer en .xml.

N’hésitez pas à lister des requêtes faites grâce à cet outil !


JavaScript Wiki Browser[modifier le wikicode]

Logiciel similaire à AWB qui fonctionne directement depuis le navigateur. Pour l’activer il faut copier la ligne suivante dans son common.js :
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript');
La documentation peut-être trouvée sur cette page mais elle est sommaire pour le moment.

Limites[modifier le wikicode]

  • Il nécessite JavaScript pour fonctionner.
  • Il n’est pas aussi complet qu’AWB.

Requêtes intéressantes[modifier le wikicode]

N’hésitez pas à lister des requêtes faites grâce à cet outil !

PetScan[modifier le wikicode]

PetScan permet de faire des requêtes dans le Wiktionnaire en cherchant toutes les pages qui se trouvent dans une ou plusieurs catégories, ou qui contiennent un ou plusieurs modèles.

Limites[modifier le wikicode]

PetScan parcourt tout le contenu des pages, mais n’assure pas que l’information se trouve au bon endroit. La présence d’un modèle {{familier}} par exemple, pourra être en fait dans une autre section de langue, ou même comme indication dans une section de synonyme. Il peut donc y avoir de nombreux faux positifs.

L’outil est très demandé, et il est souvent indisponible.

Requêtes intéressantes[modifier le wikicode]

SPARQL avec Dbnary[modifier le wikicode]

Au sein de l’écosystème wikimédien, il n’existe pour l’instant aucun outil pour faire des requêtes SPARQL sur le contenu du Wiktionnaire. Il est possible de faire des requêtes sur le contenu de Wikidata, mais pas sur le contenu du Wiktionnaire. Deux projets extérieurs visent à permettre de le faire : Dbnary et le Dictionnaire des francophones. Pour les requêtes sur des données lexicales dans Wikidata, voir Projet:Coopération/Wikidata.

Dbnary est le projet d’un chercheur français qui parse une vingtaine d’éditions du Wiktionnaire pour les mettre dans une base structurée. Un endpoint SPARQL est ouvert au public, utilisant Virtuoso : http://kaiko.getalp.org/sparql . Il permet notamment de faire des requêtes sur les sections de traductions et les relations sémantiques (synonymes, antonymes, etc.).

Limites à Dbnary[modifier le wikicode]

  • Il faut comprendre le modèle de données utilisé, et formuler des requêtes complexes.
  • L’interface de requête de Virtuoso est austère et complexe. Même avec le moteur de recherche à facette associé, c’est galère.
  • Les caractères non-ASCII semblent être mal gérés.
  • Ne sont pas requêtables : étymologie, modèles de la ligne de forme, modèles de la ligne de définition, catégories.

Requêtes SPARQL intéressantes[modifier le wikicode]

Les données du Wiktionnaire étant parsées par l’outil, il offre le plus de possibilités, à condition de réussir à formaliser de bonnes requêtes. Quelques-unes sont proposées sur le site, mais si vous imaginez d’autres requêtes SPARQL qui vous intéresseraient, n’hésitez pas à les lister ci-dessous.

Propositions de Noé[modifier le wikicode]

Je note des requêtes SPARQL qui me sembleraient utiles et que je sais rédiger (la plupart grâce à VIGNERON, encore merci !). Toutes ne sont pas possibles dans Dbnary, mais le seraient dans une base RDF qui parserait plus finement le Wiktionnaire.

  • Définitions trop longues (+ de 700 caractères par exemple)
  • Définitions sans aucun lien hypertexte
  • Définitions avec une indication géographique (pour une projection sur une carte)
  • Exemples contenant des liens
  • Exemples ne contenant pas de gras


SPARQL avec le Dictionnaire des francophones[modifier le wikicode]

Le Dictionnaire des francophones (DDF) est un projet initié par le ministère de la Culture de France et réalisé à Lyon. Le chef de projet est Noé et il a été lancé le 16 mars 2021. Il intègre plusieurs dictionnaires et bases de mots dont le Wiktionnaire. Deux autres sont sous licence CC BY-SA et accessibles dans le endpoint public, les autres ne sont pas accessibles. Il s’agit de l’Inventaire des particularités lexicales du français en Afrique noire et du Dictionnaire des synonymes, des mots et expressions des français parlés dans le monde. Au lancement, c’est le dump du 1e mars 2021 qui est intégré et il sera mis à jour régulièrement.

Limites au DDF[modifier le wikicode]

  • Seules les données pour le français sont présentes
  • Certaines parties sont mal parsées
  • Ne sont pas requêtables : traductions, prononciations, anagrammes indiquées dans les pages du Wiktionnaire

Requêtes SPARQL intéressantes[modifier le wikicode]

#Nombre d’entrées et de définitions du Wiktionnaire dans le Dictionnaire des francophones (sans les flexions).
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT (COUNT(DISTINCT ?lentry) AS ?nombre_de_mots) (COUNT(DISTINCT ?definition) AS ?nombre_de_definitions)
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:sense ?definition .
     MINUS {?lentry a ddf:VerbalInflection.}
     MINUS {?lentry a ddf:Inflection.}
}
#Mots avec classe et définition, contenant "Type de".
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?classe ?def ?loc 
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
 ?lentry ddf:hasPartOfSpeech/skos:prefLabel ?classe .
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
  FILTER ( regex(?def, "Type de") )
  OPTIONAL{ ?sense ddf:hasLocalisation/skos:prefLabel ?loc.	}
}
LIMIT 200
#Définitions ne contenant aucun lien.
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?classe ?locution ?def ?loc 
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
  OPTIONAL{?lentry ddf:hasPartOfSpeech/skos:prefLabel ?classe .}
  OPTIONAL{?lentry ddf:multiWordType/skos:prefLabel ?locution .}
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
OPTIONAL { ?sense ddf:hasLocalisation/skos:prefLabel ?loc }
FILTER ( REGEX (?def, "^((?!href).)*$") )
}
ORDER BY DESC(?mot)
LIMIT 200
#Sélection issue d’un glossaire (liste thématique).
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?def ?loc 
WHERE {
 ?entry a lexicog:Entry .
 ?entry lexicog:describes ?lentry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
 ?sense ddf:hasGlossary <http://data.dictionnairedesfrancophones.org/authority/glossary/fruits> .
    OPTIONAL{?sense ddf:hasLocalisation/skos:prefLabel ?loc.}
}
ORDER BY ?mot
#Exemples qui ne soient pas un modèle d’ébauche et qui ne contiennent pas de gras.
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?classe ?locution ?def ?exemple
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
  OPTIONAL{?lentry ddf:hasPartOfSpeech/skos:prefLabel ?classe .}
  OPTIONAL{?lentry ddf:multiWordType/skos:prefLabel ?locution .}
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
 ?sense lexicog:usageExample/rdf:value ?exemple .
FILTER ( REGEX (?exemple, "^((?!Exemple d'utilisation manquant).)*$") )    
FILTER ( REGEX (?exemple, "^((?!définition manquante ou incomplète ou mal formée).)*$") )  
FILTER ( REGEX (?exemple, "^((?!<br).)*$") )    
FILTER ( REGEX (?exemple, "^((?!<b>).)*$") )    
}
ORDER BY DESC(?mot)
LIMIT 200
#Définitions vraiment longues.
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?classe ?def ?loc 
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
  OPTIONAL{?lentry ddf:hasPartOfSpeech|ddf:multiWordType ?classeid .
        ?classeid skos:prefLabel ?classe .}
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
OPTIONAL { ?sense ddf:hasLocalisation/skos:prefLabel ?loc }
FILTER ( strlen(?def) > 700 )
}
ORDER BY DESC(?mot)
LIMIT 200
#Définitions du Togo avec les informations disponibles.
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?classe ?def ?exemple ?source ?domaine ?registre ?diachronique ?frequence ?connotation ?prononciation
 WHERE {
 ?entry a lexicog:Entry .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
  OPTIONAL {?lentry ontolex:canonicalForm/ontolex:phoneticRep ?prononciation .}
  OPTIONAL{?lentry ddf:hasPartOfSpeech|ddf:multiWordType ?classeid .
        ?classeid skos:prefLabel ?classe .}
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
  OPTIONAL{?sense lexicog:usageExample/rdf:value ?exemple .}
  OPTIONAL{?sense ddf:hasRegister/skos:prefLabel ?registre .}
  OPTIONAL{?sense ddf:hasDomain/skos:prefLabel ?domaine .}
  OPTIONAL{?sense ddf:hasTemporality/skos:prefLabel ?diachronique .}
  OPTIONAL{?sense ddf:hasFrequency/skos:prefLabel ?frequence .}
  OPTIONAL{?sense ddf:hasConnotation/skos:prefLabel ?connotation .}
 ?sense ddf:hasLocalisation <https://www.geonames.org/2363686>.
 ?entry ddf:hasLexicographicResource/skos:prefLabel ?source .
}
ORDER BY (?mot)
#Exemples écrit par Paul Vibert.
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <https://www.w3.org/ns/prov#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?mot ?def ?exemple ?source
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:canonicalForm/ontolex:writtenRep ?mot .
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
 ?sense lexicog:usageExample ?exe .
 ?exe rdf:value ?exemple .
 ?exe dct:bibliographicalCitation ?source.
  FILTER ( regex(?source, "Paul Vibert") )
}
ORDER BY DESC(?mot)
LIMIT 200

Pour n’avoir les définitions qui n’ont qu’une seule indication de lieu, sans aucune définition présentant plus d'un lieu, remplacer la ligne pour obtenir le lieu par :

{SELECT DISTINCT ?sense WHERE {
      VALUES ?lieu {<https://www.geonames.org/3381670>}
    ?sense ddf:hasLocalisation ?lieu .
    FILTER NOT EXISTS { ?sense ddf:hasLocalisation ?seulement . FILTER(?seulement != ?lieu) }
    }}

Pour obtenir la liste des lieux avec leurs identifiants Geonames :

#Liste des indications géographiques disponibles.
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX core: <http://www.w3.org/2004/02/skos/core#>
PREFIX prov: <http://www.w3.org/ns/prov-o-20130430#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX lexicog: <http://www.w3.org/ns/lemon/lexicog#>
PREFIX lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
PREFIX ddf: <http://data.dictionnairedesfrancophones.org/ontology/ddf#>
PREFIX dinv: <http://data.dictionnairedesfrancophones.org/dict/inv/entry/>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT  ?loc ?lieu (COUNT(DISTINCT ?def) AS ?compte)
WHERE {
 ?entry a lexicog:Entry .
 ?entry ddf:hasLexicographicResource <http://data.dictionnairedesfrancophones.org/resource/wiktionnaire> .
 ?entry lexicog:describes ?lentry .
 ?lentry ontolex:sense ?sense .
 ?sense skos:definition ?def .
 ?sense ddf:hasLocalisation ?lieu.
         ?lieu skos:prefLabel ?loc.
}
GROUP BY ?lieu ?loc
ORDER BY DESC (?compte)
Astuce : Pour obtenir la liste des domaines à la place de la liste des lieux, reprendre la même requête et remplacer à la ligne 26 de la précédente requête :
?sense ddf:hasLocalisation ?lieu.
par
?sense ddf:hasDomain ?lieu.

Les noms des variables peuvent être ajustées, mais ça fonctionnera déjà comme ça !


Quarry[modifier le wikicode]

Quarry est un outil permettant d’exécuter des requêtes SQL sur les bases de données des projets de l’écosystème wikimédien. Il est accessible en suivant ce lien.

Limites de Quarry[modifier le wikicode]

  • Il faut comprendre le modèle de données utilisé, et formuler des requêtes complexes.
  • Le type de requête réalisable dépend de la structure de la base de données.

Autres outils à partir des données du Wiktionnaire[modifier le wikicode]

  • Corpus DiCo est un comparatif des nouvelles entrées dans le Robert, le Larousse, le dictionnaire Hachette, le dictionnaire de l’Académie française et le Wiktionnaire, qui permet d’identifier des mots manquants dans le Wiktionnaire.
  • GLAWI est un export du Wiktionnaire en XML. Les outils G-PeTo sont mis à disposition pour l’exploiter. Si des exploitations en sont faites, ne pas hésiter à créer une section de la page dédiée.

Recherche d’erreurs dans le Wiktionnaire par programmation[modifier le wikicode]

Avec les outils de programmation des bots, il est possible d’écrire rapidement de petits algorithmes pour détecter des erreurs dans les pages du Wiktionnaire.

Outils[modifier le wikicode]

Idées d’utilisation[modifier le wikicode]

  • faire la liste de tous les mots dans une langue donnée, permet par exemple :
    • de faire des recherches dans un fichier simple pour trouver les dérivés
    • de vérifier que tous les mots utilisés dans le Wiktionnaire sont dans le Wiktionnaire (pour trouver des mots non définis ou mal orthographiés)
    • de trouver des mots qui ont certaines caractéristiques (palindromes, le plus de voyelles, des lettres uniques…)
  • trouver des problèmes potentiels dans les pages du Wiktionnaire :
    • exemples sans mot en gras, ou avec le mot en gras qui n’est pas le bon
    • conventions non standards, comme les ... au lieu de …, ou (…) au lieu de […], un point final manquant, une espace avant une virgule
    • paramètre |source= non utilisé (tirets et parenthèses ajoutés manuellement), ou année manquante dans la source
    • citations vides : #* '', à remplacer par #* {{exemple|lang=fr}}
    • mots définis en gras en début de section lemme qui est différent du nom de la page
    • plusieurs sections d’une même langue
  • lister les mots qui n’ont pas d’exemples et, pour chacun, lister les citations du Wiktionnaire qui le contiennent

Actions pour des bots :

  • réordonner les sections dans une page (synonymes avant dérivés)
  • ajouter la section traductions quand elle manque
  • dans les sources, mettre le chapitre ou la page à la fin

Principes[modifier le wikicode]

Il est facile de télécharger les dumps du Wiktionnaire (faits au moins une fois par mois) et de travailler sur son ordinateur. Ils sont téléchargeables ici (prendre frwiktionary-latest-pages-articles.xml.bz2 puis le décompresser).

Une fois la librairie installée, quelques lignes suffisent pour récupérer la liste des pages en français.

Par exemple en Perl avec MediaWiki::Bot :

use utf8;
binmode STDOUT, ":utf8";

use MediaWiki::DumpFile::FastPages;

my $pages = MediaWiki::DumpFile::FastPages->new('frwiktionary-latest-pages-articles.xml');
my $titre;
my $texte;
while (($titre, $texte) = $pages->next) {
	if ($texte =~ /\{\{langue\|fr\}\}/m) {
		print $titre, "\n";
	}
}

En général, on ne traite qu’une seule langue à la fois, la fonction suivante récupère le contenu de la section dans la langue choisie :

# Fonction qui retourne le texte de la section dans la langue demandée ;
# paramètres : page, 'fr' (où 'fr' peut être n'importe quelle langue, comme 'it')
sub section_langue {
	my ($page, $code_langue) = @_;

	# tableau des lignes de la langue demandée
	my @lignes_langue = ();

	# code langue de la ligne courante
	my $langue = '';

	for my $ligne (split /\n/, $page) {

		# test section de langue
		if ($ligne =~ /^\s*==\s*\{\{\s*langue\s*\|\s*(\w*)/) {
			# changement de langue
			$langue = $1;
			next;
		}

		if ($langue eq $code_langue) {
        		push @lignes_langue, $ligne;
		}
	}

	return @lignes_langue;
}

my $pages = MediaWiki::DumpFile::FastPages->new('frwiktionary-latest-pages-articles.xml');
my $titre;
my $texte;
while (($titre, $texte) = $pages->next) {

	# exclusion des pages du Wiktionnaire
	next if ($titre =~ /^Wiktionnaire:/);

	# exclusion des pages sans section française
	next if (not ($texte =~ /\{\{langue\|fr\}\}/m));

	my @francais = section_langue($texte, 'fr');
	# y plus qu’à
}