如何使用NLTK pos标记获得更好的结果

7

我正在学习使用Python的nltk。我尝试对各种句子进行pos_tag,但是得到的结果不准确。我该如何改进结果?

broke = NN
flimsy = NN
crap = NN

另外,我获取了很多额外的词汇,被归类为NN。我如何过滤掉它们以获得更好的结果?

1
请查看以下链接:https://dev59.com/DV0Z5IYBdhLWcg3w_0l8 - alvas
1个回答

10

给出获取这些结果的上下文。例如,我在上下文短语“他们打破了脆弱的东西”上使用pos_tag得到了其他结果。

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

[('They', 'PRP'), ('broke', 'VBP'), ('flimsy', 'JJ'), ('crap', '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

如果这个方法改善了你的结果,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接