我正在学习使用Python的nltk。我尝试对各种句子进行pos_tag,但是得到的结果不准确。我该如何改进结果?
broke = NN
flimsy = NN
crap = NN
另外,我获取了很多额外的词汇,被归类为NN。我如何过滤掉它们以获得更好的结果?
我正在学习使用Python的nltk。我尝试对各种句子进行pos_tag,但是得到的结果不准确。我该如何改进结果?
broke = NN
flimsy = NN
crap = NN
给出获取这些结果的上下文。例如,我在上下文短语“他们打破了脆弱的东西”上使用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
如果这个方法改善了你的结果,请告诉我。