融合词性特征的中文句子相似度计算方法

2020-02-08 06:56艾山吾买尔卡哈尔江阿比的热西提王路路吐尔根依布拉音
计算机工程与设计 2020年1期
关键词:句型语义向量

吴 浩,艾山·吾买尔+,卡哈尔江·阿比的热西提,王路路,吐尔根·依布拉音

(1.新疆大学 信息科学与工程学院,新疆 乌鲁木齐 830046;2.新疆大学新疆多语种信息技术实验室,新疆 乌鲁木齐 830046)

0 引 言

句子相似度计算是自然语言处理任务中较为基础的研究任务,具体应用包括反映自动问答系统中的问题匹配程度[1]、检测文档摘要的句子重要性[2]、对句子级别的文本分类[3]等。

近年来,一些学者在句子相似度问题上提出了许多改进方法。李彬等[4]提出了基于语义依存的汉语句子相似度计算方法,通过依存句法分析与知网Hownet[5]单词相似度,计算依存对的相似度。张培颖[6]提出了多特征融合的语句相似度计算方法,融合了词形、词序、结构、句长、距离、语义等各层次的相似度计算方法。刘敏[7]提出了一种句子相似度计算方法,结合了基于词向量的依存句法相似度与基于词向量的Jaccard相似度。田堃等[8]提出了基于语义角色标注的句子相似计算方法,构造标注句型得到句子相似度计算。李晓等[9]通过依存句法分析将句子分成主语、谓语、宾语成分,对不同成分进行加权计算,还考虑了句型信息与否定语义信息。黄洪等[10]提出了基于依存句法的汉语句子相似度算法,对句中不同单词划分重要性计算。李峰等[11]提出了一种融合词向量的多特征句子相似度计算方法,将句中公共词块计算词序、连续词、重叠词数,非公共词构造相似度矩阵并采用动态规划计算相似度。

目前句子相似度大部分研究工作借助语法信息,在单词相似度的基础上计算句子相似度。在对获取句子语法信息等预处理时,手工标注成本过高,而机器自动标注误差较大,严重影响句子相似度计算的性能。针对上述问题,考虑到词性(POS)为名词、动词、与形容词的单词在句子中语义信息更加丰富,反映了句子中不同单词的重要性,且词性自动标注精度较高。本文尝试了两种融合词性特征计算句子语义相似度的方法。

1 句子相似度

1.1 单词相似度计算

单词相似度计算是计算句子相似度的基础。目前计算单词相似度主要有两种方法:①基于知网Hownet的单词相似度计算;②基于word2vec[12]的单词相似度计算。

Hownet是根据世界知识体系人工构建的一个知识库,用不可分割的“义原”描述单词。缺陷在于需要人工构建补充、代价较大;同时对于未登录词无法处理。Word2vec较为常用的训练模型包括CBOW[12]、Skip-gram[12]和Glove[13]等。目前使用Word2vec计算单词相似度已成为主流方法,其无监督的学习方式减少了大量的人力资源消耗,同时word2vec训练的单词向量能够较好地学习到单词的语义信息。

综合上述两种单词相似度方法,参考近几年工作,本文统一采用word2vec作为单词组合语义的基础来计算单词相似度,单词之间的相似度为不同单词向量之间的余弦值。

1.2 词性标注

