我试图使用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)
这是我的数据
发布于 2022-10-24 19:11:12
基本上,您只需要对文档列表进行迭代,例如:
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)。
https://stackoverflow.com/questions/74181413
复制相似问题