搜档网
当前位置:搜档网 › 基于《知网》的词汇语义相似度计算

基于《知网》的词汇语义相似度计算

基于《知网》的词汇语义相似度计算
基于《知网》的词汇语义相似度计算

基于《知网》的词汇语义相似度计算1

刘群??李素建?

{liuqun,lisujian}@https://www.sodocs.net/doc/b92516806.html,

?中国科学院计算技术研究所

?北京大学计算语言学研究所

摘要:

《知网》是一部比较详尽的语义知识词典。在基于实例的机器翻译中,词语相似度计算是一个重要的环节。不过,由于《知网》中对于一个词的语义采用的是一种多维的知识表示形式,这给词语相似度的计算带来了麻烦。这一点与WordNet和《同义词词林》不同。在WordNet和《同义词词林》中,所有同类的语义项(WordNet的synset或《同义词词林》的词群)构成一个树状结构,要计算语义项之间的距离,只要计算树状结构中相应结点的距离即可。而在《知网》中词语相似度的计算存在以下问题:

1.每一个词的语义描述由多个义原组成,例如“暗箱”一词的语义描述为:part|部件,%tool|用具,body|身,“写信”一词的语义描述为:

#TakePicture|拍摄write|写,ContentProduct=letter|信件;

2.词语的语义描述中各个义原并不是平等的,它们之间有着复杂的关系,通过一种专门的知识描述语言来表示。

我们的工作主要包括:

1.研究《知网》中知识描述语言的语法,了解其描述一个词义所用的多个义原之间的关系,区分其在词语相似度计算中所起的作用;

2.提出利用《知网》进行词语相似度计算的算法;

3.通过实验验证该算法的有效性,并与其他算法进行比较。

关键词:《知网》词汇语义相似度计算自然语言处理

1 引言

在基于实例的机器翻译中,词语相似度的计算有着重要的作用。例如要翻译“张三写的小说”这个短语,通过语料库检索得到译例:

1)李四写的小说/the novel written by Li Si

2)去年写的小说/the novel written last year

通过相似度计算我们发现,“张三”和“李四”都是具体的人,语义上非常相似,而“去年”的语义是时间,和“张三”相似度较低,因此我们选用“李四写的小说”这个实例进行类比翻译,就可以得到正确的译文:

the novel written by Zhang San

1本项研究受国家重点基础研究计划(973)支持,项目编号是G1998030507-4和G1998030510。

如果选用后者作为实例,那么得到的错误译文将是:

* the novel written Zhang San

通过这个例子可以看出相似度计算在基于实例的机器翻译中所起的作用。

在基于实例的翻译中另一个重要的工作是双语对齐。在双语对齐过程中要用到两种语言词语的相似度计算,这不在本文所考虑的范围之内。

除了基于实例的机器翻译之外,词语相似度计算在信息检索、信息抽取、词义排歧等领域都有着广泛的应用。

2 词语相似度及其计算的方法

2.1什么是词语相似度

什么是词语相似度?

我们认为,词语相似度是一个主观性相当强的概念。脱离具体的应用去谈论词语相似度,很难得到一个统一的定义。因为词语之间的关系非常复杂,其相似或差异之处很难用一个简单的数值来进行度量。从某一角度看非常相似的词语,从另一个角度看,很可能差异非常大。

不过,在具体的应用中,词语相似度的含义可能就比较明确了。例如,在基于实例的机器翻译中,词语相似度主要用于衡量文本中词语的可替换程度;而在信息检索中,相似度更多的要反映文本或者用户查询在意义上的符合程度。

本文的研究主要以基于实例的机器翻译为背景,因此在本文中我们所理解的词语相似度就是两个词语在不同的上下文中可以互相替换使用而不改变文本的句法语义结构的程度。两个词语,如果在不同的上下文中可以互相替换且不改变文本的句法语义结构的可能性越大,二者的相似度就越高,否则相似度就越低。

相似度是一个数值,一般取值范围在[0,1]之间。一个词语与其本身的语义相似度为1。如果两个词语在任何上下文中都不可替换,那么其相似度为0。

相似度这个概念,涉及到词语的词法、句法、语义甚至语用等方方面面的特点。其中,对词语相似度影响最大的应该是词的语义。

2.2词语相似度与词语距离

度量两个词语关系的另一个重要指标是词语的距离。

一般而言,词语距离是一个[0,∞)之间的实数。

一个词语与其本身的距离为0。

词语距离与词语相似度之间有着密切的关系。

两个词语的距离越大,其相似度越低;反之,两个词语的距离越小,其相似度越大。二者之间可以建立一种简单的对应关系。这种对应关系需要满足以下几个条件:

1) 两个词语距离为0时,其相似度为1;

2) 两个词语距离为无穷大时,其相似度为0;

3) 两个词语的距离越大,其相似度越小(单调下降)。

对于两个词语W1和W2,我们记其相似度为Sim(W1,W2),其词语距离为

Dis(W 1,W 2),那么我们可以定义一个满足以上条件的简单的转换关系:

αα

+=),(),(121W W Dis W W Sim (1)

其中α是一个可调节的参数。α的含义是:当相似度为0.5时的词语距离值。 这种转换关系并不是唯一的,我们这里只是给出了其中的一种可能。

在很多情况下,直接计算词语的相似度比较困难,通常可以先计算词语的距离,然后再转换成词语的相似度。所以在本文后面的有些章节,我们只谈论词语的距离,而没有提及词语的相似度,读者应该知道这二者是可以互相转换的。

2.3 词语相似度与词语相关性

度量两个词语关系的另一个重要指标是词语的相关性。

词语相关性反映的是两个词语互相关联的程度。可以用这两个词语在同一个语境中共现的可能性来衡量。

词语相关性也是一个[0,1]之间的实数。

词语相关性和词语相似性是两个不同的概念。例如“医生”和“疾病”两个词语,其相似性非常低,而相关性却很高。可以这么认为,词语相似性反映的是词语之间的聚合特点,而词语相关性反映的是词语之间的组合特点。

同时,词语相关性和词语相似性又有着密切的联系。如果两个词语非常相似,那么这两个词语与其他词语的相关性也会非常接近。反之,如果两个词语与其他词语的相关性特点很接近,那么这两个词一般相似程度也很高。

2.4 词语相似度的计算方法

词语距离有两类常见的计算方法,一种是根据某种世界知识(Ontology )来计算,一种利用大规模的语料库进行统计。

根据世界知识(Ontology )计算词语语义距离的方法,一般是利用一部同义词词典(Thesaurus )。一般同义词词典都是将所有的词组织在一棵或几棵树状的层次结构中。我们知道,在一棵树形图中,任何两个结点之间有且只有一条路径。于是,这条路径的长度就可以作为这两个概念的语义距离的一种度量。

图1 《同义词词林》语义分类树形图

O L B A a l …… a b 01 02... 01… 01… …… 01 01 02... 01 ... 01 … 01 …… … 01 01 … 01 …… ... 虚线用于标识某上层节点到下层节点的路径

王斌(1999)采用这种方法利用《同义词词林》来计算汉语词语之间的相似度(如图1所示)。有些研究者考虑的情况更复杂。Agirre & Rigau (1995)在利用Wordnet计算词语的语义相似度时,除了结点间的路径长度外,还考虑到了其他一些因素。例如:

1) 概念层次树的深度:路径长度相同的两个结点,如果位于概念层次的越

底层,其语义距离较大;比如说:“动物”和“植物”、“哺乳动物”和

“爬行动物”,这两对概念间的路径长度都是2,但前一对词处于语义树

的较高层,因此认为其语义距离较大,后一对词处于语义树的较低层,

其语义距离更小;

2) 概念层次树的区域密度:路径长度相同的两个结点,如果位于概念层次

树中高密度区域,其语义距离应大于位于低密度区域。由于Wordnet中

概念描述的粗细程度不均,例如动植物分类的描述及其详尽,而有些区

域的概念描述又比较粗疏,所以加入了概念层次树区域密度对语义距离

的影响。

另一种词语相似度的计算方法是大规模的语料来统计。例如,利用词语的相关性来计算词语的相似度。事先选择一组特征词,然后计算这一组特征词与每一个词的相关性(一般用这组词在实际的大规模语料中在该词的上下文中出现的频率来度量),于是,对于每一个词都可以得到一个相关性的特征词向量,然后利用这些向量之间的相似度(一般用向量的夹角余弦来计算)作为这两个词的相似度。这种做法的假设是,凡是语义相近的词,他们的上下文也应该相似。李涓子(1999)利用这种思想来实现语义的自动排歧;鲁松(2001)研究了如何如何利用词语的相关性来计算词语的相似度。Dagan(1999)使用了更为复杂的概率模型来计算词语的距离。