本文采用哈工大ltp平台(https://www.ltp-cloud.com)进行词性标注,该平台词性标注标准采用863词性标记集。其中关于名词的词性,具体划分为“普通名词/n”、“地点名词/nl”、“方位名词/nd”、“人名/nh”、“时间名词/nt”、“组织名词/ni”、“地点名词/ns”、“其它专有名词/nz”共8类名词。本文计算方法中将这8类词性统一视为相同的基础名词词性。

1.3 融合词性与词向量的句子相似度算法

经过分词处理的句子可视为单词的序列,由词性标注得到句子的词性序列。句子S1由m个单词组成序列:S1=w11,w12,…,w1m-1,w1m;S2为长度为n的单词序列:S2=w21,w22,…,w2n-1,w2n。 则S1的词性序列为S1p=w11p,w12p,…,w1m-1p,w1mp,S2的词性序列为S2p=w21p,w22p,…,w2n-1p,w2np。 单词相似度为两个单词的词向量求取余弦相似度得到。设两个单词w1、w2,词向量均为n维向量w1=[v11,v12,v13, …,v1n],w2=[v21,v22,v23, …,v2n],单词相似度计算如式(1)所示

(1)

以下单词相似度均由式(1)计算。文献[6,7]中采用了同样的句子相似度算法,不同之处在于,前者融合词形等各类句子表层信息进行计算,后者结合了依存句法分析进行计算。该算法如式(2)~式(4)所示

(2)

(3)

(4)

其中,sim(w1i,w2j) 为单词相似度,Sim(S1_S2) 为句子1对句子2的单向相似度,sim(w1j,w2i)、Sim(S2_S1) 同理。上述式(2)、式(3)中每个词与另一个句子所有词相似度取最高值,此步骤寻找对应句子中最相关的词计算相似度,消除了其它不相关词对句子相似性的影响。综合双向句子相似度得到最终句子相似度结果。该算法基本思想:若两个句子相似,则其中单词的语义也相似,反之同理,若单词之间平均相似度较高,则句子相似度也较高。在此基础算法上,为了降低虚词等无实际意义的单词对整个句子相似度的影响,同时提高名词、动词等蕴含主要信息的单词对句子相似度影响,尝试融合词性信息计算句子相似度,采用两种方法进行改进。

方法一(Pos_weight)根据词性信息分配单词权重,具体分为5个步骤计算:

步骤1 首先通过词性标注的结果为句子中的每个单词分配相应权重。此时初始词性权重设置,动词为wv、名词为wn、形容词为wa、副词为wd、其余词为wo;

步骤2 对两个句子中单词分别进行权重归一化计算。例如,句子S1的第i个单词初始词性权重为w_wi,归一化后权重如式(5)所示

(5)

步骤3 计算句子S1对句子S2的单向相似度,其中sim(w1i,w2j) 为S1中第i个单词与S2中第j个单词的相似度,如式(6)所示

(6)

步骤4 计算句子S2对句子S1的单向相似度,其中sim(w2i,w1j) 为S2中第i个单词与S1中第j个单词的相似度。如式(7)所示

(7)

步骤5 综合两个句子的单向相似度值得到句子相似度的最终结果,如式(8)所示

(8)

方法二(Pos_key)根据词性信息选择关键词计算,具体分为3个步骤:

步骤1 将词性为动词、名词、形容词、副词的单词筛选出来作为句子关键词;

步骤2 计算句子S1对句子S2的单向相似度,如式(9)所示

(9)

步骤3 计算句子S2对句子S1的单向相似度,如式(10)所示

(10)

步骤4 综合两个句子的单向相似度得到句子相似度的最终结果,如式(11)所示

(11)

1.4 权重参数的调整与设置

上述两种方法中需要确定的参数为各种词性的权重,权重参数的设置与调优可看作一个参数最优化问题。参数优化方法可采用遗传算法或随机采样进行参数调优。然而实际使用遗传算法进行参数调优需要多次迭代,且单次迭代时间消耗较大,因此使用遗传算法调整参数不适用于实验参数选择及后续应用。

实验最终采用确定参数空间中的随机取样方法进行参数选择,综合复杂度与性能考虑,将单词根据词性分为3类,动词与名词一类,形容词与副词一类,其它词归为一类。针对3类词性的单词设置了3个不同的权重,动词与名词在句子中最为重要因此权重最高,负责承担句子的主要内容信息,形容词与副词次之,起修饰作用,其它词类无实际意义权重最低。现设3个权重为0-1之间的数,可选值均为0.1的整数倍(即不同词性的单词对句子的重要性最大差距在10倍以内),整个参数组合空间大小为10的3次方共1000种,考虑3种权重数值递减(单词重要性按上述3类词性递减),因此参数组合可能的个数缩减到220个。

在220个参数组合基础上,通过遍历该确定的参数组合空间选择参数。先采用随机取样抽取权重比例不同的参数组合,再选择较优的参数组合确定词性的权重参数。需要说明的是,遍历的方式能对上述确定的参数组合空间进行更好的选择,缺点在于计算代价过大,按不同权重比例进行随机取样的方式能够减少运算量,但可能无法获得当前参数组合空间下的最优解。

上述参数选择是将参数组合空间缩小,由连续的参数组合空间转化为离散的参数组合。其缩小的参数组合可能仅存在局部较优解。考虑到实验目标在于验证词性权重设置对于句子相似度实验有所提升,若随机抽取的参数组合在实验中存在较好的结果则可说明融合词性信息可提升性能。

1.5 算法分析

以word2vec计算单词相似度为计算单元,Pos_weight与Pos_key方法以及原基础算法时间复杂度均为O(n2)。该文提出的两种方法需要额外进行词性标注和归一化计算操作,这部分操作在实际计算过程中占比较小(ltp平台标注性能为每秒45 942个单词,由于平台限速无法计算实际词性标注所需消耗时间)。其中Pos_key方法减少了非关键词的单词相似度计算,实际使用中能较大程度上减少计算量(取决于名词、动词等词性的单词在整个句子单词的占比)。

2 实验工作

2.1 实验数据集

由于目前缺乏标准的中文句子相似度评价数据集,本文的评价实验借鉴文献[7]构造了一个评价数据集。由新疆大学自然语言处理重点实验室提供了CWMT2017机器翻译语料,该语料由若干组句子构成,每组4个同义相似句。从该语料中随机抽取500组句子(共2000个句子),将其按 1∶3 的比例拆分为500个基准句集与1500个比对句集,每个基准句对应3个相似句,例如:

基准句:“中国 人民 从此 当家做主,中华民族 的 发展 从此 开启 了 新 的 历史 纪元。”

相似句1:“中国 人民 从此 站 了 起来,中华民族 的 发展 从此 掀开 了 新 的 历史 一 页。”

相似句2:“中国 人民 从此 站 起来 了,中华民族 的 发展 也 从此 掀开 克 新 的 历史 篇章。”

相似句3:“中国 人民 从此 崛起 了,中华民族 的 发展 又 迈向 了 新 的 台阶。”

另从CWMT2017机器翻译语料中随机抽取500个单句作为噪声句子加入比对句集。数据集共500个基准句与2000个比对句。

经过人工审核,发现数据集中存在1组重复句、2组对应但不相似的句子以及2组无关信息句子,剔除这5组句子,共得到基准句集495个,比对句集1985个。该数据集作为最终实验数据集。

2.2 实验评价任务

使用上述数据集,每个基准句与比对句集中全部句子计算得到1985个相似度值,对这些相似度值进行从高到低排序。设如果算法能够在某个基准句相似度排序结果的Top3中,找到比对句集中对应的一个相似句,则命中数增加1,每个基准句命中数最多为3。鉴于本文数据集中的对应句子相似度较高,因此排序结果仅取Top3作为衡量范围,若取更大范围,则不同算法效果都比较好,难以区分优劣。该数据集上每种算法执行都需计算495*1985次句子相似度,总命中数为1485。本文实验评价指标采用命中率衡量句子相似度算法在评价数据集的表现,如式(12)所示

(12)

2.3 实验对比相关方法

为说明本文所提出的算法有效性,本文选取了近年4个研究工作进行对比实验,通过实验对本文方法和前人研究工作进行详细分析。同时本文也尝试了另外两种方法一并作为对比方法,实验对比方法包括:

(1)基于依存句法分析(Dp2015)

该方法[7]结合了基于词向量的依存句法相似度与基于词向量的Jaccard相似度。其基于词向量的Jaccard相似度部分与文献[6]语义相似度部分一致。依存句法相似度部分则考虑了中文句子的语法特性,通过依存句法分析得到依存句对,将两个句子拥有相同依存关系的依存对计算单词相似度。组合两部分相似度得到句子相似度。基于依存句法计算相似度部分的流程如下:

首先对两个句子进行依存句法分析,将依存分析结果中的依存对取出,得到两个依存对集合DepPairSet1、DepPairSet2。每个依存对Pair由两个依存词 (Pair{0},Pair{2})、依存关系标签 (Pair{1}) 组成,由DepPairSize表示依存对集合大小。

Dp2015算法伪代码

Begin

forPair1 in DepPairSet1:

forPair2 in DepPairSet2:

ifPair1{1}=Pair2{1}:

if Sim(Pair1{0},Pair2{0}) > Threshold:

if Sim(Pair1{2},Pair2{2}) > Threshold:

SimScore+=α×wordSimAverage/max(DepPair1Size, DepPair2Size)

End

该方法综合考虑词义信息与语法信息,利用依存关系准确找到两个句子对应部分比较相似性,具有较好的实用价值。但该方法语义相似度部分较为依赖句子依存分析的质量,依存句法分析的好坏严重影响该算法的性能。

(2)基于语义角色标注的算法(Srl2016)

该方法[8]主要建立在以动词为核心的框架的相似度上,通过标注的语义角色信息,将句子构造为以动词为核心的标注句型。标注句型含有m个语义角色的标注句T,表示为一个三元组 (v,e(S),r(S)),v表示动词、e(S) 表示论元成分、r(S) 表示角色标签。该算法分为3个步骤:

1)句子的相似度计算:句子S1和句子S2,分别有p、q个标注句型。S1的标注句型集合为:T(S1)={T11,T12,…,T1p},S2的标注句型集合为:T(S2)={T21,T22,…,T2q},如式(13)所示

