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

Tagging a single word with the nltk pos tagger tags each letter instead of the word

我正在尝试使用 nltk pos 标记器来标记单个词:

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

但输出是这样的:

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

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

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

标注器处理单词列表。要将字符串转换为列表,只需使用

word_list = [word]

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

至于只标注一个词是否成功,你应该看看4.3节中提到的lookup tagger here。 nltk 使用的 pos_tag 比单词查找标注器更复杂,但它确实使用了一个作为过程的一部分,因此您应该会看到不错的结果。

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')]

Return一个词的POS标签

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