这两种方法各有特点。基于世界知识的方法简单有效,也比较直观、易于理解,但这种方法得到的结果受人的主观意识影响较大,有时并不能准确反映客观事实。另外,这种方法比较准确地反映了词语之间语义方面的相似性和差异,而对于词语之间的句法和语用特点考虑得比较少。基于语料库的方法比较客观,综合反映了词语在句法、语义、语用等方面的相似性和差异。但是,这种方法比较依赖于训练所用的语料库,计算量大,计算方法复杂,另外,受数据稀疏和数据噪声的干扰较大,有时会出现明显的错误。

本文主要研究基于《知网(Hownet)》的词语相似度计算方法,这是一种基于世界知识的方法。

3 《知网(Hownet)》简介

按照《知网》的创造者――董振东先生自己的说法(杜飞龙,1999):

《知网》是一个以汉语和英语的词语所代表的概念为描述对象,以揭示概念与概念之间以及概念所具有的属性之间的关系为基本内容的常识知识库。

《知网》中含有丰富的词汇语义知识和世界知识,为自然语言处理和机器翻译等方面的研究提供了宝贵的资源。不过,在我们真正试图利用《知网》来进行计算机处理时,发现还是会遇到不少困难。我们的感觉是,《知网》确实是一座宝库,但另一方面,《知网》的内容又非常庞杂。尽管《知网》的提供了详细的文档,但由于这些文档不是以一种形式化的方式说明的,很多地方多少显得有些混乱。当我们阅读这些文档时,很容易一下子陷入大量的细节之中,而很难对《知

网》有一个总体的把握。这使得我们在进行计算的时候觉得很不方便。因此,我们在试图利用《知网》进行计算的过程中,也在逐渐加深我们对于《知网》的认识,并试图整理出一个关于《知网》的比较清晰的图象。

本节中,我们对于《知网》的描述是按照我们自己的语言来组织的,很多地方加入了我们的理解,并不一定都是《知网》文档中描述。我们希望通过这种方法,使读者更快地了解《知网》,对《知网》有一个比较清晰而全面的印象。当然,我们的理解也难免有错误和遗漏之处,欢迎《知网》的作者和其他读者批评指正。

3.1《知网》的结构

董振东先生反复强调,《知网》并不是一个在线的词汇数据库,《知网》不是一部语义词典。

在介绍《知网》的结构之前,我们首先要理解《知网》中两个主要的概念:“概念”与“义原”。

“概念”是对词汇语义的一种描述。每一个词可以表达为几个概念。

“概念”是用一种“知识表示语言”来描述的,这种“知识表示语言”所用的“词汇”叫做“义原”。

“义原”是用于描述一个“概念”的最小意义单位。

与一般的语义词典(如《同义词词林》,或Wordnet)不同,《知网》并不是简单的将所有的“概念”归结到一个树状的概念层次体系中,而是试图用一系列的“义原”来对每一个“概念”进行描述。

《知网》一共采用了1500义原,这些义原分为以下几个大类:

1)Event|事件

2)entity|实体

3)attribute|属性值

4)aValue|属性值

5)quantity|数量

6)qValue|数量值

7)SecondaryFeature|次要特征

8)syntax|语法

9)EventRole|动态角色

10)EventFeatures|动态属性

对于这些义原,我们把它们归为三组:第一组,包括第1到7类的义原,我们称之为“基本义原”,用来描述单个概念的语义特征;第二组,只包括第8类义原,我们称之为“语法义原”,用于描述词语的语法特征,主要是词性(Part of Speech);第三组,包括第9和第10类的义原,我们称之为“关系义原”,用于描述概念和概念之间的关系(类似于格语法中的格关系)。

除了义原以外,《知网》中还用了一些符号来对概念的语义进行描述,如下表所示:

表1: 《知网》知识描述语言中的符号及其含义

我们把这些符号又分为几类,一类是用来表示语义描述式之间的逻辑关系,包括以下几个符号:, ~ ^ ,另一类用来表示概念之间的关系,包括以下几个符号:# % $ * + & @ ? ! ,第三类包括几个无法归入以上两类的特殊符号:{} () [] 。

我们看到,概念之间的关系有两种表示方式:一种是用“关系义原”来表示,一种是用表示概念关系的符号来表示。按照我们的理解,前者类似于一种格关系,后者大部分是一种格关系的“反关系”,例如“$”我们就可以理解为“施事、对象、领有、内容”的反关系,也就是说,该词可以充当另一个词的“施事、对象、领有、内容”。

义原一方面作为描述概念的最基本单位,另一方面,义原之间又存在复杂的关系。在《知网》中,一共描述了义原之间的8种关系:上下位关系、同义关系、反义关系、对义关系、属性-宿主关系、部件-整体关系、材料-成品关系、事件-角色关系。可以看出,义原之间组成的是一个复杂的网状结构,而不是一个单纯的树状结构。不过,义原关系中最重要的还是的上下位关系。根据义原的上下位关系,所有的“基本义原”组成了一个义原层次体系(如图2)。这个义原层次体系是一个树状结构,这也是我们进行语义相似度计算的基础。

- entity|实体

├thing|万物

…├physical|物质

…├animate|生物

…├AnimalHuman|动物

…├human|人

│└humanized|拟人

└animal|兽

├beast|走兽

图2 树状的义原层次结构

从表面上看,其他的语义词典,如《同义词词林》和Wordnet,也有一个树状的概念层次体系,好像《知网》和它们很相似,但实际上有着本质的不同。在《同义词词林》和Wordnet种,概念就是描写词义的最小单位,所以,每一个概念都是这个概念层次体系中的一个结点。而在《知网》中,每一个概念是通过一组义原来表示的,概念本身并不是义原层次体系中的一个结点,义原才是这个层次体系中的一个结点。而且,一个概念并不是简单的描述为一个义原的集合,而是要描述为使用某种专门的“知识描述语言”来表达的一个语义表达式。也就是说,在描述一个概念的多个义原中,每个义原所起到的作用是不同的,这就给我们的相似度计算带来了很大的困难。下面我们就对这个描述概念的知识描述语言进行一些考察。

3.2《知网》的知识描述语言

《知网》对概念的描述是比较复杂的。在《知网》中,每一个概念用一个记录来表示,如下所示:

NO.=017144

W_C=打

G_C=V

E_C=~网球,~牌,~秋千,~太极,球~得很棒

W_E=play

G_E=V

E_E=

DEF=exercise|锻练,sport|体育

其中NO.为概念编号,W_C,G_C,E_C分别是汉语的词语、词性和例子,W_E、G_E、E_E分别是英语的词语、词性和例子,DEF是知网对于该概念的定义,我们称之为一个语义表达式。其中DEF是知网的核心。我们这里所说的知识描述语言也就是DEF的描述语言。

在《知网》的文档中,对知识描述语言做了详尽的介绍。不过,由于该文档过于偏重细节,不易从总体上把握。本节中我们试图对于这种知识描述语言给出一个简单的概括。

我们看几个例子:

表2:《知网》知识描述语言实例

从这些例子我们可以看到,《知网》的知识描述语言是比较复杂的。我们将这种知识描述语言归纳为以下几条:

1)《知网》收入的词语主要归为两类,一类是实词,一类是虚词;

2)虚词的描述比较简单,用“{句法义原}”或“{关系义原}”进行描述;

3)实词的描述比较复杂,由一系列用逗号隔开的“语义描述式”组成,这

些“语义描述式”又有以下三种形式:

a)独立义原描述式:用“基本义原”,或者“(具体词)”进行描述;

b)关系义原描述式:用“关系义原=基本义原”或者“关系义原=(具体

词)”或者“(关系义原=具体词)”来描述;

c)符号义原描述式:用“关系符号基本义原”或者“关系符号(具体

词)”加以描述;

4)在实词的描述中,第一个描述式总是一个基本义原,这也是对该实词最

重要的一个描述式,这个基本义原描述了该实词的最基本的语义特征。

4 基于《知网》的语义相似度计算方法

从上面的介绍我们看到,与传统的语义词典不同,在《知网》中,并不是将每一个概念对应于一个树状概念层次体系中的一个结点,而是通过用一系列的义原,利用某种知识描述语言来描述一个概念。而这些义原通过上下位关系组织成一个树状义原层次体系。我们的目标是要找到一种方法,对用这种知识描述语言表示的两个语义表达式进行相似度计算。

