2010-05-05 7 views
68

Come può essere utilizzata l'API di Wiktionary per determinare se esiste o meno una parola?Come recuperare il contenuto della parola Wiktionary?

+0

Chiunque abbia letto la documentazione vedrà che l'API contiene neanche lontanamente sufficiente funzionalità per "recuperare il contenuto parola Wikizionario". Io stimerei che ti diventi all'incirca l'1% del modo. Puoi recuperare la sintassi del wiki raw o l'HTML analizzato e da lì devi fare tutto da solo. Detto questo, potrebbe esserci una nuovissima API sperimentale che funziona solo sul Wikizionario inglese. – hippietrail

risposta

51

È possibile utilizzare lo Wiktionary API per stabilire se esiste o meno una parola.

Esempi per le pagine esistenti e non esistenti:

http://en.wiktionary.org/w/api.php?action=query&titles=test http://en.wiktionary.org/w/api.php?action=query&titles=testx

Il primo collegamento fornisce esempi su altri tipi di formati che potrebbero essere più facile da analizzare.

Per recuperare i dati del word in un piccolo formato XHTML (dovrebbe più essere richiesta l'esistenza), richiedere la versione stampabile della pagina:

http://en.wiktionary.org/w/index.php?title=test&printable=yes http://en.wiktionary.org/w/index.php?title=testx&printable=yes

Questi possono poi essere analizzato con qualsiasi parser XML standard.

+3

Grazie; la stessa API non è quello che speravo, ma il link che hai fornito è quello che stavo cercando. – Armentage

+0

Ora accetta il parametro di formato aggiuntivo per l'output diverso da xml in questo modo: https://en.wiktionary.org/w/api.php?action=query&titles=test&format=json – eenagy

+2

Potrebbe non funzionare come previsto se https: // en.wiktionary.org/wiki/Category:English_misspellings https://en.wiktionary.org/wiki/amatuer – endolith

20

Ci sono alcune avvertenze in solo controllando che Wiktionary ha una pagina con il nome che si sta cercando:

Caveat # 1: Tutti Wiktionaries compreso il Wikizionario inglese in realtà hanno l'obiettivo di includere ogni parola ogni lingua, quindi se si usa semplicemente sopra API chiamata si sa che la parola si sta chiedendo circa è una parola in almeno una lingua, ma non necessariamente inglese: http://en.wiktionary.org/w/api.php?action=query&titles=dicare

Caveat # 2: Forse esiste un redirect da una parola a un'altra parola. Potrebbe essere da una grafia alternativa, ma potrebbe essere da un errore di qualche tipo. La chiamata API di cui sopra non sarà distinguere tra un redirect e un articolo: http://en.wiktionary.org/w/api.php?action=query&titles=profilemetry

Caveat # 3: Alcune Wiktionaries compreso il Wikizionario inglese includono "errori ortografici comuni": http://en.wiktionary.org/w/api.php?action=query&titles=fourty

Caveat # 4: Alcune Wiktionaries consentire le voci di stub che hanno poche o nessuna informazione sul termine. Questo era comune a diversi Wikizionario, ma non al Wikizionario inglese. Ma sembra essersi esteso anche al Wikizionario inglese: https://en.wiktionary.org/wiki/%E6%99%B6%E7%90%83 (permalink per quando lo stub è riempito così puoi ancora vedere come appare uno stub: https://en.wiktionary.org/w/index.php?title=%E6%99%B6%E7%90%83&oldid=39757161)

Se questi non sono inclusi in quello che vuoi, tu dovrà caricare e analizzare il wikitext stesso, che non è un compito banale.

+1

Quello che volevo veramente fare era prendere una discarica completa dei dati su uno dei siti di Wikizionario non in inglese, e quindi trasforma il contenuto in qualcosa che potrei usare localmente. Ora sembra sciocco, ma speravo di poter richiedere l'elenco di tutte le parole, e poi di abbattere le loro defizioni/traduzioni una alla volta, se necessario. – Armentage

+1

La correzione a Caveat n. 2 è semplice: aggiungi '& prop = info' alla query e controlla la risposta per l'attributo' redirect'. – svick

+0

@svick: Sì, è vero che # 2 è più facile da aggirare quando si utilizza l'API, ma questi avvertimenti di base riguardano anche il tentativo di analizzare i [file di dati di Wiktionary] (http://dumps.wikimedia.org/enwiktionary/), anche se questa domanda non chiede di questo approccio. – hippietrail

17

È possibile scaricare una discarica di Wikitionary data. Ulteriori informazioni sono disponibili nello FAQ. Per i tuoi scopi, lo definitions dump è probabilmente una scelta migliore rispetto al dump xml.

+1

Questi file di dump sono enormi e non è chiaro quali scaricare (tutti?). Probabilmente non è quello che la maggior parte della gente sta cercando, ma vogliono solo cercare una parola a livello di programmazione. – Cerin

+0

Spiego quale file scaricare - ovvero il dump delle definizioni (la directory dal mio collegamento è solo versioni differenti dello stesso file) e sì, se si desidera cercare parole a livello di codice questo è l'ideale. Se è possibile garantire che il programma venga eseguito solo online, ci sono altre opzioni, ma comunque sto rispondendo a questa parte della domanda originale: "In alternativa, c'è un modo per tirare giù i dati del dizionario che supporta un Wikizionario?" – kybernetikos

+8

Il collegamento dei dump delle definizioni non è più disponibile. –

6

Per farla molto semplice, estrarre le parole dalla discarica così:

bzcat pages-articles.xml.bz2 | grep '<title>[^[:space:][:punct:]]*</title>' | sed 's:.*<title>\(.*\)</title>.*:\1:' > words 
+0

come ottengo una copia di pagine-articles.xml.bz2? – Armentage

+0

È solo un nome generico che ho usato per descrivere i dump del modulo 'LANGwiktionary-DATE-pages-articles.xml.bz2'. Vai a [link] (http://dumps.wikimedia.org/backup-index.html), quindi fai clic su "LANGwiktionary" (LANG, ad esempio "en", "de" ...). – benroth

Problemi correlati