王 辉,潘俊辉,王浩畅,张 强,张 岩,Marius. Petrescu
(1.东北石油大学 计算机与信息技术学院,黑龙江 大庆 163318; 2.普罗莱斯蒂石油天然气大学,罗马尼亚 什蒂市 100680)
随着“一带一路”倡议的提出,风靡全球的“汉语热”承载了当今世界各国人民对中华文明的深切渴望。汉语水平考试(HSK)的萌出,以及中文在国际舞台的迅猛传播,逐渐彰显了中国国际地位的提升及中国文化的重要性。教育部、国家语委印发的《国家中长期语言文字事业改革和发展规划纲要(2012-2020年)》[1]中提出必须纠正语言文字的不规范使用,构建和谐语言生活,服务社会主义文化强国建设。然而,中文作为最难学的语言之一,与英文有很大的不同,其在发音、语法、语义、形态上有着极强的复杂性和灵活性,无形中加大了中文语法错误诊断的难度。包含语法错误的中文自然语言描述,往往会导致计算机做出错误的回应,直接影响着人工智能的水平。因此,中文语法错误诊断的研究意义重大,已然成为了计算机处理自然语言领域的一个重要研究方向。
2014年,Yu发布的中文语法错误诊断共享任务中,将语法错误诊断重点集中在语料中出现的四类语法错误,即词语冗余(redundant words,R)、词语缺失(missing words,M)、词语误用(word selection errors,S)和词语乱序(word ordering errors,W)[2]。近年来,传统的中文语法错误诊断方法多采用基于规则、统计、语料、特征等策略,结合机器学习判定中文语法错误,这些方法的最大缺陷在于难以关联上下文语义,导致中文语法检错效果并不是很好。随着深度学习技术在计算机视觉、语音识别、自然语言处理等诸多领域的迅猛发展和优异表现,相比于传统的检错方法,基于深度学习的中文语法检错方法逐渐占据了中文语法错误诊断技术的主导地位。
2014年,Shuk-Man Cheng等提出应用CRF和基于排序SVM算法的模型检测词语乱序错误[3]。2015年,Jui-Feng Yeh等先采用CKIP自动标注系统分词,再应用CRF模型进行中文语法错误诊断,取得了较好的召回率和精准率[4]。同年,韩文颖构建了基于序列标注的CRF语法错误检测模型,提高了识别层的精度[5]。2016年,在参加中文语法纠错任务的队伍提交方法中多次出现了深度学习相关算法,在各级别的评估下都取得了不错的成绩。例如,北京大学采用了Bi-LSTM模型诊断方法,云南大学提出了基于字向量的CNN模型和LSTM模型的诊断方法[6]。同年,Zheng等也采用了LSTM模型进行句子语法错误标注[7]。2017年,Yang等提出的LSTM-CRF模型很大程度上提高了句子标注的准确性,获得了同年国际自然语言处理联合会议(IJCNLP 2017)中文语法纠错第一名[8]。2019年,杨劲男探讨和对比了现有机器学习模型以及其他神经网络模型,提出一种基于门控递归单元与条件随机场的组合模型(GRU_CRF),提高了文本特征拟合度,同时证明CRF在判错定位时确实具有较好的效果[9]。然而,现有的方法往往需要大量人工标注特征,同时忽略了特征词的上下文信息的影响。
鉴于此,该文提出一种基于BI-LASM-ATT与CRF相结合的模型应用于中文语法错误诊断研究。首先,对句子进行断句、按固定长度补全句子、采用jieba分词技术进行数据预处理;其次,为反映词对全文信息的重要程度,以及词位置的影响,利用Skip-gram模型标注词向量;最后,将生成的向量表示作为基于注意机制的双向LASM模型的词嵌入层数据,利用CRF模型进行序列标注。
词语是自然语言处理最基本的一个元素,在进行语法错误检错之前,首先需要对测试文本进行词语划分,即将句子分割成独立的词语。目前,英文分词技术主要采用规则模型主导和统计模型主导的分词技术,中文分词技术主要采用基于字符串匹配、基于理解和基于统计的分词方法,其中最为常用的是Python的jieba分词组件。
jieba分词支持以下四种分词模式:
(1)精确模式。将句子精确切分以作文本分析。
(2)全模式。快速扫描出句子中所有可成词的词语。
(3)搜索引擎模式。在精确模式的基础上,再次切分长词,以提高召回率。
(4)paddle模式。利用深度学习框架,训练序列标注网络模型实现分词与词性标注。
jieba分词技术能够实现高效的词图扫描,生成句中汉字所有可能的成词情况的有向无环图;并采用了动态规划算法以查找最大概率路径的方式,找出以词频为基础的最大切分组合;对于未登录到词库的词,使用了基于汉字成词能力的隐马尔可夫(hidden Markov model,HMM)模型和维特比(Viterbi)算法得到分词结果。同时,jieba分词技术能够实现词性标注工作,为语法检错提供了更详尽的数据。
分词之后得到的每个词语相互独立,一定程度上忽略了上下文影响因素,使得在语法错误诊断过程中遗漏了很多语法错误,因此需要找出其相关的所有信息。词嵌入模型可以使用词向量的方式来描述词语的相关信息,2013年Mikolov等学者提出了Word2vec方法来解决这个问题[10]。Word2vec是从大量文本语料中以无监督方式学习语义知识,一种用于训练词向量的模型工具,作用是将所有词语投影到K维的向量空间,每个词语都可以用一个K维向量表示。Word2vec可使用连续词袋CBOW(continuous bag-of-words)和Skip-gram模型来学习词向量表达,CBOW主要通过上下文预测词的方式学习,Skip-gram主要以词来预测周围上下文方式学习。对于没有标注的训练数据集,Skip-gram模型作为一种无监督学习技术,可根据样本间的规律统计对样本进行分析,查找给定词的最相关词语,更适合完成中文语法检错的词嵌入层向量的生成。
深度学习是机器学习研究中一个崭新的领域,其模型属于一种多隐藏层、多感知层的神经网络结构,并具备优秀的数据表示。近年来,深度学习模型及其各种改进形式的模型层出不穷,纷纷被应用在自然语言处理研究中,得到了不错的效果。为了更好地捕捉词语上下文相关信息,保留语序特征信息,该文采用了基于注意机制的双向长短期记忆网络模型。
1.3.1 双向长短期记忆网络模型
长短期记忆网络(long short-term memory networks,LSTM)模型是递归神经网络(recurrent neural network,RNN)模型的一种,可以更好地解决中文语法检错中的长距离依赖问题。近年来,LSTM作为RNN的一种优化,利用其所具备的学习长距离文本依赖的特点,被广泛应用在情感分类、机器阅读理解等研究中,已然成为了深度学习的一个重要研究热点[11]。双向长短期记忆网络(Bi-LSTM)由前向和后向LSTM组合而成,由于其具备神经网络拟合非线性的能力,可以更好地捕捉上下文的双向语义信息,为语法检错提供上下文依赖性更强的文本信息。
1.3.2 注意机制
注意(attention)机制强调把注意力集中放在重要的点上,忽略其他不重要的因素。神经网络注意机制是具备专注于其输入(或特征)的神经网络,它可选择特定的输入。目前,基于注意机制深度学习网络模型的改进研究,已在机器翻译等领域取得了很好的应用效果。
中文语法检错任务可以视为序列化标签标注任务,在做标注时给定特定的标签集合,即可完成序列标注。常见的解决方案往往借助于隐马尔可夫(HMM)[12]、最大熵马尔可夫(MEMM)[13]和条件随机场(conditional random field,CRF)模型。其中,2001年由Lafferty等提出的CRF,是一种无向图判别式概率模型,作为解决序列标注问题的主流方法,很好地解决了HMM和MEMM的标注偏差以及标签之间的依赖关系信息问题,在分词、词性标注和命名实体识别等序列标注任务中取得了很好的应用效果。
该文构建了基于BI-LSTM-ATT与CRF的中文语法错误诊断模型,由词嵌入层、BI-LSTM-ATT层、CRF层构成,结构如图1所示。
图1 基于BI-LSTM-ATT与CRF的中文语法错误诊断研究框架
词嵌入层的作用在于通过大量样本训练Word2vec输入词向量,提供给下一层使用。应用Skip-gram模型分别将输入词和POS标签作为中心词,预测出其上下文词和上下文POS标签为输出词。训练前,将语料库中的所有n个词语进行独热编码为w(i)∈Rn,同时对输出也进行独热编码。Skip-gram模型结构如图2所示。
图2 Skip-gram模型
Skip-gram模型分为三层:第一层为输入层(INPUT),w(i)为输入语句的每个词语,以此作为输入词;第二层为投影层(PROJECTION);第三层为输出层(OUTPUT),窗口为c,假设c取5,得到目标单词w(i)上下文中的5c个词向量(w(i-5),…,w(i-1),w(i+1),…,w(i+5)),即输入词的邻近词的概率分布。同理,再将每个词POS标签p(i)作为输入,得到其上下文POS标签向量(p(i-5),…,p(i-1),p(i+1),…,p(i+5)),即输入词POS标签的邻近POS标签的概率分布。
给定一个大小为|W|的词集,将每个词w∈W映射到dw维嵌入空间。同理,给定大小为|P|的POS标签集,将每个POS标签p∈P映射到dP维嵌入空间。最后,将得到的词向量和POS标签向量嵌入连接到单个向量xi∈RHc中,其中Hc=c×(dw+dp),作为BI-LSTM-ATT层的输入。
1997年,Hochreiter与Schmidhuber提出对递归神经网络(recurrent neural network,RNN)进行优化,得到了长短期记忆网络(long short term memory networks,LSTM)[14],解决了长序列学习的梯度消失问题[15]。近年来,很多学者在自然语言处理的研究应用中,针对具体问题,对LSTM模型进行各种形式的改进都取得了不错的应用效果[16]。该文采用BI-LSTM-ATT模型,通过充分利用序列上下文中所有可能对标记有用的信息,即提取词过去和未来的特征来提升标签的准确度,如图3所示。
图3 基于注意机制的BI-LSTM模型
(1)
其中,W是权重矩阵,将输入的hi进行线性转换,uw是词水平的上下文矢量,C是第i个词语的向量。
最终得到每个词的所有标签的各自得分,即每个词映射到标签的概率值。
BI-LSTM-ATT模型充分考虑了输入序列的上下文信息,但忽略了标签之间存在的依赖关系,而相邻文字之间的信息对于语法识别很重要。在BI-LSTM-ATT模型之后再加入一个CRF层,可针对不同任务设计特征,所有特征可进行全局归一化,求得全局最优解,通过选取有效特征,生成相应的标签序列。CRF模型可以把前后标记依赖约束考虑进去,使用标记状态转换概率作为评分。
在自然语言处理问题中,普遍采用线性链条件随机场解决序列标注问题。设X为线性链表示的输入观测序列,Y为对应的状态序列,X=(X1,X2,…,Xn),Y=(Y1,Y2,…,Yn),则Y的条件概率分布P(Y|X)构成条件随机场,模型定义为:
(2)
其中,fk和λk分别表示特征集合和对应权重,Z(X)表示归一化因子,表示所有可能状态的条件概率之和,公式如下:
(3)
该文按中文语法错误的四种类型加无错误类型,将错误类型标签Y定义为{R,M,S,W,N},分别对应词语冗余、词语缺失、词语误用、词语乱序和无错误。
实验选取2017年“汉语水平考试(HSK)”写作部分数据的10 000句作为训练数据,其中正确句子总数为3 658句;从NLPCC2018(CCF国际自然语言处理与中文计算会议,Natural Language Processing and Chinese Computing)新增的TASK2中文语法错误修正任务提供的数据集中,随机选取3 000句作为测试数据。
(1)文本清洗。
实验过程中,为了保证不会因为句子分割或字向量过于稀疏等因素影响检测结果,定义句子长度为100。对长于100的句子,采用人工分割的方式,尽量保证文本特征集中;对短于100的句子,采用在句后以0字补全的方式。
(2)分词和词性标注。
利用python自带的jieba分词器对训练集所有语句进行分词处理和词性标注。使用Skip-gram模型训练得到300维的字向量。
根据常用的几个性能评价指标对模型进行评价,主要有精确率Precision(P)、召回率Recall(R)和F_meature(F),公式如下:
(4)
(5)
(6)
其中,TP表示正确的句数,FP表示错误的句数,FN表示没有被检测出的句数。F_meature作为标准测度,考虑了Precision和Recall的综合影响。
在数据进行了预处理的前提下,将提出的方法与常用的人工智能方法进行实验对比,包括LSTM、Bi-LSTM、CRF、Bi-LSTM-CRF。实验结果如表1所示,包括不同算法模型对应的Accuracy、Precision、Recall和F_meature值。从表1可以看到,LSTM与Bi-LSTM虽然能够解决中文语法检错中的长距离依赖问题,甚至Bi-LSTM能够更好地捕捉上下文相关信息,实验效果明显优于LSTM,但在更加复杂的真实数据实验情况下,CRF模型的Accuracy、Recall和F_meature指标明显高于LSTM与Bi-LSTM。Bi-LSTM-CRF模型由于结合了获取上下文信息和局部特征条件概率的能力,在位置级别上比以上模型效果都要好,但由于梯度下降等原因,仍不能完美发挥作用。因Bi-LSTM-ATT能够通过注意机制捕捉句中关键部分,优化了语法检错任务,再通过CRF层对标签序列概率分布建模,得到了更高的Precision、Recall和F_meature,在位置级别上与Bi-LSTM-CRF实验效果相差无几。实验表明,提出的基于Bi-LSTM-ATT与CRF相结合的模型,可有效提高中文语法错误诊断效果。
表1 实验结果对比
提出了一种基于BI-LSTM-ATT与CRF相结合的中文语法错误诊断模型,应用于NLPCC2018的TASK2提供的数据集。该方法将采用jieba分词预处理后的数据,运用Skip-gram模型得到词向量表示,通过BI-LSTM-ATT模型的Softmax分类器进行分类,进而采用CRF模型分类并定位。为验证模型的有效性,在复旦大学提供的语料集中抽样实验,结果表明,提出的模型在Accuracy、精确率、召回率、F_meature效果对比中,比传统深度学习模型均有提高,为中文语法错误诊断的相关研究提供了一些新思路。在未来的工作中,将获取更多的训练数据增强模型,争取更大限度地拟合出中文的固定规律,进一步优化和完善模型。