我想根据任何形式的名词的存在来搜索句子。当我浏览非常大的文本并搜索名词的所有不同的POS标签排列 - 即NN,NNS,NNPS,NNS(以及可能的其他)时,处理成为一个问题。因此,我的问题是NN是否是所有其他名词变体的基本形式,以及我是否可以只搜索NN。这同样适用于副词,代词和动词。 POS标签是否有基本形式?
答案 0 :(得分:1)
POS标签没有基本表格。更糟糕的是,对于英语的POS标签没有普遍的共识。但是,有些标准确实有一定的模式,而且它们通常都是相当小的集合。
根据您提供的列表(NN,NNS,NNPS,NNS),您可能正在使用Penn Treebank(PTB)集。它也是最常用的之一。 PTB中的所有名词标签都以' NN'开头。
您可以在此处找到PTB中的POS标签列表:https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
为了比较,这里是Brown POS标记集:http://en.wikipedia.org/wiki/Brown_Corpus#Part-of-speech_tags_used。在这种情况下,它们并非都是由NN开始的。
答案 1 :(得分:1)
NLTK pos_tag
使用的PennTree Bank(PTB)标记集对于名词和动词来说有些分层。您可以使用标记的第一个字符来查看它是名词还是动词。
试试这个:
>>> from nltk import word_tokenize, pos_tag
>>> sent = 'this is a foo bar sentence with many nouns talking to blah blah black sheep.'
>>> pos_tag(word_tokenize(sent))
[('this', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('foo', 'NN'), ('bar', 'NN'), ('sentence', 'NN'), ('with', 'IN'), ('many', 'JJ'), ('nouns', 'NNS'), ('talking', 'VBG'), ('to', 'TO'), ('blah', 'VB'), ('blah', 'NN'), ('black', 'NN'), ('sheep', 'NN'), ('.', '.')]
>>> token_pos = []
>>> for token, pos in pos_tag(word_tokenize(sent)):
... if pos[0] in ['N', 'V']:
... pos = 'noun' if pos[0] == 'N' else 'verb'
... token_pos.append((token, pos))
...
>>> token_pos
[('this', 'DT'), ('is', 'verb'), ('a', 'DT'), ('foo', 'noun'), ('bar', 'noun'), ('sentence', 'noun'), ('with', 'IN'), ('many', 'JJ'), ('nouns', 'noun'), ('talking', 'verb'), ('to', 'TO'), ('blah', 'verb'), ('blah', 'noun'), ('black', 'noun'), ('sheep', 'noun'), ('.', '.')]
>>> [i for i in token_pos if i[1] == 'noun']
[('foo', 'noun'), ('bar', 'noun'), ('sentence', 'noun'), ('nouns', 'noun'), ('blah', 'noun'), ('black', 'noun'), ('sheep', 'noun')]
>>> [i for i in token_pos if i[1] == 'verb']
[('is', 'verb'), ('talking', 'verb'), ('blah', 'verb')]
答案 2 :(得分:1)
您还可以使用以下代码简化斯坦福部分语音标签:
text = nltk.word_tokenize("And now for something completely different")
posTagged = pos_tag(text)
print posTagged
simplifiedTags = [(word, map_tag('en-ptb', 'universal', tag)) for word, tag in posTagged]
print(simplifiedTags)
哪个收益率:
[('And', u'CONJ'), ('now', u'ADV'), ('for', u'ADP'), ('something', u'NOUN'), ('completely', u'ADV'), ('different', u'ADJ')]
在SO上通过this question