如何使用 whoosh 获取文档中术语的 tf-idf 分数和 bm25f 分数



我正在使用whoosh来索引数据集。我想检索给定术语和文档的 td-idf 分数和 bm25f 分数?我已经看到了得分。TFIDF() 和评分。TFIDFScorer().为了调用TFIDFScorer().score()方法,我们应该传递一个匹配器对象。我应该将哪个匹配器对象传递给它。

同样,我应该将哪些参数传递给 BM25FScorer()._score(自身、重量、长度)?什么是重量和长度参数?默认情况下传递哪些值?

终于能够弄清楚了。这是给以后来这里的任何人的,

用于查找术语和文档的 TFIDF 和 BM25F 分数。

qp = QueryParser('content', ix.schema)
q = qp.parse(unicode('id:1'))
with ix.searcher(weighting=scoring.TF_IDF()) as searcher_tfidf:
    scoring.TFIDF().scorer(searcher_tfidf, 'body', 'algebra').score(q.matcher(searcher_tfidf))
with ix.searcher(weighting=scoring.BM25F()) as searcher_bm25f:
    scoring.BM25F().scorer(searcher_bm25f, 'body', 'algebra').score(q.matcher(searcher_bm25f))

ix 是使用 open_dir() 方法或 create_in() 获得的 IndexReader 对象。关键是获取与所需文档完全匹配的 Matcher 对象。因此,使用 id 或架构中的任何唯一字段使用 qp.parse() 方法获取该特定文档。

最新更新