无法编写 Count Vectorizer 词汇表

Posted

技术标签:

【中文标题】无法编写 Count Vectorizer 词汇表【英文标题】:Not able to write the Count Vectorizer vocabulary 【发布时间】:2019-01-29 10:24:11 【问题描述】:

我想保存和加载计数矢量化词汇表。这是我的代码

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features = 1500)
Cv_vec = cv.fit(X['review'])
X_cv=Cv_vec.transform(X['review']).toarray()
dictionary_filepath='CV_dict'
pickle.dump(Cv_vec.vocabulary_, open(dictionary_filepath, 'w'))

它告诉我

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-407-3a9b06f969a9> in <module>()
      1 dictionary_filepath='CV_dict'
----> 2 pickle.dump(Cv_vec.vocabulary_, open(dictionary_filepath, 'w'))

TypeError: write() argument must be str, not bytes

我想保存计数向量器的词汇并加载它。有人可以帮我吗?

【问题讨论】:

Using pickle.dump - TypeError: must be str, not bytes的可能重复 试试:pickle.dump(Cv_vec.vocabulary_, open(dictionary_filepath, 'wb')) 非常感谢。这是一个小错误。 【参考方案1】:

挑选对象时以二进制模式打开文件。并尝试使用context manager,即

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features = 1500)
Cv_vec = cv.fit(X['review'])
X_cv=Cv_vec.transform(X['review']).toarray()
dictionary_filepath='CV_dict'

with open('CV_dict.pkl', 'wb') as fout:
    pickle.dump(Cv_vec.vocabulary_, fout)

【讨论】:

以上是关于无法编写 Count Vectorizer 词汇表的主要内容,如果未能解决你的问题,请参考以下文章

sklearn Count vectorizer - 如何在以后保存、加载和使用转换单个文本

从 HashingVectorizer 中检索词汇

Drupal—以给定词汇表的“term(node count)”格式显示分类法

NLP自然语言处理的前馈网络

NLP自然语言处理的前馈网络

如何减少 Scikit-Learn Vectorizer 的内存使用量?