ACTA Scientiarum Naturalium Universitatis Pekinensis
A Sentence Segmentation Method for Ancient Chinese Texts Based on Recurrent Neural Network
WANG Boli1, SHI Xiaodong1,2,3,†, SU Jinsong4
1. Department of Cognitive Science, Xiamen University, Xiamen 361005; 2. Collaborative Innovation Center for Peaceful Development of Cross-strait Relations, Xiamen University, Xiamen 361005; 3. Fujian Province Key Laboratory for Brain-inspired Computing, Xiamen 361005; 4. Software School, Xiamen University, Xiamen 361005; † Corresponding author, E-mail: mandel@xmu.edu.cn
Abstract This paper proposes an automatic sentence segmentation method for ancient Chinese texts based on recurrent neural network (RNN). A bi-directional RNN structure with gated recurrent units (GRU) is implemented, and state transition probability and length penalty are employed in decoding to improve the accuracy. Experimental results show that proposed model achieves higher F1 score than traditional methods. Key words ancient Chinese; sentence segmentation; recurrent neural network
数千年的中华文明留下浩如烟海的古籍, 这些古籍对现代人了解古代历史、社会和文化发展具有重要的价值。但是, 古汉语中没有标点符号。古人著书时, 通常不对句子停顿进行标记, 而是由读者阅读时自行标记, 即“句读”, 这给现代人阅读和研究古籍带来很大的困难。利用最新的自然语言处理技术, 对大量未断句的古文进行自动断句, 不仅能帮助人们克服阅读障碍, 也是进一步对古籍文本进行处理(如古文分词等)所必要的前期工作, 对于古汉语研究、古籍整理与文史知识挖掘具有重要的意义。
1 相关工作
黄建年等[1]采用计算机辅助的方法, 从已断句的古文中提取句子切分的特征模式, 利用这些特征模式构造断句规则, 采用正则表达式替换的方法,进行古文断句。实验结果表明, 上下文特征对古文断句具有重要的作用, 但这种基于规则的方法并不适用于大规模古籍处理。
[2]陈天莹等 最早采用统计方法进行古文断句,他们将古文断句看成一个分类问题, 提出一种基于上下文 N-gram 模型的古文断句方法。该方法利用
训练语料上的频率统计信息, 计算文本中各处需要断句的概率, 并提出一种数据平滑算法。近年来的研究多将古文断句视为与中文分词类似的序列标注问题, 采用条件随机场(conditional random field, CRF)[3]对古文断句问题进行建模, 利用手工设计的特征模板, 在规模较小的语料上训练断句模型。张合等[4]采用手工设计的基于上下文汉字的特征模板, 张开旭等[5]引入互信息(mutual information)和t-测试差(t-test difference)两个统计量作为
[6]特征, Huang 等 引入汉字音韵信息(现代汉语拼音、反切、广韵)作为特征。
这些研究表明, 采用序列标注模型, 并以上下文信息作为特征, 能有效地进行古文断句, 但存在明显不足: 1) 实验使用的数据集规模均较小, 未在大规模古籍语料上开展实验; 2) 受限于固定的特征模板, 特征数量少, 仅能利用一个固定的较小窗口内局部上下文信息, 并且一些额外的信息(如广韵)难以涵盖古籍中出现的所有汉字; 3) 特征模板的设计完全依赖于人的先验知识, 若想进一步提高模型的断句准确率, 需要通过特征工程进行大量的实验,选择新的特征。
[7] Wang 等 提出一种基于神经网络语言模型的古文断句方法, 但该方法未达到传统条件随机场模型的断句效果, 并且由于在解码过程中需要反复调用神经网络语言模型计算概率得分, 因此断句速率较慢, 难以达到实际应用的要求。
本文提出一种基于循环神经网络(recurrent neural network, RNN)[8]的古文断句方法。该方法通过神经网络自动学习上下文的特征表示, 无需人为选择特征。我们在大规模古籍语料上开展实验, 结果表明本文方法能取得比传统方法更高的 F1 值。
2 基于循环神经网络的古文断句方法
本文将古文断句视为一个典型的序列标注问题, 采用“端到端”(end-to-end)的思想, 根据输入的汉字序列, 直接利用神经网络计算标注的条件概率,并进一步引入状态转移概率和长度惩罚, 通过beam search 算法进行解码。
2.1 标注集
古文断句可以视为一个基于字的序列标注问题: 为给定的未断句的古文文本中的每个汉字标注标签。本文将训练集和测试集中的 6 种标点(。?!, ; :)视为断句的标记, 而忽略文本中的其余 标点。
本文采用与文献[4]相同的六元标注集 T= {B, M, E3, E2, E, S}。若句子长度为 1, 即仅由一个汉字构成, 则该汉字标记为 S; 若句子长度大于 1, 则将句子开头标记为 B, 将句子结尾标记为 E; 若句子长度大于 2, 则将句子结尾的倒数第 2 个汉字标记为 E2; 若句子长度大于 3, 则将句子结尾的倒数第 3 个汉字标记为 E3; 若句子长度大于 4, 则将句子中其余汉字标记为 M。例如, “曰: ‘朕此衣已三浣矣。’”一句对应的汉字序列为“曰朕此衣已三浣矣”, 正确的标签序列为“S B M M M E3 E2 E”。
我们采用这种六元标注集, 而非传统中文分词任务所采用的四元标注集{B, M, E, S}, 主要考虑句子长度比词语长度更长, 而古汉语句子末尾的几个字常常有助于判别句子的边界(如“乎”“也”)。
测试时, 我们在标注为 E 和 S 的汉字后添加断句标记。
2.2 模型
RNN 是一种常见的深度神经网络模型, 由于能有效地利用上下文信息, 广泛应用于序列标注任务中。传统的 RNN 只能沿迭代方向利用单侧的历
[9]史信息, Schuster 等 提出双向循环神经网络(bidirectional recurrent neural network), 能同时利用正向和反向的上下文信息。
本文提出的断句模型采用基于 GRU 的双向循环神经网络, 结构如图 1 所示。模型的输入为汉字序列(即未断句的古文段落)x1, x2, …, xn, 输出为标签的概率:
[ i ] (1) o P ( y i | xx x ), t t 12 N其中, i为标注集T 中的标签。
1) 在输入层, 汉字序列中的每个汉字xt 首先被映射为对应的字向量et , 作为各个时刻循环神经网络的输入。
2) 在隐层, 双向循环神经网络根据当前时刻的输入 et以及前一时刻的正向隐状态h 和后一时刻
t 1 ht 1,的反向隐状态 分别计算当前时刻的正向隐状 态h 和反向隐状态h :
t t
i本文采用循环神经网络语言模型的形式(即仅用正向的 GRU 循环神经网络, 并将输出层替换为预测输入序列中的下一个字, 利用原始的训练语料(带标点的古文), 对字向量和 GRU 单元的参数进行预训练。
模型的训练过程中采用 GPU 进行并行化加速,并利用 mini-batch 梯度下降法, 采用 RMSPROP 算法[11]平滑梯度, 并引入两种学习率动态调整策略。
1) Gradient renormalize[12]: 对梯度的模进行约束, 若梯度的模大于一定的阈值(实验中取 5), 则将其限制到该阈值。引入此机制的目的在于避免模型训练初期步长过大, 下降过快, 从而过早收敛。
2) Early stopping [13]: 在训练过程中, 若一轮迭代中, 模型在验证集上的准确率没有提高, 则按一定的衰减因子(实验中取 0.7)动态减小学习率。
2.4 解码
对于一个给定的序列, 循环神经网络输出层输出的是各个时刻标注的条件概率(即标注集上的概率分布)。在测试时, 模型需要根据各个时刻的条件概率进一步输出最终的标签序列。本文采用两种方法得到最终的标签序列, 并对这两种方法的性能进行比较。
1) 贪婪法。在每一时刻均直接输出当前时刻条件概率最大的标签:
y ˆt argmax o j] , (11) [ t j T其中, T为标注集。这种方法假定输出序列中的各
个标签之间是相互独立的, 由于不考虑标签间的依赖关系, 因此可能会输出非法的标签序列。2) 解码法。构造一个关于汉字序列 x1:n 和标签s x , y1:n 序列 y1:n 的目标函数 。对于给定的输入1: N序列 x1:n , 解码的过程即搜索得分最高的标签序列y1:n , 即
解码过程采用 beam search 算法, 解码过程中每一步保留 N-best 结果。与文献[7]不同, 本文方法在解码过程中循环神经网络仅需在输入序列上迭代一次, 因此计算复杂度大大降低。
3 实验3.1 实验设置
为进行对比, 本文采用与文献[7]相同的训练集、开发集和测试集。语料主要来自至善繁体汉语语料库①、汉籍电子文献资料库② (简称汉籍)和“是何年”网站③。各数据集的基本情况如表 1 所示。
我们采用精确率(P)、召回率(R)、F1 值以及准确率(A)作为评价模型断句效果的指标:
TP
其中, TP 为模型输出的正确的断句标记的数量, FP为错误的断句标记数量, FN为错误的不断句标记数量, TN为正确的不断句标记数量。TP+ FP+ TN+ FN等于语料中的总字数。
本文提出的断句模型采用的词表规模为 21383字, 字向量和循环神经网络隐层维度均设置为 256,初始学习率设置为 0.001, 每个 batch 大小为 512 个序列。
对比实验采用以下两个基线系统。
1) 文献[7]提出的基于神经网络语言模型的古文断句方法, 包括 CLM6 和 CLM1 两种语言模型。
2) 文献[4]提出的基于条件随机场模型和上下文字特征的古文断句方法。我们采用开源工具CRF+ + 重现该方法, 去除频率小于 3 的特征, 其余参数均采用工具的默认设置, 特征模板和训练方法与文献[4]一致。
3.2 参数选择
本文提出的断句模型在输出层进行解码时包含3 个参数: 状态转移概率权重 、长度惩罚权重和解码过程中 beam 的大小。我们通过 3 组实验确定 3 个参数的取值,3组实验均在开发集上进行。
1) 固定 beam 的大小为 50, 引入状态转移概率,不引入长度惩罚, 即固定 0, 调整 , 以提高准确率。实验结果如图 2 所示, 随着 的增大, 召回率逐渐增大, 精确率、准确率和 F1 值先增大后减小。我们选择使得准确率最高的 1.4作为后续实验的默认设置。
2) 固定 beam 的大小为 50, 引入状态转移概率和长度惩罚, 固定= 1.4, 调整, 以提高 F1 值。实验结果如图 3 所示, 随着 的增大, 精确率逐渐减小, 召回率逐渐增大, F1 先增大后减小。我们选择使得 F1 值最高的 = 0.3 作为后续实验的默认设置。
3) 固定状态转移概率权重 1.4以及长度惩罚权重 0.3 , 测试 beam 的大小对断句速度和断
句效果的影响。实验结果如图 4 所示, 随着 beam的增大, 断句的效果不断提高, 但时间复杂度也呈近似线性增大。当 beam 大于 50 时, 增大 beam 对模型断句效果的提升并不明显。因此, 综合考虑断句效果和断句速度, 在实际应用时设置 beam 的大小为 50。
3.3 模型对比实验
本文分别在测试集 1 和测试集 2 上进行断句性能对比实验。基线系统包括文献[7] 的 CLM6, CLM6+ 0.65LP 和 CLM1+ 0.65LP, 以及对文献[4]工作的重现(CRF)。实验结果如表 2 所示。GRU-RNN为文提出的基于 GRU 的双向循环神经网络断句模型, 其中 GRU-RNN 为采用贪婪法的系统, GRURNN+ 1.4ST 为状态转移概率权重取 1.4, 但不进行长度惩罚的解码法系统, GRU-RNN+ 1.4ST+ 0.3LP为状态转移概率权重取 1.4、长度惩罚权重取 0.3的解码法系统。
从表 2 可以看出, 本文提出的基于 GRU 的双向循环神经网络模型能有效地进行古文断句, 引入状态转移概率和长度惩罚进行解码能有效地提高断句效果。
与已有的工作相比, 本文提出的断句模型性能明显优于文献[7]所采用的基于神经网络语言模型的方法以及以文献[4]为代表的基于条件随机场模型和手工设计特征模板的方法。这说明双向循环神经网络能更有效地利用上下文信息进行断句。
4 总结与展望
本文提出一种基于 GRU 的双向循环神经网络断句模型, 能有效地利用上下文信息进行古文自动 断句。与传统 CRF 模型相比, 本文提出的断句方法利用深度神经网络自动学习特征表示, 无需人工设计特征模板。与采用神经网络语言模型的方法相比, 本文的断句模型更为简洁高效, 解码过程中神经网络仅需在输入序列上遍历一次, 且能有效地利用双向的上下文信息。实验结果表明, 本文的方法能有效地进行古文自动断句, 断句效果超过采用条件随机场模型的传统方法和采用神经网络语言模型的方法。
未来工作中, 我们将考虑从以下几方面进一步提高模型的断句效果。
1) 引入正则化措施或多模型融合, 提高模型的鲁棒性, 避免模型过度拟合。在训练目标的损失函数中引入 L1 和 L2 正则项, 或在输入层、隐层和输出层分别加入 dropout 机制[14–17]。
2) 借鉴文献[18]和[19]中的方法, 在循环神经