快捷搜索:  汽车  科技

中文语句相似度模型(如何计算词语的相似性)

中文语句相似度模型(如何计算词语的相似性)知网第二类方法需要大规模的语料,我们认为凡是语义相近的词,它们的上下文也应该相似,通过一定的概率模型可计算出词语的相关性,进而可计算相似性。两类方法词语相似度一般可分为两类方法,一种是基于 Ontology 或 Taxonomy 来计算,另外一种是基于大规模语料进行统计。第一类方法一般是基于同义词词典,所有词组织在一棵或几棵树结构中,两个节点的路径长度即可作为语义距离。比如前面说到过的基于词林的相似度计算。

前言

文本的相似性计算方法有很多,前面也讲了很多方式,下面继续讨论一种词语相似度的计算方法——基于知网的词语相似性计算。

词语语义

词语相似度也是没有一种明确的客观标准可用来衡量,相似度涉及到词语的词法、句法、语义、语用等,很难有一个统一的定义。

两类方法

词语相似度一般可分为两类方法,一种是基于 Ontology 或 Taxonomy 来计算,另外一种是基于大规模语料进行统计。

第一类方法一般是基于同义词词典,所有词组织在一棵或几棵树结构中,两个节点的路径长度即可作为语义距离。比如前面说到过的基于词林的相似度计算。

第二类方法需要大规模的语料,我们认为凡是语义相近的词,它们的上下文也应该相似,通过一定的概率模型可计算出词语的相关性,进而可计算相似性。

知网

《知网》由董振东先生研究十多载的成果,用于揭示概念与概念之间以及概念所具有的属性之间的关系为基本内容的常识知识库。知网含有丰富的词汇语义知识和世界知识,为自然语言处理提供了宝贵的资源。

义原划分

我们可以把知网的义原分为三组。

中文语句相似度模型(如何计算词语的相似性)(1)

描述语言符号

中文语句相似度模型(如何计算词语的相似性)(2)

实词与虚词

知网的概念包含了实词和虚词,虚词的描述比较简单,用“{句法义原}”或“{关系义原}”进行描述。实词的描述比较复杂,由一系列用逗号隔开的“语义描述式”组成。

中文语句相似度模型(如何计算词语的相似性)(3)

image

实词可以包括如下描述:

  1. 基本义原描述式,用“基本义原”进行描述,第一个描述式总是一个基本义原描述式,这也是对该实词最重要的一个描述式,这个基本义原描述了该实词的最基本的语义特征;
  2. 关系义原描述式:用“关系义原=基本义原”或者“关系义原=(具体词)”或者“(关系义原=具体词)”来描述;
  3. 关系符号描述式:用“关系符号 基本义原”或者“关系符号(具体词)”加以描述,还可以由多个关系符号描述式采用同一个关系符号;

基本思想

知网中的每一个概念并非对应于一个树状概念层次体系中的一个结点,这点与同义词词林不一样,知网中是通过用一系列的义原并利用某种知识描述语言来描述一个概念。这些义原通过上下位关系组织成一个树状义原层次体系。现在要做的事就是找到一种方法来计算这种知识描述语言表示的两个语义表达式的相似度。

对于两个汉语词语 W1 和 W2,如果 W1 有 n 个概念:S11,S12,……,S1n,

W2 有 m 个概念:S21,S22,……,S2m,则规定 W1 和 W2 的相似度是各

个概念的相似度最大值。

中文语句相似度模型(如何计算词语的相似性)(4)

image

义原相似度

义原相似度计算时概念相似度的基础,义原由一个树状的义原层次体系构成,假设两个义原在这个层次体系中的路径距离为 d,可以得到这两个义原之间的语义距离为,

中文语句相似度模型(如何计算词语的相似性)(5)

image

其中 p1 和 p2 表示两个义原,d 是 p1 和 p2 在义原层次体系中的路径长度,是一个正整数。α是一个可调节的参数。

虚词相似度

由于虚词和实词总是不能替换,所以虚词和实词的相似度总是为零。

另外,虚词总是用“{句法义原}”或“{关系义原}”这两种方式进行描述,所以虚词的相似度只需要计算其对应的句法义原或关系义原之间的相似度。

实词的相似度

知网的知识由义原、集合和特征结构共同表达,实词的整体相似建立在部分相似的基础上,把一个复杂的整体分解成部分,通过计算部分之间的相似度得到整体的相似度。

一个实词的描述可以表示为一个特征结构,该特征结构含有以下四个特征:

  1. 第一基本义原描述:其值为一个基本义原,我们将两个概念的这一部分的相似度记为 Sim1(S1 S2);
  2. 其它基本义原描述:对应于语义表达式中除第一基本义原描述式以外的所有基本义原描述式,其值为一个基本义原的集合,我们将两个概念的这一部分的相似度记为Sim2(S1 S2);
  3. 关系义原描述:对应于语义表达式中所有的关系义原描述式,其值是一个特征结构,对于该特征结构的每一个特征,其属性是一个关系义原,其值是一个基本义原,或一个具体词。我们将两个概念的这一部分的相似度记为 Sim3(S1 S2);
  4. 关系符号描述:对应于语义表达式中所有的关系符号描述式,其值也是一个特征结构,对于该特征结构的每一个特征,其属性是一个关系义原,其值是一个集合,该集合的元素是一个基本义原,或一个具体词。我们将两个概念的这一部分的相似度记为Sim4(S1 S2)。

则两个概念语义表达式的整体相似度为,

中文语句相似度模型(如何计算词语的相似性)(6)

image

其中,

中文语句相似度模型(如何计算词语的相似性)(7)

image

反映了 Sim1 到 Sim4 对于总体相似度所起到的作用依次递减。由于第一基本义原描述式反映了一个概念最主要的特征,所以应该将其权值定义得比较大,一般应在0.5以上。

第一基本义原描述相似度:就是两个义原的相似度,按照义原相似度计算;

其它基本义原描述相似度:其值为一个集合,转换为两个基本义原集合的相似度计算问题;建立两个集合的元素之间一一对应关系,方法为:

  1. 首先计算两个集合的所有元素两两之间的相似度;
  2. 从所有的相似度值中选择最大的一个,将这个相似度值对应的两个元素对应起来;
  3. 从所有的相似度值中删去那些已经建立对应关系的元素的相似度值;
  4. 重复上述第 2 步和第 3 步,直到所有的相似度值都被删除;
  5. 没有建立起对应关系的元素与空元素对应。

建立起两个集合元素的一一对应关系后,就很容易计算两个集合的相似度了:集合的相似度等于其元素对的相似度的加权平均。

关系义原描述相似度:其值为一个特征结构,转换为两个特征结构的相似度计算问题。属性相同的特征之间一一对应,如果没有属性相同的特征,那么该特征的对应物为空。特征结构的相似度就转化为各个特征的相似度的加权平均。

关系符号描述相似度:其值为一个特征结构,转换为两个特征结构的相似度计算问题。

github

https://github.com/sea-boat/TextAnalyzer/blob/master/src/main/java/com/seaboat/text/analyzer/similarity/HownetSimilarity.java

猜您喜欢: