我正在使用 Python 学习 nltk。我尝试在各种句子上做 pos_tag。但得到的结果并不准确。我如何即兴创作结果?
broke = NN
flimsy = NN
crap = NN
我也得到了很多额外的词被归类为 NN。我怎样才能过滤掉这些以获得更好的结果。?
最佳答案
给出上下文,你就得到了这些结果。举个例子,我在上下文短语“They broke climsy crap”上使用 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
如果它能改善您的结果,请告诉我。
关于python - 如何使用 NLTK pos 标签获得更好的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8146748/