2012-04-08 9 views
0

私はMAXENT分類子に基づいて文章チャンカ、NLTKブックに記載されているように(例7.9)を実装しようとしています:NLTKチャンクエラー

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]) 

I receiと文次のエラーが表示されます。

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 

私はGoogleで何も見つかりませんでした。この時点で固まっています。どんな助けも本当に便利です!

答えて

4

あなたのチャンネルはまだ実装されていません。 "ChunkParserIは抽象的なインターフェースです"とは、そこからクラスを派生させて独自のparse()メソッドを定義する必要があることを意味します。リンク先のNLTKの章では、サンプルクラスの定義方法を示しています(ConsecutiveNPChunker)。

最後に、新しいクラスのインスタンスを作成し、eval()メソッドを呼び出します(これはChunkParserIから継承しているため、置き換えを行う必要はありません)。

+0

ありがとう。私は実際に次のようにクラスをインスタンス化します: chunker = ConsecutiveNPChunker(train_sents) 元の質問を編集して明確にしました。 – Vasilis

+1

しかし、あなたは 'ConsecutiveNPChunker'がどのように定義されているかを明確にしていません。明らかに、 'parse'メソッドを提供していません。 – alexis

+0

ConsecutiveNPChunker定義を追加しないと申し訳ありませんが、ちょっと長いので追加しませんでした。しかし、私が提供するリンクは、parse()メソッドを含む正確なクラスを持っています。 – Vasilis