现有的针对数据稀疏问题提出的各种平滑技术。
2.1 算法的基本思想
设待切分的古汉语文本串为w1w2...wn,其中wi为任意的汉字。对于任意相邻的两个汉字wiwi+1,算法通过计算它们之间有句读的可能性度量σ(wi wi+1)和没有句读的概率
很明显,算法采用的前后文n-gram模型是传统n-gram模型的变形和改进,以便充分利用前后文信息对句读的位置进行预测,并克服数据稀疏带来的问题。
3 实验结果及分析
为了验证算法的有效性,选择《论语》进行了实验。《论语》按照80%对20%被随机划分成两个集合,分别用作训练语料库和测试语料库。表1最后一行给出了本文所提算法在测试语料库上进行句子切分的召回率、准确率和F度量值(F-measure),其中折扣率选定d=0.25,其它行是传统数据平
底线模滑技术[3~6]利用相同训练语料和测试语料得到的结果。
型是认为每个汉字后面都有句读。
表1 本文算法与各种平滑技术的实验对比
算法
底线(baseline)模型 Laplace平滑技术 Lidstone平滑技术
Jelinek-Mercer平滑技术(λ=0.5) Jelinek-Mercer平滑技术(λ=0.16) Witten-Bell平滑技术
Absolute-Discounting平滑技术 基于前后文n-gram模型
平均召回率 平均准确率
F度量
(%) (%)
32.124 705 91.259 325 47.521 2 43.236 102 5 83.491 822 5 76.768 05 59.654 7 85.044 807 5 81.024 15
75.007 977 541.785 8 49.399 782 551.817 045 40.933 125 52.595 42
54.853 5 55.696 6660.115 5655.460 3455.266 63.785 55
σ(wiwi+1),然后比较σ(wi wi+1)和σ(wiwi+1)的大小关系来决
定是否应该在wi和wi+1之间加上句读。当
C(wi wi+1)>0且C(wiwi+1)>0时,σ(wi wi+1)和σ(wiwi+1)分别简单地定义为C(wi wi+1)和C(wiwi+1),否则定义为
σ(wi wi+1)=C(wi )/C(wi)+C( wi+1)/C(wi+1) (1)
σ(wiwi+1)=[C(wi+)/C(wi)+C(+wi+1)/C(wi+1)]×d (2)
其中C(wi wi+1)为训练语料中wi和wi+1之间存在句读的次数,C(wiwi+1)为wi和wi+1之间不存在句读的次数,C(wi+)为
wi后面不为句读的所有二元组出现的次数,C(+wi+1)为wi+1
前面不为句读的所有二元组出现的次数,C(wi )为wi后面接句读的二元组出现的次数,C( wi+1)是句读后接wi+1的二元组出现的次数,d为折扣因子。引入折扣因子的目的是为了使σ(wi wi+1)和σ(wiwi+1)具有可比性,由于在一般情况下,
C(wi+)>C(wi ),C(+wi+1)>C( wi+1),因此C(wi )/C(wi)+ C( wi+1)/C(wi+1)<C(wi+)/C(wi)+C(+wi+1)/C(wi+1),d的取值应该反映汉字和句读在语料库中分布的差异,即大约为1/L,其中L为训练语料中由句读隔开的汉字串的平均长度(汉字数)。当σ(wi wi+1)>σ(wiwi+1)时,确定wi和wi+1之间有句读,否则没有句读。在C(wi)=0或C(wi+1)=0时,简单地认定wi和wi+1之间没有句读。
针对语料库规模小,数据严重稀疏的问题,式(1)和式(2)式在三元组频率为0时,将三元组频率的计算退化成二元组频率的计算,这样可以大大降低数据稀疏为决策带来的负面影响。从式(1)、式(2)可以看出,在识别句子的切分位置时,不仅利用了句读可能出现位置的前邻接汉字,而且还利用后
面临接的汉字信息,综合这种前后文信息来决策句读的位置。2.2 算法描述
图1给出了基于上述思想设计的古汉语句子切分算法。
IF C(wi)=0ORC(wi+1)=0 THEN 设定w和w
i
从表1可以看出,基于前后文n-gram模型的古汉语句子
切分算法在F度量方面明显优于其它数据平滑技术,能够更好地解决古汉语句子切分所面临的数据严重稀疏的问题。图2给出了所实现的系统原型的运行实例,其中左边文本为系统自动切分的结果,右边为人工断句的结果。
图2 原型系统运行实例
i+1
之间没有句读;
ELSE BEGIN
IF C(w w)≠0 AND C(ww)≠0 THEN
ii+1ii+1
BEGIN
σ(w w):=C(w w);
i
i+1
i
i+1
4 总结
本文针对传统n-gram模型及各种平滑技术在识别古汉语句读位置方面存在的缺点和不足,提出了基于前后文n-gram模型的古汉语句子切分算法,该算法能够在数据稀疏的情况下,通过收集上下文信息,对切分位置进行比较准确的预测,从而较好地处理小规模训练语料的情况,降低数据稀疏对切分准确率的影响。采用《论语》对所提出的算法进行了验证,达到了81%的召回率和52%的准确率。
参考文献
1 Palmer, David D, Hearst, at al. Adaptive Multilingual Sentence Boundary Disambiguation[J]. Computational Linguistics, 1997,23(2). 2 Charoenpornsawat P, Sornlertlamvanich V. Automatic Sentence Break Disambiguation for Thai[C]//Proceedings of ICCPOL’01, Korea, 2001: 231-235.
σ(wiwi+1):=C(wiwi+1);
END ELSE BEGIN
σ(wi wi+1):=C(wi )/C(wi)+C( wi+1)/C(wi+1);
σ(wiwi+1):=[C(wi+)/C(wi)+C(+
wi+1)/C(wi+1)]×d;
END
IF σ(ww)>σ(w w) THEN
ii+1ii+1
设定w和wi+1之间没有句读;
i
ELSE 设定wi和wi+1之间有句读; END
继续处理下面两个汉字;
图1 基于前后文n-gram模型的古汉语句子切分
(下转第196页)
—193—