Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在EntityMethodsNotator的基础上进行Wikification/实体链接?_Java_Stanford Nlp_Dbpedia_Named Entity Recognition_Wikidata - Fatal编程技术网

Java 如何在EntityMethodsNotator的基础上进行Wikification/实体链接?

Java 如何在EntityMethodsNotator的基础上进行Wikification/实体链接?,java,stanford-nlp,dbpedia,named-entity-recognition,wikidata,Java,Stanford Nlp,Dbpedia,Named Entity Recognition,Wikidata,我试图将实体提及链接到一个知识库,例如DBpedia或Wikidata 最后,我想用一个任意的本体来丰富JSON输出,并在此提供某种语义。但作为第一步,它应该是这样的: { "index": 1, "mention": "Barack Obama", "characterOffsetBegin": 0, "characterOffsetEnd": 12, "ner": "PERSON", "before": "", "after": "

我试图将实体提及链接到一个知识库,例如DBpedia或Wikidata

最后,我想用一个任意的本体来丰富JSON输出,并在此提供某种语义。但作为第一步,它应该是这样的:

{

    "index": 1,
    "mention": "Barack Obama",
    "characterOffsetBegin": 0,
    "characterOffsetEnd": 12,
    "ner": "PERSON",
    "before": "",
    "after": " "
    "uri": "http://dbpedia.org/page/Barack_Obama"

}
是否有一种方法可以利用斯坦福大学CoreNLP已经提供的工具来实现这一点?我在GitHub上看到过WikidictAnnotator,但不幸的是,没有关于它是什么以及如何使用它的文档或任何东西

除此之外,还有什么其他的可能性?为了实现实体链接,我是否必须使用第三方工具(如DBpedia Spotlight)以及斯坦福NE识别器


提前谢谢

经过一些研究,我将回答我自己的问题。也许这对将来的人有帮助

我发现了一个名为AGDISTIS的框架,它提供了一个对知识库功能的提及。它接受EntityMethodsNotator的提及,并将其与相应的dbpedia资源进行匹配。您甚至可以使用dbpedia之外的另一个索引

尽管如此,如果有人能解释一下,仅仅使用CoreNLP(见WikidictAnnotator)是否以及如何实现维基化,我会很高兴的。

目前,我们有一个系统,可以在文本中识别。每个实体都链接到其Wikidata Id。输出是一个JSON对象,包含已识别的实体及其在输入文本中的位置,以及一些有用的实体元数据,如类别、Wikipedia URL和链接信任度。该系统可用作API。要了解更多关于实体链接或用例的信息,您可以查看我们的

以以下句子为例:

马云在杭州成立了阿里巴巴,由软银和微软投资 高盛

我们的系统将产生以下输出。你也可以自己试试


您可以使用api查询dbpedia。e、 选择不同的uri标签,其中{uri rdfs:label?label.FILTER regex(str(?label),“Barack Obama”,“i”)}我认为你建议的方法太直截了当了。如果有模棱两可的实体提及,例如“乔治·布什”,该怎么办?这可能涉及老乔治·布什和小乔治·布什。我知道有第三方实体链接工具能够消除歧义,但是否也可以使用CoreNLP实现这一点?如果没有,我应该使用什么API或工具与CoreNLP结合使用?我目前需要同样的东西。不幸的是,这些问题的唯一解决方案似乎是昂贵的API。WikidictAnnotator将无法工作。为了坚持你的例子,请理解“奥巴马”是一个模棱两可的名字:它可以指巴拉克·奥巴马或米歇尔·奥巴马或其他同名人士。DBpedia、Wikidata、YAGO和其他KBs存储实体,即它们的id。通过查字典(WikidictAnnotator中的“dict”部分)处理“Obama是第一夫人”,只有“Obama”被识别为提及,而不知道是哪一个。要获取Wikidata ID(在本例中为Q13133),您需要提及“奥巴马”的上下文,AGIDISTIS(或AIDA,或Dexter…)所做的事情。感谢您提供此信息。我不知道WikidictAnnotator只是一个字典查找。幸运的是,有些框架能够消除CoreNLP提供的提及的歧义,而不是运行自己的实体/提及识别然后消除歧义。您的系统看起来不错。但不幸的是,我需要一些免费和开源的东西。当你注册API时,你每月会收到1000个免费请求。
{
"docId": "1803274355",
"language": "en",
"matches": [
  {
    "charLength": 2,
    "charOffset": 0,
    "text": "Ma",
    "entity": {
      "id": "http://www.wikidata.org/entity/Q1137062",
      "url": "http://en.wikipedia.org/wiki/Jack%20Ma",
      "confidence": 0.24400826614264
    }
  },
  {
    "charLength": 7,
    "charOffset": 11,
    "text": "Alibaba",
    "entity": {
      "id": "http://www.wikidata.org/entity/Q1359568",
      "url": "http://en.wikipedia.org/wiki/Alibaba%20Group",
      "confidence": 0.89595517818717
    }
  },
  {
    "charLength": 8,
    "charOffset": 22,
    "text": "Hangzhou",
    "entity": {
      "id": "http://www.wikidata.org/entity/Q4970",
      "url": "http://en.wikipedia.org/wiki/Hangzhou",
      "confidence": 0.92296125433251
    }
  },
  {
    "charLength": 8,
    "charOffset": 53,
    "text": "SoftBank",
    "entity": {
      "id": "http://www.wikidata.org/entity/Q201653",
      "url": "http://en.wikipedia.org/wiki/SoftBank",
      "confidence": 0.95402181746993
    }
  },
  {
    "charLength": 7,
    "charOffset": 66,
    "text": "Goldman",
    "entity": {
      "id": "http://www.wikidata.org/entity/Q193326",
      "url": "http://en.wikipedia.org/wiki/Goldman%20Sachs",
      "confidence": 0.41802014708618
    }
  }
]
}