Дайте контекст, там вы получили эти результаты. В качестве примера я получаю другие результаты с помощью 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
Дайте мне знать, если это улучшит ваши результаты.