毕玉德,姜博文
(1. 复旦大学 外国语言文学学院,上海 200433;2. 信息工程大学 洛阳校区,河南 洛阳 471003)
相似度计算作为自然语言处理领域的一项基础算法,越来越受到研究人员的关注。目前,相似度计算的方法基本都集中在两方面: 一种方法是基于表层特征的词法、句法的相似度计算,这种方法注重对句子形式等一些外部特征的研究;另外一种方法是深层的基于语义的相似度计算,计算过程中需要使用语义词典等对句子进行分析,例如WordNet,最终得到句子的相似度。目前基于语义的相似度计算方法并没有太多的突破,还有很长的路要走。
国内外学者对相似度计算的研究已经取得了不少成绩。其中,国外学者Chris等[1]采用了隐含语义索引(latent semantic indexing)的方法,它是一种自动的索引方法,通过挖掘文本和词汇之间的隐含关系来得出相似度,这种方法效率比较高。国内学者在研究相似度计算方面也取得了一定的成绩。晋耀红[2]提出了一种新的形式化文本模型——语境框架来计算文本相似度,这种方法考虑了句子的歧义、多义及语言的褒贬倾向,但是最终效果取决于语义知识库的质量;李彬等[3]提出了一种基于语义依存的句子相似度计算方法,该方法效果优于经典的TF-IDF算法,其计算效果受制于句子依存分析的准确率。刘宏哲[4]提出了一种基于本体的句子相似度计算方法,利用本体概念与句子中关键词之间建立的语义索引,构建句子与本体间的直接和间接语义联系,据此提取描述句子的语义向量,从而计算句子间的语义相似度。王荣波等[5]提出了一种汉语句子结构相似性的计算方法,该方法比较两个句子的词类信息串,通过最优匹配,进行结构相似度计算。孙向东等[6]从图同构角度给出树同构的性质,阐述了结构异构与结构对齐之间的关系,利用对数线性模型,提出了基于结构对齐的统计机器翻译模型。邓涵等[7]提出了基于句法结构与修饰词的句子相似度计算方法,该方法对本文研究具有借鉴意义。
鉴于韩国语的黏着语属性,其语法功能采用语法标记实现,我们尝试研究句子结构相似度来为基于实例的机器翻译服务。待翻译语言与实例库中实例句的匹配是基于实例机器翻译的核心过程,匹配的过程就是相似度计算的过程,匹配的准确度直接影响最终的译文质量。本文研究目的是提高基于实例的机器翻译效果,句子的相似度计算是提高翻译效果的核心问题,我们聚焦该过程的关键环节——句子的结构相似度,结合韩国语的句法特点提出了一种基于句子结构的相似度计算方法。通过在语言教学及句法研究中的积累形成句法知识库,利用知识库制定了句子结构中标记转换规则,那么假设句子的结构相似,如果兼顾词形、语义等信息,句子的相似度计算效果将会得到提高,特别是随着句法知识库的不断丰富,基于实例的机器翻译系统的译文质量也会更加准确。
韩国语作为黏着语的一个显著特点就是具有种类丰富的助词和词尾,它的语法关系主要依靠助词、词尾和语法连语来实现,其句子成分所在的位置相对比较自由,基本跟它们的语序无关[8]。其中,助词包括格助词和补助格助词,后者是对前者的意义上的补充。助词没有独立的词汇意义,一般只能加在体词后面,表示该词在句中的地位,是其充当句子某一句法成分的表现形式。韩国语的格助词系统包含主格、宾格、属格、副词格、补格、呼格等助词,分别表示句子的主语、宾语、定语、状语、补语、独立语。词尾是接在谓词(包括系词)词干后、一起构成句子的谓语,词尾分为先句末词尾和句末词尾,其中先句末词尾包括时间词尾和尊敬词尾,句末词尾包括终结词尾、连接词尾和转成词尾。结合韩国语的形式化特点,研究者制定了一套韩国语分词体系,共7大类(体词、谓词、修饰词、助词、依存词、独立词、符号)、35小类(如普通名词、代词、形容词、辅助谓词等)。
本文选取的实验语料来自韩国“21世纪世宗计划”标注语料库中的单句,该语料库是韩国政府于1998年开始建设,一直持续到2007年,耗费十年建立起来的国家级语料库,其内容涵盖韩国的政治、经济、历史、文化等众多方面,这些内容基本可以代表韩国语的最普遍特征,使用这个语料库的目的是力图使结果更加客观。
韩国“世宗计划”开发的标注语料库,正是采用该分词体系。例如:
目前,对句子的相似度并没有一个明确的概念,因为句子的相似度是一个主观性很强的概念,它在不同的领域表示的意义也不尽相同。本文的具体应用背景是基于实例的韩汉机器翻译,句子相似度反映更多的是源语言与实例库中实例的结构相似度。在此给出句子相似度的概念: 两个句子的相似度是指两个句子在结构以及词形上的匹配符合程度,相似度取值为[0,1]之间的实数,相似度越接近于1,说明两个句子越相似;否则反之。
发达的韩国语助词体系对韩国语的句子结构以及语义表达有着直接影响,如果两个句子中共同含有的助词同时连续出现且在句子中的位置也相同,那么这两个句子就为结构相似,这就降低了翻译的难度,直接找到已经翻译过的结构相似的句子就较容易得到译文。同时,如果再加入词形信息,那么相似度的计算结果将更加精确,本文目前主要研究结构相似,对于词形相似暂不做详细说明。实验选取“世宗语料库”中的单句作为研究对象,进行句子结构的相似度计算试验。
1.2.1 骨架结构提取
1.2.2 句中标记转换规则
根据韩国语句子的语言结构特点以及对应汉语译文的位置特点,制定了以下7条针对句子结构成分标记处理和转换的规则。
规则2在一个句子中,如果基本结构中主格助词(JKS)与补助词(JX)相邻出现,即出现这样的结构JKS+JX,那么在处理过程中按照JKS单独处理;如果出现JKB+JX的结构,则按照JKB单独出现来处理。这是因为补助格(JX)只是起到对前面的格助词的补充作用。
规则3当句子中出现动词派生结尾词(XSV)时,说明该句中的动词是派生动词,等同于其他句子中的VV。类似的,当出现形容词派生结尾词(XSA)时,等同于其他句子的VA。
规则6对于惯用型,要同时考虑标记和标记前的词汇,按照体、样式和否定范畴做不同的处理归类。
规则7如果句子1的基本结构有四个结构性成分A、B、C、D,句子2中与句子1中的基本结构成分是一样的但是顺序不同,是B、A、C、D,那么视为相似;如果句子2中基本结构标记是B、C、D,包含于句子1的句子成分中,那么视为一定相似,相似度为75%,这是根据共同含有的成分计算得来的。这个原则我们称之为包含相似原则。但是这个原则中存在一种特殊情况,即第一个原则中如果含有JKB为标记的成分,我们需要考虑与JKB相连接的韩国语的内容,韩国语内容相似了才是完全相似,反之则不相似,在这个过程中同时也兼顾了一定的语序信息,更加符合实际情况。
经过7个转换规则以后将两个句子结构向量进行比较,在测试过程中,根据句子成分在句子的地位,我们使VV/VA、JKS、JKO、JKB的权重依次递减,分别为5、4、3、2,匹配后得到的结果就是句子结构相似度。
1.2.3 相似度比较
在经过骨架结构提取以后,利用制定的结构转换规则开始计算结构相似度。首先假设我们有两个韩国语句子S1和S2的骨架结构,利用转换规则后,生成两个结构性成分序列:
S1:s1s2s3,si,…sn-2sn-1sn.
S2:w1w2w3,wk,…wm-2wm-1wm.
其中,si(1≤i≤n)表示句子S1中的第i个结构性成分,wk(1≤k≤m)表示句子S2中的第k个结构性成分。为了形象说明,我们用有向图表示两个序列的匹配过程,如图1所示。
图1 序列S1和S2匹配有向图
首先是从左到右的正向匹配,对相同位置的成分进行比较,若相同则继续下一个成分的比较,直至其中一个句子结束,也就是两个句子中相对较短的句子的对比结束。经过最优匹配以后,我们可以计算出句子结构相似度,如式(1)所示。
(1)
计算过程中我们定义每一个句子结构标记为一个结构点。式(1)中,C是结构转换后句子与实例库中句子的相同结构点数量,E是两个句子中结构点总量,Fi是第i个相同结构点的权值,Fk是所有结构点中第k个结构点的权值,在计算过程中根据词类标记在句子中作用的不同赋予不同的权值,最后得到相似度计算结果。
我们以1万句单句为实验对象,抽取每个句子的骨架结构,按照上文描述的句子结构相似度计算方法,使这些句子进行两两比较,每遍历到最后一句再继续下一次遍历,下一次遍历从上一次开始遍历的第2句开始。经过运算得到句子结构的相似度计算结果。图2是以前10句为例相互比较得到的相似度计算结果。
表中前14句与第83句的相似度值为1,其骨架结构相同,只是有些句子多了时间、副词等成分,如
图2 句子两两比较相似度计算结果示例
表1 相似度值排序结果示例
据此,我们统计出每句遍历以后与之相似度结果大于65%的句子数量(图3)。
图3 相似句子数量统计图
我们对每个句子对应的相似句数量统计以后,人工验证了这种方法的准确率,如式(2)所示。
(2)
这些相似的句子正确率达到76%以上,因此我们可以得出结论,通过转换规则对句子的骨架结构转换以后得到的句子结构相似度,基本符合我们的预期设想,它们对应的中文句子的结构相似度结果,也大致与得到的韩国语句子结构相似度结果基本吻合,基于句子结构的相似度计算方法是可行的。对梯形图表以及韩汉句子表格分析以后可以看出结果在65%以上的表明它们的句子结构相似的可信度较高,在这个结果以下的基本可以判断句子结构相似程度不高,那么在构建实例库以及别的工作中可以舍弃这些偏低的结果,有助于为基于实例的机器翻译提供精确匹配。
需要说明的是,系统可以抽取出与源句子结构相似的句子,并且可以计算出结果在0到1之间的数值。但是由于算法过程中存在不同程度的偏差,计算出的相似度结果并不一定完全精确,相似度结果只是一个相对的数值。数字越接近1,说明与源句子的结构相似度相对越高,反之说明不高。但是在分析实验数据时也会出现相似度结果大于65%,但是两个句子实际上是不相似的,例如:
这两个句子的相似度计算结果是1.0,即完全相似,但是两个句子实际上是不相似的,这是由于句子中省略了某些重要成分,影响了相似度结果。
句子相似度在机器翻译中发挥着极其重要的作用,本文从韩国语特有的句法特性出发,利用简单句的结构性成分标记,通过7条语言规则,提出了韩国语句子结构相似度计算方法,通过实验证明这种方法是可行的,但是该方法还有很大的改进空间。下一步工作主要在以下几个方面展开: ①通过更大规模语料的反复实验,进一步丰富影响句子结构的成分和转换规则,并细化对权值的分配,以期获得更加理想的结果; ②把结构相似度和词形相似度结合起来,进一步提高句子相似度的精度; ③根据韩国语复句的特点,基于大规模标注语料库统计归纳各种类型复句的分布特点,有针对性地开展对不同类型复句的相似度计算研究。