gpt4 book ai didi

python - 为什么 NLTK 的 PoS 标注器对单词中的每个字母进行标注,而不是对每个单词进行标注?

转载 作者:行者123 更新时间:2023-11-30 22:12:04 28 4
gpt4 key购买 nike

假设我有这句话:我是一个男孩。我想找出句子中每个单词的词性。这是我的代码:

import nltk
sentence = 'I am a good boy'
for word in sentence:
print(word)
print(nltk.pos_tag(word))

但这会产生以下输出:

I
[('I', 'PRP')]

[(' ', 'NN')]
a
[('a', 'DT')]
m
[('m', 'NN')]

[(' ', 'NN')]
a
[('a', 'DT')]

[(' ', 'NN')]
g
[('g', 'NN')]
o
[('o', 'NN')]
o
[('o', 'NN')]
d
[('d', 'NN')]

[(' ', 'NN')]
b
[('b', 'NN')]
o
[('o', 'NN')]
y
[('y', 'NN')]

所以,我尝试这样做:

sentence = 'I am a good boy'
for word in sentence.split(' '):
print(word)
print(nltk.pos_tag(word))

这会产生以下输出:

I
[('I', 'PRP')]
am
[('a', 'DT'), ('m', 'NN')]
a
[('a', 'DT')]
good
[('g', 'NN'), ('o', 'MD'), ('o', 'VB'), ('d', 'NN')]
boy
[('b', 'NN'), ('o', 'NN'), ('y', 'NN')]

为什么它要查找每个字母而不是每个单词的 PoS?我该如何解决这个问题?

最佳答案

nltk.pos_tag 将列表或类似列表的内容作为参数,并标记其中的每个元素。因此,在第二个示例中,它将每个字符串(即每个单词)拆分为字母,就像第一个示例中将句子拆分为字母一样。当您传递通过拆分句子获得的整个列表时,它会起作用:

>>> nltk.pos_tag(sentence.split(" "))
[('I', 'PRP'), ('am', 'VBP'), ('a', 'DT'), ('good', 'JJ'), ('boy', 'NN')]

Per documentation ,您通常会传入 NLTK 标记化返回的内容(这是单词/标记的列表)。

关于python - 为什么 NLTK 的 PoS 标注器对单词中的每个字母进行标注,而不是对每个单词进行标注?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51239434/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com