我的问题: 我正在用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
}
"""
我对此一无所知,还没有找到Google的任何信息。那么我是完全错误地对待这件事还是错过了真正明显的事情?
答案 0 :(得分:1)
将action=wbsearchentities
与type=property
或type=lexeme
一起使用:
import requests
params = dict (
action='wbsearchentities',
format='json',
language='en',
uselang='en',
type='property',
search='father'
)
response = requests.get('https://www.wikidata.org/w/api.php?', params).json()
print(response.get('search')[0]['id'])