7

私はPythonを使ってnltkを学んでいます。いろいろな文章で pos_tag をやってみました。しかし、得られた結果は正確ではありません。結果を即興で処理するにはどうすればよいですか?

broke = NN
flimsy = NN
crap = NN

また、NN として分類されている余分な単語がたくさんあります。これらを除外してより良い結果を得るにはどうすればよいですか?

4

1 に答える 1

10

コンテキストを指定すると、これらの結果が得られました。例として、コンテキスト フレーズ「They break climsy crap」で pos_tag を使用して他の結果を取得しています。

import nltk
text=nltk.word_tokenize("They broke flimsy crap")
nltk.pos_tag(text)

[('They', 'PRP'), ('broke', 'VBP'), ('薄っぺらな', 'JJ'), ('がらくた', 'NN')]

とにかく、多くの単語が誤って 'NN' として分類されていると思われる場合は、'NN' とマークされている単語に特別に別の手法を適用できます。たとえば、適切なタグ付きコーパスをいくつか取得し、トリグラム タガーで分類できます。(実際には、著者がhttp://nltk.googlecode.com/svn/trunk/doc/book/ch05.htmlでバイグラムを使用して行うのと同じ方法で)。

このようなもの:

pos_tag_results=nltk.pos_tag(your_text) #tagged sentences with pos_tag
trigram_tagger=nltk.TrigramTagger(tagged_corpora) #build trigram tagger based on your tagged_corpora
trigram_tag_results=trigram_tagger(your_text) #tagged sentences with trigram tagger
for i in range(0,len(pos_tag_results)):
    if pos_tag_results[i][1]=='NN':
        pos_tag_results[i][1]=trigram_tag_results[i][1]#for 'NN' take trigram_tagger instead

それがあなたの結果を改善するかどうか教えてください。

于 2011-11-16T11:24:17.997 に答える