我正在尝试使用stanford NER
从文本中查找实体。到目前为止运行良好。现在我想找到实体的dbpedia
链接。我看到它在alchemy API
中可用。是否可以使用stanford NER找到实体的dbpedia
链接?
通常Dbpedia中的所有实体都有rdfs:label
,这是一个分配给实体的字符串。因此,当您面对NER提取的名称时,您可以将其用于过滤目的。以下示例将提供具有标签Sulfuric acid
:的所有实体的URI
select distinct *
where {
?URI rdfs:label ?name.
filter(str(?name)="Sulfuric acid")
}
然而,标签并不总是您想要的,有时您需要实际查找分配给URI的name
。例如,如果打开硫酸页面,可以看到其中包含dbpprop:iupacname
。因此,您需要将查询更改为:
select distinct *
where {
?URI dbpprop:iupacname ?name.
filter(str(?name)="Sulfuric acid")
}
在这个特定的例子中,结果集是相同的。但是,假设您的任务是查找London
,那么您需要将属性更改为foaf:name
,并且在运行以下两个查询时,结果集会大不相同。
select distinct *
where {
?URI rdfs:label ?name.
filter(str(?name)="London")
}
这包含8个结果,而下面的查询包含21个结果。
select distinct *
where {
?URI foaf:name ?name.
filter(str(?name)="London")
}
所以我的观点是,你需要决定是使用标签还是名称。如果您决定使用名称,则需要找到合适的属性来编写SPARQL查询。之后,您只需要一个方法来使用查询访问DBpedia。
您可以使用Stanford NER提取实体名称,并使用DBpedia Spotlight链接到DBpedia URI。