(13)

其中,(T1i,T2j) 为标注句型的匹配对,Sim(T1i,T2j) 为标注句型的相似度。

2)标注句型的匹配对确定:句子S1有m个谓词,句子S2有n个谓词。根据谓词相似度构造行为m,列为n的相似度矩阵。循环以下步骤:找到矩阵中最大值;将其行与列对应的谓词作为一个匹配对;删除该行该列。可找到min(m,n)个匹配的标注句型;

3)匹配的标注句型相似度,如式(14)所示

(14)

其中,i、j分别为T1,T2中的标注句型。

该方法通过动词相似度得到标注句型的搭配对,计算匹配标注句型的相似度,综合各个标注句型相似度得到句子整体相似度计算,充分利用了句中动词及相关施事受事等角色信息。但该方法采用手工标注的方式标注语义角色信息,代价较大。因此本文采用ltp自动标注,ltp标注规范与该文标注规范略有出入,但算法实现思路一致。

(3)基于语义依存(Dp_improve2017)

该方法[10]为对文献[4]的改进方法,首先对句子进行依存句法分析得到3类词:依存分析直接得到句子核心词Wcore;依存于核心词的名词、动词、形容词作为关键词Skeyword;余下的词为其它词。计算方法如式(15)所示

SentSim(S1,S2)=αSpart1+βSpart2
α+β=1,0<β<α<1

