从文本中高效提取 WikiData 实体

Efficiently extract WikiData entities from text

我有很多文字(百万),从100到4000字不等。文本格式为书面作业,带有标点符号和语法。一切都是英文的。

问题很简单:如何从给定文本中提取每个 WikiData 实体?

一个实体被定义为每个名词,专有的或常规的。即,人名、组织、地点和类似 chairpotatoes 等的东西

到目前为止,我已经尝试了以下方法:

  1. OpenNLP, and use the pre-trained models 标记文本以提取 peoplelocationorganization 和常规 名词.
  2. 在适用的地方应用Porter Stemming
  3. 将所有提取的名词与 wmflabs-API 匹配以检索潜在的 WikiData ID。

这个有效,但我觉得我可以做得更好。一个明显的改进是在本地缓存 WikiData 的相关部分,我计划这样做。但是,在我这样做之前,我想检查一下是否还有其他解决方案。

建议?

我标记了 Scala 问题,因为我正在使用 Spark 完成任务。

一些建议:

  • 将 Stanford NER 与 OpenNLP 进行比较,以了解它在您的语料库上的比较情况
  • 我想知道词干提取对大多数实体名称的价值
  • 我怀疑您可能会通过将任务分成离散的阶段来丢失信息
  • 虽然 Wikidata 是新的,但任务不是,所以您可以查看有关 Freebase|DBpedia|Wikipedia 实体识别|消歧的论文

特别是,DBpedia Spotlight 是专为这项任务而设计的系统。

http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/38389.pdf http://ceur-ws.org/Vol-1057/Nebhi_LD4IE2013.pdf