You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从句子提取Wikidata已存在的三元组?求Python工具/API

解决方案

Wikidata官方并没有提供直接从自然语言文本中提取已存在三元组的工具,但可以通过组合Wikidata官方API和Python工具库实现你的需求,核心分为实体链接和三元组验证/查询两个步骤:

1. 实体链接:映射文本实体到Wikidata QID

首先需要将文本中的实体(如示例中的"NYU"、"New York")映射到Wikidata对应的唯一标识符(QID),可使用以下官方支持的Python工具:

  • pywikibot:Wikidata官方维护的Python库,支持实体搜索与链接。示例代码:
    import pywikibot
    
    site = pywikibot.Site("wikidata", "wikidata")
    repo = site.data_repository()
    
    # 搜索NYU对应的实体
    nyu_item = pywikibot.ItemPage.fromTitle(repo, "New York University")
    nyu_qid = nyu_item.id  # 得到Q15888
    
    # 搜索New York对应的实体
    ny_item = pywikibot.ItemPage.fromTitle(repo, "New York City")
    ny_qid = ny_item.id  # 得到Q60
    
  • Wikidata Search API:直接通过HTTP请求调用,返回匹配的实体QID,适合轻量场景。

2. 查询实体间已存在的Wikidata三元组

得到实体QID后,使用Wikidata Query Service (WDQS) 的SPARQL查询接口,验证并提取两个实体间已存在的三元组:
示例SPARQL查询(用于验证NYU和New York之间的关系):

SELECT ?property ?propertyLabel WHERE {
  wd:Q15888 ?property wd:Q60 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

通过Python的requests库调用WDQS接口执行查询,即可得到对应的属性(如P159,标签为"headquarters location"),对应文本中的"located at"关系,最终组成符合要求的三元组。

补充说明

  • 若需要自动匹配文本中的关系词与Wikidata属性,可先提取文本中的关系短语,再通过Wikidata属性搜索API匹配对应的PID,进一步自动化流程。
  • 所有步骤均基于Wikidata官方工具/API完成,无需依赖第三方NLP库。

内容的提问来源于stack exchange,提问作者Daniel Yao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:06:31