2012-07-02 8 views
7

オランダ語から名前付き実体を抽出しようとしています。私はnltk-trainerを使用して、conll2002 dutch corpusのタグャーとチャンクをトレーニングしました。ただし、チャンクの解析メソッドは名前付きエンティティを検出していません。ここに私のコードは次のとおりです。NLTKの名前付き実体認識

str = 'Christiane heeft een lam.' 

tagger = nltk.data.load('taggers/dutch.pickle') 
chunker = nltk.data.load('chunkers/dutch.pickle') 

str_tags = tagger.tag(nltk.word_tokenize(str)) 
print str_tags 

str_chunks = chunker.parse(str_tags) 
print str_chunks 

そして、このプログラムの出力:

[('Christiane', u'N'), ('heeft', u'V'), ('een', u'Art'), ('lam', u'Adj'), ('.', u'Punc')] 
(S Christiane/N heeft/V een/Art lam/Adj ./Punc) 

私は名前付きエンティティとして検出されるようにクリスティを期待していました。 助けてください?

+0

は何が起こります文の途中に「クリスチャン」が現れたら? –

+0

@larsmansエンティティもありません。私は訓練コーパスからの文で試してみましたが、運はありません。私はconll2002コーパス(ned.train)のtrain_chunker.pyを使用しました – user1491915

+0

train_chunker.pyの使い方を正確に表示できますか? http://text-processing.com/demo/tag/の私のデモは、もちろん、2002年のtrain_chunkerを使っていたので、トレーニングの議論に違いがあるはずです。 – Jacob

答えて

7

conll2002コーパスにはスペイン語とオランダ語の両方のテキストがありますので、python train_chunker.py conll2002 --fileids ned.trainのようにfileidsパラメータを必ず使用してください。スペイン語とオランダ語の両方のトレーニングは、結果が悪くなります。

デフォルトのアルゴリズムは、タグ付きのChunkerで、conll2002ではうまく機能しません。その代わり、NaiveBayesのような分類器ベースチャンカを使用するので、完全なコマンドは次のようになります(と私は結果チャンカは「PER」として「クリスティ」を認識しないことを確認しました):

python train_chunker.py conll2002 --fileids ned.train --classifier NaiveBayes --filename ~/nltk_data/chunkers/conll2002_ned_NaiveBayes.pickle

+0

問題の問題が再現されました。タガーとチャージャーがned.trainでのみトレーニングされていても発生します。さらに、チャンクは、金のPOSタグを備えた訓練コーパスからの文でさえ、いかなるNEも識別することができないようである。 – Qnan

+0

興味深い...それはそれを動作させる。ありがとう、@ジャコブ。 – Qnan

関連する問題