wikionary API - значение слов

Я хотел бы получить значение выбранного слова с помощью викионарного API. Данные для извлечения контента должны быть такими же, как представлено в "Слове дня", только основное значение без этимпологии, синонимов и т. Д., Например.

"postiche n Любые предметы из искусственных волос, надетых на голову или лицо, такие как накладная борода или парик".

Я пытался использовать документацию, но я могу найти подобный пример, кто-нибудь может помочь с этой проблемой?

3 ответа

Решение

Хотя в MediaWiki есть API (api.php), для ваших целей было бы проще всего использовать action=raw параметр для index.php если вы просто хотите получить исходный код одной ревизии (не обернутый в XML, JSON и т. д., в отличие от API).

Например, это необработанное слово страницы дня за 14 ноября:

http://en.wiktionary.org/w/index.php?title=Wiktionary:Word_of_the_day/November_14&action=raw

Что прискорбно, так это то, что формат вики-страниц фокусируется на представлении (для читателя-человека), а не на семантике (для машины), поэтому вы не должны удивляться отсутствию API-команды "получить определение слова". Вместо этого в вашем сценарии нужно будет разобраться с многочисленными шаблонами форматирования текста, которые были созданы и использованы редакторами Викисловаря, а также со сложным синтаксисом форматирования представления, включая заголовки, неупорядоченные списки и другие. Например, вот исходный код страницы "переполнение":

http://en.wiktionary.org/w/index.php?title=overflow&action=raw

В API есть опция "генерировать дерево синтаксического анализа XML", но она не разбивает большую часть форматирования представления на XML. Просто убедитесь сами:

http://en.wiktionary.org/w/api.php?action=query&titles=overflow&prop=revisions&rvprop=content&rvgeneratexml=&format=jsonfm

Если вам интересно, существует ли парсер для страниц формата MediaWiki, кроме MediaWiki, нет, нет. По крайней мере, ничего написанного на JavaScript, которое в настоящее время поддерживается (см. Список альтернативных парсеров и проверьте веб-сайты двух перечисленных). И даже в этом случае поддержка большинства / всех распространенных шаблонов будет большой проблемой. Удачи.

Как упоминалось ранее, содержание страниц Викисловаря находится в удобочитаемом формате, wikitext, поэтому MediaWiki API не позволяет понять значение слов, потому что данные не структурированы.

Однако каждая страница следует определенному соглашению, поэтому не так сложно извлечь значение изwikitext. Кроме того, существуют некоторые API-интерфейсы, такие как Wordnik или Lingua Robot, которые анализируют контент Wiktionary и предоставляют его в формате JSON.

ОК, я признаю поражение.

В Pywikipediabot есть несколько файлов, относящихся к Wiktionary, и я смотрю на код. Похоже, вы сможете получить его, чтобы разобрать для вас значения / определения полей.

Однако последние полчаса убедили меня в обратном. Код не очень хорошо написан, и мне интересно, работал ли он когда-либо.

Поэтому я полагаюсь на ответ идеалмашина, но я подумал, что опубликую это, чтобы спасти кого-то еще от повторения тех же ошибок.:)

У MediaWiki есть API, но он низкоуровневый и не поддерживает ничего конкретного для каждой вики. Например, он не поддерживает энциклопедию для Википедии и не поддерживает словарь для Викисловаря. Вы можете получить необработанную вики-текстовую разметку страницы или раздела с помощью API, но вам придется анализировать ее самостоятельно.

Первое предостережение заключается в том, что каждый Викисловарь имеет свой собственный формат, но я предполагаю, что вас интересует только английский Викисловарь. Один дешевый прием, который используют многие инструменты, - это получить первую строку, которая начинается с символа "#". Обычно это текст определения первого смысла первого омонима.

Еще одно предостережение: каждый викисловарь использует много вики-шаблонов, поэтому, если вы посмотрите на необработанный текст, вы увидите их множество. Единственный способ надежно расширить эти шаблоны - вызвать API с action=parse,

Другие вопросы по тегам