我的问题:我正在用 python 编写一个 NLP 程序,我需要获取属性和词位的实体 ID。所以我基本上想要的是,例如,如果输入是单词/属性“父亲”,我希望返回值是“P22”(父亲的财产编号)。我已经知道一些获取 Q 号码的方法(见下文)。
from requests import get
def get_qnumber(wikiarticle, wikisite):
resp = get('https://www.wikidata.org/w/api.php', {
'action': 'wbgetentities',
'titles': wikiarticle,
'sites': wikisite,
'props': '',
'format': 'json'
}).json()
return list(resp['entities'])[0]
print(get_qnumber(wikiarticle="Andromeda Galaxy", wikisite="enwiki"))
而且我认为获得 P 和 L 编号看起来会很相似,但是找到词位和属性编号似乎要棘手得多。
我尝试过的:我发现的最接近的方法是使用https://www.wikidata.org/wiki/Special:Search手动搜索 ID 号并在搜索中添加“P:”和“L:”细绳。
我还为 SPARQL 找到了一些代码,但速度很慢,而且我不知道如何优化搜索以排除不相关的搜索结果。
query = """
SELECT ?item
WHERE
{
?item rdfs:label "father"@en
}
"""
我对此一无所知,并没有在谷歌上找到任何信息。那么我是完全错误地处理这件事还是我错过了一些非常明显的东西?