python - 用 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'"""
我真的不明白为什么......我什至不知道如何解决这个错误......你能帮我解决它吗?
预先感谢您的帮助 !
解决方案
推荐阅读
- xamarin.forms - 在 Xamarin 表单中显示网页正文
- cordova - Apache Cordova Media Plugin 显示错误代码 0
- python-3.x - XGBoost 错误:/workspace/src/metric/elementwise_metric.cc:28:检查失败:preds.size() == info.labelsSize() (
- ios - 谷歌标签管理器对 iOS 应用程序有什么用?
- python - 在 Pandas 数据框中重建列名
- javascript - 通过数组转换在数组中按值查找键
- c# - 使用约束委派从 ASP.NET 页面连接到远程 WMI 是否需要协议转换?
- c++ - 仅当给出多个参数时,如何启用_if 可变参数模板构造函数?
- javascript - ipad 的 HTML 文件选择器
- mysql - Spring Boot:如何通过 user_id 检索用户名?