(15)

其中,Spart1部分,如式(16)所示

Spart1=WordSim(Wcore1,Wcore2)×Skeyword

(16)

关键词相似度取两个句子中关键词构造相似度矩阵,循环以下步骤:取最大值;删除行列。直到矩阵行或列长度为零,累计最大值后求平均。其它词Spart2部分与关键词部分求解类似。该方法实验使用Hownet计算单词相似度,为保持不同算法基础条件的一致性,本文使用word2vec计算单词相似度替换原文的Hownet方法进行实验。

(4)结合句子成分(Dp_sentt2017)

文献[9]通过依存句法分析将句子内容分成主语成分、谓语成分、宾语成分。通过线性加权方式将这3部分的相似度结合到一起。该文另考虑了句型、句子成分、否定语义三方面的影响,设置了相应系数。该方法中句型部分需要人工判别,经过语料分析,本文实验语料中疑问句、感叹句和祈使句分别仅有一句。

(5)基于语义依存(Sdp2015)

文献[7]的复现过程中,本文尝试在原文依存分析计算相似度基础上用语义依存分析替换依存句法分析。使用语义依存对句子进行分析,得到语义依存对进行实验。

(6)词向量累加、平均构造句子向量

在解决各自然语言任务的神经网络模型中,构造句子表示比较通用的方法是将词向量进行累加、平均、拼接等操作。本文也尝试使用句子中各词向量累加和平均的方式得到句子向量,使用句子向量进行相似度计算。

2.4 实验结果与分析

本文选取了4篇研究工作,分别为基于依存句法分析的方法(Dp2015)、基于语义角色标注的方法(Srl2016)、基于语义依存的方法(Dp_improve2017)、结合句子成分的方法(Dp_sentt2017)。此外尝试的两种新方法包括,基于语义依存句法分析的方法(Sdp2015)、词向量累加和平均(Word2vec_average、Word2vec_sum)的方法。以上所有方法中,统一使用word2vec作为单词相似度计算基础。此外,实验中所有语料经过预处理,时间代价不包括分词、依存分析等预处理工作。最终实验结果见表1。

表1 句子相似度评价实验结果

2.5 实验结果分析

(1)词向量构造句子向量方法分析

如表1所示,通过句中单词的词向量平均或者累加的方式构造句子向量,应用在句子相似度计算时,无法有效进行计算。其原因可能在于,一个低维的实数向量不能较好的容纳和表达一个句子的完整信息;同时另外一个重要的原因在于将词向量累加和平均构造句子向量的方式过于粗糙,无法有效表示句子的语义信息。

(2)Dp2015、Dp_improve2017、Dp_sentt2017方法分析

