7

我想使用 wikionary API 获取所选单词的含义。内容检索数据应与“今日词汇”中呈现的相同,只有基本含义,没有词源,同义词等。例如

“postiche n 任何戴在头上或脸上的假发,例如假胡须或假发。”

我尝试使用文档,但我可以找到类似的示例,有人可以帮助解决这个问题吗?

4

4 回答 4

13

api.php尽管MediaWiki 有一个action=rawAPI 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。自己看看吧:

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

如果您想知道是否存在除 MediaWiki 以外的 MediaWiki 格式页面的解析器,不,没有。至少没有当前维护的用 JavaScript 编写的任何东西(请参阅替代解析器列表,并检查列出的两个解析器的网站)。即便如此,支持大多数/所有通用模板将是一个巨大的挑战。祝你好运。

于 2010-11-14T01:18:25.387 回答
1

好吧,我认输。

Pywikipediabot中有一些与维基词典相关的文件,我查看了代码,看起来你应该能够让它为你解析含义/定义字段。

然而,最后半个小时让我信服了。代码写得不好,我想知道它是否曾经奏效过。

所以我听从idealmachine的回答,但我想我会发布这个来避免其他人犯同样的错误。:)

于 2010-11-14T12:33:50.273 回答
1

如前所述,维基词典页面的内容是人类可读的格式,wikitext因此 MediaWiki API 不允许获取词义,因为数据不是结构化的。

但是,每个页面都遵循特定的约定,因此从wikitext. 此外,还有一些 API,例如WordnikLingua Robot,它们可以解析维基词典内容并以 JSON 格式提供。

于 2019-09-06T08:32:12.050 回答
0

MediaWiki 确实有一个 API,但它是低级的,并且不支持任何特定于每个 wiki 的内容。例如,它没有对 Wikipedia 的百科全书支持,也没有对 Wiktionary 的字典支持。您可以使用 API 检索页面或部分的原始 wikitext 标记,但您必须自己解析它。

第一个警告是每个维基词典都有自己的格式,但我假设你只对英语维基词典感兴趣。许多工具使用的一个廉价技巧是获取以“#”字符开头的第一行。这通常是文本定义的第一个谐音的第一个意义。

另一个需要注意的是,每个维基词典都使用许多 wiki 模板,因此如果您查看原始文本,您会看到很多这样的模板。可靠地扩展这些模板的唯一方法是使用action=parse.

于 2010-12-03T04:10:46.723 回答