«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (9): 63-70  DOI: 10.19678/j.issn.1000-3428.0062306
0

引用本文  

郭可翔, 王衡军, 白祉旭. 融合多通道CNN与BiGRU的字词级文本错误检测模型[J]. 计算机工程, 2022, 48(9), 63-70. DOI: 10.19678/j.issn.1000-3428.0062306.
GUO Kexiang, WANG Hengjun, BAI Zhixu. Detection Model for Word-Level Text Error Combining Multi-Channel CNN and BiGRU[J]. Computer Engineering, 2022, 48(9), 63-70. DOI: 10.19678/j.issn.1000-3428.0062306.

基金项目

国家重点研发计划(2017YFB0801900)

作者简介

郭可翔(1992-),男,硕士研究生,主研方向为自然语言处理、深度学习;
王衡军,副教授;
白祉旭,硕士研究生

文章历史

收稿日期:2021-08-09
修回日期:2021-09-29
融合多通道CNN与BiGRU的字词级文本错误检测模型
郭可翔1,2 , 王衡军1 , 白祉旭1     
1. 信息工程大学 密码工程学院, 郑州 450001;
2. 中国人民解放军96714部队, 福建 永安 366001
摘要:文本校对是自然语言处理领域的重要分支。深度学习技术因强大的特征提取与学习能力被广泛应用于中文文本校对任务。针对现有中文文本错误检测模型忽略句子连续词间的局部信息、对于长文本的上下文语义信息提取不充分等问题,提出一种基于多通道卷积神经网络(CNN)与双向门控循环单元(BiGRU)的字词级文本错误检测模型。利用Word2vec向量化待检错文本,采用CNN挖掘待检错文本的局部特征,使用BiGRU学习待检错文本的上下文语义信息及长时依赖关系,并通过Softmax处理后输出文本分类结果以判断文本中是否含有字词错误,同时采取L2正则化和dropout策略防止模型过拟合。在SIGHAN2014和SIGHAN2015中文拼写检查任务数据集上的实验结果表明,与基于长短时记忆网络的文本错误检测模型相比,该模型的检错F1值提升了3.01个百分点,具有更优的字词级文本错误检测效果。
关键词字词错误    多通道卷积操作    卷积神经网络    双向门控循环单元    文本错误检测    
Detection Model for Word-Level Text Error Combining Multi-Channel CNN and BiGRU
GUO Kexiang1,2 , WANG Hengjun1 , BAI Zhixu1     
1. School of Cryptographic Engineering, Information Engineering University, Zhengzhou 450001, China;
2. Unit 96714 of PLA, Yongan, Fujian 366001, China
Abstract: Text proofreading is a critical component of Natural Language Processing(NLP).Deep learning technology is widely used in Chinese text proofreading because of its excellent feature extraction and learning ability.This study presents a model for word-level text error detection based on the combination of a multi-channel Convolution Neural Network(CNN) and Bidirectional Gated Recurrent Unit(BiGRU) to address the problems of ignoring the local information between consecutive words and the insufficient extraction of long-text semantic information in context while detecting errors in Chinese text. First, the text to be checked is vectorized by using Word2vec.Then, the CNN is used to mine the local features of the text, and the BiGRU is used to learn the contextual semantic information and long-term dependence of the text.Softmax is applied to determine whether any word errors exist based on the text classification results.To prevent the model from overfitting, L2 regularization and the dropout strategy are adopted.Experimental results show that the proposed model gains 3.01 percentage points on the F1 value when compared with the Long Short-Term Memory(LSTM)-based text error detection model using SIGHAN2014 and SIGHAN2015 as Chinese spelling-checking task datasets, indicating that the proposed model is superior in word-level text error detection.
Key words: word error    multi-channel convolution operation    Convolution Neural Network(CNN)    Bidirectional Gated Recurrent Unit(BiGRU)    text error detection    

开放科学(资源服务)标志码(OSID):

0 概述

随着社会信息化水平的不断提升,无纸化办公成为新趋势,然而电子文本数量急剧增多,不可避免地会出现各种各样的文本错误,机关公文、学术论文、法律文书等重要文本错误将影响各类文书的权威性和公信力。因此,如何有效减少文本错误,确保文本正确性和可靠性成为当前的研究热点。

文本校对是自然语言处理(Natural Language Processing,NLP)领域的重要分支,是文本撰写工作中不可或缺的关键环节,主要利用NLP技术,按照一定的规则和要求,识别并纠正文本中所包含的错误。文本校对一般由检错和纠错两部分组成,正确纠错离不开检错,精准高效的检错是校对工作的基础。通常地,文本检错的输入为可能包含错误的待检错句子,输出为T(正确文本)或F(含字词错误文本)二类检测结果。

与英文文本相比,中文文本不存在非字错误,常见错误可分为字词错误、语法错误和语义错误3类。词是自然语言中能够独立运用的最小单位,也是自然语言处理的基本单位。字词错误在文本中出现频率相对较高,对文本检错而言,字词错误检测十分重要。字词错误包括多字、缺字、别字、易位等错误。

传统的文本检错采用人工逐字逐句校对的方式,不仅考验审校者的语言学知识水平,而且费时费力、效率不高。国内对中文文本自动检错的研究始于20世纪90年代初且发展迅速,主要采用基于规则、基于统计和基于传统机器学习等方法。近年来,深度学习技术因强大的特征学习能力被广泛应用于自然语言处理领域,尤其长短时记忆(Long Short-Term Memory,LSTM)网络[1]在中文分词、命名实体识别[2-3]、语法分析[4]等应用上取得较好成果,因此已有一些学者将深度学习技术应用于中文文本校对任务。

本文以中文文本字词错误为检测对象,提出一种基于多通道卷积神经网络(Convolutional Neural Network,CNN)和双向门控循环单元(Bidirectional Gated Recurrent Unit,BiGRU)的中文文本字词错误检测模型,主要包括词向量层、多通道CNN层、BiGRU层和Softmax输出层。

1 相关工作 1.1 传统的文本检错方法

传统的文本检错方法包括基于规则的检错方法、基于统计的检错方法和基于传统机器学习的检错方法。

基于规则的检错方法[5-6]主要利用语言学规则来侦测文本错误,规则越丰富,检错效果越好。该方法通俗易懂、可解释性强、精确度高,但文本错误千变万化、层出不穷,规则难以覆盖所有错误类型,限制了检错的效果。

基于统计的检错方法[7-9]主要利用统计规律来检测文本错误,很大程度上依赖训练语料的规模和质量,规模越大,质量越高,检错效果越好,但容易出现数据稀疏问题,需要使用各种平滑技术来解决,且准确率有待提升。

基于传统机器学习的检错方法主要利用大规模人工标注的语料样本建立数学模型,通过调试模型的参数使其达到最优,其性能好坏取决于数学模型本身、训练样本规模的大小和模型参数的调试情况[10]。CHENG等[11]提出一种基于条件随机场(Conditional Random Field,CRF)的文本乱序错误诊断方法。WU等[12]基于CRF模型训练一个线性标记器,构建中文语法错误诊断系统。CHEN等[13]利用统计的方法在大规模语料库上收集搭配信息,并将搭配特征集成到CRF模型中,得到了更精确的文本检错模型。卓利艳[14]提出一种基于CRF和n-gram散串技术的联合检错方法,该方法首先标注数据、训练模型,利用训练好的CRF检错模型判断错误位置及错误类型,然后在分词的基础上得到散串,利用n-gram模型确认错误位置。传统机器学习方法在处理结构复杂的数据泛化问题时性能较差,且只能人工提取到浅层特征。

1.2 基于深度学习的文本检错方法

目前,运用深度学习技术处理中文文本检错问题的研究仍处于起步阶段。但神经网络能通过训练模型参数实现特征自学习,学习到文本抽象的语义特征,使模型具有良好的泛化能力,因此基于深度学习的中文文本检错方法具有广泛的研究前景。为提高文本检错准确率:ZHENG等[15]提出一种CRF和LSTM相结合的模型,将CRF的输出作为LSTM输入层的离散特征;YANG等[16]在LSTM的输出层后接一个CRF层,确保预测标注序列的合法性,提高了句子标注的准确性;龚永罡等[17]在Seq2Seq模型的基础上,加入BiLSTM单元和注意力机制,有效提升了检错水平。针对表达冗余、词汇误用和内容缺失等问题:叶俊民等[18]提出一种基于层次化修正框架的文本检错纠错模型,利用基于预训练模型获得的文本语义表示来识别错误的位置,根据层次化修正框架计算精化的修正操作并修正错误;王辰成等[19]将语法检错纠错任务转换成翻译任务,提出一种基于Transformer和多头注意力机制的纠错模型,利用残差网络动态连接不同神经模块的输出,使模型能更好地捕获语义信息;段建勇等[20]改进了Transformer模型,在自注意力中加入高斯分布偏置项,加强了模型对局部信息的关注及对错误字词与前后文关系的提取,同时采用ON_LSTM结构,提升了模型获取语法错误结构信息的能力;曹阳等[21]基于Transformer网络提出一种中文单字词错误侦测方法,利用原始语料、汉字混淆集自动构建单字词错误训练语料并使用不同大小的移动窗口诊断单字词错误。

2 基础模型 2.1 卷积神经网络

CNN在机器视觉、图像处理领域取得了巨大成功,近年来也被广泛应用于NLP领域且表现出色。CNN主要由输入层、卷积层、池化层、全连接层和输出层等组成,其中卷积层和池化层是核心部分,结构如图 1所示。

Download:
图 1 CNN卷积层和池化层结构 Fig. 1 Structure of CNN convolutional layer and pooling layer

在NLP任务中,CNN的输入层主要为文本的词向量表示,如式(1)所示:

$ \boldsymbol{E}\in {\boldsymbol{{\rm A}}}^{n\times m} $ (1)

其中:A为矩阵表示符;n为句子中词向量的个数;m为词向量的维度。

卷积层主要作用是基于卷积核对输入向量进行卷积操作,提取局部特征f,利用其稀疏连接和权值共享的特性,降低输入数据的维度,防止出现过拟合。卷积操作如式(2)所示:

$ \boldsymbol{f}={\varphi }_{\mathrm{C}}(\boldsymbol{W}\mathrm{*}\boldsymbol{x}+\boldsymbol{b}) $ (2)

其中:x为词向量矩阵;W为权重矩阵,即卷积核矩阵;b为偏置量;$ {\varphi }_{\mathrm{C}} $为卷积核激活函数ReLU;$ \mathrm{*} $为卷积操作。以图 2为例,卷积操作如式(3)~式(6)所示:

$ {\boldsymbol{F}}_{11}={\boldsymbol{W}}_{11}{\boldsymbol{X}}_{11}+{\boldsymbol{W}}_{12}{\boldsymbol{X}}_{12}+{\boldsymbol{W}}_{21}{\boldsymbol{X}}_{21}+{\boldsymbol{W}}_{22}{\boldsymbol{X}}_{22} $ (3)
$ {\boldsymbol{F}}_{12}={\boldsymbol{W}}_{11}{\boldsymbol{X}}_{12}+{\boldsymbol{W}}_{12}{\boldsymbol{X}}_{13}+{\boldsymbol{W}}_{21}{\boldsymbol{X}}_{22}+{\boldsymbol{W}}_{22}{\boldsymbol{X}}_{23} $ (4)
$ {\boldsymbol{F}}_{21}={\boldsymbol{W}}_{11}{\boldsymbol{X}}_{21}+{\boldsymbol{W}}_{12}{\boldsymbol{X}}_{22}+{\boldsymbol{W}}_{21}{\boldsymbol{X}}_{31}+{\boldsymbol{W}}_{22}{\boldsymbol{X}}_{32} $ (5)
$ {\boldsymbol{F}}_{22}={\boldsymbol{W}}_{11}{\boldsymbol{X}}_{22}+{\boldsymbol{W}}_{12}{\boldsymbol{X}}_{23}+{\boldsymbol{W}}_{21}{\boldsymbol{X}}_{32}+{\boldsymbol{W}}_{22}{\boldsymbol{X}}_{33} $ (6)
Download:
图 2 卷积操作 Fig. 2 Convolution operation

池化层主要作用是进行下采样,筛选出卷积操作后最重要的特征,减小特征规模,提高特征鲁棒性。常见的池化策略有最大池化(max pooling)和全局平均池化(global average pooling)。池化后的输出作为全连接层的输入,全连接层相当于前馈神经网络的隐藏层,通常在CNN的尾部进行重新拟合,减少特征信息的损失。输出层主要用于输出结果。

考虑到CNN强大的局部特征提取能力,本文以CNN模型为基础,研究字词级文本错误检测模型。在文本检错任务中,CNN模型可以提取句子中类似n-gram的关键局部信息。

2.2 门控循环单元

循环神经网络(Recurrent Neural Network,RNN)是深度学习技术在自然语言处理任务中的重要应用,t时刻隐藏层状态的计算依赖于t时刻的输入和t-1时刻隐藏层的输出状态,因此具有一定的记忆功能,能够提取到上下文的文本特征,处理序列识别建模问题时优势明显。然而,RNN在反向传播前面时刻的参数计算过程中,随着参数W初始化为小于1的值,容易出现梯度消散的问题,从而导致训练的停滞。通常,RNN只能记忆5~10个时间步的信息,难以捕获序列中长时间和长距离的依赖关系。

在RNN模型的基础上,HOCHREITER等[1]提出长短时记忆网络,通过使用输入门、输出门和遗忘门3个门结构,LSTM在记忆重要上下文信息的同时,遗忘无用的信息,在一定程度上解决了RNN长期记忆和反向传播中梯度消散等问题。然而,LSTM训练时间较长、参数较多且计算复杂。CHO等[22]提出门控循环单元(Gated Recurrent Unit,GRU),GRU是长短时记忆网络模型的一种变体模型,结构如图 3所示。

Download:
图 3 GRU结构 Fig. 3 Structure of GRU

对于任意时刻t,假定此刻GRU的隐藏层的输入为xt、输出为ht,GRU的计算过程如式(7)~式(10)所示:

$ {\boldsymbol{r}}_{t}=\sigma ({\boldsymbol{W}}_{\boldsymbol{r}}\cdot [{\boldsymbol{h}}_{t-1}, {\boldsymbol{x}}_{t}]+{\boldsymbol{b}}_{\boldsymbol{r}}) $ (7)
$ {\boldsymbol{u}}_{t}=\sigma ({\boldsymbol{W}}_{\boldsymbol{u}}\cdot [{\boldsymbol{h}}_{t-1}, {\boldsymbol{x}}_{t}]+{\boldsymbol{b}}_{\boldsymbol{u}}) $ (8)
$ {{\boldsymbol{\tilde h}}_{t}}=\varphi ({\boldsymbol{W}}_{\boldsymbol{h}}\cdot [{\boldsymbol{r}}_{t}\otimes {\boldsymbol{h}}_{t-1}, {\boldsymbol{x}}_{t}]+{\boldsymbol{b}}_{\boldsymbol{h}}) $ (9)
$ {\boldsymbol{h}}_{t}=(1-{\boldsymbol{u}}_{t})\otimes {\boldsymbol{h}}_{t-1}+{\boldsymbol{u}}_{t}\otimes {{\boldsymbol{\tilde h}}_{t}} $ (10)

其中:$ {\boldsymbol{r}}_{t} $$ {\boldsymbol{u}}_{t} $$ {{\boldsymbol{\tilde h}}_{t}} $分别表示t时刻的重置门、更新门和候选隐藏层的状态;$ {\boldsymbol{h}}_{t-1} $表示t-1时刻的隐藏层的输出;$ {\boldsymbol{W}}_{\boldsymbol{r}}\mathrm{、}{\boldsymbol{W}}_{\boldsymbol{u}}\mathrm{、}{\boldsymbol{W}}_{\boldsymbol{h}}\mathrm{、}{\boldsymbol{b}}_{\boldsymbol{r}}\mathrm{、}{\boldsymbol{b}}_{\boldsymbol{u}}\mathrm{、}{\boldsymbol{b}}_{\boldsymbol{h}} $分别表示重置门的权重矩阵、更新门的权重矩阵、候选隐藏层的权重矩阵、重置门的偏置量、更新门的偏置量、候选隐藏层的偏置量;$ \varphi 和\sigma $分别为tanh和Sigmoid激活函数;[]表示向量拼接操作;$ \otimes $为哈达玛积,表示向量元素相乘操作。

GRU利用2个门单元(重置门、更新门)代替LSTM中的3个门单元(输入门、输出门和遗忘门),实现对上下文信息的有效筛选与过滤。由式(7)、式(9)可知,重置门主要负责确定t-1时刻隐藏单元的状态$ {\boldsymbol{h}}_{t-1} $t时刻候选状态$ {{\boldsymbol{\tilde h}}_{t}} $中被重置的程度,重置门的值越大,则被重置的程度越高。由式(8)、式(10)可知,更新门主要负责确定t-1时刻隐藏单元的状态$ {\boldsymbol{h}}_{t-1} $t时刻候选状态$ {{\boldsymbol{\tilde h}}_{t}} $对当前状态$ {\boldsymbol{h}}_{t} $的影响程度,更新门的值越大,则前一时刻隐藏层状态被遗忘的程度越高,当前候选状态被记忆的程度也越高。

GRU具备了LSTM的优点且只有两个门单元,模型结构更简单、参数更少、收敛性更好,很大程度上缩短了模型训练时间,提高了训练效率。在经典的GRU模型中,状态是根据序列由前向后单向传输的,忽略了后序状态对前序状态的影响。BiGRU是GRU的一个变体模型,既能提取前文特征,又能捕捉后文信息,弥补了单向GRU的不足,提升了模型的效果,结构如图 4所示。在图 4中,$ {\boldsymbol{x}}_{i} $i=1,2,…)表示当前的输入,$ \overrightarrow{{\boldsymbol{h}}_{i}} $表示经过GRU输出的正向隐藏状态,$ \overleftarrow{{\boldsymbol{h}}_{i}} $表示经过GRU输出的反向隐藏状态,$ {\boldsymbol{h}}_{i} $表示正向$ \overrightarrow{{\boldsymbol{h}}_{i}} $和反向$ \overleftarrow{{\boldsymbol{h}}_{i}} $拼接后的隐藏状态。

Download:
图 4 BiGRU结构 Fig. 4 Structure of BiGRU

在通常情况下,中文文本中的字词错误与上下文均有关。因此,综合考虑硬件的计算能力、时间成本以及对上下文特征提取的需求,本文以BiGRU模型为基础,研究字词级文本错误检测模型。在文本检错任务中,BiGRU模型可以捕获变长且双向的n-gram信息。

3 基于多通道CNN与BiGRU的文本错误检测模型

本文提出一种基于多通道CNN与BiGRU结构的字词级文本错误检测模型,既能充分发挥CNN提取待检错文本局部特征的优势,又能利用BiGRU深入学习待检错文本的上下文语义信息及长时依赖关系。该模型主要由词向量层、多通道CNN层、BiGRU层和Softmax输出层等组成,整体结构如图 5所示。采取无监督学习的方式训练模型,利用带标签类的语料训练基于多通道CNN与BiGRU的字词错误检测模型,使其自动学习模型中的各参数,采用训练得到的检错模型对待检错语句进行分类,判断是否存在字词错误并输出结果。

Download:
图 5 基于多通道CNN与BiGRU的字词级文本错误检测模型结构 Fig. 5 Structure of the word-level text error detection model based on multi-channel CNN and BiGRU
3.1 词向量层

词向量层主要是将输入的待检错文本向量化。词向量是词汇的分布式表示,关键在于将词汇转化为相对低维的连续的稠密实数向量,在深度学习技术应用于NLP领域扮演着重要的角色。词向量之间的距离表征了词语间的相似性,距离越近,则相似程度越高。

给定一个含词量为n的句子$ X={x}_{1}, {x}_{2}, \cdots , {x}_{n} $$ {x}_{i}(i=\mathrm{1, 2}, \cdots , n) $为句子中的第i个词语,经过词向量层的映射后,则句子X可表示为由n个词向量拼接而成的二维矩阵,如式(11)所示:

$ {\boldsymbol{X}}_{1:n}=[{\boldsymbol{e}}_{1}, {\boldsymbol{e}}_{2}, \cdots , {\boldsymbol{e}}_{n}]\in {\boldsymbol{A}}^{n\times m} $ (11)

其中:$ {\boldsymbol{e}}_{i} $表示句子中$ {\boldsymbol{x}}_{i} $对应的词向量。

3.2 多通道CNN层

多通道CNN层主要利用多通道卷积神经网络有效提取文本的局部特征,输入为预训练好的词向量。选择不同大小的卷积核对输入的词向量进行卷积操作,可以提取到广度不同的上下文信息,即不同粒度的特征信息[23],从而达到提取文本局部特征的目的。

使用不同尺寸的卷积核进行卷积操作,从而得到文本的局部特征,如图 6所示。令第i个通道所使用的卷积核为k,如式(12)所示:

$ \boldsymbol{k}\in {\boldsymbol{A}}^{n\times m} $ (12)
Download:
图 6 多通道卷积操作 Fig. 6 Multi-channel convolution operation

经该卷积核k卷积操作后的特征$ {\boldsymbol{f}}_{ij} $的计算如式(13)所示:

$ {\boldsymbol{f}}_{ij}={\varphi }_{\mathrm{C}}(\boldsymbol{W}\mathrm{*}{\boldsymbol{X}}_{i:i+n-1}+\boldsymbol{b}) $ (13)

其中:$ {\boldsymbol{X}}_{i:i+n-1}\in {\boldsymbol{A}}^{n\times m} $表示n个词向量组成的卷积核动态处理窗口。当窗口从$ {\boldsymbol{X}}_{1:h} $动态移动至$ {\boldsymbol{X}}_{n-h+1:n} $时,$ \left\{{\boldsymbol{X}}_{1:h}, {\boldsymbol{X}}_{2:h+1}, \cdots , {\boldsymbol{X}}_{n-h+1:n}\right\} $所对应的第i个通道得到的特征序列如式(14)所示:

$ {\boldsymbol{f}}_{i}=\left[{\boldsymbol{f}}_{i\left(1\right)}, {\boldsymbol{f}}_{i\left(2\right)}, \cdots , {\boldsymbol{f}}_{i(n-h+1)}\right] $ (14)

多通道CNN提取到的局部特征进行最大池化操作后生成固定维度的特征序列,再将多个固定维度的特征序列拼接形成融合特征序列f,令通道个数为u,则f可表示如下:

$ \boldsymbol{f}=\left[{\boldsymbol{f}}_{1}, {\boldsymbol{f}}_{2}, \cdots , {\boldsymbol{f}}_{u}\right] $ (15)
3.3 BiGRU层

BiGRU层主要利用双向门控循环单元挖掘文本的上下文信息、解决长时依赖问题,输入为多通道CNN层经卷积操作提取的特征序列的融合。权值共享的BiGRU将粒度不同的特征信息映射到相同的向量空间内。

对于给定的n维输入$ \left({\boldsymbol{x}}_{1}, {\boldsymbol{x}}_{2}, \cdots , {\boldsymbol{x}}_{n}\right) $t时刻BiGRU的隐藏层输出为$ {\boldsymbol{h}}_{t} $,计算过程如式(16)~式(18)所示:

$ {\overrightarrow{\boldsymbol{h}}}_{t}=\mathrm{G}\mathrm{R}\mathrm{U}(\boldsymbol{X}, {\overrightarrow{\boldsymbol{h}}}_{t-1}), t\in (1, n) $ (16)
$ {\overleftarrow{\boldsymbol{h}}}_{t}=\mathrm{G}\mathrm{R}\mathrm{U}(\boldsymbol{X}, {\overleftarrow{\boldsymbol{h}}}_{t-1}), t\in (n, 1) $ (17)
$ {\boldsymbol{H}}_{t}=[{\overrightarrow{\boldsymbol{h}}}_{t}, {\overleftarrow{\boldsymbol{h}}}_{t}]\in {\boldsymbol{A}}^{n\times 2m} $ (18)

其中:$ {\overrightarrow{\boldsymbol{h}}}_{0}\mathrm{和}{\overleftarrow{\boldsymbol{h}}}_{n+1} $均初始化为零向量;$ {\overrightarrow{\boldsymbol{h}}}_{t}\mathrm{和}{\overleftarrow{\boldsymbol{h}}}_{t} $分别表示挖掘上文信息和下文信息所得到的词法特征表示;$ {\boldsymbol{H}}_{t} $表示融合了上下文信息的词法特征表示。

当BiGRU模型参数过多、训练样本较少时,容易产生过拟合现象。为防止训练过度,BiGRU层采用dropout机制,随机丢弃一些隐藏层节点使其暂时不参与模型训练,迫使BiGRU网络在训练过程中学习鲁棒性更强的特征,提升模型的泛化能力。

3.4 Softmax输出层

Softmax输出层主要利用Softmax函数对BiGRU层的输出进行归一化处理,提升模型的精度和收敛速度,最终得到文本检错结果,如式(19)所示:

$ \widehat{y}=\mathrm{S}\mathrm{o}\mathrm{f}\mathrm{t}\mathrm{m}\mathrm{a}\mathrm{x}({\boldsymbol{W}}_{\mathrm{S}}\boldsymbol{H}+{\boldsymbol{b}}_{\mathrm{S}}) $ (19)

其中:$ {\boldsymbol{W}}_{\mathrm{S}} $为Softmax层的权重矩阵;$ {\boldsymbol{b}}_{\mathrm{S}} $为Softmax层的偏置量。采用最小化交叉熵损失函数(cross-entropy loss function)的方式来求解和评估模型,同时引入L2正则项,使模型参数更少、结构更简单,防止过拟合,损失函数的计算如式(20)所示:

$ L=-\sum\limits _{i=1}^{M}\sum\limits _{j=1}^{N}{y}_{i}^{j}\mathrm{l}\mathrm{o}{\mathrm{g}}_{a}{\widehat{y}}_{i}^{j}+\lambda \left|\right|\omega |{|}^{2} $ (20)

其中:i为待检错文本的句子索引;j为待检错文本类别的索引T(正确文本)或F(含字词错误文本);M为训练数据集的大小;N为检测结果的类别数量;$ {y}_{i} $为待检错文本实际所属的类别,$ {\widehat{y}}_{i} $为待检错文本经模型预测的类别;$ \lambda \left|\right|\omega |{|}^{2} $为L2正则化项,$ \lambda $为正则化参数,$ \omega $为模型参数。