利用《知网》计算语义相似度一个最简单的方法就是直接使用词语语义表达式中的第一独立义原,把词语相似度等价于第一独立义原的相似度。这种方法好处是计算简单,但没有利用知网语义表达式中其他部分丰富的语义信息。

Li Sujian, et al. (2002)中提出了一种词语语义相似度的计算方法,计算过程综

合利用了《知网》和《同义词词林》。在义原相似度的计算过程中,不仅考虑了义原之间的上下文关系,还考虑了义原之间的其他关系。在计算词语相似度时,加权合并了《同义词词林》的词义相似度、《知网》语义表达式的义原相似度和义原关联度。这种算法中,《同义词词林》和《知网》采用完全不同的语义体系和表达方式,词表也相差较大,把它们合并计算的合理性值得怀疑。另外,把语义关联度加权合并计入义原相似度中,也未必合理。

4.1 词语相似度计算

对于两个汉语词语W 1和W 2,如果W 1有n 个义项(概念):S 11,S 12,……,S 1n ,W 2有m 个义项(概念):S 21,S 22,……,S 2m ,我们规定,W 1和W 2的相似度各个概念的相似度之最大值,也就是说:

),(max ),(21...1,..121j i m j n i S S Sim W W Sim === (2)

这样,我们就把两个词语之间的相似度问题归结到了两个概念之间的相似度问题。当然,我们这里考虑的是孤立的两个词语的相似度。如果是在一定上下文之中的两个词语,最好是先进行词义排岐,将词语标注为概念,然后再对概念计算相似度。

4.2 义原相似度计算

由于所有的概念都最终归结于用义原(个别地方用具体词)来表示,所以义原的相似度计算是概念相似度计算的基础。

由于所有的义原根据上下位关系构成了一个树状的义原层次体系,我们这里采用简单的通过语义距离计算相似度的办法。假设两个义原在这个层次体系中的路径距离为d ,根据公式(1),我们可以得到这两个义原之间的语义距离:

α

α+=d p p Sim ),(21 …… (3) 其中p 1和p 2表示两个义原(primitive ),d 是p 1和p 2在义原层次体系中的路径长度,是一个正整数。α是一个可调节的参数。

用这种方法计算义原相似度的时候,我们只利用了义原的上下位关系。实际上,在《知网》中,义原之间除了上下位关系外,还有很多种其他的关系,如果在计算时考虑进来,可能会得到更精细的义原相似度度量,例如,我们可以认为,具有反义或者对义关系的两个义原比较相似,因为它们在实际的语料中互相可以互相替换的可能性很大。对于这个问题这里我们不展开讨论,留给以后的研究工作来处理。

另外,在知网的知识描述语言中,在一些义原出现的位置都可能出现一个具体词(概念),并用圆括号( )括起来。所以我们在计算相似度时还要考虑到具体词和具体词、具体词和义原之间的相似度计算。理想的做法应该是先把具体词还原成《知网》的语义表达式,然后再计算相似度。这样做将导入函数的递归调用,甚至可能导致死循环,这会使算法会变得很复杂。由于具体词在《知网》的语义表达式中只占很小的比例,因此,在我们的实验中,为了简化起见,我们做如下规定:

●具体词与义原的相似度一律处理为一个比较小的常数(γ);

●具体词和具体词的相似度,如果两个词相同,则为1,否则为0。

4.3虚词概念的相似度的计算

我们认为,在实际的文本中,虚词和实词总是不能互相替换的,因此,虚词概念和实词概念的相似度总是为零。

由于虚词概念总是用“{句法义原}”或“{关系义原}”这两种方式进行描述,所以,虚词概念的相似度计算非常简单,只需要计算其对应的句法义原或关系义原之间的相似度即可。

4.4实词概念的相似度的计算

由于实词概念是用一个语义表达式来描述的,因此其相似度计算变得非常复杂。

如何计算两个语义表达式的相似度呢?

我们的基本设想是:整体相似要建立在部分相似的基础上。把一个复杂的整体分解成部分,通过计算部分之间的相似度得到整体的相似度。

假设两个整体A和B都可以分解成以下部分:A分解成A1,A2,……,A n,B分解成B1,B2,……,B m,那么这些部分之间的对应关系就有m×n种。问题是:这些部分之间的相似度是否都对整体的相似度发生影响?如果不是全部都发生影响,那么我们应该如何选择那些发生影响的那些部分之间的相似度?选择出来以后,我们又如何得到整体的相似度?

我们认为:一个整体的各个不同部分在整体中的作用是不同的,只有在整体中起相同作用的部分互相比较才有效。例如比较两个人长相是否相似,我们总是比较它们的脸型、轮廓、眼睛、鼻子等相同部分是否相似,而不会拿眼睛去和鼻子做比较。

因此,在比较两个整体的相似性时,我们首先要做的工作是对这两个整体的各个部分之间建立起一一对应的关系,然后在这些对应的部分之间进行比较。我们把这种做法比喻成古代的战场的两军对垒:兵对兵、将对将,捉对厮杀。

还有一个问题:如果某一部分的对应物为空,如何计算其相似度?我们的处理方法是:

●将任何义原(或具体词)与空值的相似度定义为一个比较小的常数(δ);

整体的相似度通过部分的相似度加权平均得到。

对于实词概念的语义表达式,我们将其分成四个部分:

1)第一独立义原描述式:我们将两个概念的这一部分的相似度记为

Sim1(S1,S2);

2)其他独立义原描述式:语义表达式中除第一独立义原以外的所有其他独

立义原(或具体词),我们将两个概念的这一部分的相似度记为

Sim2(S1,S2);

3)关系义原描述式:语义表达式中所有的用关系义原描述式,我们将两个

概念的这一部分的相似度记为Sim3(S1,S2);

4)符号义原描述式:语义表达式中所有的用符号义原描述式,我们将两个

概念的这一部分的相似度记为Sim 4(S 1,S 2)。

于是,两个概念语义表达式的整体相似度记为:

∑==4

12121),(),(i i i S S Sim S S Sim β (4)

其中,βi (1≤i ≤4)是可调节的参数,且有:β1+β2+β3+β4=1,β1≥β2≥β3≥β4。后者反映了Sim 1到Sim 4对于总体相似度所起到的作用依次递减。由于第一独立义原描述式反映了一个概念最主要的特征,所以我们应该将其权值定义得比较大,一般应在0.5以上。

在实验中我们发现,如果Sim 1非常小,但Sim 3或者Sim 4比较大,将导致整体的相似度仍然比较大的不合理现象。因此我们对公式(4)进行了修改,得到公式如下:

∑∏===4112121),(),(i i

j j i S S Sim S S Sim β (5)

其意义在于,主要部分的相似度值对于次要部分的相似度值起到制约作用,也就是说,如果主要部分相似度比较低,那么次要部分的相似度对于整体相似度所起到的作用也要降低。

下面我们再分别讨论每一部分的相似度。

1) 第一独立义原描述式:就是两个义原的相似度,按照公式(3)计算即可;

2) 其他独立义原描述式:由于其他独立义原描述式不止一个,所以计算较为复杂。我们还是按照上面的思想,把整体相似度还原为部分相似度的加权平均。困难在于,各个独立义原描述式之间没有分工,所以很难找到对应关系。我们按照如下步骤对这些独立义原描述式分组:

a) 先把两个表达式的所有独立义原(第一个除外)任意配对,计算出

所有可能的配对的义原相似度;

b) 取相似度最大的一对,并将它们归为一组;

c) 在剩下的独立义原的配对相似度中,取最大的一对,并归为一组,

如此反复,直到所有独立义原都完成分组。

3) 关系义原描述式:关系义原描述式的配对分组较为简单,我们把关系义原相同的描述式分为一组,并计算其相似度;

4) 符号义原描述式:符号义原描述式的配对分组与关系义原描述式类似,我们把关系符号相同的描述式分为一组,并计算其相似度。

5) 在以上2)、3)、4)的计算中,最后求加权平均时,各部分取相等的权值。 到此为止,我们已经讨论了基于《知网》的词语相似度计算的所有细节,具体的算法我们不再详细说明。

5 实验及结果

根据以上方法,我们实现了一个基于《知网》的语义相似度计算程序模块。 词语相似度计算的结果评价,最好是放到实际的系统中(如基于实例的机器翻译系统),观察不同的相似度计算方法对实际系统的性能的影响。这需要一个完整的应用系统。在条件不具备的情况下,我们采用了人工判别的方法。

我们设计了两个对比实验。

第一个实验,采用本文中提出的词语相似度计算方法,我们计算一个词和另外任意选取的一组词的相似度,由人来判断这个词和这一组词的相似度大小是否与人的直觉相符合;

第二个实验,我们使用了三种方法来计算词语相似度,并把它们的计算结果进行比较:

方法1:仅使用《知网》语义表达式中第一独立义原来计算词语相似度;

方法2:Li Sujian et al. (2002) 中使用的词语语义相似度计算方法;

方法3:本文中介绍的语义相似度计算方法;

在实验中,几个参数的取值如下:

α= 1.6;

β 1 = 0.5, β 2 = 0.2,β 3 = 0.17,β 4 = 0.13

γ= 0.2

δ= 0.2

两个实验结果如下表所示:

考察实验1的结果,也就是上面方法3的结果,我们可以看到,“男人”和其他各个词的相似度与人的直觉是比较相符合的。

考察实验2的结果,也就是将方法3和方法1、方法2的结果相比较,可以看到:方法1的结果比较粗糙,只要是人,相似度都为1,显然不够合理;方法2的结果比方法1更细腻一些,能够区分不同人之间的相似度,但有些相似度的结果也不太合理,比如“男人”和“工作”的相似度比“男人”和“鲤鱼”的相似度更高。从可替换性来说,这显然不合理,至少“男人”和“鲤鱼”都是有生命物体,而“工作”只可能是一个行为或者一个抽象事物。方法2出现这种不合理现象的原因在于其计算方法把部分相关度数值加权计入了相似度中。另外,方法2的结果中,“男人”和“和尚”的相似度比“男人”和“经理”的相似度高出近一倍,而方法3的结果中,这两个相似度的差距更合理一些。

6 结论

与传统的语义词典不同,《知网》采用了1500多个义原,通过一种知识描述语言来对每个概念进行描述。

为了计算用知识描述语言表达的两个概念的语义表达式之间的相似度,我们采用了“整体的相似度等于部分相似度加权平均”的做法。首先将一个整体分解成部分,再将两个整体的各个部分进行组合配对,通过计算每个组合对的相似度的加权平均得到整体的相似度。通过对概念的语义表达式反复使用这一方法,可以将两个语义表达式的整体相似度分解成一些义原对的相似度的组合。对于两个义原的相似度,我们采用根据上下位关系得到语义距离并进行转换的方法。

实验证明,我们的做法充分利用了《知网》中对每个概念进行描述时的丰富的语义信息,得到的结果与人的直觉比较符合,词语相似度值刻划也比较细致。

参考文献:

Agirre E. and Rigau G. (1995), A proposal for word sense disambiguation using conceptual distance, in International Conference "Recent Advances in Natural Language Processing" RANLP'95, Tzigov Chark, Bulgaria,.

Dagan I., Lee L. and Pereira F. (1999), Similarity-based models of word cooccurrence probabilities, Machine Learning, Special issue on Machine Learning and Natural Language, 1999

Li Sujian, Zhang Jian, Huang Xiong and Bai Shuo (2002), Semantic Computation in Chinese Question-Answering System, Journal of Computer Science and Technology (Accepted) 李涓子(1999),汉语词义排歧方法研究,清华大学博士论文

王斌(1999),汉英双语语料库自动对齐研究,中国科学院计算技术研究所博士学位论文

鲁松(2001),自然语言中词相关性知识无导获取和均衡分类器的构建,中国科学院计算技术研究所博士论文

董振东,董强(1999),“知网”, https://www.sodocs.net/doc/b92516806.html,

杜飞龙(1999),《知网》辟蹊径,共享新天地——董振东先生谈知网与知识共享,《微电脑世界》杂志,1999年第29期

文本相似度算法

1.信息检索中的重要发明TF-IDF 1.1TF Term frequency即关键词词频,是指一篇文章中关键词出现的频率,比如在一篇M个词的文章中有N个该关键词,则 (公式1.1-1) 为该关键词在这篇文章中的词频。 1.2IDF Inverse document frequency指逆向文本频率,是用于衡量关键词权重的指数,由公式 (公式1.2-1) 计算而得,其中D为文章总数,Dw为关键词出现过的文章数。2.基于空间向量的余弦算法 2.1算法步骤 预处理→文本特征项选择→加权→生成向量空间模型后计算余弦。 2.2步骤简介 2.2.1预处理 预处理主要是进行中文分词和去停用词,分词的开源代码有:ICTCLAS。 然后按照停用词表中的词语将语料中对文本内容识别意义不大但出

现频率很高的词、符号、标点及乱码等去掉。如“这,的,和,会,为”等词几乎出现在任何一篇中文文本中,但是它们对这个文本所表达的意思几乎没有任何贡献。使用停用词列表来剔除停用词的过程很简单,就是一个查询过程:对每一个词条,看其是否位于停用词列表中,如果是则将其从词条串中删除。 图2.2.1-1中文文本相似度算法预处理流程 2.2.2文本特征项选择与加权 过滤掉常用副词、助词等频度高的词之后,根据剩下词的频度确定若干关键词。频度计算参照TF公式。 加权是针对每个关键词对文本特征的体现效果大小不同而设置的机制,权值计算参照IDF公式。 2.2.3向量空间模型VSM及余弦计算 向量空间模型的基本思想是把文档简化为以特征项(关键词)的权重为分量的N维向量表示。

这个模型假设词与词间不相关(这个前提造成这个模型无法进行语义相关的判断,向量空间模型的缺点在于关键词之间的线性无关的假说前提),用向量来表示文本,从而简化了文本中的关键词之间的复杂关系,文档用十分简单的向量表示,使得模型具备了可计算性。 在向量空间模型中,文本泛指各种机器可读的记录。 用D(Document)表示文本,特征项(Term,用t表示)指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk是特征项,要求满足1<=k<=N。 下面是向量空间模型(特指权值向量空间)的解释。 假设一篇文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为 D(a,b,c,d) 对于其它要与之比较的文本,也将遵从这个特征项顺序。对含有n 个特征项的文本而言,通常会给每个特征项赋予一定的权重表示其重要程度,即 D=D(T1,W1;T2,W2;…,Tn,Wn) 简记为 D=D(W1,W2,…,Wn) 我们把它叫做文本D的权值向量表示,其中Wk是Tk的权重,

地址相似度算法

