用nltk-pos标记器标记单个单词会标记每个字母而不是单词



我试图用nltk-pos标记器标记一个单词:

word = "going"
pos = nltk.pos_tag(word)
print pos

但结果是:

[('g', 'NN'), ('o', 'VBD'), ('i', 'PRP'), ('n', 'VBP'), ('g', 'JJ')]

它标记的是每个字母,而不仅仅是一个单词。

我该怎么做才能让它标记单词?

nltk.tag.pos_tag接受一个令牌列表,分离并标记其元素。因此,你需要把你的单词放在一个可迭代的类似列表中:

>>> nltk.tag.pos_tag(['going'])
[('going', 'VBG')]
>>> word = 'going'
>>> word = nltk.word_tokenize(word)
>>> l1 = nltk.pos_tag(word)
>>> l1
[('going', 'VBG')]

返回一个单词的POS标签

nltk.pos_tag(["going"])
----->[('going', 'VBG')]

标记器处理单词列表。要将字符串转换为列表,只需使用类似的东西

word_list = [word]

然后在CCD_ 3上使用位置标记器。请注意,如果您有多个单词,则应首先对字符串运行nltk.word_tokenize

至于只标记一个单词的成功,您应该看看第4.3节中提到的查找标记器。nltk使用的pos_tag比一个单词查找标记器更复杂,但它确实使用了一个作为过程的一部分,所以您应该会看到正常的结果。

最新更新