python - Pickle Tfidfvectorizer 以及自定义分词器

标签 python scikit-learn pickle tf-idf

我正在使用服装分词器传递给 TfidfVectorizer。该分词器依赖于另一个文件中的外部类 TermExtractor。

我基本上想基于某些术语构建 TfidVectorizer,而不是所有单个单词/标记。

代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer
from TermExtractor import TermExtractor

extractor = TermExtractor()

def tokenize_terms(text):
    terms = extractor.extract(text)
    tokens = []
    for t in terms:
        tokens.append('_'.join(t))
    return tokens


def main(): 
    vectorizer = TfidfVectorizer(lowercase=True, min_df=2, norm='l2', smooth_idf=True, stop_words=stop_words, tokenizer=tokenize_terms)
    vectorizer.fit(corpus)
    pickle.dump(vectorizer, open("models/terms_vectorizer", "wb"))

这运行良好,但每当我想重新使用此 TfidfVectorizer 并用 pickle 加载它时,我都会收到错误消息:

vectorizer = pickle.load(open("models/terms_vectorizer", "rb"))

Traceback (most recent call last):
  File "./train-nps-comments-classifier.py", line 427, in <module>
    main()
  File "./train-nps-comments-classifier.py", line 325, in main
    vectorizer = pickle.load(open("models/terms_vectorizer", "rb"))
  File "/usr/lib/python2.7/pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "/usr/lib/python2.7/pickle.py", line 858, in load
    dispatch[key](self)
  File "/usr/lib/python2.7/pickle.py", line 1090, in load_global
    klass = self.find_class(module, name)
  File "/usr/lib/python2.7/pickle.py", line 1126, in find_class
    klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'tokenize_terms'

当有依赖类时,Python pickle 是如何工作的?

最佳答案

只需弄清楚,我需要在加载 pickled TfidVectorizer 的相同代码中添加方法 tokenize_terms(),导入 TermExtractor,并创建一个提取器:

extractor = TermExtractor()

关于python - Pickle Tfidfvectorizer 以及自定义分词器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35201968/

相关文章:

python - 我怎样才能只将 1 个结果打印到控制台而不是两个?

python - 使用 scikit-learn 的 SVM 分类算法(RBF 内核)时出现意外结果

python - pickle 提升python函数

python - 如何在 Python 2 中加载 Python 3 Pickled SKlearn 模型

python - python 中的 BFS 实现速度不够快

python - “while”循环,将字符转换为 ASCII 代码(中级)

python - Flask中的路径路由

python - TPOT:使用 TPOTRegressor 时出现酸洗错误

python - 在 python 中使用 SVC 进行预测时出现 "ValueError: Expected 2D array, got 1D array instead"

python - 如何在Python中检查路径/文件是否存在?