一、计算过程: 1、根据输入一个地址,生成一个地址每个字的数组: T1={w1,w2,w3..wn}; 比如:有两个地址广东省梅州市江南彬芳大道金利来步街xx号和广东省梅州市梅江区彬芳大道金利来步行街xx号,会生成 T1={广,东,省,梅,州,市,江,南,彬,芳,大,道,金,利,来,步,街,xx,号}; T2={广,东,省,梅,州,市,梅,江,区,彬,芳,大,道,金,利,来,步,行,街,xx,号}; 2、这两个地址的并集,对出现多次的字只保留一次 比如:T={广,东,省,州,市,梅,江,南,区,彬,芳,大,道,金,利,来,步,行,街,xx,号}; 3、求出每个t中每个词在t1和t2中出现的次数得到m和n m={m1,m2,m3..mn}; n={n1,n2,n3.nn}; 比如:t1和t2可以得到两个出现次数的数组 m={1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1}; n={1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; 4、计算相似度 Sim=m1*n1+m2*n2+..mn*nn/sqrt(m1*m1+m2*m2+..mn*mn)* sqrt(n1*n1+n2*n2+..nn*nn) 二、计算原理: 假如这两个数组是只有{x1,y1}和{x2,y2}的数组,这两个数组可以在平面直角坐标系中用两个由原点出发的向量来表示,我们可以通过向量的夹角的大小来判断向量的相似度,夹角越小,相似度越高。计算向量的夹角,我们可以使用余弦定理,余弦定理用坐标表示的公式: 余弦的这种计算方法不止对于2维向量成立,对n维向量也成立,n维向量表示为: 所以我们可以使用这个公式得出余弦的值,值越接近1,夹角越小,两个向量越相似,这种计算方式叫做余弦相似性。

计算文本相似度几种最常用的方法,并比较它们之间的性能

计算文本相似度几种最常用的方法,并比较它们之间的性能 编者按:本文作者为Yves Peirsman,是NLP领域的专家。在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的。词嵌入(word embeddings)已经在自然语言处理领域广泛使用,它可以让我们轻易地计算两个词语之间的语义相似性,或者找出与目标词语最相似的词语。然而,人们关注更多的是两个句子或者短文之间的相似度。如果你对代码感兴趣,文中附有讲解细节的Jupyter Notebook地址。以下是论智的编译。 许多NLP应用需要计算两段短文之间的相似性。例如,搜索引擎需要建模,估计一份文本与提问问题之间的关联度,其中涉及到的并不只是看文字是否有重叠。与之相似的,类似Quora之类的问答网站也有这项需求,他们需要判断某一问题是否之前已出现过。要判断这类的文本相似性,首先要对两个短文本进行embedding,然后计算二者之间的余弦相似度(cosine similarity)。尽管word2vec和GloVe等词嵌入已经成为寻找单词间语义相似度的标准方法,但是对于句子嵌入应如何被计算仍存在不同的声音。接下来,我们将回顾一下几种最常用的方法,并比较它们之间的性能。 数据 我们将在两个被广泛使用的数据集上测试所有相似度计算方法,同时还与人类的判断作对比。两个数据集分别是: STS基准收集了2012年至2017年国际语义评测SemEval中所有的英语数据 SICK数据库包含了10000对英语句子,其中的标签说明了它们之间的语义关联和逻辑关系 下面的表格是STS数据集中的几个例子。可以看到,两句话之间的语义关系通常非常微小。例如第四个例子: A man is playing a harp. A man is playing a keyboard.

相似度算法比较

图像相似度计算主要用于对于两幅图像之间内容的相似程度进行打分,根据分数的高低来判断图像内容的相近程度。 可以用于计算机视觉中的检测跟踪中目标位置的获取,根据已有模板在图像中找到一个与之最接近的区域。然后一直跟着。已有的一些算法比如BlobTracking,Meanshift,Camshift,粒子滤波等等也都是需要这方面的理论去支撑。 还有一方面就是基于图像内容的图像检索,也就是通常说的以图检图。比如给你某一个人在海量的图像数据库中罗列出与之最匹配的一些图像,当然这项技术可能也会这样做,将图像抽象为几个特征值,比如Trace变换,图像哈希或者Sift特征向量等等,来根据数据库中存得这些特征匹配再返回相应的图像来提高效率。 下面就一些自己看到过的算法进行一些算法原理和效果上的介绍。 (1)直方图匹配。 比如有图像A和图像B,分别计算两幅图像的直方图,HistA,HistB,然后计算两个直方图的归一化相关系数(巴氏距离,直方图相交距离)等等。 这种思想是基于简单的数学上的向量之间的差异来进行图像相似程度的度量,这种方法是目前用的比较多的一种方法,第一,直方图能够很好的归一化,比如通常的256个bin条的。那么两幅分辨率不同的图像可以直接通过计算直方图来计算相似度很方便。而且计算量比较小。 这种方法的缺点: 1、直方图反映的是图像像素灰度值的概率分布,比如灰度值为200的像素有多少个,但是对于这些像素原来的位置在直方图中并没有体现,所以图像的骨架,也就是图像内部到底存在什么样的物体,形状是什么,每一块的灰度分布式什么样的这些在直方图信息中是被省略掉得。那么造成的一个问题就是,比如一个上黑下白的图像和上白下黑的图像其直方图分布是一模一样的,其相似度为100%。 2、两幅图像之间的距离度量,采用的是巴氏距离或者归一化相关系数,这种用分析数学向量的方法去分析图像本身就是一个很不好的办法。 3、就信息量的道理来说,采用一个数值来判断两幅图像的相似程度本身就是一个信息压缩的过程,那么两个256个元素的向量(假定直方图有256个bin条)的距离用一个数值表示那么肯定就会存在不准确性。 下面是一个基于直方图距离的图像相似度计算的Matlab Demo和实验结果. %计算图像直方图距离 %巴氏系数计算法 M=imread('1.jpg'); N=imread('2.jpg'); I=rgb2gray(M); J=rgb2gray(N); [Count1,x]=imhist(I); [Count2,x]=imhist(J); Sum1=sum(Count1);Sum2=sum(Count2); Sumup = sqrt(Count1.*Count2); SumDown = sqrt(Sum1*Sum2); Sumup = sum(Sumup); figure(1); subplot(2,2,1);imshow(I); subplot(2,2,2);imshow(J);

浅议语义相似度计算

浅议语义相似度计算 摘要语义相似度研究的是两个词语的相似性,被广 泛应用于信息检索、信息提取、文本词义消歧、机器翻译等领域中。本文介绍几种主要的语义相似度计算方法,以供大 一^, 家参考。 关键词语义相似度词义相似度语义距离 、引言 自然语言的词语之间关系比较复杂,我们又时常要把这 种复杂关系进行比较,所以要将其转化为简单的数量关系,再进行比较。语音相似度计算正是这样的方法。 词语的语义相似度计算有3 种方法:基于知识体系的方 法、基于语料库的方法、基于网络的方法。基于知识体系的方法,大多以WordNet 作为基础。WordNet 是语义字典,它根据词条的意义将词语分组,每一个具有相同意义的字条组称为一个synset (同义词集合)。WordNet为每一个synset提 供了简短,概要的定义,并记录不同synset之间的语义关系。 它用概念之间的语义关系形成符合常识和语法的语义关系图。基于信息量的方法主要是通过词语上下文的信息,用统计的方法求解。基于网络的方法,主要是利用搜索引擎的搜索结果进行计算。 二、语义相似度概念

信息论中任何两个词语的相似度取决于它们的共性 Commonality )和个性( Differences )。公式如下: 其中,分子表示描述A,B 共性所需要的信息量;分母表 示完整地描述A,B 所需要的信息量。 刘群、李素建认为语义相似度就是两个词语在不同的上 文中可以互相替换使用而不改变文本的句法语义结构的程度。两个词语,如果在不同的上下文中可以互相替换且不改变文本的句法语义结构的可能性越大,二者的相似度就越高,否则相似度就越低。对于两个词语 W1,W2 如果记其相似度为Sim (W1 , W2),其词语距离为Dis (W1 , Wz),根 据刘群、李素建的公式: 其中a 是一个可变参数,含义是当相似度为0.5 时的词 语距离值。 相似度被定义为一个0到1 之间的实数,当两个词语完 全一样时,相似度为1 ;是完全不同的概念时,它们的相似度 接近于0。 三、语义相似度的计算方法常用计算方法有基于知识体系的计算,基 于大规模语料 库的计算,基于网络的计算。 一)根据分类体系计算词语语义距离的方法 这种方法也称为基于树的语义相似度计算方法,大体分 为两种:一是基于距离的语义相似性测度是基于信息内容

基于知网的语义相似度计算

基于《知网》的语义相似度计算 软件使用手册 1 功能简介 本软件是根据[刘群2002]一文中的原理编写的词汇语义相似度计算程序。 主要实现了以下功能: 1.1基于交互输入的义原查询、义原距离计算、义原相似度计算 1.2基于交互输入的词语义项查询、义项相似度计算、词语相似度计算; 1.3基于文件输入的词语义项查询、词语相似度计算; 1.4相似度计算中的参数调整。 2 安装说明 本软件包一共有四个文件: 《基于<知网>的词汇语义相似度计算》软件使用手册.doc:本使用手册 《基于<知网>的词汇语义相似度计算》论文.pdf:本软件所依据的论文,采用pdf 格式,用Acrobat Reader阅读时需要安装简体中文支持包。 自然语言处理开放资源许可证.doc:本软件包的授权许可证 WordSimilarity.zip:程序文件 软件安装时,将文件WordSimilarity.zip文件解压缩一个目录下即可,解压缩后有以下几个文件: WordSimilarity.exe:可执行程序; Glossary.dat:《知网》数据文件 Semdict.dat:《知网》数据文件 Whole.dat:《知网》数据文件 必须确保《知网》数据文件在程序执行时的当前目录下。 3 界面说明 软件使用简单的对话框界面,如下所示:

4 功能说明 4.1义原操作 4.1.1 义原查询 1.首先在“输入1”框中输入义原名称; 2.点击“察看义原1”按钮; 3.在“义项1”框中将依次显示出该义原及其所有上位义原的编号、中文、英文;类似的方法可以查询“输入2”框中的义原; 4.1.2 义原距离计算 1.首先在“输入1”和“输入2”框中输入两个义原; 2.点击“计算义原距离”按钮; 3.在“输出”框中显示两个义原的距离;

基于《知网》的词语相似度计算

