这取决于如何给 POS 标注器输入。例如句子:“女人需要男人,就像鱼需要自行车一样”
如果您使用默认的 nltk 词标记器和正则表达式标记器,则值将不同。
import nltk
from nltk.tokenize import RegexpTokenizer
TOKENIZER = RegexpTokenizer('(?u)\W+|\$[\d\.]+|\S+')
s = "a woman needs a man like a fish needs a bicycle"
regex_tokenize = TOKENIZER.tokenize(s)
default_tokenize = nltk.word_tokenize(s)
regex_tag = nltk.pos_tag(regex_tokenize)
default_tag = nltk.pos_tag(default_tokenize)
print regex_tag
print "\n"
print default_tag
输出如下:
Regex Tokenizer:
[('a', 'DT'), (' ', 'NN'), ('woman', 'NN'), (' ', ':'), ('needs', 'NNS'), (' ', 'VBP'), ('a', 'DT'), (' ', 'NN'), ('man', 'NN'), (' ', ':'), ('like', 'IN'), (' ', 'NN'), ('a', 'DT'), (' ', 'NN'), ('fish', 'NN'), (' ', ':'), ('needs', 'VBZ'), (' ', ':'), ('a', 'DT'), (' ', 'NN'), ('bicycle', 'NN')]
Default Tokenizer:
[('a', 'DT'), ('woman', 'NN'), ('needs', 'VBZ'), ('a', 'DT'), ('man', 'NN'), ('like', 'IN'), ('a', 'DT'), ('fish', 'JJ'), ('needs', 'NNS'), ('a', 'DT'), ('bicycle', 'NN')]
在 Regex Tokenizer 中,fish 是一个名词,而在默认的 tokenizer 中,fish 是一个形容词。根据使用的分词器,解析不同导致解析树结构不同。