如何在Python中序列化CObject?

如何在Python中序列化CObject?,python,nltk,pickle,svmlight,Python,Nltk,Pickle,Svmlight,我使用NLTK和svmlightpython库训练了一个SVM分类器,当我调用pickle.dump(my_分类器,outfile,1)保存分类器时,它抛出以下错误: File "/usr/lib/python2.7/pickle.py", line 313, in save (t.__name__, obj)) pickle.PicklingError: Can't pickle 'PyCObject' object: <PyCObject object at 0xc1c

我使用
NLTK
svmlight
python库训练了一个SVM分类器,当我调用
pickle.dump(my_分类器,outfile,1)
保存分类器时,它抛出以下错误:

File "/usr/lib/python2.7/pickle.py", line 313, in save
    (t.__name__, obj))
    pickle.PicklingError: Can't pickle 'PyCObject' object: <PyCObject object at 0xc1cbd50>
文件“/usr/lib/python2.7/pickle.py”,第313行,保存
(t.(姓名)(obj))
pickle.PicklingError:无法pickle'PyCObject'对象:
我读到我们不能对
CObject
进行pickle,但我没有找到保存我的工作的解决方案:/

我怎样才能继续?我使用python 2.7.3


值得一提的是,对于那些知道
NLTK
的人来说,当我对其他分类器(如
MaxentClassifier
NaiveBayesClassifier
)进行pickle处理时,一切都很好,而不是
svmclassizer
,我认为这与
svmlight
库有关,但是这是我第一次使用它。

您可以使用svmlight库中的方法
编写模型(模型,文件名)
来保存它。也许你可以教pickle将其用作酸洗的自定义协议。

教pickle自定义协议是什么意思?修改pickle.py?Hans指的是专门用于此任务的标准pickle扩展点。我的意思是,可能可以将pickle配置为针对特定数据类型使用自定义pickler。但是,如果将
\uuuu get\u state\uuuu()
\uuuu set\u state\uuuuu()
方法添加到模型类的(子类)中,它将变为可pickle。看:@MacGuy是的,我就是这个意思。谢谢你的链接。显然有不止一种方法。对不起,我对酸洗有些陌生,到目前为止我只知道
dump
load
。我读了这些链接,不知道如何实现这些方法。我甚至没有看到这个
PyCObject
,因为它显然是在
svmlight
模块中调用的,该模块由
svmclassizer
调用,它是从我的脚本调用的。在不脱离脚本的情况下修复此问题的最佳方法是什么(如果可能)?