我想使用 wikionary API 获取所选单词的含义。内容检索数据应与“今日词汇”中呈现的相同,只有基本含义,没有词源,同义词等。例如
“postiche n 任何戴在头上或脸上的假发,例如假胡须或假发。”
我尝试使用文档,但我可以找到类似的示例,有人可以帮助解决这个问题吗?
我想使用 wikionary API 获取所选单词的含义。内容检索数据应与“今日词汇”中呈现的相同,只有基本含义,没有词源,同义词等。例如
“postiche n 任何戴在头上或脸上的假发,例如假胡须或假发。”
我尝试使用文档,但我可以找到类似的示例,有人可以帮助解决这个问题吗?
api.php
尽管MediaWiki 有一个action=raw
API index.php
( .
例如,这是 11 月 14 日当天页面的原始单词:
http://en.wiktionary.org/w/index.php?title=Wiktionary:Word_of_the_day/November_14&action=raw
不幸的是,wiki 页面的格式侧重于表示(对于人类读者)而不是语义(对于机器),因此您不应该对没有“获取单词定义”API 命令感到惊讶。相反,您的脚本必须理解维基词典编辑器创建和使用的众多文本格式模板,以及复杂的表示格式语法,包括标题、无序列表等。例如,这里是页面“溢出”的源代码:
http://en.wiktionary.org/w/index.php?title=overflow&action=raw
API中有一个“生成 XML 解析树”选项,但它并没有将很多表示格式分解为 XML。自己看看吧:
如果您想知道是否存在除 MediaWiki 以外的 MediaWiki 格式页面的解析器,不,没有。至少没有当前维护的用 JavaScript 编写的任何东西(请参阅替代解析器列表,并检查列出的两个解析器的网站)。即便如此,支持大多数/所有通用模板将是一个巨大的挑战。祝你好运。
好吧,我认输。
Pywikipediabot中有一些与维基词典相关的文件,我查看了代码,看起来你应该能够让它为你解析含义/定义字段。
然而,最后半个小时让我信服了。代码写得不好,我想知道它是否曾经奏效过。
所以我听从idealmachine的回答,但我想我会发布这个来避免其他人犯同样的错误。:)
如前所述,维基词典页面的内容是人类可读的格式,wikitext
因此 MediaWiki API 不允许获取词义,因为数据不是结构化的。
但是,每个页面都遵循特定的约定,因此从wikitext
. 此外,还有一些 API,例如Wordnik或Lingua Robot,它们可以解析维基词典内容并以 JSON 格式提供。
MediaWiki 确实有一个 API,但它是低级的,并且不支持任何特定于每个 wiki 的内容。例如,它没有对 Wikipedia 的百科全书支持,也没有对 Wiktionary 的字典支持。您可以使用 API 检索页面或部分的原始 wikitext 标记,但您必须自己解析它。
第一个警告是每个维基词典都有自己的格式,但我假设你只对英语维基词典感兴趣。许多工具使用的一个廉价技巧是获取以“#”字符开头的第一行。这通常是文本定义的第一个谐音的第一个意义。
另一个需要注意的是,每个维基词典都使用许多 wiki 模板,因此如果您查看原始文本,您会看到很多这样的模板。可靠地扩展这些模板的唯一方法是使用action=parse
.