【发布时间】:2020-06-14 18:50:23
【问题描述】:
大家晚上好! 所以,我有一个项目“使用语言模型扩展 lucene”,我尝试在我的代码中添加 2、3 行,如下所示: 在 search.java 上
LMDirichletSimilarity similarity = new LMDirichletSimilarity(2000f);
indexSearcher.setSimilarity(similarity);
在 index.java 上
LMDirichletSimilarity similarity = new LMDirichletSimilarity(2000f);
config.setSimilarity(similarity);
但我不认为这很容易!也许我应该写一个算法之类的?请如果你有一些答案帮助我 谢谢^_^
【问题讨论】:
-
问题中的代码将 Lucene 的默认 BM25Similarity 记分器(查看更多信息 here)替换为不同的记分器 - LMDirichletSimilarity 记分器。如果这就是你想要的,那么你就准备好了。
-
LMDirichletSimilarity 源代码是here,如果您有兴趣。 (不要让我解释它是如何工作的。)
-
@andrewjames 我也想要一个 unigram 语言模型来支持 lucene 取消 diricglet 平滑,但我没有找到和算法这样做:/
-
我可能完全误解了你想要做的事情(如果是这样,我很抱歉),但是...... dirichlet 平滑已经实现(你已经找到了)和“unigram”在上下文中Lucene 意味着(对我而言)单个单词标记 - 例如,由标准分析器生成(与其他 Lucene n-gram 分析器或 shingle 分析器相比)。有时,查看ElasticSearch 文档比查看 Lucene 文档更有帮助,以获得更多信息。
标签: java lucene similarity dirichlet