词性标注

转载自:http://www.hankcs.com/nlp/part-of-speech-tagging.html

词性标注(Part-of-Speech tagging 或POS tagging),又称词类标注或者简称标注,是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或其他词性的过程。在汉语中,词性标注比较简单,因为汉语词汇词性多变的情况比较少见,大多词语只有一个词性,或者出现频次最高的词性远远高于第二位的词性。据说,只需选取最高频词性,即可实现80%准确率的中文词性标注程序。

利用HMM即可实现更高准确率的词性标注,本文旨在介绍HanLP中的词性标注模块。

开源项目

本文代码已集成到HanLP中开源:http://www.hankcs.com/nlp/hanlp.html

训练

HanLP中使用了一阶隐马模型,在这个隐马尔可夫模型中,隐状态是词性,显状态是单词。

语料库

训练语料采用了2014人民日报切分语料:

  1. 人民网/nz 11日/讯/ng 据/《/[纽约/nsf 时报/n]/nz 》/报道/,/美国/nsf 华尔街/nsf 股市/在/2013年/的/ude1 最后/一天/mq 继续/上涨/vn ,/和/cc [全球/股市/n]/nz 一样/uyy ,/都/以/[最高/纪录/n]/nz 或/接近/[最高/纪录/n]/nz 结束/本/rz 年/qt 的/ude1 交易/vn 。/
  2. 《/[纽约/nsf 时报/n]/nz 》/报道/说/,/标普/nz 500/指数/今年/上升/vi 29.6%/m ,/为/1997年/以来/的/ude1 最大/gm 涨幅/;/[道琼斯/ntc 工业/平均/指数/n]/nz 上升/vi 26.5%/m ,/为/1996年/以来/的/ude1 最大/gm 涨幅/;/[纳斯/nrf 达/克/q]/nz 上涨/vi 38.3%/m 。/
  3. 就/1231日/来说/uls ,/由于/就业/vn 前景/看好/和/cc [经济/增长/v]/nz 明年/可能/加速/vn ,/消费者/信心/上升/vi 。/工商/协进会/nis (/ConferenceBoard/)/报告/,/12月/消费者/信心/上升/vi 到/78.1/,/明显/高于/11月/的/ude1 72/。/
  4. 另据/nz 《/[华尔街/nsf 日报/n]/nz 》/报道/,/2013年/是/vshi 1995年/以来/[美国/nsf 股市/n]/nz 表现/最好/的/ude1 一年/mq 。/这/rzv 一年/mq 里/,/投资/[美国/nsf 股市/n]/nz 的/ude1 明智/做法/是/vshi 追/着/uzhe “/傻钱/nz ”/跑/。/所谓/的/ude1 “/傻钱/nz ”/策略/,/其实/就是/买入/vn 并/cc 持有/美国/nsf 股票/这样/rzv 的/ude1 普通/组合/vn 。/这个/rz 策略/要/比/[对冲/vn 基金/n]/nz 和/cc 其它/rz 专业/投资者/nnd 使用/的/ude1 更为/复杂/的/ude1 投资/vn 方法/效果/好/得/ude3 多/。/(/老/任/)/w

单词词性频次词典

统计所有单词的各个词性的出现频次,得到核心词典:

  1.  v 3622 vn 598
  2. 爱因斯坦 nrf 20
  3. 爱国 a 178
  4. 爱国主义 n 68
  5. 飙升 v 200 vn 8
  6. 顺风 vi 27 vn 2
  7. 顺风吹火 i 1
  8. 顺风球 n 1
  9. 顺风耳 n 4
  10. 顺风车 nz 126
  11.  v 217 vg 151 vn 106
  12. 购书 v 7 vn 5
  13. 购买 v 3875 vn 637
  14. 购买人 n 7
  15. 购买力 n 42
  16. 购买户 n 1
  17. 购买欲 n 1
  18. 购买群 n 1
  19. 购买者 n 93
  20. 购买证 n 1
  21. 购入 v 115 vn 18
  22. ……

从词典可以看出,汉语词汇的确词性单一,且存在歧义的词性多集中在“动词v”和“名动词vn”上。另外,我拿到的2014人民日报切分语料感觉没有经过严格的人工校对,许多单词词性单一,且存在不少错误。也许等我有机会(经济实力或学术背景),可以拿更高质量的语料来训练。所幸HanLP同时维护了一个通用的语料处理包,暂且埋下伏笔吧。

转移矩阵

统计每个标签的转移频次,得到如下转移矩阵:

事实上,完整的转移矩阵非常大,请下载观看:词性标注 转移矩阵.xls

标注

利用上述转移矩阵和核心词典词频可以计算出HMM中的初始概率、转移概率、发射概率,进而完成求解。关于维特比算法和实现请参考《通用维特比算法的Java实现》。

测试

以“我的爱就是爱自然语言处理”为例:

  1.         String text = "我的爱就是爱自然语言处理";
  2.         Segment segment = new Segment();
  3.  
  4.         System.out.println("未标注:" + segment.seg(text));
  5.         segment.enableSpeechTag(true);
  6.         System.out.println("标注后:" + segment.seg(text));

输出

未标注:[我/rr, 的/ude1, 爱/v, 就是/v, 爱/v, 自然语言/gm, 处理/vn]

标注后:[我/rr, 的/ude1, 爱/vn, 就是/v, 爱/v, 自然语言/gm, 处理/vn]

前后两个“爱”的词性并不相同,前者是名动词,后者是动词。

再比如

