【问题标题】:Python NLTK Maximum Entropy Classifier ErrorPython NLTK 最大熵分类器错误
【发布时间】:2012-04-18 17:24:46
【问题描述】:

我目前正在使用 NLTK 的朴素贝叶斯分类器,但我也想试用 Max Ent 分类器。从文档看来,它应该采用与朴素贝叶斯相同的功能集格式,但由于某种原因,我在尝试时遇到了这个错误:

  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

我不确定这意味着什么,但我使用的输入与我运行朴素贝叶斯时使用的输入完全相同。(训练数据,表示为对列表,其中第一个成员是特征集,第二个是分类标签。)有什么想法吗?

谢谢!

【问题讨论】:

  • 如果你能显示导致错误的代码会很有帮助

标签: python nlp classification nltk


【解决方案1】:

你必须安装 nltk 然后你才能分类。 使用下面的代码在python中使用最大熵进行分类

me_classifier = nltk.MaxentClassifier.train(trainset,algorithm="gis")
print(me_classifier.classify(testing))

【讨论】:

    【解决方案2】:

    此问题还取决于您使用的 scipy 版本。

    NLTK 使用 scipy.maxentropy,它在 scipy 0.10 中已弃用并在 0.11 中删除,请参阅文档:http://docs.scipy.org/doc/scipy-0.10.0/reference/maxentropy.html#

    我确实在 github 上为此创建了一个问题:https://github.com/nltk/nltk/issues/307

    【讨论】:

      【解决方案3】:

      我在使用 NLTK 时也遇到了这个问题。虽然我无法令人满意地解决它(即使用 scipy 让 Maxent 工作),但当我使用不同的算法时,我能够在 NLTK 中训练一个 maxent 分类器。尝试使用

      进行训练
      me_classifier = nltk.MaxentClassifier.train(trainset,algorithm="iis")
      

      或其他可接受的算法值之一,例如“gis”或“megam”。

      【讨论】:

        猜你喜欢
        • 2012-09-05
        • 2011-09-30
        • 2018-08-03
        • 2012-06-11
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 2018-06-28
        • 2012-04-21
        相关资源
        最近更新 更多