我对泡菜有疑问: 在以前的工作中,我创建了一个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'”“
获取模块'主要'上的属性'lemma_tokenizer'我真的不明白为什么...我什至不知道该怎么解决这个错误...您能帮我解决这个问题吗?
预先感谢您的帮助!