首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BM25对文档进行排序的问题

使用BM25对文档进行排序的问题
EN

Stack Overflow用户
提问于 2022-10-24 12:55:59
回答 1查看 51关注 0票数 1

我试图使用bm25对职业中的任务语句进行排序。我正在跟踪本教程,但谈到这一部分,我感到困惑:“既然我们已经创建了文档索引,我们就可以给它提供查询并查看哪些文档是最相关的”,我希望这些查询是我在语料库列中的每句话。我怎么能这么做?

!pip安装rank_bm25 从rank_bm25导入BM25Okapi导入字符串作为pd导入熊猫 语料库=pd.read_excel(r‘/content/作业-och.xlsx’) tokenized_corpus = [doc.split(“")表示语料库中的文档‘任务’] tokenized_corpus = []表示“任务”中的文档: print( doc ) doc_tokens = doc.split() tokenized_corpus.append(doc_tokens) bm25 = BM25Okapi(tokenized_corpus)

这是我的数据

EN

回答 1

Stack Overflow用户

发布于 2022-10-24 19:11:12

基本上,您只需要对文档列表进行迭代,例如:

代码语言:javascript
复制
import pandas as pd
from rank_bm25 import BM25Okapi
import string


def argsort(seq, reverse):
    # http://stackoverflow.com/questions/3071415/efficient-method-to-calculate-the-rank-vector-of-a-list-in-python
    return sorted(range(len(seq)), key=seq.__getitem__, reverse =reverse)


corpus = pd.read_excel(r'Job-occ.xlsx')

tokenized_corpus = [doc.split(" ") for doc in corpus['task']]

bm25 = BM25Okapi(tokenized_corpus)

for doc_as_query in tokenized_corpus:
    scores = bm25.get_scores(doc_as_query)

    # show top 3 (optional):
    print('\nQuery:',' '.join(doc_as_query))
    top_similar = argsort(scores, True)
    for i in range(3): 
        print('   top', i+1,':', corpus['task'][top_similar[i]])

我添加了排序和打印前3种类似的文档,如果您想这样做的话(这就是为什么我添加了函数argsort)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74181413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档