首页 > 解决方案 > 用 pickle 加载 tfidf 对象时出现问题

问题描述

我遇到了 pickle 的问题:在之前的工作中,我创建了一个 sklearn tfidfvectorizer 对象,并且感谢 pickle 保存了它。她是我用来做的代码:

def lemma_tokenizer(text):
     lemmatizer=WordNetLemmatizer()
     return [lemmatizer.lemmatize(token) for token in 
word_tokenize(text.replace("'"," "))]

punctuation=list(string.punctuation)
stop_words=set(stopwords.words("english")+punctuation+['``',"''"]+['doe','ha','wa']) 
tfidf = TfidfVectorizr(input='content',tokenizer=lemma_tokenizer,stop_words=stop_words)

pickle.dump(tfidf, open(filename_tfidf, 'wb'))

我看到如果我不想通过pickle加载这个tfidf对象,我需要在之前定义函数“lemma_tokenizer”。所以我创建了以下名为'loadtfidf.py'的python脚本来加载tfidf对象:

import pickle
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize


def lemma_tokenizer(text):
    lemmatizer=WordNetLemmatizer()
    return [lemmatizer.lemmatize(token) for token in word_tokenize(text.replace("'"," "))]

tfidf = pickle.load(open('tfidf.sav', 'rb'))

如果我运行此脚本,则对象加载良好,一切顺利!

但是,我在“loadtfidf.py”的同一目录中创建了另一个名为“test.py”的python脚本,我只是尝试导入loadtfidf:

import loadtfidf

当我尝试运行这一行时,出现以下错误:

"""无法从 '.../test.py' 获取模块 ' main ' 上的属性 'lemma_tokenizer'"""

我真的不明白为什么......我什至不知道如何解决这个错误......你能帮我解决它吗?

预先感谢您的帮助 !

标签: pythonpickle

解决方案


推荐阅读