首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将BM25Okapi对象值保存到文件?

如何将BM25Okapi对象值保存到文件?
EN

Stack Overflow用户
提问于 2021-06-03 03:26:29
回答 1查看 117关注 0票数 5

我们正在进行信息检索任务,我们需要根据查询对研究论文进行排序。

在清理数据并创建数据帧之后,我们对纸质文本进行了标记化,并需要将结果保存到文件中。

代码语言:javascript
运行
复制
import sys
#tokenized_corpus = [doc.split(" ") for doc in corpus]

corpus = list(df.body_text)

tokenized_corpus1 = [doc.split(" ") for doc in corpus[:20000]]
tokenized_corpus2 = [doc.split(" ") for doc in corpus[20000:40000]]
#tokenized_corpus3 = [doc.split(" ") for doc in corpus[40000:]]

tokenized_corpus = tokenized_corpus1 + tokenized_corpus2 # + tokenized_corpus3 

创建标记化语料库上面的单元格。

代码语言:javascript
运行
复制
with open('file.csv', 'w', newline='', encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerows(tokenized_corpus)

然后我们将数据保存到.csv文件中。

之后,我们调用BM25Okapi方法

代码语言:javascript
运行
复制
bm25 = BM25Okapi(tokenized_corpus)

由于这一步花费了太多的时间并消耗了几十亿字节的内存(导致频繁的错误),我们希望保存结果,这样我们就不需要每次都调用funktion。

为了根据结果检索结果,我们使用了以下步骤。

代码语言:javascript
运行
复制
query = "coronavirus origin"
tokenized_query = query.split(" ")

doc_scores = bm25.get_scores(tokenized_query)
doc_scores

我无法将BM25对象的值保存到文件中。并且在源代码中看不到任何方法。我该怎么办?

EN

Stack Overflow用户

发布于 2021-06-03 05:55:29

问题被问错了。我们要做的是保存对象,而不是专门保存BM25Okapi结果。

所以,解决方案来了:

代码语言:javascript
运行
复制
import pickle

#To save bm25 object
with open('bm25result', 'wb') as bm25result_file:
    pickle.dump(bm25, bm25result_file)

然后,要读取对象数据:

代码语言:javascript
运行
复制
#to read bm25 object
with open('bm25result', 'rb') as bm25result_file:
    bm25result = pickle.load(bm25result_file)

详细描述可在this article中找到

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67811353

复制
相关文章

相似问题

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