我有一个Apache Solr核心,我需要从中提取流行的术语,我已经知道luke,facets和Apache Solr stopwords但我是没有得到我想要的东西,例如,当我尝试使用卢克获得流行的术语并在结果集上应用停用词后,我得到了一堆词,如:
http,img,que ...等
虽然我真正想要的是:
奥巴马,Metallica,三星等等有没有更好的方法在Solr中实现它?我错过了应该用来做这件事的事情吗?
谢谢
答案 0 :(得分:3)
从文本中查找相关的单词并不容易。我要深入研究的第一件事是使用Solr的自然语言处理(NLP)。 article in Solr's wiki是此的起点。阅读页面,你会偶然发现提取名词和动词的 Full Example ,可能已经帮助了你。
在开始运行的过程中,您需要安装其他软件(Apache的OpenNLP项目),以便在阅读Solr的wiki that project's home page之后进行下一步。
要了解可能的情况,你应该看看the demonstration of the searchbox家伙。在那里,您可以粘贴示例文本,并从中提取相关的单词和术语。
您可能需要several tutorials out there进一步阅读。
如果您沿着这条路走下去并且结果不符合预期或不符合要求,那么您可以进一步走下去,开始考虑使用Apache Mahout进行文本挖掘。再次several tutorials out there与Solr交叉。
在任何情况下,您都应该在Stackoverflow或Web上搜索教程和您当然需要的方法。
有关阿拉伯语的更新
如果您打算将OpenNLP用于不支持的语言,从版本1.5开始Arabic unfortunately is开箱即用,您将需要训练 OpenNLP语言。有关它的参考资料可在the developer docs of OpenNLP找到。可能阿拉伯社区已有一些东西,但我的阿拉伯语google-fu并不是那么好。
如果您决定开展工作并为阿拉伯语进行培训,为什么不与项目分享您的培训?
有关Solr / Lucene中的集成的更新
integrate it as a module正在进行工作。在我的拙见中,这是它应该得到的。如果你比较这个问题字段to stemming话题似乎相当容易。但是,在支持不同的语言时,即使是词汇也很复杂将语言分析到可以提取名词,动词等的级别是如此复杂,以至于整个项目围绕它发展。
手头有一个模块/ contrib,你可以简单地复制到solr_home / lib就已经非常方便了。因此,不需要运行不同的安装程序。
答案 1 :(得分:0)
嗯,这有点开放。 首先,您需要从索引中找到并找到“热门术语”,然后将所有非有用的项目(如http,img,time,what,when等)添加到您的停用词列表中并重新索引以获得你关心的数据。我不认为有更简单的方法来了解流行的名称,除非您可以在索引期间将数据反弹到名词的自定义词典(顺便说一下这是一个选项) - 您可以选择仅通过自定义令牌过滤器来索引名称(看看禁止词过滤器是如何工作的)并拥有你自己的nouns.txt文件与你自己的名词过滤器一起使用,如果你只允许字典中的单词进行索引,这种方法只有在你有有限的已知列表的情况下才有可能。名词。