Как извлечь содержание слова из Викисловаря?

67

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

  • 0
    Любой, кто прочитал документацию, увидит, что API не обладает достаточной функциональностью для «извлечения содержимого слов из Викисловаря». Я бы оценил, что это даст вам примерно 1% пути. Вы можете получить сырой синтаксис вики или проанализированный HTML, и оттуда вы должны делать все самостоятельно. Сказав, что может быть очень новый экспериментальный API, который работает только на английском Викисловарь.
Теги:
dictionary
mediawiki-api
wiktionary

5 ответов

49
Лучший ответ

Викисловарь 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.

  • 4
    Спасибо; сам API - это не то, на что я надеялся, но ссылка, которую вы указали, - это то, что я искал.
  • 0
    Теперь он принимает дополнительный параметр формата для вывода, отличного от xml, например: en.wiktionary.org/w/…
Показать ещё 1 комментарий
19

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

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

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

Предостережение № 3. Некоторые викторины, в том числе английская Викисловарь, включают "общие ошибки": http://en.wiktionary.org/w/api.php?action=query&titles=fourty

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

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

  • 2
    Что я действительно хотел сделать, так это сделать полный дамп данных на одном из неанглийских сайтов Wikitionary, а затем превратить содержимое в то, что я мог бы использовать локально. Сейчас это кажется глупым, но я надеялся, что смогу запросить список всех слов, а затем по мере необходимости опускать их определения / переводы по одному.
  • 1
    Исправить Caveat # 2 очень просто: добавьте &prop=info к запросу и проверьте ответ для атрибута redirect .
Показать ещё 1 комментарий
16

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

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

Чтобы это было действительно просто, извлеките слова из дампа следующим образом:

bzcat pages-articles.xml.bz2 | grep '<title>[^[:space:][:punct:]]*</title>' | sed 's:.*<title>\(.*\)</title>.*:\1:' > words
  • 0
    как я могу получить копию pages-article.xml.bz2?
  • 0
    Это просто общее имя, которое я использовал для описания дампов в форме LANGwiktionary-DATE-pages-articles.xml.bz2 . Перейдите по ссылке , затем нажмите LANGwiktionary (LANG, например, 'en', 'de' ...).
1

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

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

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

  • 1
    Ссылка, на которую вы ссылаетесь, нарушена. Вот ссылка на страницу JWKTL ukp.tu-darmstadt.de/software/jwktl . Это не совсем то, что я считаю, что ОП ищет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню