在NLTK pos_tag中,为什么“你好”被归类为名词?

时间:2011-05-09 03:33:37

标签: python nlp nltk

我试过

text = nltk.word_tokenize("hello, my name is John")
words = nltk.pos_tag(text)

for w in words:
    print "%s = %s" % (w[0], w[1])

我得到了:

hello = NN
, = ,
my = PRP$
name = NN
is = VBZ
John = NNP

3 个答案:

答案 0 :(得分:9)

根据Penn Treebank标签集, hello 绝对是一个感叹词,并且始终标记为UH。您遇到的问题是,NLTK附带的标记最有可能是在Penn Treebank的华尔街日报部分免费提供的,但不幸的是,您包含的单词你好并且只有三个单词标记为UH(感叹词)。如果你想标记语音文本,你需要在整个宾州树库上训练你的标记器,其中包括300万字的英语口语。

顺便说一句,NLTK标记器并不总是将 hello 称为名词 - 尝试标记“不要问我!”或者“他说你好”。

答案 1 :(得分:2)

NLTK使用自己的标记器来标记词性。

但准确度因文本而异。这是因为使用NLTK本身提供的语料库训练了标记器。语料库可以是任何东西。

语料库与您的文本不相似,然后标记器将无法标记您的文本,因为上下文,样式都非常不同。

如果你有时间,你可以训练自己的标记。

计算机不是人类,计算机只是做我们告诉他们要做的事情。因此,为了使其正确完成,您应该正确地教它们以获得最佳结果。

答案 2 :(得分:2)

查看任何字典,你会发现你好被定义为“名词”(例如朗文)。它通常被描述为“感叹号”或“感叹号”,但标签“名词”并不正确。