词义排歧的一种语言模型,本文主要内容关键词为:词义论文,模型论文,语言论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
[中图分类号]H085.6[文献标识码]A[文章编号]1003-5397(2000)03-0085-06
词义排歧(word sense disambiguation)指根据一个多义词在文本中出现的上下文环境来确定其词义代码。这个代码既可以是该词义在一部普通词典中的义项号,也可以是它在一部义类词典中的义类代码。长期以来,词义排歧一直被认为是自然语言处理的一个难题。90年代以前,词义排歧研究主要采用人工智能方法,其困难在于要用人工来编制大量的排歧规则,不仅覆盖面很窄,而且开销巨大,即所谓知识获取的“瓶颈”问题。90年代以后,由于大规模机储词典和语料库的出现,词义排歧研究进入了一个以语料库方法为主的新时期。
一种基于词典的词义排歧方法凭借普通词典中词条的释义文本来实现排歧,即计算一个多义词各义项的释义文本与该词所在当前文本的匹配程度,如Lesk和Wilks分别提出的词义排歧方法。[1]但如果词条的释义文本比较短,比如只用近义词或反义词来释义,则在多义词出现的上下文中将很难找到与释义文本重叠的信息,从而影响了词义排歧的效果。另外一类基于词典的词义排歧方法利用义类词典,代表性的工作是Yarowsky提出的词义排歧算法。[3]这种方法由于在计算每个语义类的凸显词(salient words)时将多义词的在语料库中的分布平均分到各个语义类中,从而引入统计噪声;另一方面,由于寻找凸显词所使用的语料范围受限,因而覆盖面较窄。[1][2]
基于语科库的词义排歧方法(Yarowsky 1994,Bruce 1995等)大都需要对训练语料库进行词义的人工标注,这种标注工作既费时又费力,并且统计结果存在严重的数据稀疏问题,因此一部分学者致力于研究无指导的(unsupervised)排歧知识获取方法。但迄今这些方法大都只停留在几个或十几个多义词的小规模实验上。
本文依托《同义词词林》的语义类体系,[4]认为同义词在文本中出现时,与它们前后同现的那些实词在统计意义上是相似的。因此,不难根据任一同义词集中的众多单义词,在一个大规模语料库上自动获取在它们周围同现的所有实词,进而按这些同现实词的词义分辨能力对它们加权,构成这个语义类的一个“分类器”。由于这种分类器可以从一个未经词义标注的大规模语料库上自动获取,所以这是一种代价最小的无指导学习算法。有趣的是,语言学家在编著《词林》时是用他们的直觉/语感来划分同义词集的,而计算机在构造语义类的分类器时凭借的却是词语在大规模语料库中的搭配同现统计,两者的机理完全不同。可是实验表明,两种不同机理所得到的分类结果却高度吻合。本研究的意义在于,提出了语义类的一种形式化表示,以及一种自动构造语义类分类器的算法,为实现真实文本的计算机自动词义标注奠定了基础。
一 《同义词词林》简介
《词林》的编者在确定词的语义分类时,以词义为主,兼顾词类,并充分注意题材的相对集中。这部义类词典把词义分为大、中、小类三级,共得到12个大类、94个中类、1428个小类,小类以下再按同义词词群设立标题词,共含3925个标题词。
《词林》中用第一个大写英文字母作为大类的编号,紧接着用第二个小写英文字母表示中类,义类代码的第三和第四位是两个阿拉伯数字,用来表示小类的编号。小类以下的标题词还可细分为两个层次,各用两位阿拉伯数字表示。例如,词“觉悟”的义类代码为"Ga15",其中大类编码G表示“心理活动”,中类编码Ga表示“心理状态”,小类编码是Ga15,它在《词林》中的内容显示为:
Ga15 醒悟 懂事
醒悟 觉悟 省悟 憬悟 觉醒 清醒 醒(猛) 如梦初醒
大梦初醒……
懂事 记事儿 开窍 通窍
也就是说,Ga15包含两个标题词:“醒悟”和“懂事”,分别代表这一小类以下的两个词群。因此,词“觉悟”的完整义类代码是Ga150101.
《词林》以词的义项为收词单位,多义词按其词义被赋以不同的义类代码。例如,词“材料”在《词林》中有三个义项:(1)可以直接造成成品的东西;(2)提供著作的内容的事物或可供参考的事实;(3)比喻适于做某种事情的人才。它们对应的义类代码分别为"Ba06""Dk17"和"A103"。对“材料”一词的词义排歧过程,就是要根据该词出现的上下文给它标注一个正确的义类代码。
如上所述,《词林》的义类代码系统构成了一幅有层次结构的树状图,如图1所示。
《词林》收入的词条实际上包括了词和部分短语、成语、俗语,总共50154条。《词林》中多义词的分布情况如表1所示。统计表明,《词林》中总共有7430条多义词,占词条总数的14.8%,即七分之一强。值得注意的是,仅占词条总数7.52%的3774条单字词中,却有近一半(即1801条)是多义的;相比之下,在46380条多字词中,只有12.1%是多义的。
表1. 《词林》中多义词的分布情况
单字词多字词词条总数
词条数百分比词条数百分比
单义词 1973 52.3% 40751 87.9% 42724
多义词 1801 47.7% 5629 12.1% 7430
总计3774 100% 46380 100%
50154
词义排歧任务的难度还可以通过对语料库的调查来显示。在一个语料库中,总词次的大约42%具有不只一个词义。如前所述,《词林》的语义分类兼顾了词语的词性,比如AD四个大类多属名词,数词与量词归入中类Dn,E类多属形容词,FJ类多属动词等。因此,对于一个经过分词和词性标注的输入文本来说,其中为数不少的多义词可以直接根据它们的词性来辨识词义。统计数据显示,经过词性排歧后,语料库中多义词的词次数占总词次数的比例从42%降低到24%,减少幅度高达43%。
二 《词林》的向量空间表示
“观其伴而知其意”(You shall know a word by the company it keeps)是语言学家Firth(1957)对词义辨识的描述。也就是说,一个词的词义只能在它的应用中得以体现。如果一个词的某个特定词义在一个语料库中多次出现,对其每次出现的上下文加以考察,就可以获得该词义同其他词的搭配关系。不仅不同的词具有不同的搭配关系,而且同一个词不同义项也会有不同的搭配关系。
由于一个词的词义可以用与其同现的一组搭配词(简称搭配)来描述,因此在数学上总可以用一个多维向量来表示一个特定的词义。我们把这样的向量叫做词义向量。具体来说,一个词义向量由多个分量组成,其中每个分量代表与这个词义同现的一个搭配实词,并成为整个语义空间的一维。
考虑到工程实现的需要,不妨把一个词义在文本中出现的“上下文”规定为在这个词前后d个位置上同现的全部实词,±d又称为考察搭配的观察窗口。由于这些实词在体现(或辨识)这个特定词义的能力方面不尽相同,因此有必要用一定的权值(weight)来标识它们的能力。本文把任意一个搭配实词x[,i]与一个特定词义s的同现概率P(s,x[,i])定义为该实词在词义向量中的权值。显然,P(s,x[,i])可以通过语料库的统计来估值。
经过以上修正后,一个词义向量V的每个分量就可以用代表这个搭配实词x[,I]的同现概率P(s,x[,i])来表征,即V[,xi]=P(s,x[,i])。因此词义向量实质上是一个多维的实值向量,而由众多词义向量构成的语义空间将成为一个多维的实值向量空间。
对词义的上述描述,实际上以如下两个基本假设为依据:
[假设1]如果两个词的词义相似,则它们在文本中出现的上下文也相似。若用词义向量分别表示这两个词的上下文,则它们在语义空间中的距离相近。
[假设2]意义相同或相近的一些词,在语义空间上体现为一个密集的点阵。
假设2的可靠性可以通过词义的聚类来验证,目的是检验按词义向量描述的词义通过聚类所得到的同(近)义词集和《词林》的分类体系是否一致。
三 实验的设计
本文的实验是这样设计的。从《词林》中任选两个词类相同的语义小类A和B,设C[,A]和C[,B]分别表示类A和B中全体单义词组成的集合。即
C[,A]={WA[,1],WA[,2]…,WA[,m]}
C[,B]={WB[,1],WB[,2]…,WB[,n]}
其中,WA[,i](i=1,…,m)和WB[,j](j=1,…,n)分别是类A和类B中的一个单义词。依照词义向量的构造原理,可以在一个大规模语料库中分别获取上述任意一个单义词的词义向量S(W)。然后对词表C=C[,A]∪C[,B]中的所有词,按词义向量之间的距离远近重新分类,聚类结果也是两个词集C[,1]和C[,2],有C=C[,1]∪C[,2],且C[,1]∩C[,2]=Φ。如果C[,1]和C[,2]在一定程度上分别对应于C[,A]和C[,B],则说明假设2成立。
聚类时采用自底向上的最短距离算法,首先把词表C中在语料库中出现次数大于100的词分别归入词集C[,1]和C[,2],然后再依次对低频词进行聚类。
四 实验结果
聚类实验采用的语料库规模为72兆字节(MB)。聚类实验选用的义类代码对及其在语料库中出现的情况如表2所示。实验结果如表3所示。词义向量的聚类结果与《词林》编码之间的“一致率”定义为:
聚类结果中与《词林》编码一致的词数
一致率=────────────────────
词表C的总词数
表2 《词林》的一些义类代码对在语料库中的出现情况
义类代码对单义词数总词次数 >100次>50次>10次
Hc11/Hc03 17/18 6005/6538 6/7 9/9 13/11
Ba06/Da19 16/16 3415/3954 5/4 6/5 10/8
Hc11/Hi03 17/18 6005/6165 6/5 9/7 13/13
Aa03/Ae07 15/20 6800/6735 6/4 6/4 10/9
Di10/Di08 27/28 12017/115318/8 11/9 20/3
Ed29/Ed11 15/17 3534/4054 2/3 3/6
8/10
Ed16/Ef08 14/17 2599/2656 1/3 2/45/8
Gb15/Hj20 7/62303/2003 4/2 4/36/5
实验结果表明:
表中,“义类代码对”指从《词林》中选出的一对语义类的名称,“单义词数”是每个义类代码所包含的单义词词条数,“总词次数”是这些单义词词条在语料库中累计出现的次数,“>100次”表示累计出现次数超过100次的那些单义词的词条数,其余类推。
表3 聚类结果与《词林》编码的一致率
义类代码对 >100次>50次 >10次平均一致率
Ba06/Da19100% 100% 100%100%
Aa03/Ae0790/0% 90/0%84.4%
82.5%
Di10/Di0887.5% 85.0%75.8%
75.5%
Gb15/Hj20100% 85.8%81.8%
84.6%
Hc11/Hi0390.9% 82.0%76.4%
69.3%
Hc11/Hc03100% 91.7%91.7%
77.1%
Ed16/Ef08100% 88.9%83.3%
81.3%
Ed29/Ef11100% 100% 84.6%
78.6%
平均一致率
96.1% 90.4%84.8%81.1%
(1)根据词义向量之间的距离远近,对语料库中累计出现次数大于100次的单义词进行聚类,至少有87.5%的词与《词林》的结果一致,平均一致率高达96.1%;对累计出现次数超过50次的单义词,至少有82.0%的词与《词林》一致,平均一致率为90.4%;对累计出现次数超过10次的单义词,仍至少有75.8%的词与《词林》一致,平均一致率为84.8%。这个结果证实了假设2的合理性。
(2)从聚类结果与《词林》的平均一致率来看:一方面,高频词明显优于低频词,因为被考察词的累计出现次数越多,统计数据越可靠,因而词义向量的表示越接近真实情况;另一方面,《词林》中任意两个义类代码之间的语义相差越远,它们对应的义类向量在语义空间中的距离也越远,所以聚类结果越容易与《词林》保持一致。
要强调指出的是:《词林》划分同义词集并实现义类编码所依据的是语言学家的直觉或语感,而词义向量的构造则凭借词语的同现搭配和大规模语料库调查,两者的机理完全不同。然而计算机根据词义向量之间的距离对词语实施聚类的结果却同《词林》的语义类编码高度吻合。这个事实说明,本文对词义描述提出的两个假设是合理的。
综上所述,本研究的意义在于提出了词义的一种形式化表示以及一种自动构造语义类分类器的算法,从而为实现真实文本的计算机自动词义标注奠定了基础。
我们在这个假设下提出了一种义类排歧知识的无指导学习方法,并且建立了文本的自动义类标注系统,具有较高的标注正确率。
[收稿日期]2000-03-08