我一直在努力理解为什么会发生这种情况,但希望有人能够解释一下。我正在尝试标记以下文本:
ae0.475 X mod
ae0.842 X mod
ae0.842 X mod
ae0.775 X mod
使用以下代码:
import nltk
file = open("test", "r")
for line in file:
words = line.strip().split(' ')
words = [word.strip() for word in words if word != '']
tags = nltk.pos_tag(words)
pos = [tags[x][1] for x in range(len(tags))]
key = ' '.join(pos)
print words, " : ", key
我正在得到以下结果:
['ae0.475', 'X', 'mod'] : NN NNP NN
['ae0.842', 'X', 'mod'] : -NONE- NNP NN
['ae0.842', 'X', 'mod'] : -NONE- NNP NN
['ae0.775', 'X', 'mod'] : NN NNP NN
我不明白这是为什么。有人知道这种不一致的原因吗?我对词性标注的准确性并不是非常在意,因为我试图提取一些模板,但它似乎在不同的情况下使用不同的标签来表示一个看起来“几乎”相同的单词。
作为解决方案,我用1替换了所有数字,问题得到了解决:
['ae1.111', 'X', 'mod'] : NN NNP NN
['ae1.111', 'X', 'mod'] : NN NNP NN
['ae1.111', 'X', 'mod'] : NN NNP NN
['ae1.111', 'X', 'mod'] : NN NNP NN
但我很好奇为什么在我的第一种情况下,它会给实例打上不同的标签。有什么建议吗?