Comment l'API de Wiktionnaire peut-elle être utilisée pour déterminer si un mot existe ou non?
Wiktionary API peut être utilisé pour rechercher s'il existe ou non un mot.
Exemples de pages existantes et non existantes:
http://en.wiktionary.org/w/api.php?action=query&titles=test
http://en.wiktionary.org/w/api.php?action=query&titles=testx
Le premier lien fournit des exemples sur d'autres types de formats qui pourraient être plus faciles à analyser.
Pour récupérer les données de Word dans un petit format XHTML (si plus que l'existence est requise), demandez la version imprimable de la page:
http://en.wiktionary.org/w/index.php?title=test&printable=yes
http://en.wiktionary.org/w/index.php?title=testx&printable=yes
Ceux-ci peuvent ensuite être analysés avec n'importe quel analyseur XML standard.
Il y a quelques mises en garde en vérifiant simplement que le Wiktionnaire a une page avec le nom que vous recherchez:
Avertissement # 1 : Tous les Wiktionnaires, y compris le Wiktionnaire anglais, ont en fait pour objectif d'inclure chaque mot dans chaque langue, donc si vous utilisez simplement l'appel API ci-dessus, vous sachez que le mot que vous demandez est un mot dans au moins une langue, mais pas nécessairement en anglais: http://en.wiktionary.org/w/api.php?action=query&titles=dicare
Mise en garde n ° 2 : Il existe peut-être une redirection d'un mot vers un autre mot. Cela peut provenir d'une orthographe alternative, mais cela peut provenir d'une erreur quelconque. L'appel d'API ci-dessus ne fera pas la différence entre une redirection et un article: http://en.wiktionary.org/w/api.php?action=query&titles=profilemetry
Mise en garde # 3 : Certains Wiktionnaires, y compris le Wiktionnaire anglais, incluent des "fautes d'orthographe courantes": http://en.wiktionary.org/w/ api.php? action = requête et titres = quarante
Mise en garde # 4 : Certains Wiktionnaires autorisent les entrées de talon qui ont peu ou pas d'informations sur le terme. Cela était courant sur plusieurs Wiktionnaires mais pas sur le Wiktionnaire anglais. Mais il semble maintenant s'être également propagé au Wiktionnaire anglais: https://en.wiktionary.org/wiki/%E6%99%B6%E7%90%8 (permalien pour quand le stub est rempli pour que vous puissiez toujours voir à quoi ressemble un talon: https://en.wiktionary.org/w/index.php?title=%E6%99%B6%E7%90%83&oldid=39757161 )
Si ceux-ci ne sont pas inclus dans ce que vous voulez, vous devrez charger et analyser le wikitext lui-même, ce qui n'est pas une tâche triviale.
Vous pouvez télécharger un vidage de données Wikitionary . Il y a plus d'informations dans la FAQ . Pour vos besoins, le définitions de vidage est probablement un meilleur choix que le vidage xml.
Pour que ce soit vraiment simple, extrayez les mots du vidage comme ça:
bzcat pages-articles.xml.bz2 | grep '<title>[^[:space:][:punct:]]*</title>' | sed 's:.*<title>\(.*\)</title>.*:\1:' > words
Si vous utilisez Python, vous pouvez utiliser WiktionaryParser par Suyash Behera.
Vous pouvez l'installer en
Sudo pip install wiktionaryparser
Exemple d'utilisation:
>>> from wiktionaryparser import WiktionaryParser
>>> parser = WiktionaryParser()
>>> Word = parser.fetch('test')
>>> another_Word = parser.fetch('test', 'french')
>>> parser.set_default_language('french')
Vous voudrez peut-être essayer JWKTL. Je viens de le découvrir;)
http://en.wikipedia.org/wiki/Ubiquitous_Knowledge_Processing_Lab#Wiktionary_API
Voici un début pour analyser les données d'étymologie et de prononciation:
function parsePronunciationLine(line) {
let val
let type
line.replace(/\{\{\s*a\s*\|UK\s*\}\}\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en\}\}/, (_, $1) => {
val = $1
type = 'uk'
})
line.replace(/\{\{\s*a\s*\|US\s*\}\}\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en\}\}/, (_, $1) => {
val = $1
type = 'us'
})
line.replace(/\{\{enPR|[^\}]+\}\},?\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
val = $1
type = 'us'
})
line.replace(/\{\{a|GA\}\},?\s*\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
val = $1
type = 'ga'
})
line.replace(/\{\{a|GA\}\},?.+\{\{IPA\|\/?([^\/\|]+)\/?\|lang=en}}/, (_, $1) => {
val = $1
type = 'ga'
})
// {{a|GA}} {{IPA|/ˈhæpi/|lang=en}}
// * {{a|RP}} {{IPA|/pliːz/|lang=en}}
// * {{a|GA}} {{enPR|plēz}}, {{IPA|/pliz/|[pʰliz]|lang=en}}
if (!val) return
return { val, type }
}
function parseEtymologyPiece(piece) {
let parts = piece.split('|')
parts.shift() // first one is ignored.
let ls = []
if (langs[parts[0]]) {
ls.Push(parts.shift())
}
if (langs[parts[0]]) {
ls.Push(parts.shift())
}
let l = ls.pop()
let t = parts.shift()
return [ l, t ]
// {{inh|en|enm|poisoun}}
// {{m|enm|poyson}}
// {{der|en|la|pōtio|pōtio, pōtiōnis|t=drink, a draught, a poisonous draught, a potion}}
// {{m|la|pōtō|t=I drink}}
// {{der|en|enm|happy||fortunate, happy}}
// {{cog|is|heppinn||lucky}}
}
Mise à jour : Ici est un Gist avec plus de détails.