gpt4 book ai didi

python - TFIDF 的 Sklearn 和 Elasticsearch 结果之间的差异

转载 作者:行者123 更新时间:2023-12-01 07:21:26 25 4
gpt4 key购买 nike

我正在研究文档相似性。我的第一个方法是使用 Sklearn 的 TFIDF 算法实现。结果很好,但对于许多文档来说搜索速度很慢。

然后我使用 Python 中的 elasticsearch_dsl 设置 Elasticsearch。我知道我的查询也使用 TFIDF:

s = s.query(MoreLikeThis(like=string,
fields=fields,
min_doc_freq=100,
max_doc_freq=175000))

但是,结果非常不同!我刚刚实现了vector-based search ,如 Elasticsearch 7.3 中允许的那样。这使我能够获取 Sklearn 向量并在 Elasticsearch 中使用它们。我的结果并不相同,但非常接近(正如预期的那样,类似于我希望通过 Elasticsearch MoreLikeThis 查询看到的结果!)。因此,很明显 Elasticsearch 中的 TFIDF 并不像 Sklearn 中那样工作。

enter image description here此图显示了查询的分数。左边是 Elasticsearch 中 Sklearn 与 Sklearn 向量的得分。右边,Sklearn 与 Elasticsearch 使用我上面的查询(当然,我使用了相同的参数,以及对不同参数的彻底探索,试图获得更好的匹配)。

这是可以预料到的吗?或者我应该认为这是我的错?

最佳答案

事实上,最新的elasticsearch默认使用与TF/IDF略有不同的算法,即BM25。请参阅https://www.elastic.co/guide/en/elasticsearch/reference/7.3/similarity.html

关于python - TFIDF 的 Sklearn 和 Elasticsearch 结果之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57677287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com