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. Просто убедитесь сами:
Если вам интересно, существует ли парсер для страниц формата MediaWiki, кроме MediaWiki, нет, нет. По крайней мере, ничего написанного на JavaScript, которое в настоящее время поддерживается (см. Список альтернативных парсеров и проверьте веб-сайты двух перечисленных). И даже в этом случае поддержка большинства / всех распространенных шаблонов будет большой проблемой. Удачи.
Как упоминалось ранее, содержание страниц Викисловаря находится в удобочитаемом формате, wikitext
, поэтому MediaWiki API не позволяет понять значение слов, потому что данные не структурированы.
Однако каждая страница следует определенному соглашению, поэтому не так сложно извлечь значение изwikitext
. Кроме того, существуют некоторые API-интерфейсы, такие как Wordnik или Lingua Robot, которые анализируют контент Wiktionary и предоставляют его в формате JSON.
ОК, я признаю поражение.
В Pywikipediabot есть несколько файлов, относящихся к Wiktionary, и я смотрю на код. Похоже, вы сможете получить его, чтобы разобрать для вас значения / определения полей.
Однако последние полчаса убедили меня в обратном. Код не очень хорошо написан, и мне интересно, работал ли он когда-либо.
Поэтому я полагаюсь на ответ идеалмашина, но я подумал, что опубликую это, чтобы спасти кого-то еще от повторения тех же ошибок.:)
У MediaWiki есть API, но он низкоуровневый и не поддерживает ничего конкретного для каждой вики. Например, он не поддерживает энциклопедию для Википедии и не поддерживает словарь для Викисловаря. Вы можете получить необработанную вики-текстовую разметку страницы или раздела с помощью API, но вам придется анализировать ее самостоятельно.
Первое предостережение заключается в том, что каждый Викисловарь имеет свой собственный формат, но я предполагаю, что вас интересует только английский Викисловарь. Один дешевый прием, который используют многие инструменты, - это получить первую строку, которая начинается с символа "#". Обычно это текст определения первого смысла первого омонима.
Еще одно предостережение: каждый викисловарь использует много вики-шаблонов, поэтому, если вы посмотрите на необработанный текст, вы увидите их множество. Единственный способ надежно расширить эти шаблоны - вызвать API с action=parse
,