如何使用NLTK获得更好的词性标注结果

7 投票
1 回答
5014 浏览
提问于 2025-04-17 06:24

我正在学习用Python的nltk库。我尝试对一些句子进行词性标注,但得到的结果不太准确。我该怎么做才能改善这些结果呢?

broke = NN
flimsy = NN
crap = NN

另外,我发现很多多余的词被错误地标记为名词(NN)。我该如何过滤掉这些词,以获得更好的结果呢?

1 个回答

10

给你一些背景,说明你是如何得到这些结果的。比如,我在处理短语“They broke flimsy crap”时,得到了不同的结果:

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

告诉我这样做是否能改善你的结果。

撰写回答