无法在Python中pickle朴素贝叶斯分类器?

无法在Python中pickle朴素贝叶斯分类器?,python,text,nltk,pickle,text-classification,Python,Text,Nltk,Pickle,Text Classification,我试图用python保存我训练过的朴素贝叶斯分类器。我遵循了前面类似的问题,但没有任何效果。我对Python有点陌生,不太明白到底哪里出了问题,我已经根据NLTK书创建并训练了我的分类器。如何保存此模型以供以后使用 这就是我一直遇到的错误: picklingError: Can't pickle <class 'generator'>: attribute lookup generator on builtin failed 任何帮助都将不胜感激,我已经花了好几个小时试图解决这个问

我试图用python保存我训练过的朴素贝叶斯分类器。我遵循了前面类似的问题,但没有任何效果。我对Python有点陌生,不太明白到底哪里出了问题,我已经根据NLTK书创建并训练了我的分类器。如何保存此模型以供以后使用

这就是我一直遇到的错误:

picklingError: Can't pickle <class 'generator'>: attribute lookup generator on builtin failed
任何帮助都将不胜感激,我已经花了好几个小时试图解决这个问题

谢谢。

编辑: 我对此进行了一些实验,得出结论,当在有效的数据集上使用最新稳定版本的nltk时,您的代码可以完美地工作。 因此,我建议您要么更新/重新安装库,要么检查数据集是否有效。
有效的数据集必须是元组特性集、标签的列表。

对于picke,您还应将其作为二进制文件“wb”写入,这不是必需的:默认情况下,pickle数据格式使用可打印的ASCII表示。谢谢你的回复。我试图实现您的修复,但我只使用过书中使用的分类器。在培训之前,我如何获得标签/功能的问题专家?你实际上做得对,我的错,我已经习惯了scikit学习如何做到这一点。我试了一下,修改了我的答案。
classifier = nltk.NaiveBayesClassifier.train(train_set)
saveClassifier(classifier)

def saveClassifier(classifier):
        with open('cp_model.pkl', 'w') as f:
            dump(classifier, f)