我将存储在 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/