关联挖掘似乎为检索文本语料库中的相关术语提供了良好的结果。在这个主题上有许多工作,包括众所周知的LSA方法。挖掘关联最简单的方法是构建docs X terms的共生矩阵,并找到最常出现在相同文档中的术语。在我以前的项目中,我通过TermDocs上的迭代直接在Lucene中实现了它(我通过调用IndexReader.termDocs(术语)获得了它)。但我在Solr看不见类似的东西。
所以,我的需求是:
我将按以下方式对答案进行评分:
发布于 2011-09-21 20:26:23
由于我的问题还没有答案,我不得不写我自己的想法并接受它。然而,如果有人提出更好的解决办法,我将乐意接受它,而不是我的。
我将使用共生矩阵,因为它是关联挖掘的最主要部分。一般来说,Solr以某种方式提供了构建此矩阵所需的所有功能,尽管它们不如Lucene的直接访问效率高。要构建矩阵,我们需要:
使用标准Solr组件可以轻松地完成这两个任务。
要检索术语,可以使用TermsComponent或分面搜索。我们只能获得顶级术语(默认情况下)或所有术语(通过设置要采取的最大术语数,请参阅特定功能的文档以获得详细信息)。
获取相关术语的文档只需搜索这个术语。这里的缺点是,我们每学期需要一个请求,而且可能有数千个条款。另一个缺点是,无论是简单的搜索,还是分面搜索,都不能提供有关查找到的文档中当前术语出现次数的信息。
发布于 2011-09-14 20:26:53
您可以将Lucene (或Solr)索引导出到马赫特,然后使用潜在的Dirichlet分配。如果LDA不够接近LSA以满足您的需要,您可以从Mahout获取相关矩阵,然后使用Mahout进行奇异值分解。
我不知道Solr的任何LSA组件。
发布于 2017-02-20 06:43:29
您可以在以下查询中获取查找到的文档中当前术语出现的次数:
http://ip:port/solr/someinstance/select?defType=func&fl=termfreq(field,xxx),*&fq={!frange l=1}termfreq(field,xxx)&indent=on&q=termfreq(field,xxx)&sort=termfreq(field,xxx) desc&wt=jsonhttps://stackoverflow.com/questions/7393908
复制相似问题