我正在尝试使用nltk词性标注器对单词进行标记:
word = "going"
pos = nltk.pos_tag(word)
print pos
但是输出结果是这样的:
[('g', 'NN'), ('o', 'VBD'), ('i', 'PRP'), ('n', 'VBP'), ('g', 'JJ')]
它标记的是每个字母而不仅仅是一个单词。
我该怎么做才能标记整个单词?
我正在尝试使用nltk词性标注器对单词进行标记:
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')]
pos
标记旨在根据单词的初始字符和其在句子中的位置对其进行标记。这就是为什么标记由多个字符组成的原因。 - Mazdaknltk.tag.pos_tag('a sentence'.split())
而不是nltk.tag.pos_tag(['a sentence'])
,因为后者会产生一个单一的标签。 - Alaa M.pos_tag
接受任何可迭代对象,而不仅仅是列表。它会遍历该可迭代对象中的项(字符串中的字符,列表中的项),并尝试标记这些项。我相信您已经意识到了这一点,但我想为那些想知道输出原因的人提供更多的澄清。 - JoeF>>> 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]
然后在 word_list
上使用 pos 标注器。请注意,如果你有多个单词,应该先在字符串上运行 nltk.word_tokenize
。
至于标记单个词语的成功,你应该查看第 4.3 节中提到的查找标记器 here。nltk 使用的 pos_tag
比一个单词的查找标记器更复杂,但它确实在过程中使用了一个单词作为其中的一部分,因此你应该看到不错的结果。