4 实验与结果分析 4.1 实验环境、数据集与评价指标

实验环境为:CPU为Intel Core i7-7800X,GPU为GeForce RTX 2080Ti,内存为DDR4 16 GB,操作系统为Windows10(64位),深度学习框架为tensorflow1.14。

实验在公开数据集SIGHAN2014、SIGHAN2015上进行,采用SIGHAN2014、SIGHAN2015中文拼写检查任务的训练集作为实验训练语料,SIGHAN2014中文拼写检查任务的测试集作为实验测试语料。训练语料包括9 701个段落(共计8 325个字词错误),其中SIGHAN2014训练集中有6 527个段落(共计5 224个字词错误),SIGHAN2015训练集中有3 174个段落(共计3 101个字词错误)。测试语料包括1 062个段落,段落文本的平均长度为50,其中50%文本中无字词错误,50%文本中至少含有1个字词错误(共计792个字词错误)。如果句子中包含至少1个字词错误,则该句子为含字词错误文本且被标记为F,否则为正确文本且被标记为T。

实验采用检错的准确率(P)、召回率(R)、调和平均值(F1)作为文本检错模型性能好坏的评价指标,其中F1值为PR的调和平均值,计算如式(21)所示:

$ {F}_{1}=\frac{2\times P\times R}{P+R}\times 100\mathrm{\%} $ (21)
4.2 实验数据预处理与参数设置

在实验开始前需要对实验语料进行数据预处理。在NLP任务中,预训练词向量的效果影响着文本校对、机器翻译、文本分类等NLP下游任务模型性能的好坏。本文使用Word2vec词向量工具[24],基于大规模中文维基百科语料训练skip-gram模型。考虑到词的数量,将中文文本词向量的维度设置为300。在训练词向量的过程中,词出现次数的阈值设置为5。若一个词出现次数大于5,则将该词添加于词向量词典;反之舍弃。对于未登录词,随机初始化其向量表示。考虑到实验语料中文本的平均长度为50,将句子长度的阈值设置为50。当句子长度小于50时,进行补零操作;反之进行截断操作。对于实验语料中待检错文本,需要先使用jieba分词工具进行中文分词。

目前,深度神经网络模型中使用较多、效果较好的优化算法是Adam[25],其引入动量和自适应性学习率使得网络更快收敛。因此,本文实验采用Adam作为模型的优化器。

本文多通道CNN所用的卷积核宽度分别为3、4、5,尺寸分别为$ 3\times 300 $$ 4\times 300 $$ 5\times 300 $,数量均为128;BiGRU隐藏层数分别1、2、3、4,隐藏层节点数为128;同时采用L2正则化和dropout策略来避免过拟合现象的发生。经过多次实验优化参数,本文模型的实验超参数设置如表 1所示。

下载CSV 表 1 实验超参数设置 Table 1 Setting of experimental hyperparameters
4.3 实验设计与结果分析

本文共设计4个实验。实验1、实验2、实验3利用控制变量法针对影响基于多通道CNN与BiGRU字词错误检测模型(简称为CNN-BiGRU模型)性能的多个重要参数进行实验验证,使模型性能达到最优。在实验1、实验2、实验3的基础上,设计实验4,将性能最优的CNN-BiGRU模型与基于RNN、LSTM、GRU、BiGRU的文本检错模型进行比较,从而验证CNN-BiGRU模型的有效性和优越性。

实验1  验证卷积核通道数和宽度对CNN-BiGRU模型性能的影响。在BiGRU隐藏层数为3、dropout丢弃率为0.2的情况下,分别选取单通道卷积核宽度为3、4、5和多通道卷积核宽度为(3,4,5)进行实验,结果如表 2所示,其中最优指标值用加粗字体标示。

下载CSV 表 2 CNN-BiGRU模型在不同卷积核宽度下的测试结果 Table 2 Test results of CNN-BiGRU model with different convolutional kernel widths

表 2可以得出,利用不同通道数和宽度的卷积核对文本进行卷积操作,均能有效挖掘文本的局部特征。多通道CNN-BiGRU模型效果优于单通道CNN-BiGRU模型效果。在单通道CNN-BiGRU模型中,随着卷积核宽度的增大,模型性能越来越好。

实验2  验证BiGRU隐藏层数对CNN-BiGRU模型性能的影响。在dropout丢弃率为0.2的情况下,分别选取BiGRU隐藏层数为1、2、3、4进行实验,结果如表 3所示,其中最优指标值用加粗字体标示。

下载CSV 表 3 CNN-BiGRU模型在不同BiGRU隐藏层数下的测试结果 Table 3 Test results of CNN-BiGRU model with different BiGRU hidden layers  

表 3可以得出,随着BiGRU隐藏层数的增加,CNN-BiGRU模型的网络不断加深,表现越来越优,说明适当地增加隐藏层数能够丰富网络结构,提高网络学习能力,从而改善检错模型效果。当隐藏层数为3时,CNN-BiGRU模型的精度达到最高。但随着隐藏层数的继续增加,模型参数会大幅增多,模型复杂度也急剧加大,模型性能有所下降,由此说明隐藏层数也不宜过多,否则容易出现过拟合。

实验3  验证dropout机制的有效性及dropout丢弃率对CNN-BiGRU模型性能的影响。在BiGRU隐藏层数为3的情况下,分别选取dropout丢弃率为0.0、0.2、0.5进行实验,测试在每一轮迭代后检错F1值的变化情况,结果如图 7所示。

