2016-07-15 6 views
2

私は単語のPOSタグを取得するためにNLTKのデフォルトタガーで働いていますが、私は期待通りの結果を得ていない午前:カスタムタガーNLTK 3

>>> nltk.pos_tag(nltk.tokenize.word_tokenize("I want a watch")) 
[('I', 'PRP'), ('want', 'VBP'), ('a', 'DT'), ('watch', 'NN')] 
>>> nltk.pos_tag(nltk.tokenize.word_tokenize("Lets watch a movie")) 
[('Lets', 'NNS'), ('watch', 'VBP'), ('a', 'DT'), ('movie', 'NN')] 

あなたが上見ることができるように、pos_tag機能が正しくタグ単語watch。しかし、以下の場合には:

>>> nltk.pos_tag(nltk.tokenize.word_tokenize("I want to read a book")) 
[('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('read', 'VB'), ('a', 'DT'), ('book', 'NN')] 

>>> nltk.pos_tag(nltk.tokenize.word_tokenize("I want to book a ticket")) 
[('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('book', 'NN'), ('a', 'DT'), ('ticket', 'NN')] 

それは間違って単語bookのタグを予測します。 私はカスタムタガーを作ることができますが、タガを1単語だけ作成する方が好きではありません。私は単語bookのためのタガーの精度を向上させるために探しています。私はこのanswerを参照しましたが、最新のバージョンはメソッドnltk.tag._POS_TAGGERを持っていないようです。

この場合、回避策はありますか?

+0

私はそれが正しく私のマシン上の ' 'VB''(NLTK3)としてタグ付けされています。これをチェックする[Python NLTK pos_tagが正しい品詞タグを返さない](http://stackoverflow.com/questions/30821188/python-nltk-pos-tag-not-returning-the-correct-part-of-音声タグ) –

+0

@MosesKoledoye NLTKが完璧ではないというご意見に同意します。しかし、私は既存のアルゴリズムの重みを修正して、 "book"という単語のタグを正しく割り当てるようにしたい。 –

+0

FWIW、Stanford POS tagger(遅い)は私にずっと良い結果をもたらした。デフォルトのタガーは "クイックブラウンキツネが怠け者の犬の上を飛び越えた"ことも正しく処理できません。 – Ares

答えて

1

NLTK pos_tagは、デフォルトでPerceptronTaggerを使用します。しかし、他のタギーザをそれぞれのデータセットで訓練したものを使用することができます。以下の場合には

treebank pos taggerを使用した。

import nltk 

tagger = nltk.data.load('taggers/maxent_treebank_pos_tagger/english.pickle') 
t = tagger.tag(nltk.tokenize.word_tokenize("I want to book a ticket")) 
print(t) 
# [('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('book', 'VB'), ('a', 'DT'), ('ticket', 'NN')] 
#               ^^ rightly tagged as verb 

それでも望ましい結果を得ることはありません場合は、タグ付けを変更することができます。

1つはまた予想精度のアイデアを得るためにコーパスにタグ付けを評価することができます。

>>> corpus = nltk.corpus.treebank.tagged_sents() 
>>> tagger.evaluate(corpus) 
0.9956891414041082 
+0

あなたの答えは十分だと思われます。既存の訓練されたタガーを訓練する方法はありますか?あなたの答えでは、事前にトレーニングされたツリーバンクのpos_taggerを別のコーパスでさらに訓練できますか? –

+0

@HiteshPaulこの回答があなたの問題を解決した場合、あなたはそれを受け入れることを検討するかもしれません。タガーの精度を向上させるための回避策が必要ですが、これは元の質問の一部ではありません。 –

+0

「おい、私のためにショーを予約しますか?間違ったタグを付けます。事前に訓練されたタガーを訓練する方法はありますか? –