原文:http://www.aclweb.org/anthology/O05-1008
中文句子相似度之计算与应用
郑守益 梁婷国立交通大学信息科学系
摘要
近年來受惠于国内外各项语料库资源的建置及网际网路上的大量中文语料,使计算机语文辅助教材的涵盖层面日趋广泛。因此如何产生大量且具高质量之辅助教材日益受到许多自然语言处理研究者的重视。有鉴于此,本論文提出以中文句子相似度为基础的研究与应用。相似度的计算乃考虑句子的组合及聚合性。我们实作此一应用,并提出解决未知词的语意计算问题的方法。实验结果显示系统的检索 MRR 值可以提升到 0.89 且每一检索句皆可找到可堪用之例句。1. 绪論句子是可完整表达语意的基本单位[21],也是语法的具体表现。因此,在语言学习中,学童若是学会了各种句型,也就学会了隐含在句型中的语法规则。藉由语言学家的归纳整理[14],我们知道句子的结构并不是词语的随意组合,而是依照一定的「语法规则」。根据[15],语法规则可进一步分为「组合规则」及「聚合规则」。组合规则是指语法单位的横向组合,例如,「我」、「买」、「书」这三个词汇可以组合成「我买书」,但却不能组合成「书买我」。当词组合成结构之后,将具有语法意义,并使得整体结构的意义大于个别词汇的意义总和,例如:「綠」、「葉」这兩个词各自有其意义,但组合之后则形成了「綠」修饰「葉」的语法意义。至于聚合规则是指在句子中,每个位置的语法单位都有其适合替换的词语集合,例如,在「我买书」这个句子裡,「我」可以替换成「你」,但「买」却不能替换成「花」。句子中的聚合替换规则可以视为词汇的语义替换问题,例如:语义同属植物的「花」、「草」可以互相替换。句型在学习语法时十分重要,因此融合语法变化的「句型練习」就成为小学学童语言学习时的一个重要活动[18]。国语习作是现行国语课程的辅助教材,主要供小学学童课后練习使用,而习作的内容中几乎每课都有「造句」、「照样造句」、「替换语词」等句型的練习 [16]。然而,由于习作中所提供的例句數量不多,再加上小学学童不論在阅讀的文章數量及习得的词汇數量皆有所不足,因此,本研究之目的为设计一有效率之句子相似度计算方法,以自动撷取小学学童句型練习中的「照样造句」所需的范例例句。我们将句子相似度定义为计算兩个句子之间的语法规则相似度,也就是說如果兩个句子的语法组合及聚合规则越相似,则其相似度越高。句子相似度计算可依照语句的分析深度分成兩种方式。一种是基于向量空间模型的方法,把句子当成词的线性序列,因此语句相似度衡量机制只能利用句子的表层信息,即组成句子的词的语义信息。由于不加任何结构分析,这种方法在计算语句之间的相似度时无法考虑句子整体结构的相似性。例如在[8] [20]是以比对相同词汇來计算相似度,对于句子之中,普遍存在的同义或近义词之间的取代及比对,并没能有效的解决。在[9]则提出搭配语义词典检索,并分配字义权重,以解决单纯语义匹配的问题;但是,只使用语义词典检索來作为相似度的计算依据,而没有考虑到句子内部的结构和词汇之间的相互关系,因此准确率并不理想。在[11]中提出使用编辑距
離的方法,其规定的操作模式,并不完全适用于整体句义相似的计算,也缺乏同义或近义词替换的设计。另一方面,使用统计之语言模型的方法 [6]则需要建置大量的训練语料。在[2][4]中结合了语义词典检索方法及传统编辑距離方法[10]的优点,并利用 HowNet[5]和《同义词词林》[7]兩种语义辞典,以计算词汇之间的语义距離,同时赋予不同编辑操作不同的权重,因此具有较好的输出结果。由于其方法是基于同义词典,來进行语义判定,因而衍生出未知词及专有名词语义判定的问题。另外。检讨其所使用的编辑操作权重,筛选候选句的计算方式,及评估输出结果的方法,仍有改进的空间。另一种方法则是对语句进行结构的句法与语义分析,并在分析结果的基础上进行相似度计算,例如[17][19]先对被比较的兩个句子进行深层的句法分析找出依存关系,并在依存分析结果的基础上进行相似度计算,但目前的语义依存句法分析器的准确率只有 86%,因此造成依存分析的结果并不准确,导致句子的核心词无法正确判断,因而产生了错误的计算结果。在本論文中,我们提出以聚合规则相似度和组合规则相似度來设计并实作中文相似句子撷取系统。我们使用兩个句子中所含的词汇之同义或近义词來计算聚合语义的相似度,以及改良式编辑距離计算的方法,并设计新的权重配置比例、候选句筛选原则。在语义计算过程中,加入词性标记信息,以节省语义计算的次數,最后使用语义相似度矩阵,将所输出的參數加以正规化,以取代人工评分的方法。由于本論文所提之「句子相似度」可应用于学童句型練习中「照样造句」所需之范例例句,操作方法即是按照原來句子的句型造句,例如:输入「今天看到一幅画」,输出「昨天想到一个人」,因此只需要计算词的线性序列相似度,而不需用深层的树狀结构分析。此外,本研究将同时使用全局匹配(Global Alignment)及局部匹配(Local Alignment)的策略,求取兩句在全句和部分句段的结构相似度。2. 聚合结构相似度我们定义句子的聚合结构相似度为兩个句子之间的词语是否可使用同义或者近义词替代。例如:「我爱你」与「你喜欢哥哥」就是一对聚合规则相似的句子。本研究改良并采用,以语义为基础的编辑距離算法,來计算句子之间的聚合规则相似度。重新考虑编辑操作代价,及使用上下文信息以解决未知词及专有名词语义判定问题,并利用网路语料來改进因资料稀疏而无法有效进行词义比对的计算问题。2.1 语义相似度计算一般的编辑距離指的是,从一个句子变为另一个句子,所需要的最小编辑操作的步骤數。传统的编辑操作共有「保留」、「插入」、「删除」和「替换」四种。以下图为例: ( :代表删除; 代表保留)
传统编辑距離图 1(b):语义型编辑距離从上面的计算过程可以看出,若仅使用编辑距離的方法,则计算出的语义距離和的实际情况将有许多差距。就语义而言,词语之间的编辑操作代价应当各不相同。例如,上述兩句范例,虽然字面上的词汇都不一样,但若细细探究其中的涵义,可以发现其中的词汇所扮演的文法角色及上位词的语义内涵,有一定程度的相似。此外若在检索目标的句子或短语的词汇之中,加入具有修饰功能的词汇,其语义也具有相似性。例如「果树怎么成功种植」与「细菌应如何快速培养」可视为相似句。基于以上的观点,本研究采用编辑距離的改进算法[2],即以词汇为基本的计算单位,同时以 HowNet 和《同义词词林》作为语义距離的计算资源,以涵盖更多的中文词汇。在《同义词词林》中,将词汇按照语义关系的远近亲疏,赋予了一或多个语义代码。按照树狀的层次结构把所收錄的词条分别归類。同一层的词语其关系有词义相同或相近,或词义在真实世界中有很强的相关性。例如:「大豆」、「毛豆」和 「黄豆」在同一层;这些词不同义,但相关。从树狀结构來看,《同义词词林》有五层结构,越靠近根节点,语义的概念越抽象。具体的词汇,只分布在节点末端。利用《同义词词林》來计算词与词之间的语义距離,可视为单纯的代數操作。但词义的操作代价,应随同义词典的级距分歧度加大而增加,而非等量的增加。因此我们定义 X、Y 兩词之间的词义距離如下:),(),(D,yxdistMinYXistYyXx∈∈=(1)其中 x,y 为分属于 X,Y 兩词之语义集合,根据《同义词词林》的结构,其计算公式定义如下:)*(y)Csim(x,),(αldyxdist+=(2)0.1])/10))4*(|5(|[(),(Csim+−−=nnyx(3)Csim(x,y)是指兩词在同一棵语义结构树之中,且兩词的词义从第 n 层结构开始有所不同;而 ld 为该兩词汇在个别的句子中的位置差距,α为系统定义的同义词位移编辑代价。由于同义词在距離相对词语的位置超过三个以上时,其语义角色就已经产生变化,例如:「我对你很好,对不对?」句中的「对」这个词,虽然,在句子中出现了兩次,但其语义已然不同。为将词语的位移控制在三以内,于是我们以计算同义词林第一层语义代价除以三,将α设为 0.3。另外,我们认为在词语中进行插入或删除等操作,将有可能影响并改变句子的整体意义及结构,因此这些操作将有较高的操作代价。我们定义为:若进行删除或插入操作,则操作代价应等同于兩词不同义的代价,因此,我们以 n=0 代入公式(3)计算而设定为 2.1。HowNet 中同义词的定义为具有相同的英语译文(W_E)和语义定义(DEF)的词汇,其操作
代价设定为 0.1。例如「爱」和「喜欢」,其简化词条如下:表 1:HOWNET 同义词举例NOW_CG_CW_EDEF514爱VloveFondOf|喜欢89949喜欢VloveFondOf|喜欢在系统的计算过程中,先比对在 HowNet 中,兩词是否为同义词,若是则兩词之操作代价为0.1,若否则比对《同义词词林》并引用(1)作为决定操作代价之依据。2.2 未知词词义处裡我们定义在 HowNet 及《同义词词林》中未收錄的词汇称为未知词。我们先在现有的语料库中搜寻包含该未知词的句子,并使用上下文信息的相似度來协助判断兩个词语的相似程度,设定前后文的词窗个數为三个邻近词,并用共现值 I 來抽取相关度高的上下文词组,其计算公式如下:I(Xu, Zw))/)()(/)((/),(logNZfNXfNZXfwuwu=(4)其中N表示语料词數量,Xu为未知词,Zw为位于Xu前后的 3 个词的任一词汇,f(Xu), f(Zw)分别表示Xu,Zw在语料库中出现的次數,f(Xu,Zw)表示词Xu,Zw一起出现的次數。经过实验测试我们将共现值门坎值定为 7,挑选出的关聯词将作为Xu的词义集合。假设查询句和目标句中分别有未知词X,Y,且他们的关聯词分别是x1,x2…xm 和 y1,y2…yn,则同样的我们可利用公式(1)來建立X和Y的相似矩阵M如下: ??????????=),()...,,(,),(......),()...,,(D,),(D),(2112111nmmmnyxDistyxDistyxDistyxDistyxistyxistYXM(5)再利用公式(6)计算出 X 和 Y 之间的语义相似度 S(X,Y):myxDistyxDistyxDistMinminiii∑==121)],(),...,(),,([Y)S(X,(6)在未知词词义选取处理时,若无法获得关系词作为语义相似度的判断时,我们将使用网路语料作为关系词的查询來源,本研究使用 Google 作为查询的搜索引擎,其步骤如下:步骤 1: 查询 Google 首页,得知目前全部的待查网页數量,作为 N 值。步骤 2: 使用未知词Xu作为搜索词,查出f(Xu),并选取前 10 个摘要内容,作为邻近词的抽取对象。步骤 3: 将抽出的含有未知词Xu的句子,进行断词,并进行邻近词抽取,词窗个數为三个邻近词。步骤 4: 将未知词Xu及邻近词一同作为搜索词,送进Google分别查出f(Zw)及f(Xu,Zw)。步骤 5: 利用公式(4),并筛选出超过门坎值的词。步骤 6: 将邻近词组代入语义相似度计算矩阵,计算关键词对的语义相似度。
3. 组合结构相似度计算如前所述,中文句子相似性的计算考量如下:(1)任意句子中的词组,其词性角色的排列不可任意错置,但可容许有限度的局部置换,例如:「我(N)吃(Vt)了(ASP)一(DET)碗(N)面(N)」,不可写成「我(N)一 (N)面(N)吃(Vt)了(ASP) (DET)碗」,后者明显不合文法;但「一(DET)碗(N)面(N)是(V)我(N)吃(Vt)了(ASP)」,却可以說的通。(2)句子中的词与词之间,具有可插入适当空隙的特性,例如:名词的前面应可容许插入相关的形容词,「我(N)吃(Vt)了(ASP)一(DET)碗(N)面(N)」,也可写成「我(N)吃(Vt)了(ASP)一(DET)碗(N)很(Dfa)烫(VH)的(DE)面(N)」。由于全局匹配在计算上,将会考虑查询句的词性标记的整体的序列,因此可充分反映上述的第(2)项特点;而局部匹配,则只考虑由查询句的词性标记序列末端往前回溯的最佳子序列,因此可充分反映上述的第(1)项特点。我们将使用动态规划算法,分别计算句子与句子之间的,整体及局部相似度后,再依一定比例加权计算:设A,B为兩中文句之词性标记序列,分别表示为:A:{a1,a2,…an};B:{b1,b2,…bm},序列中之任一词性标记 ai和bj,,, ”-“为序列中因不匹配而插入之间隙(gap),A⊆iaB⊆jb()jiba,σ表示ai和bj比较时的分數值,我们定义为:()jiba,σ=2, for all ai=bj()jiba,σ= -1, for all ai≠bj()jiba,σ= ( )jb,−σ=-1我们利用 SMITH WATERMAN 所提出的全局相似匹配算法[12]來找出匹配句,并以公式(7)计算出以词性标记为主的兩句相似度值,其中 l 为兩序列比对时之最大长度。mnBAScoreSim+=),()B,A(G(7)(8)∑== liBAScore1ii)b,a(),(σ另外一方面,我们利用改良式的 SMITH WATERMAN 算法[1]來找出局部相似的候选句。其计算匹配的路径不需要到达矩阵的尽头,如果某种匹配的分數值不会因为增加匹配的數量而增加时,这种匹配就是最佳的。其相似度值为︰mnBAScoreSim+=),()B,A(L(9)(10)]},[{B)(A,jiCMaxScore=其中为计算矩阵中分數最高的數值。]},[{jiCMax4. 混合式的中文句子相似度的计算应用系统
综合上述所提的组合及聚合结构相似度计算,我们提出了一个混合式的中文句子相似度的计算应用系统(系统架构图見图 2),在进行句义相似度计算时,主要分为以下步骤:步骤 1:利用[13]进行中文句断词并自动标注词性标记。步骤 2:同义词扩展:为了使候选句能更具有多样性及提高系统的召回率,因此我们对断词之后的各个词汇进行同义词扩展。本系统使用 HowNet 语义词典作为词扩展的资源。步骤 3:候选句检索:我们假设,如果一个候选句中所含的词语,与查询句的相同词或同义词越多,就越有可能是我们要撷取的相似句。因此,我们设定候选句的标准为:候选句的词數不能大于检索句的 3 倍,而符合的词數不得小于检索句词數的三分之ㄧ,并按照句子权重由大到小排序,选择前 100 句作为候选句。步骤 5:句子聚合结构相似度计算步骤 6:句子组合相似度计算步骤 7:分别依各项不同的计算數值,取前 10 句候选句,作为答案。中研院自动断词系统同义词扩展HOWNET候选句检索句子组合结构相似度计算输出用户输入同义词辞林句子聚合结构相似度计算Sinica corpusGoogle web corpus图 2 系统架构图5. 实验与分析我们采用中央研究院平衡语料库 3.0 版,作为系统的候选句及查询句的语料库,其中包含了 500 万已标记的中文语料。我们从中随机选取包含 5 到 8 个词汇的短句 100 个作为查询句。本論文设计成四种不同的实验做比较:(1) BaseLine:以[2]中所提的词汇作为计算单位的动态规划编辑算法。(2) M1:在词义判断过程中,利用语料库的上下文信息,來处理未知词。(3) M2:在语义判断过程中,加入网路语料上下文信息,來处理未知词。(4) M3:利用本論文所提的组合及聚合规则來计算相似度。又依选择候选句的指标不同,使用 MRR(Mean Reciprocal Rank)分别测试其对于选择正确的候选句的影响:(1) OC (Operation Cost): 使用原有的编辑距離作为抽取候选句的标准。设 n,m 分别为候选句及查询句的长度:∑ ∑===nimjjiyxdist11),(OC(11)(2) NOC (Normalized Operation Cost): 使用候选句及查询句中,句子所含的词數进行正
规化:),(NOCmnMaxOC=(12)(3) SWR (Semantic Weight Ratio):传统上多數句子相似度的评分标准都是以编辑距離操作代价作为句子相似度的评分标准,但是这样的分數会因为句子的长度不同,而造成长句往往分數会高出许多。然而将原始的编辑操作代价进行正规化,亦无法避免因编辑距離的不同,而给予较客观的相似度评估。因此,本論文乃设计在语义计算过程中,所产生的编辑操作代价,依照正负相关系數的门坎值,切分成正相关系數及负相关系數,再透过与原始编辑距離的计算,产生出词语语义贡献度SWR(Semantic Weight Ratio)。其计算方式如下:设Sq,St为兩中文句词汇序列,P为所有编辑距離操作代价之分數总和,Q为所有负相关系數总和1,则PQPSStq−=),(SWR,1),(SWR0≤≤tqSS(13)其值越接近 1 则表示Sq,St句中所含的相似词语越多。(4) PCRC (POS Construction Related Coefficient): 结合全局及局部的匹配相似度,作为判断候选句及查询句之间的结构相似度,经实验将兩项數值的比重设定如下:)),(4.0()),(6.0(PCRCBAGASimBALASim×+×=(14)(5) CSSS (Combine Semantic and Structure Similarity): 结合语义及语法结构,作为抽取候选句的标准,因本系统主要将应用于小学学童的照样造句的活动之上,因此将比较偏重于结构方面的相似度,因此将兩项數值的比重设定如下:PCRC)6.0(SWR)4.0(CSSS×+×=(15)以上的各项标准所筛选出的候选句集合,我们使用人工方式以 MRR 值來评定其效能。使用此值能测量出系统产生出第一个语义最相近的例句的平均名次。若第一个结果即为最佳匹配,则分數为 1,第二个匹配分數为 0.5,第 n 个匹配分數为 1/n,若无匹配的句子,则分數为 0。最终的分數为所有得分之和。另外我们还观察各项实验中,找不到例句的查询句的數量变化,我们使用「NON」來表示其數值。另外,我们在使用上下文信息,进行语义相似度计算时,使用词性标记信息,以减少计算的噪声。例如:在「张三站在椅子上」,「飞弹上有字」这兩句都有「上」(Ncd(位置词))。因此,在使用上下文信息计算词意相似度时,我们将不考虑下列词性的词:Da(數量副词)、Caa(对等連接词)、Cbb(关聯連接词)、Nep(指代定词)、Neqa(數量定词)、Nes(特指定词)、Neu(數词定词)、Nf(量词)、Ncd(位置词)、Nd(时间词)、Nh(代名词)、P(介词)、Cab(連接词)、Cba(連接词)、Neqb(后置數量定词)、DE(的, 之, 得, 地)、I(感叹词)、T(语助词)、SHI(是)、V_2(有)以下为各个模块采用 CSSS 标准所产出的范例,查询句为:「世上还有痴心的人吗?」1本研究设定之门坎值为操作代价大于同义词林第三层语义代价,也就是以n=2 代入公式(3)而设定为 0.7。
表 2 查询结果范例查询句模块排序候选句CSSSMRR1 音樂真的有那么深的殿堂吗?0.7112 你有足够的耐性吗?0.68*M33 我还有追求幸福的权利吗?0.63*3 有这样子的人啊?0.58*4 中国也有瓷器吗?0.55 0.25M25 屈辱的生,英勇的活。0.53*4 屈辱的生,英勇的活。0.52*5 中国也有瓷器吗?0.500.2M16 唉唷,还有巧的呢!0.49*7 限电方式也有双赢的?0.45*8 中国也有瓷器吗?0.44 0.125世上还有痴心的人吗?BaseLine9 并且也发表您的看法吗?0.43*5.2 实验结果与分析图 3 及图 4 显示了 MRR 值在四个实验模块的分布情况。从图显示,相对于其他的模块,M3(MRR值平均皆大于 0.7)可以有效提升相似候选句的选取。并且也不会因为使用不同的筛选模块而降低候选句的质量。另一方面,实验也显示所设计设的 CSSS,其 MRR 值平均大于 0.68。相对于其他筛选标准,CSSS 可以控制候选句的质量,并且可以将相似句的 rank 值提升。由于 CSSS 的 MRR值显示了正相关,跟 PCRC 及 OC 比较起來,当同时考虑语义相似度时,它可以改善 MRR 值到达0.89。0.000.200.400.600.801.00OC NOC SWR PCRC CSSSEvaluation StandardsMRRBaseLineM1M2M3图 3: 四个实验模块的 MRR 值
0.000.501.00BaseLineM1M2M3Experiment ModelMRROCNOCSWRPCRCCSSS图 4 不同系统之 MRR 值变化另一方面,图 5 及图 6 显示 NON 值,在使用不同的条件句筛选标准情况下,四个实验模块的分布情况。从图显示,M3 的 NON 平均值皆小于 2 (如果同时使用 PCRC 或 CSSS 则可以下降到0)。这意味 M3(相对于其他模块而言,)可以更有效的抽取出相似的候选句。另一方面,PCRC 及CSSS 的 NON 值平均小于 3.5,因此相对于其他模块而言, 在抽取候选句的时候如果同时考虑语义则可以将 NON 的值降到 0。010203040OCNOC SWR PCRC CSSSEvaluation StandardsNONBaseLineM1M2M3图 5: 不同实验指标之 NON 值变化。010203040BaseLineM1M2M3Experiment ModelNONOCNOCSWRPCRCCSSS图 6: 不同系统之 NON 值变化。6 结语在本論文中,我们提出新的中文句子相似度计算策略,并应用于中文习作中的范例句产生之自动化。此例句产生系统可自动从语料库中抽取相似句以作为学童練习造句时之參考。此系统主要有如下之改良:(1) 改良语义计算所使用之编辑距離计算方式,加入限制同义词或近义词位移的操作代价,以解决词语因重复出现,而造成语义权重判断错误的问题。(2) 使用上下文信息之相似度,作为判断词义相似的标准,以解决辞典未收錄词汇的词义
判断问题。(3) 为了解决信息稀疏的问题,在现有的资料库无法提供有效判断词义的上下文信息时,将采用 Web Corpus 來辅助。(4) 使用词性标记信息协助判断词义,去除不含有效语义判断成分的词類,并减少相似度比对时的计算量。(5) 使用全局相似度匹配及局部相似度匹配,并结合词性标记,加权计算句子之间的组合结构相似度。(6) 改良并设计新的句子相似度计算公式,结合句子的聚合及组合相似度,并可依照系统的需求,机动调整权重,以符合使用者的需求。致谢我们感谢中央研究院信息科学所词库小组提供之在线断词系统