我一直在 python 中使用 maxent 分类器并且它失败了,我不明白为什么。
我正在使用电影评论语料库。(总菜鸟)
import nltk.classify.util
from nltk.classify import MaxentClassifier
from nltk.corpus import movie_reviews
def word_feats(words):
return dict([(word, True) for word in words])
negids = movie_reviews.fileids('neg')
posids = movie_reviews.fileids('pos')
negfeats = [(word_feats(movie_reviews.words(fileids=[f])), 'neg') for f in negids]
posfeats = [(word_feats(movie_reviews.words(fileids=[f])), 'pos') for f in posids]
negcutoff = len(negfeats)*3/4
poscutoff = len(posfeats)*3/4
trainfeats = negfeats[:negcutoff] + posfeats[:poscutoff]
classifier = MaxentClassifier.train(trainfeats)
这是错误(我知道我做错了,请链接到 Maxent 的工作原理)
警告(来自警告模块):文件“C:\Python27\lib\site-packages\nltk\classify\maxent.py”,第 1334 行 sum1 = numpy.sum(exp_nf_delta * A, axis=0) RuntimeWarning:遇到无效值乘以
警告(来自警告模块):文件“C:\Python27\lib\site-packages\nltk\classify\maxent.py”,第 1335 行 sum2 = numpy.sum(nf_exp_nf_delta * A, axis=0) RuntimeWarning:遇到无效值乘以
警告(来自警告模块):文件“C:\Python27\lib\site-packages\nltk\classify\maxent.py”,第 1341 行 deltas -= (ffreq_empirical - sum1) / -sum2 RuntimeWarning:在除法中遇到无效值