Как получить оценку tf-idf и оценку bm25f термина в документе с помощью whoosh?

Я использую whoosh для индексации набора данных. Я хочу получить оценку td-idf и оценку bm25f с учетом термина и документа? Я видел скоринг.TFIDF() и скоринг.TFIDFScorer(). Чтобы вызвать метод TFIDFScorer().score(), мы должны передать объект сопоставления. Какой объект сопоставления я должен передать ему.

Аналогично, какие параметры я должен передать в BM25FScorer()._score(self, weight, length)? Что такое параметры веса и длины? Какие значения передаются по умолчанию?


person Sai Manoj Kumar Yadlapati    schedule 07.09.2013    source источник


Ответы (1)


Наконец-то смог разобраться. Вот он для тех, кто придет сюда позже,

Для нахождения оценки термина и документа в 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 — это объект IndexReader, полученный с помощью метода open_dir() или create_in(). Суть в том, чтобы получить объект Matcher, точно соответствующий требуемому документу. Итак, используйте идентификатор или любое уникальное поле в схеме, чтобы получить этот конкретный документ с помощью метода qp.parse().

person Sai Manoj Kumar Yadlapati    schedule 09.09.2013