集成Elasticsearch和Stanford NLP而无需重新索引

4
我们一直在系统中使用Elasticsearch。虽然我使用了它的分析器和查询,但我没有深入研究过它的索引。目前为止,我不知道ES能让我们在其分片中工作Lucene(倒排)索引到什么程度。
现在我们正在寻找各种NLP功能--其中之一是NER,而Stanford NLP很吸引人。
这两个包之间没有插件可以协同工作(?)
我没有深入研究过Stanford NLP。然而,就我所看到的而言,它正在自己的索引上工作。无论传递给它的对象或类型是什么,Stanford NLP都会自行对其进行索引并从那里开始工作。
这将使该系统为相同的文档集使用2个不同的索引--ES和StanfordNLP的索引,这将是昂贵的。
有没有办法解决这个问题?
我想到的一个方案是:让StanfordNLP在Lucene段上工作--即ES已经构建的倒排索引。在这种情况下:
1.) StanfordNLP是否使用Lucene索引而不重新为自己索引任何内容?我不知道StanfordNLP的索引结构——甚至不知道它使用/不使用Lucene的程度。
2.) 在使用ES分片中的Lucene索引时是否有任何限制?我们是否会直接使用这些Lucene段而绕过ES之间的限制?
我正在尝试整合这些东西——现在还没有具体方案。对于幼稚的问题,很抱歉。
我知道OpenNLP及其插件。我没有检查过-我猜它不会“双重索引”并使用ES的索引(?)但是我们需要的是StanfordNLP。
谢谢您的帮助。
2个回答

6

斯坦福命名实体识别器既不使用Lucene/SOLR索引,也不建立自己的文字索引。它将一段文本或令牌序列映射到一个带有NER注释的令牌序列。

通常,在标记化之前,在摄取时对每个文档运行NER,然后为实体以及单词对每个文档进行索引。

据我所知,目前没有现成的ElasticSearch插件供Stanford NER使用,但查看人们如何在Solr中完成此操作可能会有帮助:http://www.searchbox.com/named-entity-recognition-ner-in-solr/。Solr和ElasticSearch都在内部使用Lucene分析器和索引。


谢谢回复。有没有办法输入一组索引文档,即这些文档的倒排索引,以便为StanfordNLP做好准备,而无需进行冗长的处理来将它们转换为自己的索引结构?除非我按每个文件处理,获取StanfordNLP组件的结果并从那里开始,否则无法避免双重索引。现在我正在查看将其转换为/从StanfordNLP类型的处理时间效率。 - Roam
有一系列的软件包,http://nlp.stanford.edu/software/index.shtml。我现在只是大致地看了一下它们。我不知道每个软件包具体做什么,但我想知道如果使用这些软件处理整个文档库而不仅仅是几个文档,我会遇到多大的问题。 - Roam

0

在Github上有一个仓库一直在尝试使用OpenNLP在ElasticSearch上进行命名实体识别:github页面。它使用ElasticSearch插件架构,因此在ES实例中测试应该很容易。我没有尝试过这个插件,但我有使用OpenNLP的经验,来自以前的工作,它有一个非常可靠的命名实体识别器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接