我目前正在使用NLTK的朴素贝叶斯分类器,但是我也想尝试Max Ent分类器.从文档看来,该功能集应采用与Naive Bayes相同的格式,但是由于某些原因,在尝试时会出现此错误:
File "/usr/lib/python2.7/site-packages/nltk/classify/maxent.py", line 323, in train
gaussian_prior_sigma, **cutoffs)
File "/usr/lib/python2.7/site-packages/nltk/classify/maxent.py", line 1453, in train_maxent_classifier_with_scipy
model.fit(algorithm=algorithm)
File "/usr/lib64/python2.7/site-packages/scipy/maxentropy/maxentropy.py", line 1026, in fit
return model.fit(self, self.K, algorithm)
File "/usr/lib64/python2.7/site-packages/scipy/maxentropy/maxentropy.py", line 226, in fit
callback=callback)
File "/usr/lib64/python2.7/site-packages/scipy/optimize/optimize.py", line 636, in fmin_cg
gfk = myfprime(x0)
File "/usr/lib64/python2.7/site-packages/scipy/optimize/optimize.py", line 176, in function_wrapper
return function(x, *args)
File "/usr/lib64/python2.7/site-packages/scipy/maxentropy/maxentropy.py", line 420, in grad
G = self.expectations() - self.K
ValueError: shape mismatch: objects cannot be broadcast to a single shape
我不确定这是什么意思,但是我使用的是与运行Naive Bayes时完全相同的输入,并且可以正常工作.(训练数据以成对列表表示,其第一个成员是功能集,并且第二个是分类标签.)有什么想法吗?
谢谢!
解决方法:
我也遇到了NLTK的问题.虽然我无法令人满意地解决它(即让Maxent使用scipy工作),但是当我使用其他算法时,我能够在NLTK中训练maxent分类器.尝试训练
me_classifier = nltk.MaxentClassifier.train(trainset,algorithm="iis")
或其他算法可接受的值之一,例如“ gis”或“ megam”.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。