实体提取/识别与免费工具同时喂Lucene指数

我目前正在研究从文本(网上很多文章)中提取人名,位置,技术词汇和类别的选项,然后将这些文本导入到Lucene / ElasticSearch索引中。 附加信息将作为元数据添加,并应提高search精度。

例如,当有人询问“wicket”时,他应该能够决定他是指板球运动还是Apache项目。 我试图自己实现这一点,迄今取得了微小的成功。 现在我发现了很多工具,但是我不确定它们是否适合这个任务,哪些与Lucene集成,或者实体提取的精度是否足够高。

  • Dbpedia聚光灯 , 演示看起来非常有前途
  • OpenNLP需要培训 。 使用哪些训练数据?
  • OpenNLP工具
  • Stanbol
  • NLTK
  • balie
  • UIMA
  • GATE – > 示例代码
  • Apache Mahout
  • 斯坦福CRF-NER
  • 毛伊岛,索引
  • 伊利诺伊州命名实体标记不开源,但免费
  • 维基百科数据

我的问题:

  • 有没有人有上述的一些列出的工具和精度/召回经验? 或者如果有需要的培训数据+可用。
  • 是否有文章或教程,我可以开始实体提取(NER)每个工具?
  • 他们如何可以与Lucene集成?

以下是与该主题相关的一些问题:

  • algorithm是否存在帮助检测英语句子的“主要话题”?
  • 用于Java的命名实体识别库
  • 用Java命名实体识别

您在“检票”示例中遇到的问题称为实体消歧 ,而不是实体提取/识别(NER)。 NER可以是有用的,但只有当类别足够具体时才是有用的。 大多数NER系统没有足够的粒度来区分运动项目和软件项目(两种types都不属于通常认可的types:人员,组织,地点)。

为了消除歧义,您需要知道哪些实体正被消歧。 DBpedia是一个典型的select,由于其广泛的覆盖面。 看我的答案如何使用DBPedia从内容中提取标签/关键字? 在那里我提供了更多的解释,并提到了消除歧义的几种工具,包括:

  • Zemanta的
  • 茂宜岛索引
  • Dbpedia聚光灯
  • Extractiv(我的公司)

这些工具通常使用像REST这样的独立于语言的API,我不知道他们直接提供Lucene支持,但是我希望我的回答对于您正在尝试解决的问题有所帮助。

您可以使用OpenNLP提取人员,地点和组织的名称,而无需进行培训。 您只需使用可从此处下载的预先存在的模型: http : //opennlp.sourceforge.net/models-1.5/

有关如何使用这些模型之一的示例,请参阅: http : //opennlp.apache.org/documentation/1.5.3/manual/opennlp.html#tools.namefind

Rosoka是一个商业产品,提供了衡量文档重要性的“显着性”的计算。 显着性是基于语言的使用而不是频率。 使用显着性值可以确定整个文档的主要主题。 输出是你select的XML或JSON,这使得它非常容易与Lucene一起使用。 它是用java编写的。 有一个Amazon Cloud版本可在https://aws.amazon.com/marketplace/pp/B00E6FGJZ0上find 。 试用的成本是0.99美元/小时。 Rosoka Cloud版本没有Rosoka完整版本提供的所有Java APIfunction。 是的,两个版本都是基于语言的使用来进行实体和词汇的消歧。

消除歧义,无论是人还是软件,都要求有足够的上下文信息来确定差异。 上下文可以包含在文档中,在语料库约束内,或者在用户的上下文内。 前者更具体,后者具有更大的潜在含糊性。 即将关键词“wicket”input到Googlesearch中,可以指板球,Apache软件或星球大战Ewokangular色(即实体)。 一般“击剑者由击球员守卫”这句话在句子中有上下文的线索把它解释为一个对象。 “Wicket Wystri Warrick是一名男性Ewok侦察员”应该将“Wicket”作为“Wicket Wystri Warrick”的实体名称进行解释。 “欢迎来到Apache Wicket”具有“Wicket”是地名等的一部分的上下文线索。

最近我一直在摆弄斯坦福咖啡。 他们已经发布了不less版本http://nlp.stanford.edu/software/CRF-NER.shtml

好的是你可以训练你自己的分类器。 你应该按照有关如何训练自己的NER准则的链接。 http://nlp.stanford.edu/software/crf-faq.shtml#a不幸的是,在我的情况下,命名实体不能从文档中有效提取。; 大部分实体都未被发现。

以防万一你觉得它有用。