それは、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 は名詞ですが、デフォルトのトークナイザーでは fish は形容詞です。使用するトークナイザーに応じて、解析が異なり、異なる解析ツリー構造になります。