我使用了以下代码:
# Step 1 : TOKENIZE
from nltk.tokenize import *
words = word_tokenize(text)
# Step 2 : POS DISAMBIG
from nltk.tag import *
tags = pos_tag(words)加上两句话:约翰人很好。约翰人很好吗?
John在第一句话中是NN,而在第二句话中是VB!那么,我们如何在不训练后退标记器的情况下纠正pos_tag函数呢?
修改后的问题:
我在http://text-processing.com/demo/tag/上看过NLTK标记器的演示。当我尝试"English Taggers &Chuncker: Treebank“或"Brown Tagger”选项时,我得到了正确的标签。那么如何在不经过训练的情况下使用Brown Tagger呢?
发布于 2011-12-04 06:23:54
简短的回答:你不能。稍长一点的回答:你可以使用手动创建的UnigramTagger覆盖特定的单词。有关此方法的详细信息,请参阅我对custom tagging with nltk的回答。
发布于 2014-05-06 02:17:02
我尝试使用NLTK v3.0重现该bug。我想现在nltk.pos_tag()已经解决了。正如#雅各布提到的,您可以使用Brown语料库来训练标记器(python中的nltk),如下所示;
from nltk.corpus import brown
train_sents = brown.tagged_sents()
unigram_tagger = nltk.UnigramTagger(train_sents)
tokens=nltk.word_tokenize("Is John very nice?")
tagged=unigram_tagger.tag(tokens)
tagged但请注意,标签集取决于用于训练标签者的语料库。nltk.pos_tag()的默认标记器使用Penn Treebank Tag Set。
https://stackoverflow.com/questions/8365557
复制相似问题