这3种方法均使用依存分析的结果作为句子相似度计算的基础,分别从关键词、依存句对、句子成分3个角度设计算法进行实验。实验显示Dp2015结果较好,其余两种较差。由于相似句子中用词有所差异,例:

“每 到 一 地,书记 都 深入 了解(HED) 党 的 建设 情况。”

“书记 到 各地 考查 时,对 党 的 组织 状况 进行(HED) 了 深入 了解。”

依存句法分析对该句子进行标注时,核心谓词标注位置有所偏差。通过分析数据,发现数据集中所有的相似句对(共1485条)经依存句法分析之后,相似句之间核心谓词(标签“HED”)相同的仅有440个。Dp_improve2017与Dp_sentt2017算法结果不佳的原因,可能是其算法设计过于依赖核心谓词的相似性。Dp2015使用依存对的相似性进行设计,对依存分析的容错率更高。数据显示,在495*1485次相似度计算中,实验中依存对累加共出现9 238 228次,其中两个句子对应的依存对共出现6 961 924次,两个对应的依存对中至少有一个相同词的情况共出现5 678 390次。这组数据表明,依存对关系可较为合理地确定两个句子的相似部分,从而进行下一步计算。

(3)Srl2016方法分析

该方法首次使用语义角色标注进行计算,将句子相似度计算建立在标注句型框架的基础上,但实验结果并不理想。可能存在的问题有两点:①原文实验中标注任务由人工完成准确率较高,本文采用ltp平台进行标注准确率为77.9%,因其算法建立在核心动词相似的基础上,标注的准确率对结果影响较大。②原文标注规范与本文采用的ltp平台不一致。ltp标注将语义角色分为A0-A5这6种,此外还包括15个附加语义角色。原文的标注规范中总计15种标签,在标注过程对标签进行了简化。标注规范的不一致可能导致基础计算单元(论元)的选取和计算不一致,影响实验结果。

(4)Sdp2015方法分析

本文采用Dp2015的算法设计思路,将原文通过依存句法分析构造的依存对替换为语义依存分析构造的依存对。依存句法注重非实词(介词)在句子结构分析中的作用,而语义依存倾向具有直接语义关联的实词之间的联系。实验结果使用语义依存的实验结果比原文算法稍差。

(5)Pos_weight、Pos_key方法分析

经过多次权重参数的随机采样实验,确定本文Pos_weight方法中词性权重设置为动词1.5、名词1.5、形容词1.5、副词1.5、其它词为1的参数组合,使用该参数组合的算法在实验中取得了最好的效果。这一结果说明了句子中这4类词性的单词蕴含更丰富的句子信息。该方法根据词性调整了不同单词对句子相似度的影响程度,有效提升了句子相似度计算的性能,但是该方法计算较为复杂,尤其对于长句子计算时花费时间较长。Pos_key方法用词性筛选出关键词,仅对关键词进行计算,大大减少了算法的计算时间,同时也获得了较优的效果。对比其它几组研究工作,本文两种方法摒弃了句法结构方面的句子信息,选用单词的词性特征融合计算。本文方法的优势在于①词性标注准确率高,ltp平台达到97%的精度,误差小对实验结果影响小;②词性作为单词的基本特征,可有效确定单词在句子中的重要性,例如名词和动词所蕴含的信息一般情况下相比于介词等虚词更加丰富;③方法一中句子所有单词都参与运算,影响程度主要取决于其词性,方法二可作为方法一对计算长句子时的替代方法。两者结合既保证精度又保证速度。

3 结束语

本文提出了融合词性特征的句子相似度计算的两种方法,对句中名词、动词、形容词、副词、标点、介词、助动词等各类词性合理调整单词对句子相似度的影响,结合单词相似度来计算句子的相似度。对比于近年来的一些研究工作,本文方法所融合的词性特征自动标注精度高且速度快,通过调整权重,使得句子相似度计算结果更加准确,在实验数据集中表现更好。但本文算法也存在一定不足,当句子长度不加限制时,句子长度越长时间代价越大。另外一点,本文算法是对句子语义层面进行的计算,很多时候词形信息等也很重要,下一步工作将对其进行优化,获得更好的性能提升。

猜你喜欢
句型语义向量
向量的分解
聚焦“向量与三角”创新题
语言与语义
典型句型大聚会
批评话语分析中态度意向的邻近化语义构建
“社会”一词的语义流动与新陈代谢
向量垂直在解析几何中的应用
强调句型的it和引导词it有什么区别?
“吃+NP”的语义生成机制研究
向量五种“变身” 玩转圆锥曲线