java - lucene 一元词和二元词的频率

标签 java lucene indexing scoring frequency-analysis

我将存储在 lucene 索引 ngram 中,最高可达级别 3。当我读取索引并计算术语和 ngram 的评分时,我得到这样的结果

TERM              FREQUENCY....      TFIDF
minority           25           16.512926
minority report 24           16.179296
report           27           13.559037
cruise           12           11.440491
tom cruise        7            8.737819

所以,如果我们看一下“汤姆·克鲁斯”的例子,作为二元组,它总共出现了 7 次。并且由此我们看到,“巡航”单独出现了5次。所以我不想要这种频率的重复,因为“克鲁斯”本身的得分就比“汤姆·克鲁斯”更好,这是不正确的,因为它包含在里面。

抱歉,如果我解释不好,我不知道如何称呼这种类型的评分,如果有人知道解释这个技术词汇,请编辑。

谢谢

最佳答案

我相信我之前回答过您提出的类似问题。 IIUC,您希望更重要的术语脱颖而出,并且您觉得“汤姆·克鲁斯”比“克鲁斯”更重要。

这看起来像是您的数据模型中的问题。 TFIDF 似乎不符合您的要求。 您可以尝试构建语言模型,如 Peter Norvig's "Beautiful Data" chapter 中所述。 。

要点是:

  • 计算每个一元组、二元组和三元组的概率(您将需要按照本文中的说明进行平滑或回退)。
  • 根据概率而不是 TFIDF 选择术语。

A Language Model Approach to Keyphrase Extraction似乎做了类似的事情。一些替代方案是 Kea (它使用 TFIDF 作为多个功能之一)和 Peter Turney's Keyphrase extraction work .

关于java - lucene 一元词和二元词的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3582572/

相关文章:

java - 如何将带日期的文件存入SD卡?

full-text-search - 使用 Lucene/Solr 进行类似 Digg 的搜索结果排名?

lucene - 为什么我的Lucene文档结果为空?

mysql - 是什么减慢了 MySQL 表上的索引

python - 类型错误 : 'float' object is not subscriptable

java - 设备 SMSLib 无响应

java - 在Excel中创建下拉列表

java - 类成员的最小值和最大值

java - Lucene 5.2.1 中的过滤问题

performance - 为什么不通过在 elasticsearch 中设置刷新间隔来提高性能