问题:
该方法针对的问题是:在文本中刚刚出现过的一些词在后边的句子中再次出现的可能性往往较大,比标准的 n-gram 模型预测的概率要大。针对这种现象, cache-based自适应方法的基本思路是:语言模型通过 n-gram 的线性插值求得:
p
^
(
w
i
∣
w
1
i
−
1
)
=
λ
p
^
C
a
c
h
e
(
w
i
∣
w
1
i
−
1
)
+
(
1
−
λ
)
p
^
n
−
g
r
a
m
(
w
i
∣
w
i
−
n
+
1
i
−
1
)
\hat p(w_i|w_1^{i - 1}) = \lambda \hat p_{Cache}(w_i|w_1^{i - 1}) + (1 - \lambda)\hat p_{n-gram}(w_i|w_{i - n + 1}^{i - 1})
p^(wi∣w1i−1)=λp^Cache(wi∣w1i−1)+(1−λ)p^n−gram(wi∣wi−n+1i−1)
插值系数
λ
\lambda
λ可以通过EM算法求得,通常的处理方法是:在缓存中保留前面的 K个单词,每个词的概率(缓存概率)用其在缓存中出现的相对频率计算得出:
p
^
C
a
c
h
e
(
w
i
∣
w
1
i
−
1
)
=
1
K
∑
j
=
i
−
K
i
−
1
I
{
w
j
=
w
i
}
\hat p_{Cache}(w_i|w_1^{i - 1}) = \frac1K\sum_{j = i - K}^{i - 1}I_{\{w_j = w_i\}}
p^Cache(wi∣w1i−1)=K1j=i−K∑i−1I{wj=wi}
其中
I
ε
I_\varepsilon
Iε为指示器函数(indicator function),如果
ε
\varepsilon
ε表示的情况出现,则
I
ε
=
1
I_\varepsilon = 1
Iε=1,否则
I
ε
=
0
I_\varepsilon = 0
Iε=0。这种方法的缺陷是,缓存中一个词的重要性独立于该词与当前词的距离。P. R.Clarkson等人(1997) 的研究表明,缓存中每个词对当前词的影响随着与该词距离的增大呈指数级衰减,因此,
p
^
C
a
c
h
e
(
w
i
∣
w
1
i
−
1
)
=
β
∑
j
=
i
i
−
1
I
{
w
j
=
w
i
}
e
−
α
(
i
−
j
)
\hat p_{Cache}(w_i|w_1^{i - 1}) = \beta\sum_{j = i}^{i - 1}I_{\{w_j = w_i\}}e^{-\alpha(i - j)}
p^Cache(wi∣w1i−1)=βj=i∑i−1I{wj=wi}e−α(i−j)
其中
α
\alpha
α为衰减率,
β
\beta
β为归一化常数
该方法针对的问题是:由于大规模训练语料本身是异源的(heterogenous),来自不同领域的语料无论在主题 (topic)方面,还是在风格(style)方面,或者两者都有一定的差异,而测试语料一般是同源的(homogeneous),因此,为了获得最佳性能,语言模型必须适应各种不同类型的语料对其性能的影响。
处理方法是:将语言模型划分成
n
n
n 个子模型
M
1
,
M
2
,
⋯
,
M
n
M_1, M_2, \cdots, M_n
M1,M2,⋯,Mn,整个语言模型的概率通过下面的线性插值公式计算得到:
p
^
(
w
i
∣
w
1
i
−
1
)
=
∑
j
=
1
n
λ
j
p
^
M
j
(
w
i
∣
w
1
i
−
1
)
\hat p(w_i|w_1^{i - 1}) = \sum_{j = 1}^n\lambda_j\hat p_{M_j}(w_i|w_1^{i - 1})
p^(wi∣w1i−1)=j=1∑nλjp^Mj(wi∣w1i−1)
其中
0
≤
λ
j
≤
1
,
∑
j
=
1
n
λ
j
=
1
,
λ
0 \leq \lambda_j \leq 1,\sum_{j = 1}^n\lambda_j = 1,\lambda
0≤λj≤1,∑j=1nλj=1,λ值可以通过EM算法计算出来,方法总结如下:
EM迭代计算插值系数 λ \lambda λ
基本思想:通过结合不同信息源的信息构建一个语言模型。每个信息源提供一组关于模型参数的约束条件,在所有满足约束的模型中,选择熵最大的模型。
方法描述:设对于待切分的句子
S
=
z
1
z
2
⋯
z
m
,
W
=
w
1
w
2
⋯
w
k
,
W
^
≈
a
r
g
m
a
x
W
p
(
W
)
S = z_1z_2\cdots z_m,W = w_1w_2\cdots w_k,\hat W \approx \mathop{arg\ max}\limits_{W}p(W)
S=z1z2⋯zm,W=w1w2⋯wk,W^≈Warg maxp(W)
汉语词汇分成如下几类:
进一步约定,把一个可能的词序列 W W W 转换成词类序列 C = c 1 c 2 ⋯ c N C = c_1c_2\cdots c_N C=c1c2⋯cN,即:
这样对于“3月14日下午3点比尔盖茨在北京发表讲话,决定从 今年起微软亚洲研究院将大规模招收研发人员,其 中,80%将从中国科学院大学所培养的应届博士或 硕士毕业生中选拔,年薪不低于3万美元。”的分词序列变为类序列“dat/ tim/ PN/ 在/ LN/ 发表/ 讲话/ ,/ 决定/ 从/ tim/ 起/ ON/ 将/ 大/ 规模/ 招收/ 研发/ 人员/ ,/ 其中/ ,/ per/ 将/ 从/ 中国/ 科学院/ 大学/ 所/ 培 养/ 的/ 应届/ 博士/ 或/ 硕士/ 毕业生/ 中/ 选拔/ ,/ 年薪/ 不/ 低于/ mon/ 。”
那么
C
^
=
a
r
g
m
a
x
C
p
(
C
∣
S
)
=
a
r
g
m
a
x
C
p
(
C
)
×
p
(
S
∣
C
)
\hat C = \mathop{arg\ max}\limits_Cp(C|S) = \mathop{arg\ max}\limits_Cp(C)\times p(S|C)
C^=Carg maxp(C∣S)=Carg maxp(C)×p(S∣C),其中
P
(
C
)
P(C)
P(C)语言模型,假设采用三元语法:
p
(
C
)
=
p
(
c
1
)
×
p
(
c
2
∣
c
1
)
∏
i
=
3
N
p
(
c
i
∣
c
i
−
2
c
i
−
1
)
p
(
c
i
∣
c
i
−
2
c
i
−
1
)
=
c
o
u
n
t
(
c
i
−
2
c
i
−
1
c
i
)
c
o
u
n
t
(
c
i
−
2
c
i
−
1
)
p(C) = p(c_1)\times p(c_2|c_1)\prod_{i = 3}^Np(c_i|c_{i - 2}c_{i - 1}) \\ p(c_i|c_{i - 2}c_{i - 1}) = \frac{count(c_{i - 2}c_{i - 1}c_i)}{count(c_{i - 2}c_{i - 1})}
p(C)=p(c1)×p(c2∣c1)i=3∏Np(ci∣ci−2ci−1)p(ci∣ci−2ci−1)=count(ci−2ci−1)count(ci−2ci−1ci)
P
(
S
∣
C
)
P(S|C)
P(S∣C)是生成模型,可近似为:
p
(
S
∣
C
)
≈
∏
i
=
1
N
p
(
s
i
∣
c
i
)
p(S|C) \approx \prod_{i = 1}^Np(s_i|c_i)
p(S∣C)≈i=1∏Np(si∣ci)
也就是说词类
c
i
c_i
ci生成汉字串
s
i
s_i
si的概率只和自身有关,和上下文无关
模型的训练由以下三步组成:
(1) 在词表和派生词表的基础上,用一个基本的分词工具切分训练语料,专有名词通过一个专门模块标注,实体名词通过相应的规则和有限状态自动机标注,由此产生一个带词类别标记的初始语料;
(2) 用带词类别标记的初始语料,采用最大似然估计方法估计语言模型的概率参数;
(3) 用得到的模型对训练语料重新切分和标注,得到新的训练语料;
(4) 重复(2)(3)步,直到系统的性能不再有明显的变化为止。
假设句子
S
S
S是由单词串组成:
W
=
w
1
w
2
⋯
w
n
,
n
≥
1
W = w_1w_2\cdots w_n,n\geq 1
W=w1w2⋯wn,n≥1
单词
w
i
w_i
wi的词性标注为
t
i
t_i
ti,即句子
S
S
S相应的词性标注符号序列可表达为:
T
=
t
1
t
2
⋯
t
n
T = t_1t_2\cdots t_n
T=t1t2⋯tn
那么,分词与词性标注的任务就是要在
S
S
S 所对应的各种切分和标注形式中,寻找
T
T
T 和
W
W
W 的联合概率
p
(
W
,
T
)
p(W, T)
p(W,T)为最优的词切分和标注组合。