2011-12-03 7 views
4

私はこのコードを使用している文章をタグ付けしません:pos_tagは正しく

# Step 1 : TOKENIZE 
from nltk.tokenize import * 
words = word_tokenize(text) 

# Step 2 : POS DISAMBIG 
from nltk.tag import * 
tags = pos_tag(words) 

は、2つの文にタグを付ける: ジョンは非常にいいです。ジョンはとてもいいですか?

最初の文のJohnはNNでしたが、2番目の文はVBでした。だから、どうやってpos-tag関数を修正することができますか?

変更質問:

私はここNLTKのタガーhttp://text-processing.com/demo/tag/のデモを見てきました。私はオプション "英語タガヤ& Chunckers:Treebank"または "Brown Tagger"を試したときに、正しいタグを取得します。それで、Brown Taggerを訓練しなくてもどのように使うのですか?

+0

参照http://stackoverflow.com/questions/30821188/python-ntlk-pos-tag-not-returnig-the-correct-pos – alvas

答えて

4

短い回答:できません。やや長めの答え:手動で作成したUnigramTaggerを使用して特定の単語を無効にすることができます。この方法の詳細については、custom tagging with nltkの私の答えを参照してください。

+0

私はtrain_tagger.pyを使用してtext-processing.comのすべてのタガを訓練しましたhttps://github.com/japerk/nltk-trainerのスクリプト。だから、あなたは自分でタッグを鍛えることができます。もしタガーを購入することに興味があるなら、http://text-processing.com/contact/で私に連絡してください。 – Jacob

0

NLTK v3.0を使用してバグを再現しようとしました。今はnltk.pos_tag()が修正されたと思います。 #Jacobが言及したように、Brown Corpusを使って、次のように(Pythonでnltk)タガーを鍛えることができます。

from nltk.corpus import brown 
train_sents = brown.tagged_sents() 
unigram_tagger = nltk.UnigramTagger(train_sents) 
tokens=nltk.word_tokenize("Is John very nice?") 
tagged=unigram_tagger.tag(tokens) 
tagged 

ただし、タグセットは、タグャーを訓練するために使用されたコーパスに依存します。 nltk.pos_tag()のデフォルトのタガーはPenn Treebank Tag Setを使用します。