如何从 CountVectorizer 保存和加载词汇表?

Posted

技术标签:

【中文标题】如何从 CountVectorizer 保存和加载词汇表?【英文标题】:How to save and load vocabulary_ from a CountVectorizer? 【发布时间】:2020-02-09 03:56:33 【问题描述】:

我有一个类,我在其中创建一个 countVectorizer 并使用 fit_transform 创建向量。这会生成一个词汇表_。 我希望这个 CountVectorizer 与一个文件中的词汇表能够在另一个类中重用它。 有人对我有什么建议吗?我已经尝试使用 save_npz 完成所有操作。但它不能正常工作。

这是我尝试保存整个内容时的功能。我不确定这是否正确。

...
count_vect = CountVectorizer()
...

def vectorizeData():

  clean_data = pd.read_feather('../working/' + PROJECT + '_clean.feather') 

  word_count = count_vect.fit_transform(clean_data.text)

  scipy.sparse.save_npz('../working/' + PROJECT + '_countVec.npz', word_count)


和负载


def ModelData():
  ...
  count_vect_test = scipy.sparse.load_npz('../working/' + PROJECT + '_countVec.npz')
  ...

加载后我只有 csr_matrix,但没有 CountVectorizer 对象。

【问题讨论】:

您是否考虑过创建一个CountVectorizer,然后简单地分配给它的vocabulary_ 属性?否则你可以腌制它,尽管腌制很脆弱,因此不是最理想的。 我可以使用现有的词汇表吗? 它只是一个python对象。 vectorizer = CountVectorizer(); vectorizer.vocabulary_ = my_vocab 【参考方案1】:

您是否尝试过使用 joblib?

https://joblib.readthedocs.io/en/latest/generated/joblib.dump.html

import joblib

# example for saving python object as pkl
joblib.dump(vectorizer, "vectorizer.pkl")

# loading pickled vectorizer
vectorizer = joblib.load("vectorizer.pkl")

【讨论】:

以上是关于如何从 CountVectorizer 保存和加载词汇表?的主要内容,如果未能解决你的问题,请参考以下文章

加载泡菜 NotFittedError:CountVectorizer - 未安装词汇

使用 CountVectorizer 连接自定义特征

无法编写 Count Vectorizer 词汇表

从 CountVectorizer 按类别提取 n 个最高频率

pytorch - 如何从 DistributedDataParallel 学习中保存和加载模型

如何从谷歌玩游戏中选择和加载保存的游戏快照