Как получить лучшие результаты, используя NLTK pos-тег - PullRequest
7 голосов
/ 16 ноября 2011

Я только учусь nltk, используя Python. Я пытался сделать pos_tag на разных предложениях. Но полученные результаты не являются точными. Как я могу импровизировать результаты?

broke = NN
flimsy = NN
crap = NN

Также я получаю много дополнительных слов, относящихся к категории NN. Как я могу отфильтровать их, чтобы получить лучшие результаты .?

1 Ответ

10 голосов
/ 16 ноября 2011

Дайте контекст, там вы получили эти результаты. В качестве примера я получаю другие результаты с помощью pos_tag для контекстной фразы «Они сломали неуклюжую чушь»:

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

[(«Они», «PRP»), («сломался», «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

Дайте мне знать, если это улучшит ваши результаты.

...