[paper阅读]使用深度Bi-GRU-CRF网络进行中文词法分析-3

实验

这个部分将会介绍使用Bi-GRU-CRF模型重构在线语义分析系统的系列. 首先, 将会介绍数据集以及详细的训练设置, 最后对比较结果进行总结.

数据集

为了获得足够的数据使得Bi-GRU-CRF模型能够模拟在线系统, 作者们构建了一个大型语料库, 包括来自5个领域的文本: 网页标题, 网站搜索查询, 从网络中爬取的新闻, 从百度信息流中获取的散文, 以及人工处理的数据等. 该语料库首先使用在线系统提前进行了标记, 作为模拟人工标注的训练集. 为了避免在包含错误的模拟标签上进行训练, 作者们还引入了一个小型的人工标注语料库来对训练进行规则化. 下表中介绍了训练集中每个语料库的细节.

2: 训练集的组成

语料类型 平均长度 大小 标注来源
网页标题 26 264 百万 机器
网站搜索查询 11 269 百万 机器
从网络中爬取的新闻 42 28 百万 机器
从百度信息流中获取的散文 43 68 百万 机器
人工标注语料 23 227, 000

不同类型的语料有不同的平均句子长度以及不同的语言风格, 能够帮助提高模型的鲁棒性.

训练

网络结构由2个有256维隐单元的Bi-GRU层(等价于2个前向GRUs和两个逆向GRUs)构成. 单词嵌入的维度为128. 所有嵌入/Bi-GRU以及全连接层中的权重矩阵都使用随机矩阵进行初始化. 初始矩阵中的所有元素都由一个最小值为-0.1/最大值为0.1的均匀分布采样得到. 对于Bi-GRU层, 作者们使用了sigmoid作为门激活函数, 然后使用tanh作为候选隐层单元的激活函数.

使用随机梯度下降法对参数进行优化. 基础的学习率设置为1e-3. 嵌入层的学习率设置为5e-3. 批大小设置为250, 然后作者们从每种类型的语料库中随机选择了50个示例形成每批的输入数据. 选择过程是完全随机的, 不存在替换过程. 如果一个语料库用完了, 会重启这个选择过程. 这种方式能够保证每种类型语料的影响, 特别是保证了小型人工标注集合对模型的影响.

由于训练集非常庞大, 模型在开发集中只训练了1次. 特别地, 在每 10, 000批次之后, 作者们还是用了整个人工标注的集合来调优CRF解码层来获得更好的转移概率. 整个训练阶段在单个NVIDIA P40卡上使用百度的Paddle工具包花费了1周时间进行训练.

比较

测试集中包含了20167月从网上爬取的新闻中随机选取的500个句子. 作者们邀请了第三方语义专家来对结果进行评估. 为了评估整体的质量, 作者们使用边界和标签的正确性进行评估, 具体的定义如下:

$Acc=\frac{正确单词个数}{系统识别出的单词个数}$

只有在单词的边界和标签(包括POSNER标签)都正确的情况下才能说单词的正确的. 此外, 作者们还针对NER任务计算了准确率/召回率以及F1值.

3 整体质量的比较

模型 Acc
在线系统 0.948
Bi-GRU-CRF 0.955

4 NER性能的比较

模型 准确率 召回率 F1
在线系统 0.916 0.829 0.871
Bi-GRU-CRF 0.903 0.854 0.878

3和表4总结了在线系统和Bi-GRU-CRF模型的性能比较. 结果表明: 在新闻句子中. 一个单一的端对端模型可以实现和在线系统(由复杂模型和启发式组成)实现相似甚至更佳的性能. 简单的模型也有助于提高速度. 作者们还基于百度的Paddle引用API基于Bi-GRU-CRF模型搭建了一个开源的工具包. 工具包每秒能够解析2.3K的单词, 比现有的在线系统快57%.

结论

本文主要介绍了一个层叠Bi-GRU神经网络和CRF解码层用于一个整体的语法分析任务(包括分词/词性标注和命名实体识别). 作者们基于使用百度开发AI平台中词法分析系统预先标注的大型数据集进行训练, 并且使用一个人工标注的数据集作为规则化集合. 提出的模型重构了在线系统, 在整体的准确性方面提高了0.7%, 并且能有一个更快的速度, 和更少的内存消耗. 目前这个项目的源码已经放在Github上了. 在未来的工作中, 作者们还会尝试进一步提高分析速度, 在更多的领域对性能进行验证.

打赏

mickey

记录生活,写给几十年后的自己。