【问题标题】:NLTK Chunking ErrorNLTK 分块错误
【发布时间】:2012-04-21 09:12:09
【问题描述】:

我正在尝试实现基于 Maxent 分类器的句子分块器,如 NLTK 书(示例 7.9)中所述:

http://nltk.googlecode.com/svn/trunk/doc/book/ch07.html#code-classifier-chunker

当我尝试用

评估分块器时
chunker = ConsecutiveNPChunker(train_sents)
print chunker.evaluate(test_sents)

或者用

分块一个句子
print chunker.parse(test_sents[1])

我收到以下错误:

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    print chunker.parse(test_sents[1])
  File "/usr/local/lib/python2.6/dist-packages/nltk/chunk/api.py", line 34, in parse
    assert 0, "ChunkParserI is an abstract interface"
AssertionError: ChunkParserI is an abstract interface

我在谷歌上没有找到任何东西,我被困在这一点上。任何帮助都会非常有用!

【问题讨论】:

    标签: python nlp nltk chunking


    【解决方案1】:

    你显然还没有实现你的分块器。 “ChunkParserI 是一个抽象接口”意味着你需要从中派生一个类并定义你自己的parse() 方法。您链接到的 NLTK 章节显示了如何定义示例类 ConsecutiveNPChunker

    最后一步是创建新类的实例并调用其eval() 方法(它继承自ChunkParserI,因此您无需提供替换)。

    【讨论】:

    • 谢谢亚历克西斯。我实际上将我的类实例化如下:chunker = ConsecutiveNPChunker(train_sents) 我编辑了原始问题以使其清楚。
    • 但是您并不清楚ConsecutiveNPChunker 是如何定义的。显然它没有提供parse 方法。
    • 很抱歉没有添加ConsecutiveNPChunker定义,我没有添加它,因为它有点冗长。但是我提供的链接具有包含 parse() 方法的确切类
    • NLTK 书中的示例添加了一个parse 方法,并且有效。你没有,所以你从chunk/api.py 得到parse,它唯一的工作就是引发错误。也许您的代码中有缩进错误?
    • @user,修正你的缩进或者写一个parse()方法,不管是哪种情况。
    猜你喜欢
    • 2016-06-01
    • 2015-12-27
    • 2013-01-19
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多