4

我想讨论这个类似 Siri 的服务的第一部分。

理想情况下,我希望能够查询以下内容:

  1. “社交网络”
  2. “贝多芬”
  3. “坏血泰勒斯威夫特”

并得到这样的结果:

{type:"film"}

{type:"composer"}

{type:"song"}

我什么都不关心,我发现描述、图像和一般信息在维基百科之外完全没用。我将 Wikidata 视为一种元数据服务,它可以为我提供所搜索文本的语义。

所有数据结构是否都有“类型”或某种与其含义有关的属性?是否有所有类型的列表?是否有针对“苹果”等具有双重含义的实体的建议功能?最后,如何发送文本查询并读取响应数据结构的“类型”?

我知道我没有提供任何代码,但我真的无法理解 Wikidata 的 API。我到处搜索,但我找不到的是一些残缺的 fetch 示例和混乱的 Objective-C HTML 解析器。由于一些我不明白的错误,我什至无法让他们的“示例查询”页面工作。

真的是新手不友好,充满了沉重的术语。

4

1 回答 1

6

Wikidata API 的问题在于它没有查询接口。如果您已经知道 ID,它所做的只是返回特定数据项的信息。我们根本无法构建一个足够强大且能够扩展的查询界面。不过,有一个 SPARQL 端点的早期测试版:https ://tools.wmflabs.org/ppp-sparql/ 。

一旦启动并运行,我们希望在此基础上提供更易于使用的服务,例如 Magnus 的 WDQ http://magnusmanske.de/wordpress/?p=72


(编辑以回答有关 API 的具体问题:)

我到处搜索,但我找不到的是一些残缺的 fetch 示例

文档可能会更好,但https://www.wikidata.org/wiki/Wikidata:Data_access是一个好的开始。另请注意,https://www.wikidata.org/w/api.php是自记录的。特别是,看看https://www.wikidata.org/w/api.php?action=help&modules=wbgetentitieshttps://www.wikidata.org/w/api.php?action=help&modules=wbsearchentities

所有数据结构是否都有“类型”或某种与其含义有关的属性?

所有关于数据项的陈述都与它的含义有关。许多人都有关于“实例”(P31)或“子类”(P279)属性的声明,我想这与您想要的非常接近。

是否有所有类型的列表?

不。维基数据不使用封闭的、预定义的本体来描述世界。这是一个以机器可读的方式协作描述世界的平台;由此,出现了一个流动的本体,它从来都不是完整的或一致的。

任何数据项都可以作为另一个项的类或支持类。一个项目可以是多个类的实例或子类。关系相当复杂。

是否有针对“苹果”等具有双重含义的实体的建议功能?

有一个搜索界面可以列出给定术语的所有匹配数据项。它被称为wbsearchentities,例如https://www.wikidata.org/w/api.php?action=wbsearchentities&search=apple&language=en(添加format=json机器可读的 JSON)。

但是,结果中的排名非常幼稚。并且如果没有原句的语义上下文,就无法找到哪个词义。这是一个有趣的研究领域,称为“词义消歧”。

最后,如何发送文本查询并读取响应数据结构的“类型”?

目前,您必须进行两次 API 调用:一次wbsearchentities获取您感兴趣的实体的 ID,另一次wbgetentities获取该实体的 instance-of 语句。将其组合在一个调用中会很好;为此有一张票:https ://phabricator.wikimedia.org/T90693


至于类似 Siri 的服务:Magnus Manske 称为“wiri”的早期原型已经存在了很长时间。它使用非常简单的模式:https ://tools.wmflabs.org/magnus-toolserver/thetalkpage/

Bene* 一直在研究更高级的自然语言问答方法,请参阅鸭嘴兽演示:https ://projetpp.github.io/demo.html

就在昨天,他展示了他与 Tpt 一起开发的一个新原型,该原型可以从自然语言输入生成 SPARQL 查询:https ://tools.wmflabs.org/ppp-sparql/

所有这些项目都是开源的,并且是由热心的志愿者创建的。查看代码并与他们交谈。:)

于 2015-05-26T22:04:44.903 回答