查找维基数据标识符(属性和词位)
Finding wikidata identifiers (properties & lexemes)
我的问题:
我正在 python 中编写一个 NLP 程序,我需要获取属性和词素的实体 ID。所以我基本上想要的是,例如如果输入是 word/property "father" 我希望 return 值是 "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。那么我是完全错误地处理这件事还是遗漏了一些非常明显的东西?
将 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'])
我的问题: 我正在 python 中编写一个 NLP 程序,我需要获取属性和词素的实体 ID。所以我基本上想要的是,例如如果输入是 word/property "father" 我希望 return 值是 "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。那么我是完全错误地处理这件事还是遗漏了一些非常明显的东西?
将 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'])