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

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

在清理数据并创建数据框后,我们已经对论文文本进行了分词处理,并需要将结果保存到文件中。

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 

上面的单元格创建了分词后的语料库。

with open('file.csv', 'w', newline='', encoding="utf-8") as f:    writer = csv.writer(f)    writer.writerows(tokenized_corpus)

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

之后,我们调用BM25Okapi方法

bm25 = BM25Okapi(tokenized_corpus)

由于这一步耗时过长且消耗数千兆字节的内存(经常导致错误),我们希望保存结果,以便不必每次都重新调用函数。

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

query = "coronavirus origin"tokenized_query = query.split(" ")doc_scores = bm25.get_scores(tokenized_query)doc_scores

我无法将BM25对象的值保存到文件中,并且在源代码中没有看到任何相关方法。我应该怎么做?


回答:

问题问得不对。我们需要做的是保存对象,而不仅仅是BM25Okapi的结果。

所以,解决方案如下:

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

然后,读取对象数据:

#to read bm25 objectwith open('bm25result', 'rb') as bm25result_file:    bm25result = pickle.load(bm25result_file)

详细描述可以在这篇文章中找到

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注