基于《知网》的词语相似度计算 [摘要]词语相似度计算是计算机中文处理中的基础和重要环节,目前基于《知网》的词语相似度计算是一种常见的方法,本文将对该方法做系统介绍。 [关键词]《知网》词语相似度计算 一、《知网》的结构 《知网》(HowNet)是我国著名机器翻译专家董振东先生和董强先生创建的,是一个常识知识库,它含有丰富的词汇语义知识以及世界知识,内部结构复杂。 《知网》中两个最基础的概念是“概念”和“义原”。“概念”是用来描述词语语义。因为一个词可以含有多个语义,所以一个词需要多个概念来描述。使用“知识表示语言”对概念进行描述,“知识表示语言”使用的“词汇”便是义原。《知网》中的不可再分的、最小的意义单位是“义原”,义原用来描述“概念”。 《知网》采用的义原有1500个,它们一共可以分为十类,具体见图1。 知网反映了概念之间、概念属性之间各种各样的关系,总体来说知网描述了16种关系: 上下位关系;同义关系、反义关系、对义关系;部件-整体关系;属性-宿主关系;材料-成品关系;施事/经验者/关系;主体-事件关系;受事/内容/领属物等事件关系;工具-事件关系;场所-事件关系;时间-事件关系;值-属性关系;实体-值关系;事件-角色关系;相关关系。 由《知网》的结构得知义原之间组成的不是一个树状结构,而是一个复杂的网状结构。然而义原关系中最重要的是上下位关系。所有的“基本义原”以这种上下位关系为基础构成了义原层次体系,叫做义原分类树。在义原分类树中,父节点义原和子节点义原之间具有上下位关系。可以通过义原分类树来计算词语和词语之间的语义距离。 二、知网的知识词典 知识词典是知网中最基本的数据库。在知识词典中,每一个概念(概念又称为义项)可以用一条记录来描述。一条记录含有八项信息,每一项由用“=”连接的两个部分组成,等号左边表示数据的域名,右边是数据的值。比如下面就是一条描述概念的记录: NO=017114

图像相似度计算

图像相似度计算 图像相似度计算主要用于对于两幅图像之间内容的相似程度进行打分,根据分数的高低来判断图像内容的相近程度。 可以用于计算机视觉中的检测跟踪中目标位置的获取,根据已有模板在图像中找到一个与之最接近的区域。然后一直跟着。已有的一些算法比如BlobTracking,Meanshift,Camshift,粒子滤波等等也都是需要这方面的理论去支撑。 还有一方面就是基于图像内容的图像检索,也就是通常说的以图检图。比如给你某一个人在海量的图像数据库中罗列出与之最匹配的一些图像,当然这项技术可能也会这样做,将图像抽象为几个特征值,比如Trace变换,图像哈希或者Sift特征向量等等,来根据数据库中存得这些特征匹配再返回相应的图像来提高效率。 下面就一些自己看到过的算法进行一些算法原理和效果上的介绍。 (1)直方图匹配。 比如有图像A和图像B,分别计算两幅图像的直方图,HistA,HistB,然后计算两个直方图的归一化相关系数(巴氏距离,直方图相交距离)等等。 这种思想是基于简单的数学上的向量之间的差异来进行图像相似程度的度量,这种方法是目前用的比较多的一种方法,第一,直方图能够很好的归一化,比如通常的256个bin条的。那么两幅分辨率不同的图像可以直接通过计算直方图来计算相似度很方便。而且计算量比较小。 这种方法的缺点: 1、直方图反映的是图像像素灰度值的概率分布,比如灰度值为200的像素有多少个,但是对于这些像素原来的位置在直方图中并没有体现,所以图像的骨架,也就是图像内部到底存在什么样的物体,形状是什么,每一块的灰度分布式什么样的这些在直方图信息中是被省略掉得。那么造成的一个问题就是,比如一个上黑下白的图像和上白下黑的图像其直方图分布是一模一样的,其相似度为100%。 2、两幅图像之间的距离度量,采用的是巴氏距离或者归一化相关系数,这种用分析数学向量的方法去分析图像本身就是一个很不好的办法。 3、就信息量的道理来说,采用一个数值来判断两幅图像的相似程度本身就是一个信息压缩的过程,那么两个256个元素的向量(假定直方图有256个bin条)的距离用一个数值表示那么肯定就会存在不准确性。 下面是一个基于直方图距离的图像相似度计算的Matlab Demo和实验结果.

词语相似度计算方法

词语相似度计算方法分析 崔韬世麦范金 桂林理工大学广西 541004 摘要:词语相似度计算是自然语言处理、智能检索、文档聚类、文档分类、自动应答、词义排歧和机器翻译等很多领域的基础研究课题。词语相似度计算在理论研究和实际应用中具有重要意义。本文对词语相似度进行总结,分别阐述了基于大规模语料库的词语相似度计算方法和基于本体的词语相似度计算方法,重点对后者进行详细分析。最后对两类方法进行简单对比,指出各自优缺点。 关键词:词语相似度;语料库;本体 0 引言 词语相似度计算研究的是用什么样的方法来计算或比较两个词语的相似性。词语相似度计算在自然语言处理、智能检索、文本聚类、文本分类、自动应答、词义排歧和机器翻译等领域都有广泛的应用,它是一个基础研究课题,正在为越来越多的研究人员所关注。笔者对词语相似度计算的应用背景、研究成果进行了归纳和总结,包括每种策略的基本思想、依赖的工具和主要的方法等,以供自然语言处理、智能检索、文本聚类、文本分类、数据挖掘、信息提取、自动应答、词义排歧和机器翻译等领域的研究人员参考和应用。词语相似度计算的应用主要有以下几点: (1) 在基于实例的机器翻译中,词语相似度主要用于衡量文本中词语的可替换程度。 (2) 在信息检索中,相似度更多的是反映文本与用户查询在意义上的符合程度。 (3) 在多文档文摘系统中,相似度可以反映出局部主题信息的拟合程度。 (4) 在自动应答系统领域,相似度的计算主要体现在计算用户问句和领域文本内容的相似度上。 (5) 在文本分类研究中,相似度可以反映文本与给定的分类体系中某类别的相关程度。 (6) 相似度计算是文本聚类的基础,通过相似度计算,把文档集合按照文档间的相似度大小分成更小的文本簇。1 基于语料库的词语相似度计算方法 基于统计方法计算词语相似度通常是利用词语的相关性来计算词语的相似度。其理论假设凡是语义相近的词,它们的上下文也应该相似。因此统计的方法对于两个词的相似度算建立在计算它们的相关词向量相似度基础上。首先要选择一组特征词,然后计算这一组特征词与每一个词的相关性(一般用这组词在实际的大规模语料中在该词的上下文中出现的频率来度量),于是,对于每一个词都可以得到一个相关性的特征词向量,然后计算这些向量之间的相似度,一般用向量夹角余弦的计算结果作为这两个词的相似度。 Lee利用相关熵,Brown采用平均互信息来计算词语之间的相似度。李涓子(1999)利用这种思想来实现语义的自动排歧;鲁松(2001)研究了如何利用词语的相关性来计算词语的相似度。PBrownetc采用平均互信息来计算词语之间的相似度。基于统计的定量分析方法能够对词汇间的语义相似性进行比较精确和有效的度量。基于大规模语料库进行的获取受制于所采用的语料库,难以避免数据稀疏问题,由于汉语的一词多义现象,统计的方法得到的结果中含有的噪声是相当大的,常常会出现明显的错误。 2 基于本体库的词语相似度计算方法 2.1 常用本体库 关于Ontology的定义有许多,目前获得较多认同的是R.Studer的解释:“Ontology是对概念体系的明确的、形式

相似度计算方法

