2010-05-05 2 views
68

Как можно использовать API Викисловаря, чтобы определить, существует ли слово?Как получить содержимое словаря Викисловаря?

+0

Любой, кто читал документацию увидит, что API не содержит далеко не достаточно функциональности, чтобы «восстановить содержание слова Викисловарь». Я бы оценил, что это примерно на 1% пути. Вы можете получить исходный синтаксис wiki или проанализированный HTML, и оттуда вы должны сделать все сами. Сказав, что может быть очень новый экспериментальный API, который работает только на английском Викисловарь. – hippietrail

ответ

51

Wiktionary API можно использовать для запроса, существует ли какое-либо слово.

Примеры существующих и несуществующих страниц:

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

Первая ссылка приводятся примеры на другие типы форматов, которые могут быть легче разобрать.

Для получения данных этого слова в малом формате XHTML (должен больше, чем требуется существование), запросить печатную версию страницы:

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

Они могут затем быть анализируется любым стандартным синтаксическим анализатором XML.

+3

Thanks; сам API не тот, на что я надеялся, но ссылка, которую вы предоставили, - это то, что я искал. – Armentage

+0

Теперь он принимает дополнительный параметр формата для другого, кроме XML-вывода, например: https://en.wiktionary.org/w/api.php?action=query&titles=test&format=json – eenagy

+2

Не может работать так, как вы ожидаете, хотя https: // ru.wiktionary.org/wiki/Category:English_misspellings https://en.wiktionary.org/wiki/amatuer – endolith

20

Есть несколько предостережений в просто проверить, что Wiktionary имеет страницу с именем, которое вы ищете:

Caveat # 1: Все викисловарях включая английский Wiktionary на самом деле цели, включая каждое слово в каждый язык, так что если вы просто используете выше API позвонить вы будете знать, что слово вы спрашиваете это слово, по крайней мере на одном языке, но не обязательно английский: http://en.wiktionary.org/w/api.php?action=query&titles=dicare

Caveat # 2: Возможно перенаправление существует от одного слова к другому. Это может быть из альтернативной орфографии, но это может быть от какой-либо ошибки. Вызов API выше, не будет различать между переадресацией и статьями: http://en.wiktionary.org/w/api.php?action=query&titles=profilemetry

Caveat # 3: Некоторые викисловарь включая английский Wiktionary включают "общие опечатки": http://en.wiktionary.org/w/api.php?action=query&titles=fourty

Caveat # 4: Некоторые викисловарь разрешить записи заглушек, которые не имеют или почти не содержат информации о терминах. Это обычно было распространено на нескольких викторинах, но не на английском Викисловарь. Но, похоже, теперь распространяется также на английском Wiktionary: https://en.wiktionary.org/wiki/%E6%99%B6%E7%90%83 (Permalink, когда заполняется окурок так что вы можете увидеть, что заглушка выглядит следующим образом: https://en.wiktionary.org/w/index.php?title=%E6%99%B6%E7%90%83&oldid=39757161)

Если они не включены в то, что вы хотите, вы придется загружать и анализировать сам wikitext, что не является тривиальной задачей.

+1

То, что я действительно хотел сделать, это взять полную свалку данных на одном из неанглийских сайтов Викисловаря и затем превратите содержимое в то, что я могу использовать локально. Сейчас кажется глупым, но я надеялся, что могу запросить список всех слов, а затем по мере необходимости вытаскивать их переходы/переводы по мере необходимости. – Armentage

+1

Исправление к Caveat # 2 просто: добавьте '& prop = info' в запрос и проверьте ответ для атрибута redirect. – svick

+0

@svick: Да, это правда # 2 проще обойти при использовании API, но эти основные предостережения также охватывают попытку проанализировать файлы [dump.wikimedia.org/enwiktionary/], хотя этот вопрос не спрашивает об этом подходе. – hippietrail

1

Возможно, вы захотите попробовать JWKTL. Я только что узнал об этом;)

http://en.wikipedia.org/wiki/Ubiquitous_Knowledge_Processing_Lab#Wiktionary_API

http://www.ukp.tu-darmstadt.de/software/jwktl/

+1

Ссылка, на которую вы ссылаетесь, сломана. Вот ссылка на страницу JWKTL http://www.ukp.tu-darmstadt.de/software/jwktl/. На самом деле я не верю, что OP ищет. – djskinner

17

Вы можете скачать дамп Wikitionary data. В FAQ есть дополнительная информация. Для ваших целей definitions dump, вероятно, лучший выбор, чем дамп xml.

+1

Эти файлы дампа массивные, и непонятно, какие из них скачать (все они?). Вероятно, не то, что большинство людей ищут, они просто хотят программно найти несколько слов. – Cerin

+0

Я объясню, какой файл загрузить - то есть определения dump (каталог из моей ссылки - это разные версии одного и того же файла), и да, если вы программно хотите искать слова, это идеально. Если вы можете гарантировать, что программа будет выполняться только онлайн, есть и другие варианты, но тем не менее я отвечаю на эту часть оригинального вопроса: «В качестве альтернативы, есть ли способ, по которой я могу вытащить словарные данные, которые поддерживают Викисловарь?» – kybernetikos

+8

Определения dump link больше не доступны. –

6

Чтобы сохранить его очень просто, извлекать слова из дампа, как, что:

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

Как получить копию pages-articles.xml.bz2? – Armentage

+0

Это просто общее имя, которое я использовал для описания дампов формы «LANGwiktionary-DATE-pages-articles.xml.bz2». Перейдите в [link] (http://dumps.wikimedia.org/backup-index.html), затем нажмите «LANGwiktionary» (LANG, например, «en», «de» ...). – benroth

Смежные вопросы