首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Solr中实现术语关联挖掘的最简单方法是什么?

问在Solr中实现术语关联挖掘的最简单方法是什么?
EN

Stack Overflow用户
提问于 2011-09-12 20:53:13
回答 3查看 2.9K关注 0票数 11

关联挖掘似乎为检索文本语料库中的相关术语提供了良好的结果。在这个主题上有许多工作,包括众所周知的LSA方法。挖掘关联最简单的方法是构建docs X terms的共生矩阵,并找到最常出现在相同文档中的术语。在我以前的项目中,我通过TermDocs上的迭代直接在Lucene中实现了它(我通过调用IndexReader.termDocs(术语)获得了它)。但我在Solr看不见类似的东西。

所以,我的需求是:

  1. 检索特定字段中的最相关术语。
  2. 要检索项,它最接近特定字段中指定的。

我将按以下方式对答案进行评分:

  1. 理想情况下,我希望找到直接满足指定需求的Solr组件,即直接获取相关条款的内容。
  2. 如果这是不可能的,我正在寻找获得特定字段的共生矩阵信息的方法。
  3. 如果这也不是一个选项,我想知道最简单的方法: 1)获取所有术语,2)获取这些术语发生在文档中的in (编号)。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-21 20:26:23

由于我的问题还没有答案,我不得不写我自己的想法并接受它。然而,如果有人提出更好的解决办法,我将乐意接受它,而不是我的。

我将使用共生矩阵,因为它是关联挖掘的最主要部分。一般来说,Solr以某种方式提供了构建此矩阵所需的所有功能,尽管它们不如Lucene的直接访问效率高。要构建矩阵,我们需要:

  1. All terms或至少是最常见的术语,因为很少的术语不会影响关联挖掘的结果。
  2. 同样,这些术语出现的文档也是,至少最上面的文档。

使用标准Solr组件可以轻松地完成这两个任务。

要检索术语,可以使用TermsComponent或分面搜索。我们只能获得顶级术语(默认情况下)或所有术语(通过设置要采取的最大术语数,请参阅特定功能的文档以获得详细信息)。

获取相关术语的文档只需搜索这个术语。这里的缺点是,我们每学期需要一个请求,而且可能有数千个条款。另一个缺点是,无论是简单的搜索,还是分面搜索,都不能提供有关查找到的文档中当前术语出现次数的信息。

有了这一点,就很容易建立共生矩阵.为了挖掘关联,可以使用像韦卡这样的其他软件,或者编写自己的先验算法实现。

票数 2
EN

Stack Overflow用户

发布于 2011-09-14 20:26:53

您可以将Lucene (或Solr)索引导出到马赫特,然后使用潜在的Dirichlet分配。如果LDA不够接近LSA以满足您的需要,您可以从Mahout获取相关矩阵,然后使用Mahout进行奇异值分解。

我不知道Solr的任何LSA组件。

票数 3
EN

Stack Overflow用户

发布于 2017-02-20 06:43:29

您可以在以下查询中获取查找到的文档中当前术语出现的次数:

代码语言:javascript
复制
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=json
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7393908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档