【发布时间】:2018-02-12 08:55:29
【问题描述】:
我正在使用 NLTK 中提供的py-crfsuite 训练 Brill 的 POS 标注器。但是,当我尝试保存经过训练的模型时,出现以下错误:
crf_tagger = CRFTagger()
crf_tagger.train(train_sents, 'model_trained.crf.tagger')
templates = nltk.tag.brill.nltkdemo18()
trainer = nltk.tag.brill_trainer.BrillTaggerTrainer(crf_tagger, templates)
bt = trainer.train(train_sents, max_rules=10)
file_writing = file('trained_brill_tagger.yaml', 'w')
yaml.dump(bt, file_writing)
#even pickle fails
file_w = open('trained_brills.pickle', 'wb')
pickle.dump(bt, file_w)
file_w.close()
文件“stringsource”,第 2 行,在 pycrfsuite._pycrfsuite.Tagger.reduce_cython TypeError: self.c_tagger 无法转换为 Python 对象进行酸洗
我尝试过使用pickle、dill 和yaml,但错误似乎仍然存在。有没有办法解决这个问题。这是因为使用 CRF 标记器作为基线吗?谢谢。
【问题讨论】:
-
什么是
file?您可以在发布的 sn-p 之前显示代码吗?另外,你从哪里得到这个代码 sn-p? -
@alvas file 是python中打开文件的默认函数。我也试过open()。我按照 nltk.tag 上的文档来训练模型并在 pickle 对我不起作用时尝试了 yaml,因为github.com/nltk/nltk/issues/555 的 nltk 问题部分提到了 yaml。我一直收到同样的错误。
-
我不认为 file 是 Python 中的默认函数 ;P 原生 Python 函数应该是
open() -
@alvas 文件?在 ipython 控制台中将其显示为命令,并且运行良好。我已经按照您的要求显示了更多来源。
-
你能展示你的进口吗?我认为您已经使用 Python 内置
file导入了一些流氓库。 stackoverflow.com/questions/24942358/…
标签: python nltk pos-tagger nltk-trainer brill-tagger