未标注:[教授/nnt, 正在/d, 教授/nnt, 自然语言/gm, 处理/vn, 课程/n]

标注后:[教授/nnt, 正在/d, 教授/v, 自然语言/gm, 处理/vn, 课程/n]

HanLP的词性标注初见成效。

HanLP词性标注集

HanLP使用的HMM词性标注模型训练自2014年人民日报切分语料,随后增加了少量98年人民日报中独有的词语。所以,HanLP词性标注集兼容《ICTPOS3.0汉语词性标记集》,并且兼容《现代汉语语料库加工规范——词语切分与词性标注》。

HanLP词性标注集
a
          形容词
 
ad
          副形词
 
ag
          形容词性语素
 
al
          形容词性惯用语
 
an
          名形词
 
b
          区别词
 
begin
          仅用于始##始
 
bg
          区别语素
 
bl
          区别词性惯用语
 
c
          连词
 
cc
          并列连词
 
d
          副词
 
dg
          辄,俱,复之类的副词
 
dl
          连语
 
e
          叹词
 
end
          仅用于终##终
 
f
          方位词
 
g
          学术词汇
 
gb
          生物相关词汇
 
gbc
          生物类别
 
gc
          化学相关词汇
 
gg
          地理地质相关词汇
 
gi
          计算机相关词汇
 
gm
          数学相关词汇
 
gp
          物理相关词汇
 
h
          前缀
 
i
          成语
 
j
          简称略语
 
k
          后缀
 
l
          习用语
 
m
          数词
 
mg
          数语素
 
Mg
          甲乙丙丁之类的数词
 
mq
          数量词
 
n
          名词
 
nb
          生物名
 
nba
          动物名
 
nbc
          动物纲目
 
nbp
          植物名
 
nf
          食品,比如“薯片”
 
ng
          名词性语素
 
nh
          医药疾病等健康相关名词
 
nhd
          疾病
 
nhm
          药品
 
ni
          机构相关(不是独立机构名)
 
nic
          下属机构
 
nis
          机构后缀
 
nit
          教育相关机构
 
nl
          名词性惯用语
 
nm
          物品名
 
nmc
          化学品名
 
nn
          工作相关名词
 
nnd
          职业
 
nnt
          职务职称
 
nr
          人名
 
nr1
          复姓
 
nr2
          蒙古姓名
 
nrf
          音译人名
 
nrj
          日语人名
 
ns
          地名
 
nsf
          音译地名
 
nt
          机构团体名
 
ntc
          公司名
 
ntcb
          银行
 
ntcf
          工厂
 
ntch
          酒店宾馆
 
nth
          医院
 
nto
          政府机构
 
nts
          中小学
 
ntu
          大学
 
nx
          字母专名
 
nz
          其他专名
 
o
          拟声词
 
p
          介词
 
pba
          介词“把”
 
pbei
          介词“被”
 
q
          量词
 
qg
          量词语素
 
qt
          时量词
 
qv
          动量词
 
r
          代词
 
rg
          代词性语素
 
Rg
          古汉语代词性语素
 
rr
          人称代词
 
ry
          疑问代词
 
rys
          处所疑问代词
 
ryt
          时间疑问代词
 
ryv
          谓词性疑问代词
 
rz
          指示代词
 
rzs
          处所指示代词
 
rzt
          时间指示代词
 
rzv
          谓词性指示代词
 
s
          处所词
 
t
          时间词
 
tg
          时间词性语素
 
u
          助词
 
ud
          助词
 
ude1
          的 底
 
ude2
          地
 
ude3
          得
 
udeng
          等 等等 云云
 
udh
          的话
 
ug
          过
 
uguo
          过
 
uj
          助词
 
ul
          连词
 
ule
          了 喽
 
ulian
          连 (“连小学生都会”)
 
uls
          来讲 来说 而言 说来
 
usuo
          所
 
uv
          连词
 
uyy
          一样 一般 似的 般
 
uz
          着
 
uzhe
          着
 
uzhi
          之
 
v
          动词
 
vd
          副动词
 
vf
          趋向动词
 
vg
          动词性语素
 
vi
          不及物动词(内动词)
 
vl
          动词性惯用语
 
vn
          名动词
 
vshi
          动词“是”
 
vx
          形式动词
 
vyou
          动词“有”
 
w
          标点符号
 
wb
          百分号千分号,全角:% ‰   半角:%
 
wd
          逗号,全角:, 半角:,
 
wf
          分号,全角:; 半角: ;
 
wh
          单位符号,全角:¥ $ £  °  ℃  半角:$
 
wj
          句号,全角:。
 
wky
          右括号,全角:) 〕  ] } 》  】 〗 〉 半角: ) ] { >
 
wkz
          左括号,全角:( 〔  [  {  《 【  〖 〈   半角:( [ { <
 
wm
          冒号,全角:: 半角: :
 
wn
          顿号,全角:、
 
wp
          破折号,全角:——   --   ——-   半角:—  —-
 
ws
          省略号,全角:……  …
 
wt
          叹号,全角:!
 
ww
          问号,全角:?
 
wyy
          右引号,全角:” ’ 』
 
wyz
          左引号,全角:“ ‘ 『
 
x
          字符串
 
xu
          网址URL
 
xx
          非语素字
 
y
          语气词(delete yg)
 
yg
          语气语素
 
z
          状态词
 
zg
          状态词
posted @ 2018-03-05 23:06  公众号python学习开发  阅读(6192)  评论(0编辑  收藏  举报