基于距离的计算方法 1. 欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。 (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离: (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离: (3)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的欧氏距离: 也可以用表示成向量运算的形式: (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离 X = [0 0 ; 1 0 ; 0 2] D = pdist(X,'euclidean') 结果: D = 1.0000 2.0000 2.2361 2. 曼哈顿距离(Manhattan Distance) 从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除

非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)。 (1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离 (2)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的曼哈顿距离 (3) Matlab计算曼哈顿距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的曼哈顿距离 X = [0 0 ; 1 0 ; 0 2] D = pdist(X, 'cityblock') 结果: D = 1 2 3 5. 标准化欧氏距离 (Standardized Euclidean distance ) (1)标准欧氏距离的定义 标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准化”到均值、方差相等吧。均值和方差标准化到多少呢?这里先复习点统计学知识吧,假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为: 而且标准化变量的数学期望为0,方差为1。因此样本集的标准化过程(standardization)用公式描述就是: 标准化后的值= ( 标准化前的值-分量的均值) /分量的标准差 经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式: 如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。

基于《知网》的词汇语义相似度计算

基于《知网》的词汇语义相似度计算1 刘群??李素建? {liuqun,lisujian}@https://www.sodocs.net/doc/b92516806.html, ?中国科学院计算技术研究所 ?北京大学计算语言学研究所 摘要: 《知网》是一部比较详尽的语义知识词典。在基于实例的机器翻译中,词语相似度计算是一个重要的环节。不过,由于《知网》中对于一个词的语义采用的是一种多维的知识表示形式,这给词语相似度的计算带来了麻烦。这一点与WordNet和《同义词词林》不同。在WordNet和《同义词词林》中,所有同类的语义项(WordNet的synset或《同义词词林》的词群)构成一个树状结构,要计算语义项之间的距离,只要计算树状结构中相应结点的距离即可。而在《知网》中词语相似度的计算存在以下问题: 1.每一个词的语义描述由多个义原组成,例如“暗箱”一词的语义描述为:part|部件,%tool|用具,body|身,“写信”一词的语义描述为: #TakePicture|拍摄write|写,ContentProduct=letter|信件; 2.词语的语义描述中各个义原并不是平等的,它们之间有着复杂的关系,通过一种专门的知识描述语言来表示。 我们的工作主要包括: 1.研究《知网》中知识描述语言的语法,了解其描述一个词义所用的多个义原之间的关系,区分其在词语相似度计算中所起的作用; 2.提出利用《知网》进行词语相似度计算的算法; 3.通过实验验证该算法的有效性,并与其他算法进行比较。 关键词:《知网》词汇语义相似度计算自然语言处理 1 引言 在基于实例的机器翻译中,词语相似度的计算有着重要的作用。例如要翻译“张三写的小说”这个短语,通过语料库检索得到译例: 1)李四写的小说/the novel written by Li Si 2)去年写的小说/the novel written last year 通过相似度计算我们发现,“张三”和“李四”都是具体的人,语义上非常相似,而“去年”的语义是时间,和“张三”相似度较低,因此我们选用“李四写的小说”这个实例进行类比翻译,就可以得到正确的译文: the novel written by Zhang San 1本项研究受国家重点基础研究计划(973)支持,项目编号是G1998030507-4和G1998030510。

信息检索几种相似度计算方法作对比

句子相似度地计算在自然语言处理具有很重要地地位,如基于实例地机器翻译( )、自 动问答技术、句子模糊匹配等.通过对术语之间地语义相似度计算,能够为术语语义识别[]、术语聚类[]、文本聚类[]、本体自动匹配[]等多项任务地开展提供重要支持.在已有地术语相似度计算方法中,基于搜索引擎地术语相似度算法以其计算简便、计算性能较高、不受特定领域语料库规模和质量制约等优点而越来越受到重视[]. 相似度计算方法总述: 《向量空间模型信息检索技术讨论》,刘斌,陈桦发表于计算机学报, 相似度():指两个文档内容相关程度地大小,当文档以向量来表示时,可以使用向量文 档向量间地距离来衡量,一般使用内积或夹角地余弦来计算,两者夹角越小说明似度 越高.由于查询也可以在同一空间里表示为一个查询向量(见图),可以通过相似度计算 公式计算出每个档向量与查询向量地相似度,排序这个结果后与设立地阈值进行比较. 如果大于阈值则页面与查询相关,保留该页面查询结果;如果小于则不相关,过滤此页.这样就可以控制查询结果地数量,加快查询速度.资料个人收集整理,勿做商业用途 《相似度计算方法综述》 相似度计算用于衡量对象之间地相似程度,在数据挖掘、自然语言处理中是一个基础 性计算.其中地关键技术主要是两个部分,对象地特征表示,特征集合之间地相似关系. 在信息检索、网页判重、推荐系统等,都涉及到对象之间或者对象和对象集合地相似 性地计算.而针对不同地应用场景,受限于数据规模、时空开销等地限制,相似度计算 方法地选择又会有所区别和不同.下面章节会针对不同特点地应用,进行一些常用地相 似度计算方法进行介绍.资料个人收集整理,勿做商业用途 内积表示法: 《基于语义理解地文本相似度算法》,金博,史彦君发表于大连理工大学学报, 在中文信息处理中,文本相似度地计算广泛应用于信息检索、机器翻译、自动问答系统、文本挖掘等领域,是一个非常基础而关键地问题,长期以来一直是人们研究地热点和难点.计算机对于中文地处理相对于对于西文地处理存在更大地难度,集中体现在对文本分词 地处理上.分词是中文文本相似度计算地基础和前提,采用高效地分词算法能够极大地提 高文本相似度计算结果地准确性.本文在对常用地中文分词算法分析比较地基础上,提出 了一种改进地正向最大匹配切分()算法及歧义消除策略,对分词词典地建立方式、分词 步骤及歧义字段地处理提出了新地改进方法,提高了分词地完整性和准确性.随后分析比 较了现有地文本相似度计算方法,利用基于向量空间模型地方法结合前面提出地分词算法,给出了中文文本分词及相似度计算地计算机系统实现过程,并以科技文本为例进行了 测试,对所用方法进行了验证.这一课题地研究及其成果对于中文信息处理中地多种领域 尤其是科技类文本相似度地计算比较,都将具有一定地参考价值和良好地应用前景.资料 个人收集整理,勿做商业用途

深度学习解决 NLP 问题:语义相似度计算

导语 在NLP领域,语义相似度的计算一直是个难题:搜索场景下query和Doc的语义相似度、feeds场景下Doc和Doc的语义相似度、机器翻译场景下A句子和B句子的语义相似度等等。本文通过介绍DSSM、CNN-DSSM、LSTM-DSSM 等深度学习模型在计算语义相似度上的应用,希望给读者带来帮助。 0. 提纲 1. 背景 2. DSSM 3. CNN-DSSM 4. LSTM-DSSM 5. 后记 6. 引用 1. 背景 以搜索引擎和搜索广告为例,最重要的也最难解决的问题是语义相似度,这里主要体现在两个方面:召回和排序。

在召回时,传统的文本相似性如BM25,无法有效发现语义类query-Doc 结果对,如"从北京到上海的机票"与"携程网"的相似性、"快递软件"与"菜鸟裹裹"的相似性。 在排序时,一些细微的语言变化往往带来巨大的语义变化,如"小宝宝生病怎么办"和"狗宝宝生病怎么办"、"深度学习"和"学习深度"。 DSSM(Deep Structured Semantic Models)为计算语义相似度提供了一种思路。 本文的最后,笔者结合自身业务,对DSSM 的使用场景做了一些总结,不是所有的业务都适合用DSSM。 2. DSSM DSSM [1](Deep Structured Semantic Models)的原理很简单,通过搜索引擎里Query 和Title 的海量的点击曝光日志,用DNN 把Query 和Title 表达为低纬语义向量,并通过cosine 距离来计算两个语义向量的距离,最终训练出语义相似度模型。该模型既可以用来预测两个句子的语义相似度,又可以获得某句子的低纬语义向量表达。 DSSM 从下往上可以分为三层结构:输入层、表示层、匹配层

向量的相似度计算常用方法个

向量的相似度计算常用方法 相似度的计算简介 关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。下面我们详细介绍几种常用的相似度计算方法。 共8种。每人选择一个。第9题为选做。 编写程序实现(这是第一个小练习,希望大家自己动手,java实现)。计算两个向量的相似性: 向量1(0.15, 0.45, 0.l68, 0.563, 0.2543, 0.3465, 0.6598, 0.5402, 0.002) 向量2(0.81, 0.34, 0.l66, 0.356, 0.283, 0.655, 0.4398, 0.4302, 0.05402) 1、皮尔逊相关系数(Pearson Correlation Coefficient) 皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在[-1,+1] 之间。 s x , s y 是 x 和 y 的样品标准偏差。 类名:PearsonCorrelationSimilarity 原理:用来反映两个变量线性相关程度的统计量 范围:[-1,1],绝对值越大,说明相关性越强,负相关对于推荐的意义小。 说明:1、不考虑重叠的数量;2、如果只有一项重叠,无法计算相似性(计算过程被除数有n-1);3、如果重叠的值都相等,也无法计算相似性(标准差为0,做除数)。

该相似度并不是最好的选择,也不是最坏的选择,只是因为其容易理解,在早期研究中经常被提起。使用Pearson线性相关系数必须假设数据是成对地从正态分布中取得的,并且数据至少在逻辑范畴内必须是等间距的数据。Mahout中,为皮尔森相关计算提供了一个扩展,通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。 2、欧几里德距离(Euclid ean Distance) 最初用于计算欧几里德空间中两个点的距离,假设 x,y 是 n 维空间的两个点,它们之间的欧几里德距离是: 可以看出,当 n=2 时,欧几里德距离就是平面上两个点的距离。当用欧几里德距离表示相似度,一般采用以下公式进行转换:距离越小,相似度越大。 类名:EuclideanDistanceSimilarity 原理:利用欧式距离d定义的相似度s,s=1 / (1+d)。 范围:[0,1],值越大,说明d越小,也就是距离越近,则相似度越大。 说明:同皮尔森相似度一样,该相似度也没有考虑重叠数对结果的影响,同样地,Mahout通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。 3、Cosine 相似度(Cosine Similarity) Cosine 相似度被广泛应用于计算文档数据的相似度: 类名: UncenteredCosineSimilarity 原理:多维空间两点与所设定的点形成夹角的余弦值。 范围:[-1,1],值越大,说明夹角越大,两点相距就越远,相似度就越小。 说明:在数学表达中,如果对两个项的属性进行了数据中心化,计算出来的余弦相似度和皮尔森相似度是一样的,在mahout中,实现了数据中心化的过程,所以皮尔森相似度值也是数据中心化后的余弦相似度。另外在新版本

语义相似度的计算方法研究

语义相似度的计算方法研究 信息与计算科学余牛指导教师:冉延平 摘要语义相似度计算在信息检索、信息抽取、文本分类、词义排歧、基于实例的机器翻译等很多领域中都有广泛的应用.特别是近几十年来随着Internet技术的高速发展,语义相似度计算成为自然语言处理和信息检索研究的重要组成部分.本文介绍了几种典型的语义相似度的计算方法,总结了语义相似度计算的两类策略,其中重点介绍了一种基于树状结构中语义词典Hownet的语义相似度计算方法,最后对两类主要策略进行了简单的比较.关键词语义相似度;语义距离;知网;语料库 The Reseach of Computing Methods about Semantic Similarity YU Niu (Department of Mathematics and Statistics,Tianshui Normal University , 741000) Abstract Semantic similarity is broadly used in many applications such as information retrieval, information extraction, text classification, word sense disambiguation, example-based machine translation and so on.Especially with the rapid development of Internet technology in recent decades, Calculation of semantic similarity has always been an important part of natural language processing and information retrieval research .This paper introduces several main methods of calculating semantic similarity , then two strategies of semantic similarity measurement are summarized, and we focuse on the Hownet based on the stucture of tree and use them to calculate the semantic similarity ,and finally the two strategies are easily compared . Key words Semantic similarity, Semantic distance,Hownet, Corpus

相似度计算公式资料

相似度计算 在数据挖掘中经常需要用到比较两个东西的相似度。比如搜索引擎要避免非常相似的文档出现在结果的前几页,再比如很多网站上都有的“查找与你口味相似的用户”、“你可能喜欢什么什么”之类的功能。后者其实是很大的一块叫做“协同过滤”的研究领域,留待以后详谈。 首先我们定义两个集合S,T的Jaccard相似度: Sim(S,T) = |S,T的交集| / |S,T的并集|。直观上就容易感觉出这是一个很简单而且比较合理的度量,我不清楚有没有什么理论上的分析,在此省略。下面先主要说一下文档的相似度。 如果是判断两个文档是否完全相同,问题就变得很简单,只要简单地逐字符比较即可。但是在很多情况下并不是这样,比如网站文章的转载,主体内容部分是相同的,但是不同网页本身有自己的Logo、导航栏、版权声明等等,不能简单地直接逐字符比较。这里有一个叫做Shingling的方法,其实说起来很圡,就是把每相邻的k个字符作为一个元素,这样整篇文档就变成了一个集合。比如文档是"banana",若k=2,转化以后得到集合为{"ba","an","na"},于是又变成了前述集合相似度的问题。关于k值的设置,显然过小或过大都不合适,据说比较短的比如email之类可以设k=5,比如长的文章如论文之类可以设k=9。 当然,这是一个看上去就很粗糙的算法,这里的相似度比较只是字符意义上的,如果想进行语义上的比较就不能这么简单了(我觉得肯定有一摞摞的paper在研究这个)。不过同样可以想见的是,在实际中这个粗糙算法肯定表现得不坏,速度上更是远优于复杂的NLP方法。在实际工程中,必然糙快猛才是王道。 有一点值得注意的是,Shingling方法里的k值比较大时,可以对每个片段进行一次hash。比如k=9,我们可以把每个9字节的片段hash成一个32bit的整数。这样既节省了空间又简化了相等的判断。这样两步的方法和4-shingling占用空间相同,但是会有更好的效果。因为字符的分布不是均匀的,在4-shingling中实际上大量的4字母组合没有出现过,而如果是9-shingling再hash成4个字节就会均匀得多。 在有些情况下我们需要用压缩的方式表示集合,但是仍然希望能够(近似)计算出集合之间的相似度,此时可用下面的Minhashing方法。 首先把问题抽象一下,用矩阵的每一列表示一个集合,矩阵的行表示集合中所有可能的元素。若集合c包含元素r,则矩阵中c列r行的元素为1,否则为0。这个矩阵叫做特征矩阵,往往是很稀疏的。以下设此矩阵有R行C列。 所谓minhash是指把一个集合(即特征矩阵的一列)映射为一个0..R-1之间的值。具体方法是,以等概率随机抽取一个0..R-1的排列,依此排列查找第一次出现1的行。例如有集合S1={a,d}, S2={c}, S3 = {b,d,e}, S4 = {a,c,d},特征矩阵即如下S1 S2 S3 S4 0a 1 0 0 1 1b 0 0 1 0 2c 0 1 0 1

我的读书笔记(二):数据分析中相似度计算在算法中的体现

我的读书笔记(二):数据分析中相似度计算在算法中的体现 如果有N个集合,求它们之间两两的相似度就需要N*(N-1)/2次计算,当N很大时这个代价仍然承受不起。于是我们需要一种方法能够不遍历所有可能的元素对就找出相似度较大的那些(大于某个给定的阈值t),这就是所谓Locality-Sensitive Hashing。第三章的后半部分基本全是围绕这一话题展开的。 这里又要出现一个比较神奇的方法了:由上篇文章所述,对每一列c(即每个集合)我们都计算出了n行minhash值,我们把这n个值均分成b组,每组包含相邻的r=n/b行。对于每一列,把其每组的r个数都算一个hash 值出来,把此列的编号记录到hash值对应的bucket里。如果两列被放到了同一个bucket里,说明它们至少有一组(r个)数的hash值相同,此时可认为它们有较大可能相似度较高(称为一对candidate)。最后在比较时只对落在同一个bucket里的集合两两计算,而不是全部的两两比较。 下面进行一点理论上的分析。如果两个集合被放到一个桶里,说明它们至少有一组minhash值是相同的。设两个元素的一次minhash值相同的概率是s(就是那个Jaccard相似度),那么一组全相同的概率是s^r,则b组中至少有一组相同的概率为1-(1-s^r)^b。如果b和r固定,那么此概率与s 值形成的曲线是一个S型。S型斜率最高的点大约在(1/b)^(1/r)处。

可以发现这个算法只能得到近似的结果,有可能两个相似度大于阈值t的集合没有被放到一个桶里,于是就漏掉了;另外也可能相似度小于t的集合被放到了一个桶里,造成了无效的计算。我们希望这两种错误都尽可能地小。形式化一点就是,我们定义一种函数(Locality-Sensitive Function, LSF),它把一个集合映射为一个值,如果两个集合映射到的值相同,就认为他们有可能相似度较高。这个函数的好坏可以用一个四元组(d1,d2,p1,p2)表示,意思是说,如果两集合的距离(此处我们把距离定义为1减去Jaccard相似度)小于d1,则它们至少有p1的概率映射为同一个值;如果两集合的距离大于d2,则它们至多有p2的概率映射为同一个值。可以发现对于同样的一对(d1,d2),p1越大p2越小,那么这个函数的效果就越好。 对于上述minhash的例子,如果只用一次minhash值作为LSF,那么它是(d1,d2,1-d1,1-d2)-sensitive,此时其实那个S-曲线是一条直线。比如令d1=0.2, d2=0.6,它就是(0.2, 0.6, 0.8, 0.4)。而如果我们用4组每组4个minhash值按上述方法计算,那么它是(0.2, 0.6, 0.8785, 0.0985),可以发现p1变大而p2变小了。在极端情况下,如果b和r都很大,那个S

相关主题