词性标注
词性是对词语分类的一种方式。现代汉语词汇大致可以分为名词、动词、形容词、数词、量词、代词、介词、副词、连词、感叹词、助词和拟声词等12种,英文词汇可以分为名词、形容词、动词、代词、数词、副词、介词、连词、冠词和感叹词等10种。
词性标注,又称词类标注,是指为分词结果中的每个单词标注一个正确的词性,也就是说确定每个单词是名词、动词、形容词或其它词性的过程。比如在“I love itcast”中,“I”为人称代词,“love”为动词,“itcast”为名词。
NLTK库中使用不同的约定来标记单词,为了帮助大家快速地了解,接下来,通过一张表格来列举通用的词性标注集,具体如表1所示。
表1 通用词性标注集
标签 | 描述 | 示例 |
---|---|---|
JJ | 形容词 | special,high,good |
RB | 副词 | quickly,simply,hardly |
CC | 条件连词 | and,or |
DT | 限定词 | the,a |
MD | 情态动词 | could,should |
NN | 单数名词 | home,time,year |
NNS | 复数名词 | birds,dogs,flowers |
NNP | 专有名词单数 | Africa,April,Washington |
CD | 基本数量词 | twenty-one,second,1997 |
PRP | 人称代词 | I,you,he,she |
PRP$ | 所有格代词 | my,your,his,her |
IN | 介词 | on,of,at,by,under |
TO | 不定词 | how to,what to do |
UH | 感叹词 | ah,ha,wow,oh |
VB | 动词原型 | see,listen,speak,run |
VBD | 动词过去时 | did,told,made |
VBG | 动名词 | going,working,making |
VBN | 动词过去分词 | given,taken,begun |
WDT | WH限定词 | which,whatever |
在NLTK中,如果希望给单词标注词性,则需要先确保已经下载了averaged_perceptron_tagger模块,当下载了这个模块后,就可以调用pos_tag()函数进行标注,示例代码如下。
In [8]: words = nltk.word_tokenize('Python is a structured and powerful
object-oriented programming language.')
# 为列表中的每个单词标注词性
nltk.pos_tag(words)
Out[8]: [('Python', 'NNP'), ('is', 'VBZ'), ('a', 'DT'), ('structured', 'JJ'),
('and', 'CC'), ('powerful', 'JJ'),('object-oriented', 'JJ'),
('programming', 'NN'),('language', 'NN'), ('.', '.')]
上述示例输出了一个列表,该列表里面包含了多个元组,其中元组的第一个元素为划分的单词,第二个元素为标注的词性。例如,第一个元组('Python', 'NNP')中,“Python”是一个专有名词,所以词性被标注为“NNP”。