Download:
图 7 CNN-BiGRU模型在不同丢弃率下的迭代后检错F1 Fig. 7 Error detection F1 value of CNN-BiGRU model after iteration with different drop rates

图 7可以得出,dropout机制对于防止过拟合、提升检错模型的性能起着重要作用。在丢弃率为0.0即不采用dropout机制的情况下,前几轮迭代中CNN-BiGRU模型性能较好,但当迭代轮数逐渐增大,检错F1值趋于稳定时,丢弃率为0.2的模型性能优于不采用dropout机制的模型性能。在丢弃率选取为0.5的情况下,CNN-BiGRU模型性能较差,因此,采用dropout机制时丢弃率不宜选取过大,否则容易丢弃重要特征导致模型性能下降。

实验4  验证CNN-BiGRU模型的有效性。在BiGRU隐藏层数为3、dropout丢弃率为0.2的情况下,对基于RNN、LSTM、GRU、BiGRU、CNN-BiGRU的文本检错模型进行实验,结果如表 4所示,其中最优指标值用加粗字体标示。

下载CSV 表 4 不同文本检错模型的测试结果 Table 4 Test results of different text error detection models  

表 4实验结果可以看出:

1)基于RNN、LSTM、GRU的文本检错模型均能提取文本序列间的长时依赖关系,基于LSTM、GRU的文本检错模型效果相当,明显优于基于RNN的文本检错模型,但基于GRU的文本检错模型结构简单,更具优势。

2)相较于GRU的文本检错模型,基于BiGRU的文本检错模型能够充分提取上下文特征信息,弥补了单向GRU的不足,检错F1值提升了0.77个百分点。

3)相较于BiGRU,本文基于多通道CNN与BiGRU的文本检错模型能够学习文本序列间的局部特征信息,检错F1值提升了1.65个百分点。

目前公开的字词错误检测的语料较少,实验主要依赖于SIGHAN2014、SIGHAN2015中文拼写检查任务中的训练集,且训练语料规模不大。然而,字词错误检测模型对训练语料的规模要求较高,制约了基于多通道CNN与BiGRU的字词级文本错误检测模型在测试语料中预测准确率、召回率的进一步提升。例如,“那一天我会穿牛仔裤和红色的外套;头上会带着蓝色的帽子。”和“我也想试试看那一家的越南菜;网路上说很多人喜欢那一家餐厅。”均为含有字词错误的文本,其中,“带着”应改为“戴着”,“网路”应改为“网络”,该文本应被标记为“F”却被错误标记为“T”。

5 结束语

本文提出一种融合多通道CNN与BiGRU的中文文本字词错误检测模型,在多通道CNN层深入挖掘文本局部特征,在BiGRU层充分提取文本上下文信息,同时采用L2正则化和dropout策略防止模型过拟合。在SIGHAN2014和SIGHAN2015中文拼写检查任务数据集上,设计字词错误检测实验分析并对比模型性能。实验结果表明,该模型有效解决了字词级文本错误检测的问题。后续将使用结构更简单的最小门单元代替门控循环单元,并引入注意力机制完善字词级错误检测模型,使其检错F1值得到进一步提升。

