赞
踩
词是自然语言处理的基本单位,自动词法分析就是利用计算机对词的形态进行分析,判断词的结构和类别。
词性(Part of Speech)是词汇最重要的特性,链接词汇和句法
屈折语:形态分析
分析语:分词
黏着语:分词+形态分析
单词识别&形态还原
考虑特殊的单词:prof. 缩写 不规则变形
形态还原:时态 年代 序数词 货币符号 百分号
合成词还原 seven-year-old
单字词与词素的区分
词与短语的区分
中国人/为了/胜利
中国/人为/了/胜利
交集串的集合称为叫交集串链,交集串个数称为链长
e.g. 中国产品质量:中国/国产/产品/品质/质量 交集串为:国,产,品,质 ,交集串链为{国,产,品,质},链长为 4
门/把/手/弄/坏/了
门/把手/弄/坏/了
成语:马马虎虎
定量结构:十三区
定名组合:六点
副词片语:或多或少
重叠结构:高高低低
不可拆分词:进出口
测试:封闭测试/开放测试
评价指标:
正确率:测试结果中正确的切分占系统总输出的比例:
P
=
n
N
×
100
%
P= \frac{n}{N}\times100\%
P=Nn×100%
召回率:系统输出的答案里面正确的个数 5 占总正确的个数,与文本分类里的 Recall 一样:
R
=
n
N
×
100
R= \frac{n}{N}\times 100%
R=Nn×100
F 测度:同上一章
有词典切分/无词典切分
基于规则/基于统计
-有词典切分,机械切分
正向最大匹配/逆向最大匹配/双向最大匹配
e.g.他是研究生物的一位科学家,假设词典当中的最长词汇长度为 7
先进行最大长度的切分:他是研究生物的/一位化学家
随后逐渐缩小确定第一个切分词:他/是研究生物的一位化学家
然后接着上一个切分的词继续:他/是/研究生物的一位化学家
不断循环,可以得到:他/是/研究生/物/的/一/位/化学家
他/是/研究/生物/的/一/位/化学家
可以看出来正向匹配和逆向匹配之间存在着差别
程序简单,但歧义的消解能力弱,切分准确率在 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 为语言模型,另一个则为生成模型,用了朴素贝叶斯的理论
将分词过程看成是字的分类问题,每个字具有自己固定的词位:如词首(B)词中(M)词尾(E)或单独成词(S),使得处理未登录词也可以按照字的方向去看待
总的来说,通过大量数据构建样本的概率密度模型,并以此推理,就是生成式,建立在贝叶斯与统计基础上;如果直接使用观测值判断模型,而不考虑样本如何,那么就属于对后验概率建模的判别式
未登录词的识别与描述规则太多;新出现的词速度太快
Cname = Xmn
F
(
X
)
=
X
作为姓氏
X
出现的总次数
F(X) = \frac{X 作为姓氏}{X 出现的总次数}
F(X)=X出现的总次数X作为姓氏
F
(
m
)
=
m
作为名字中的第二个字
m
出现的总次数
F(m) = \frac{m 作为名字中的第二个字}{m 出现的总次数}
F(m)=m出现的总次数m作为名字中的第二个字
F
(
n
)
=
n
作为名字中的第三个字
n
出现的总次数
F(n) = \frac{n 作为名字中的第三个字}{n 出现的总次数}
F(n)=n出现的总次数n作为名字中的第三个字
P
(
C
n
a
m
e
)
=
F
(
X
)
F
(
m
)
F
(
n
)
P(Cname) = F(X)F(m)F(n)
P(Cname)=F(X)F(m)F(n)
f
=
ln
P
(
C
n
a
m
e
)
f = \ln P(Cname)
f=lnP(Cname)
确定阈值:
姓氏 X 构成名字的最小阈值:
T
m
i
n
(
X
)
=
F
(
X
)
×
M
i
n
(
F
(
m
)
×
F
(
n
)
)
T_{min}(X) = F(X)\times Min(F(m)\times F(n))
Tmin(X)=F(X)×Min(F(m)×F(n))
通过训练得到 X 的该阈值 T,当 f>T 时,则当前识别的汉字串为中文姓名
如对于维吾尔族中会出现的点符,可以通过该符号来进一步判断
主要为 RNN(LSTM),此处不展开,详细请在 RNN 相关章节查看
主要目的:消除词性兼类的问题
在英文中:flies(动词三单,名次复数)
在中文中:好(形容词,副词,动词),教育(名次,动词)
标准性:使用普遍认可的分类标准与符号集
兼容性:与已有资源尽量一致
可扩展性:方便扩充与修改
给定训练数据:
(
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),表示各状态作为初始状态的概率
之所以使用隐马尔可夫,是因为马尔可夫只能处理表层的词序列,但是没法处理隐层的词性序列,因此拓展出了隐马尔可夫
隐马尔可夫的三个基本问题:
估算问题(计算产生观测序列的概率),解码问题(计算最优的状态序列),参数学习
e.g.已知每天吃冰淇淋的个数与天气的冷热程度挂钩
求解观测到 ICE CREAM 个数在 3 天里分别为 3-1-3 的概率有多大
P
(
O
)
=
∑
P
(
O
∣
Q
)
P
(
Q
)
P(O) = \sum P(O|Q)P(Q)
P(O)=∑P(O∣Q)P(Q)
对于某个给定状态时观测的似然 P(O|Q)
如给出天气序列 H-H-C,即计算
P
(
313
∣
H
H
C
)
P(313|HHC)
P(313∣HHC)
由
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
(
313
∣
H
H
C
)
=
P
(
3
∣
H
)
×
P
(
1
∣
H
)
×
P
(
3
∣
C
)
P(313|HHC) = P(3|H)\times P(1|H)\times P(3|C)
P(313∣HHC)=P(3∣H)×P(1∣H)×P(3∣C)
再计算语言模型 P(Q)
P
(
H
H
C
)
=
P
(
H
∣
S
T
A
R
T
)
×
P
(
H
∣
H
)
×
P
(
C
∣
H
)
P(HHC)=P(H|START)\times P(H|H)\times P(C|H)
P(HHC)=P(H∣START)×P(H∣H)×P(C∣H)
然后综合到一起:
P
(
313
,
H
H
C
)
=
P
(
3
∣
H
)
×
P
(
1
∣
H
)
×
P
(
3
∣
C
)
×
P
(
H
∣
S
T
A
R
T
)
×
P
(
H
∣
H
)
×
P
(
C
∣
H
)
P(313,HHC) = P(3|H)\times P(1|H)\times P(3|C)\times P(H|START)\times P(H|H)\times P(C|H)
P(313,HHC)=P(3∣H)×P(1∣H)×P(3∣C)×P(H∣START)×P(H∣H)×P(C∣H)
最后对所有天气状态序列求和
但是我们可以看到这样效率非常低,所以我们引入前向算法和后向算法
.
β
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
已知 Ice Cream 观测序列为 313,且拥有 HMM 的参数 A(状态转移矩阵)B(概率发射矩阵),找到 313 最可能对应的天气状态序列(隐层序列)
一种方法:对于一个观测序列 O 计算 P(Q|O),选取概率最大值对应的状态序列
如何找到 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) 局部最大化算法来逼近
随机取一个 lambda,可以计算出似然概率 P(O|lambda)
通过计算,可以看到哪些转移与发射的使用率最高,相对应的提高他们的概率,可以获得新的 lambda,就可以得到新的似然概率,不断逼近局部最优解
(没看明白)
e.g.冠词后面即可以接形容词,也可以接名词
极大似然估计法,通过有标记预料估计 P(NN|OT)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。