3

現在、NLTK の Naive Bayes 分類器を使用していますが、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 を実行したときとまったく同じ入力を使用しており、それが機能しています (ペアのリストとして表されるトレーニング データ。最初のメンバーは機能セットであり、 2 番目は分類ラベルです。) 何かアイデアはありますか?

ありがとう!

4

3 に答える 3

3

NLTK でもこの問題に遭遇しました。私はそれを満足に解決することはできませんでしたが (つまり、scipy を使用して Maxent を動作させることはできませんでした)、別のアルゴリズムを使用したときに NLTK で maxent 分類器をトレーニングすることができました。でトレーニングしてみる

me_classifier = nltk.MaxentClassifier.train(trainset,algorithm="iis")

または、「gis」や「megam」など、algorithm のその他の許容値の 1 つ。

于 2012-05-05T03:54:25.490 に答える
1

この問題は、使用している scipy のバージョンにも依存します。

NLTK は、scipy 0.10 で廃止され、0.11 で削除された scipy.maxentropy を使用します。ドキュメントを参照してください: http://docs.scipy.org/doc/scipy-0.10.0/reference/maxentropy.html#

私はgithubでその問題を作成しました:https://github.com/nltk/nltk/issues/307

于 2012-11-12T21:57:42.103 に答える