6

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

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

实体被定义为每个名词,专有名词或常规名词。即人名、组织名、地点名和椅子土豆等事物的名称。

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

  1. 使用OpenNLP对文本进行标记,并使用预先训练的模型来提取人员位置组织和常规名词
  2. 在适用的情况下应用Porter Stemming
  3. 将所有提取的名词与wmflabs-API匹配以检索潜在的 WikiData ID。

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

建议?

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

4

1 回答 1

3

一些建议:

  • 将斯坦福 NER 与 OpenNLP 进行比较,看看它在您的语料库上的比较情况
  • 我想知道词干对大多数实体名称的价值
  • 我怀疑您可能会通过将任务划分为离散阶段而丢失信息
  • 尽管 Wikidata 是新的,但任务不是,因此您可以查看有关 Freebase|DBpedia|Wikipedia entity recognition|disambiguation 的论文

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

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

于 2016-02-04T05:02:30.033 回答