我的问题:我正在python上编写NLP程序,我需要获取属性和词汇的实体ID。所以我基本上想要的是,例如如果输入是"父亲"一词/属性,我希望返回值为" p22"(父亲的属性号(。我已经知道一些获取Q-number的方法(请参见下文(。
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:Search并放置" P:"one_answers" L:",在搜索字符串中。
我还找到了SPARQL的一些代码,但它很慢,我不知道如何完善搜索以排除无关的搜索结果。
query = """
SELECT ?item
WHERE
{
?item rdfs:label "father"@en
}
"""
我是一个菜鸟,但没有找到Google的任何信息。所以我是把这个东西完全错误地接近还是我错过了一些很明显的东西?
与type=property
或type=lexeme
使用action=wbsearchentities
:
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'])
repl.it