词语相似度计算

摘要:
本文中的单词相似度计算是基于同义词森林的。该程序的计算结果如下:论文“基于同义词词林的词相似度计算方法”的计算结果为:成年人和公民对这两个词的相似度之间的差异是由于所使用的词林版本中这两个单词在分支级别的分支数目的差异。

词语相似度计算

当事物可以计算的时候就产生了智能

----Alert

一、词语相似度

词义相似度计算在很多领域中都有广泛的应用,例如信息检索、信息抽取、文本分类、词义排歧、基于实例的机器翻译等等。国内很多论文主要是基于同义词林和知网来计算的。本文的词语相似度计算是基于《同义词词林》的。

二、同义词林介绍

《同义词词林》是梅家驹等人于1983年编纂而成,这本词典中不仅包括了一个词语的同义词, 也包含了一定数量的同类词, 即广义的相关。《同义词词林》的编写年代久远,之后没有更新。哈工大花费了大量的人力物力完成了一部具有汉语大词表的哈工大信息检索研究室《同义词词林扩展版》,《同义词词林扩展版》收录词语近7万条。原版的《同义词词林》目录如下:

词语相似度计算第1张

哈工大《同义词词林扩展版》保留《同义词词林》原有的三层分类体系,并在此基础上对词语继续细分类,增加两层,得到最终的五层分类体系,这样词典中的词语之间就体现了良好的层次关系,如下图表示的词语树形结构:

词语相似度计算第2张

例如:“东南西北”的编码为Cb02A01=

C是第1层、b是第二层、02是第三层、A是第四层、01是第五层,=号有特殊的意义。

词语的编码规则如下:

词语相似度计算第3张

表中的编码位是按照从左到右的顺序排列。第八位的标记有3种,分别是“=”、“#”、“@”, “=”代表“相等”、“同义”。末尾的“#”代表“不等”、“同类”,属于相关词语。末尾的“@”代表“自我封闭”、“独立”,它在词典中既没有同义词,也没有相关词。

三、词语相似度

定义1 语义相似度。给定两个词汇w1和w2,它们之间的相似度通过

Sim(w1,w2):S*S->[0,1],表示集合S中的两个词汇w1和w2的相似程度。

简单的说相似度函数是个值域在[0,1]间的函数。

本文的计算公式参考了《基于同义词词林的词语相似度计算方法》一文,相似度函数计算公式如下:

若两个义项的相似度用Sim表示,n表示所在分枝层分支数,k表示两个分支间的距离。

1.若两个义项不在同一查树上:

Sim(A,B) = f

如:人 Aa01A01=和 实物 Ba01A01=

2.若两个义项在同一查树上:

1) 若在第2层分支

Sim(A,B) = a*cos(n*pi/180)*[(n-k+1)/n]

如:人 Aa01A01= 和 少儿 Ab04B01=

由于A开头的编码个数为1309个,所以n=1309;在第2层,

人的编码是a,少儿的编码是b所以k=1

2) 若在第3层分支

Sim(A,B) = b*cos(n*pi/180)*[(n-k+1)/n]

如:人 Aa01A01= 和 老弟 Aa03A03=

Aa开头的编码个数为55个,所以n=55;第3层人的编码为01,老弟的编码为03,所以k=2

3) 若在第4层分支

Sim(A,B) = c*cos(n*pi/180)*[(n-k+1)/n]

4) 若在第5层分支

Sim(A,B) = d*cos(n*pi/180)*[(n-k+1)/n]

a、b、c、d、f参数由实验测得,程序里使用的参数如下:

a=0.65、b=0.8、c=0.9、d=0.96、f=0.1

一个词可能有多个编码,相似度的计算取最大值,如:

词语“骄傲”的编码有“Da13A01”,“Ee34D01”;“仔细”的编码有“Ee26A01”,“Ee28A01”。

分别计算相似度为:

Sim(Da13A01, Ee26A01)=0.1; Sim(Da13A01, Ee28A01)=0.1;

Sim(Ee34D01, Ee26A01)=0.483920;

Sim(Ee34D01, Ee28A01)=0.510077;

所以“骄傲”和“仔细”的相似度为0.510077

程序中的的测试词、比较词如果没在词林出现则相似度为0,

测试词只能填一个词,多个比较词由逗号分隔。

程序的计算结果如下:

词语相似度计算第4张

《基于同义词词林的词语相似度计算方法》论文的计算结果如下:

词语相似度计算第5张

成年人和市民跟这两项的相似度有出入是因为使用的词林版本中这两个词所在分支层的分支数不一样所致。

《基于同义词词林的词语相似度计算方法》论文地址http://wenku.baidu.com/view/0b1b7d5e804d2b160b4ec030.html

程序下载地址:

http://download.csdn.net/detail/huandaohack/4557989

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇把大文件切割成小文件CBrush,CFont,CPen下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从零搭建 ES 搜索服务(三)同义词搜索

一、前言 上篇介绍了 ES 的基础搜索,能满足我们基本的需求,然而在实际使用中还可能希望搜索「番茄」能将包含「西红柿」的结果也罗列出来,本篇将介绍如何实现同义词之间的搜索。 二、安装 ES 同义词插件 2.1 同义词插件简介 GitHub 地址:https://github.com/ginobefun/elasticsearch-dynamic-syno...

Sqlserver 使用同义词跨服务器数据库连表查询

  跨服务器,跨数据库查询并不是什么新鲜事,不过之前在工作中看到一段代码,之前也没有接触过数据库同义词,发现挺方便的。代码示例类似这样:   代码很普通,奇怪之处在于A 表在服务器ServerA的DatabaseA中,而B表在服务器ServerB的DatabaseB中。于是我第一反应是linked server,但可以这样写吗?没远程Server 的ip...

oracle不同用户间访问表不添加用户名(模式)前缀

默认的情况下,oracle里面的用户A,要访问用户B的表需要带用户B的前缀,如访问用户B的 user表,需要这样访问 select * from B.user;如果想要不添加用户前缀,需要这样处理:(user01 就是A用户)1.用视图  create view user select * from B.user;2.使用同义词:grant CREATE...