#python #classification #nltk
#python #классификация #nltk
Вопрос:
Когда я попробовал примеры MaxentClassifier из http://nltk.googlecode.com/svn/trunk/doc/howto/classify.html , Я получил ошибку ниже:
Оценка степени # 0
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
classifier = MaxentClassifier.train(train)
File "C:Python27libsite-packagesnltkclassifymaxent.py", line 323, in train
gaussian_prior_sigma, **cutoffs)
File "C:Python27libsite-packagesnltkclassifymaxent.py", line 1456, in train_maxent_classifier_with_scipy
model.fit(algorithm=algorithm)
File "C:Python27libsite-packagesscipymaxentropymaxentropy.py", line 1026, in fit
return model.fit(self, self.K, algorithm)
File "C:Python27libsite-packagesscipymaxentropymaxentropy.py", line 226, in fit
callback=callback)
File "C:Python27libsite-packagesscipyoptimizeoptimize.py", line 636, in fmin_cg
gfk = myfprime(x0)
File "C:Python27libsite-packagesscipyoptimizeoptimize.py", line 176, in function_wrapper
return function(x, *args)
File "C:Python27libsite-packagesscipymaxentropymaxentropy.py", line 420, in grad
G = self.expectations() - self.K
ValueError: operands could not be broadcast together with shapes (54) (12)
Код Python:
train = [(dict(a=1,b=1,c=1), 'y'),
(dict(a=1,b=1,c=1), 'x'),
(dict(a=1,b=1,c=0), 'y'),
(dict(a=0,b=1,c=1), 'x'),
(dict(a=0,b=1,c=1), 'y'),
(dict(a=0,b=0,c=1), 'y'),
(dict(a=0,b=1,c=0), 'x'),
(dict(a=0,b=0,c=0), 'x')]
test = [(dict(a=1,b=0,c=1)), # unseen
(dict(a=1,b=0,c=0)), # unseen
(dict(a=0,b=1,c=1)), # seen 3 times, labels=y,y,x
(dict(a=0,b=1,c=0)) # seen 1 time, label=x
]
classifier = MaxentClassifier.train(train)
Но я не знаю, как это решить.
Помогите мне, спасибо!
Комментарии:
1. не могли бы вы уточнить, какой из примеров дает сбой?
2. когда я запускаю classifier = MaxentClassifier.train (поезд), возникает ошибка значения
Ответ №1:
Это работает, если вы задаете алгоритм:
>>> algorithm = nltk.classify.MaxentClassifier.ALGORITHMS[0]
>>> algorithm
'GIS'
>>> classifier = nltk.MaxentClassifier.train(train, algorithm)
==> Training (100 iterations)
Iteration Log Likelihood Accuracy
---------------------------------------
1 -0.69315 0.556
2 -0.65164 0.778
3 -0.62713 0.778
4 -0.61084 0.667
5 -0.59935 0.667
6 -0.59096 0.667
.................................
.................................
(Обратите внимание, что вы пропустили одну строку в учебном корпусе)
Редактировать: Несколько алгоритмов nltk терпят неудачу, включая ‘CG’. Проблема, вероятно, такая же, как та, о которой сообщалось здесь. Если это так, это, вероятно, будет решено в следующих выпусках nltk. Вы также можете сообщить об ошибке в nltk, чтобы помочь разработчикам и себе.
Поскольку обнаруженная ошибка, похоже, связана с трансляцией numpy и устаревшим использованием numpy, возможно, вы могли бы попробовать использовать более старую версию numpy
Комментарии:
1. Могу ли я ограничить количество итераций? В вашем случае это повторяется почти 100 раз, но я хочу только 10 раз. Спасибо.