参考文献
[1]
HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735
[2]
LAMPLE G, BALLESTEROS M, SUBRAMANIAN S, et al. Neural architectures for named entity recognition[C]//Proceedings of 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Stroudsburg, USA: Association for Computational Linguistics, 2016: 260-270.
[3]
张应成, 杨洋, 蒋瑞, 等. 基于BiLSTM-CRF的商情实体识别模型[J]. 计算机工程, 2019, 45(5): 308-314.
ZHANG Y C, YANG Y, JIANG R, et al. Commercial intelligence entity recognition model based on BiLSTM-CRF[J]. Computer Engineering, 2019, 45(5): 308-314. (in Chinese)
[4]
VINYALS O, KAISER L, KOO T, et al. Grammar as a foreign language[EB/OL]. [2021-07-11]. https://arxiv.org/abs/1412.7449.
[5]
易蓉湘, 何克抗. 计算机汉语文稿校对系统[J]. 计算机研究与发展, 1997, 34(5): 346-350.
YI R X, HE K K. Computerized Chinese manuscript proofreading system[J]. Computer Research and Development, 1997, 34(5): 346-350. (in Chinese)
[6]
刘挺, 施洪滨, 邵艳秋. 中文计算机辅助校对系统原理[J]. 中文信息, 1997(2): 21-22.
LIU T, SHI H B, SHAO Y Q. Principles of Chinese computer-aided proofreading system[J]. Chinese Information, 1997(2): 21-22. (in Chinese)
[7]
张仰森, 唐安杰, 张泽伟. 面向政治新闻领域的中文文本校对方法研究[J]. 中文信息学报, 2014, 28(6): 79-84, 128.
ZHANG Y S, TANG A J, ZHANG Z W. Chinese text proofreading for political news field[J]. Journal of Chinese Information Processing, 2014, 28(6): 79-84, 128. (in Chinese)
[8]
刘亮亮, 曹存根. 中文"非多字词错误"自动校对方法研究[J]. 计算机科学, 2016, 43(10): 200-205.
LIU L L, CAO C G. Study of automatic proofreading method for non-multi-character word error in Chinese text[J]. Computer Science, 2016, 43(10): 200-205. (in Chinese)
[9]
张仰森, 郑佳. 中文文本语义错误侦测方法研究[J]. 计算机学报, 2017, 40(4): 911-924.
ZHANG Y S, ZHENG J. Study of semantic error detecting method for Chinese text[J]. Chinese Journal of Computers, 2017, 40(4): 911-924. (in Chinese)
[10]
宗成庆. 中文信息处理研究现状分析[J]. 语言战略研究, 2016, 1(6): 19-26.
ZONG C Q. Chinese language processing: achievements and problems[J]. Chinese Journal of Language Policy and Planning, 2016, 1(6): 19-26. (in Chinese)
[11]
CHENG S M, YU C H, CHEN H H. Chinese word ordering errors detection and correction for non-native Chinese language learners[C]//Proceedings of International Conference on Computational Linguistics. Stroudsburg, USA: Association for Computational Linguistics, 2014: 279-289.
[12]
WU S H, CHEN P L, CHEN L P, et al. Chinese grammatical error diagnosis by conditional random fields[C]//Proceedings of the 2nd Workshop on Natural Language Processing Techniques for Educational Applications. Stroudsburg, USA: Association for Computational Linguistics, 2015: 1-9.
[13]
CHEN P L, WU S H, CHEN L P, et al. Improving the selection error recognition in a Chinese grammar error detection system[C]//Proceedings of the 17th International Conference on Information Reuse and Integration. Washington D. C., USA: IEEE Press, 2016: 1-10.
[14]
卓利艳. 字词级中文文本自动校对的方法研究[D]. 郑州: 郑州大学, 2018.
ZHUO L Y. Study on the method of automatic proofreading of word-level Chinese text[D]. Zhengzhou: Zhengzhou University, 2018. (in Chinese)
[15]
ZHENG B, CHE W X, GUO J, et al. Chinese grammatical error diagnosis with long short-term memory networks[C]//Proceedings of International Conference on Computational Linguistics. Washington D. C., USA: IEEE Press, 2016: 49-56.
[16]
YANG Y, XIE P J, TAO J, et al. Alibaba at IJCNLP-2017 task 1: embedding grammatical features into LSTMs for Chinese grammatical error diagnosis task[C]//Proceedings of International Joint Conference on Natural Language Processing. Washington D. C., USA: IEEE Press, 2017: 41-46.
[17]
龚永罡, 吴萌, 廉小亲, 等. 基于Seq2Seq与Bi-LSTM的中文文本自动校对模型[J]. 电子技术应用, 2020, 46(3): 42-46.
GONG Y G, WU M, LIAN X Q, et al. Chinese text automatic proofreading model based on Seq2Seq and Bi-LSTM[J]. Application of Electronic Technique, 2020, 46(3): 42-46. (in Chinese)
[18]
叶俊民, 罗达雄, 陈曙. 基于层次化修正框架的文本纠错模型[J]. 电子学报, 2021, 49(2): 401-407.
YE J M, LUO D X, CHEN S. A text error correction model based on hierarchical editing framework[J]. Acta Electronica Sinica, 2021, 49(2): 401-407. (in Chinese)
[19]
王辰成, 杨麟儿, 王莹莹, 等. 基于Transformer增强架构的中文语法纠错方法[J]. 中文信息学报, 2020, 34(6): 106-114.
WANG C C, YANG L E, WANG Y Y, et al. Chinese grammatical error correction method based on transformer enhanced architecture[J]. Journal of Chinese Information Processing, 2020, 34(6): 106-114. (in Chinese)
[20]
段建勇, 袁阳, 王昊. 基于Transformer局部信息及语法增强架构的中文拼写纠错方法[J]. 北京大学学报(自然科学版), 2021, 57(1): 61-67.
DUAN J Y, YUAN Y, WANG H. Chinese spelling correction method based on transformer local information and syntax enhancement architecture[J]. Acta Scientiarum Naturalium Universitatis Pekinensis, 2021, 57(1): 61-67. (in Chinese)
[21]
曹阳, 曹存根, 王石. 基于Transformer网络的中文单字词检错方法研究[J]. 中文信息学报, 2021, 35(1): 135-142.
CAO Y, CAO C G, WANG S. A transformer approach to error detection of Chinese single-character word[J]. Journal of Chinese Information Processing, 2021, 35(1): 135-142. (in Chinese)
[22]
CHO K, VAN MERRIENBOER B, GULCEHRE C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[C]//Proceedings of 2014 Conference on Empirical Methods in Natural Language Processing. Stroudsburg, USA: Association for Computational Linguistics, 2014: 1-25.
[23]
袁和金, 张旭, 牛为华, 等. 融合注意力机制的多通道卷积与双向GRU模型的文本情感分析研究[J]. 中文信息学报, 2019, 33(10): 109-118.
YUAN H J, ZHANG X, NIU W H, et al. Sentiment analysis based on multi-channel convolution and Bi-directional GRU with attention mechanism[J]. Journal of Chinese Information Processing, 2019, 33(10): 109-118. (in Chinese)
[24]
MIKOLOV T. Distributed representations of words and phrase and their compositionality[C]//Proceedings of the 26th International Conference on Neural Information Processing Systems. New York, USA: ACM Press, 2013: 3111-3119.
[25]
KINGMA D P, BA J. Adam: a method for stochastic optimization[EB/OL]. [2021-07-11]. https://arxiv.org/abs/1412.6980.