我想讨论这种类似Siri的服务的第一部分。
理想情况下,我希望能够查询以下内容:
得到这样的结果:
{type:"film"}
{type:"composer"}
{type:"song"}
我什么都不关心,我发现维基百科以外的描述,图像和一般信息完全没用。 我将维基数据视为一种元数据服务,它可以为我提供我搜索的文本的语义。
所有数据结构都有“类型”或某种与其含义有关的属性吗?是否有所有类型的列表?对于具有双重含义的实体,如“apple”,是否有建议功能?最后,如何发送文本查询并读取响应数据结构的“类型”?
我知道我没有提供任何代码,但我真的无法理解维基数据的API。我到处搜索,所有我找不到的是一些残缺的获取示例,并搞砸了Objective-C HTML解析器。由于我不理解的一些错误,我甚至无法让他们的“示例查询”页面起作用。
真的是新手不友好,而且说句话很重。
答案 0 :(得分:6)
维基数据API的问题在于它没有查询界面。如果您已经知道ID,它所做的就是返回特定数据项的信息。我们根本无法构建一个足够强大且能够扩展的查询界面。虽然有一个SPARQL端点的早期测试版:https://tools.wmflabs.org/ppp-sparql/。
一旦启动并运行,我们希望在此基础上提供更易于使用的服务,例如Magnus' WDQ http://magnusmanske.de/wordpress/?p=72。
(编辑以回答有关API的具体问题:)
我到处搜索过,而我找不到的是一些残缺的取景例子
文档可能更好,但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=wbgetentities和https://www.wikidata.org/w/api.php?action=help&modules=wbsearchentities
所有数据结构都有"类型"或某种与其含义有关的财产?
有关数据项的所有陈述都与其含义有关。许多人都对""" (P31)或""的子类(P279)属性,我猜想它非常接近你想要的。
是否有所有类型的列表?
没有。维基数据并没有使用封闭的,预定义的本体来描述世界。它是一个以机器可读方式协同描述世界的平台;从那时起,流体本体出现了,这种本体论从未完全或一致。
任何数据项都可以作为另一个项的类或suprt-class。项可以是多个类的实例或子类。这种关系非常复杂。
对于具有双重含义的实体是否有建议功能,例如" apple"?
有一个搜索界面可以列出给定术语的所有匹配数据项。它被称为wbsearchentities
,例如https://www.wikidata.org/w/api.php?action=wbsearchentities&search=apple&language=en(为机器可读的JSON添加format=json
)。
然而,结果中的排名非常幼稚。如果没有原始句子的语义上下文,就无法找到哪个词义是什么意思。这是一个有趣的研究领域,称为#34;词义消歧"。
最后,我如何发送文本查询并阅读"类型"响应数据结构?
目前,您将需要执行两个API调用:一个用于wbsearchentities
以获取您感兴趣的实体的ID,另一个用于wbgetentities
以获取实例语句对于那个实体。将它组合在一个电话中会很好;这是一张打开的门票:https://phabricator.wikimedia.org/T90693
至于类似Siri的服务:早期的原型名为" wiri"由Magnus Manske已经存在了很长时间。它使用非常简单的模式:https://tools.wmflabs.org/magnus-toolserver/thetalkpage/
Bene *一直致力于采用更先进的自然语言问答方法,请参阅鸭嘴兽演示:https://projetpp.github.io/demo.html
就在昨天,他提出了一个与Tpt一起开发的新原型,它从自然语言输入生成SPARQL查询:https://tools.wmflabs.org/ppp-sparql/
所有这些项目都是开源的,由热情的志愿者创建。查看代码并与他们交谈。 :)