大家好,欢迎来到IT知识分享网。
词
词的分类
基本任务
形态分析的一般方法
- 查词典
- 根据不同的情况查找相对应的规则对单词进行处理,如果在字典找得到该单词的原型,则结束,如果找不到,就按照未登录词处理
- 完全陌生的词,按照未登录词处理
汉语自动分词
汉语分词问题
切分歧义
交集型歧义
组合型歧义
未登录词的识别
- 人名,地名,组织名
- 新出现的词汇
汉语分词的基本规则:合并
辅助规则:切分
- 有明显间隔符或语义分隔的
- 太过复杂,正反问句,动词带双音节补语:石油/化工/业,讨论/清楚,喜欢/不/喜欢
- 专有名词带普通名词:京沪/铁路
分词,标注的评价方法
汉语分词的基本算法
最大匹配法
正向最大匹配:
逆向最大匹配:
优缺点
程序简单,但歧义的消解能力弱,切分准确率在 95% 左右。
最少分词法(最短路径法)
记待切分词串为 S = c 1 c 2 . . . c n S=c_1c_2…c_n S=c1c2…cn,其中 c 均为单个的字,n 为串的长度且大于等于 1,建立一个节点数为 n+1 的切分有向无环图:
在相邻节点间创建有向边,边对应词,如果 w = c i . . . c j w = c_i…c_j w=ci…cj为一个单词,则建立有向边(Vi-1,Vj),重复建立并查看是否新词,最后直到考虑单词的长度上限停止,从所有路径中选覆盖了所有节点的尽可能长的路径作为分词结果
e.g. 他说的确实对 可以分为
他/说的/确实/对
他/说/的确/实/对
seg=4<seg=5,选择第一个分词
优缺点
简单方便,需要的资源少,但是对于多条最短路径和长句子时的复杂度表现并不好
基于语言模型的分词方式
对于一个待切分的句子 S,W 是一种可能的切分: W ∗ = arg w max p ( W ∣ S ) = arg w max p ( W ) P ( S ∣ W ) W^* = \arg\limits_w \max p(W|S) = \arg\limits_w \max p(W)P(S|W) W∗=wargmaxp(W∣S)=wargmaxp(W)P(S∣W),其中 pW 为语言模型,另一个则为生成模型,用了朴素贝叶斯的理论
基于 HMM 的分词方式
基于字标注的分词方式
将分词过程看成是字的分类问题,每个字具有自己固定的词位:如词首(B)词中(M)词尾(E)或单独成词(S),使得处理未登录词也可以按照字的方向去看待
生成式与判别式
总的来说,通过大量数据构建样本的概率密度模型,并以此推理,就是生成式,建立在贝叶斯与统计基础上;如果直接使用观测值判断模型,而不考虑样本如何,那么就属于对后验概率建模的判别式
未登录词的识别
困难
未登录词的识别与描述规则太多;新出现的词速度太快
对于姓名的识别
- 名字用字范围广,分布松散,规律不明显
- 姓氏和名字可以拆开使用
- 许多名字中的字可以与其他字关联形成交集串
- 缺少文义分隔
e.g. 祝/贺老板/生意/兴隆 or 祝贺/老板/生意/兴隆
主要采用姓名库进行识别,并在一句中对可能出现姓名的概率估值进行计算,完成对姓名存在性的判断
计算概率估值
使用其他修饰规则
如对于维吾尔族中会出现的点符,可以通过该符号来进一步判断
对于地名机构名识别——建立对应库(略)
基于神经网络的实体识别方法
主要为 RNN(LSTM),此处不展开,详细请在 RNN 相关章节查看
词性标注
词性标注的一般原则
词性标注的方法
- 基于规则的词性标注方法
- 基于统计模型(学习)的词性标注方法:HMM,CRF,NN
- 规则和统计方法相结合的词性标注方法:TBL
HMM 隐马尔可夫模型
学习过程
给定训练数据: ( O i , Q i ) (O_i,Q_i) (Oi,Qi),O 为词序列,Q 为词性序列
训练出函数 f(O),从 O 映射到 Q,即为词序列 O 找到最优的 Q
arg max Q P ( Q ∣ O ) = arg max Q P ( O ∣ Q ) P ( Q ) \arg \max\limits_Q P(Q|O) = \arg \max\limits_Q P(O|Q)P(Q) argQmaxP(Q∣O)=argQmaxP(O∣Q)P(Q)
其中 P ( O ∣ Q ) = P ( o 1 , . . . , o n ∣ q 1 , . . . q n ) = ∏ i = 1 n P i ( o i ∣ q i ) P(O|Q) = P(o_1,…,o_n|q_1,…q_n)=\prod\limits_{i=1}^nP_i(o_i|q_i) P(O∣Q)=P(o1,…,on∣q1,…qn)=i=1∏nPi(oi∣qi)
P(Q)则为语言模型,可以使用我们先前提到的 n-gram 计算:
P ( Q ) = P ( q 1 , . . . , q n ) = P ( q 1 ) P ( q 2 ∣ q 1 ) . . . P ( q n ∣ q n − 1 ) P(Q)=P(q_1,…,q_n)=P(q_1)P(q_2|q_1)…P(q_n|q_{n-1}) P(Q)=P(q1,…,qn)=P(q1)P(q2∣q1)…P(qn∣qn−1)
这就是隐马尔可夫模型的原型
词性的马尔可夫链:
状态:t 时刻的状态为 q t q_t qt
转移概率: a i j a_{ij} aij表示从状态 i 转移到 j 的转移概率
a i j = P ( q i = j ∣ q t − 1 = i ) a_{ij} = P(q_i=j|q_{t-1} = i) aij=P(qi=j∣qt−1=i)
∑ j = 1 N a i j = 1 \sum\limits_{j=1}^Na_{ij}=1 j=1∑Naij=1
起始状态:初始状态的概率向量 π = ( π 1 , . . . , π n ) \pi = (\pi_1,…,\pi_n) π=(π1,…,πn),表示各状态作为初始状态的概率
之所以使用隐马尔可夫,是因为马尔可夫只能处理表层的词序列,但是没法处理隐层的词性序列,因此拓展出了隐马尔可夫
观测的似然
前向算法:格栅
.
后向算法
β t ( i ) = P ( o t , . . . , o T ∣ q t = i , λ ) \beta_t(i) = P(o_t,…,o_T|q_t = i,\lambda) βt(i)=P(ot,…,oT∣qt=i,λ)
与前向算法不同之处在于 q t = j q_t = j qt=j是推导对象还是已知数据,后向算法往前推导
初始化: β T + 1 = 1 , 1 ≤ i ≤ N \beta_{T+1}=1,1\le i\le N βT+1=1,1≤i≤N
最终得到: P ( O ∣ λ ) = ∑ i = 1 N π i β 1 ( i ) P(O|\lambda) = \sum\limits_{i=1}^N\pi_i\beta_1(i) P(O∣λ)=i=1∑Nπiβ1(i)
前向算法与后向算法结合可以得到: P ( O ∣ λ ) = ∑ i = 1 N α t ( i ) β t ( i ) , 1 ≤ t ≤ T + 1 P(O|\lambda) = \sum\limits_{i=1}^N\alpha_t(i)\beta_t(i),1 \le t \le T+1 P(O∣λ)=i=1∑Nαt(i)βt(i),1≤t≤T+1
解码
Viterbi Algorithm
参数学习
如何找到 HMM 中最好的 A和 B: arg max λ P ( O t r a i n i n g ∣ λ ) \arg \max\limits_\lambda P(O_{training}|\lambda) argλmaxP(Otraining∣λ)
可以分为有监督和无监督两种
有监督
基于已知的正确答案,统计状态的转移,与状态到观测的发射
无监督
基于不完全的数据来进行估计,很难得到解析解,但是可以通过 Baum-Welch (Forward-Backward) 局部最大化算法来逼近
前向-后向算法
两类概率
TAG 之间的转移概率
词的似然概率
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122075.html