0

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

同样,我应该将哪些参数传递给 BM25FScorer()._score(self, weight, length)?什么是重量和长度参数?默认传递什么值?

4

1 回答 1

3

终于能够想通了。这是给以后来这里的人的,

用于查找术语和文档的 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() 方法获取该特定文档。

于 2013-09-09T09:53:37.370 回答