同义词词林 java_基于同义词词林扩展版的词语相似度计算

词语相似度计算

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

本文主要是根据《基于同义词词林的词语相似度计算方法—田久乐》论文中所提出的分层算法实现相似度计算,程序采用Java语言编写。

同义词词林扩展版

《同义词词林》是梅家驹等人于1983年编纂而成,这本词典中不仅包括了一个词语的同义词,也包含了一定数量的同类词,即广义的相关词。《同义词词林扩展版》是由哈尔滨工业大学信息检索实验室所重新修订所得。该版收录词语近7万条,全部按意义进行编排,是一部同义类词典。

同义词词林按照树状的层次结构把所有收录的词条组织到一起,把词汇分成大、中、小三类,大类有12个,中类有97个,小类有1400个。每个小类里都有很多的词,这些词又根据词义的远近和相关性分成了若干个词群(段落)。每个段落中的词语又进一步分成了若干个行,同一行的词语要么词义相同,要么词义有很强的相关性。

《同义词词林》提供了5层编码,第1级用大写英文字母表示;第2级用小写英文字母表示;第3级用二位十进制整数表示;第4级用大写英文字母表示;第5级用二位十进制整数表示。例如:

Cb30A01= 这里 这边 此地 此间 此处 此

Cb30A02# 该地 该镇 该乡 该站 该区 该市 该村

Cb30A03@ 这方

分层及编码表如下所示

805ede97b87844dd588828909718b555.png

38ec8f66343ddee28e1a8ea21f2dd609.png

由于第5级有的行是同义词,有的行是相关词,有的行只有一个词,分类结果需要特别说明,可以分出具体的3种情况。使用特殊符号对这3种情况进行区别对待,所以第8位的标记有3种,分别是“=”代表“相等”、“同义”;“#”代表“不等”、“同类”,属于相关词语;“@”代表“自我封闭”、“独立”,它在词典中既没有同义词,也没有相关词。

在对文本内容进行相似度计算中,采用该论文中给出的计算公式,两个义项的相似度用Sim表示

若两个义项不在同一棵树上,Sim(A,B)=f

若两个义项在同一棵树上:

若在第2层分支,系数为a Sim(A,B)=1*a*cos*(n*π/180)((n-k+1)/n)

若在第3层分支,系数为b Sim(A,B)=1*1*b*cos*(n*π/180)((n-k+1)/n)

若在第4层分支,系数为c Sim(A,B)=1*1*1*c×cos*(n*π/180)((n-k+1)/n)

若在第5层分支,系数为d Sim(A,B)=1*1*1*1*d*cos*(n*π/180)((n-k+1)/n)

当编码相同,而只有末尾是“#”时,那么认为其相似度为e。

例如Ad02B04# 非洲人 亚洲人 则其相似度为e。

其中n是分支层的节点分支总数,k是两个分支间的距离。

如:人 Aa01A01= 和 少儿 Ab04B01=

以A开头的子分支只有14个,分别是Aa*——An*,而不是以A开头的所有结点的个数;在第2层,人的编码是a,少儿的编码是b所以k=1。

该文献中给出的参数值为a=0.65,b=0.8,c=0.9,d=0.96,e=0.5,f=0.1。

如:人 Aa01A01= 和 少儿 Ab04B01=由于A开头的分支个数为14个,所以n=14;在第2层,人的编码是a,少儿的编码是b所以k=1。

Java代码实现

package edu.shu.similarity.cilin;

import com.google.common.base.Preconditions;

import lombok.extern.log4j.Log4j2;

import org.apache.commons.io.IOUtils;

import org.apache.commons.lang3.StringUtils;

import org.junit.Test;

import java.io.IOException;

import java.io.InputStream;

import java.util.*;

import static java.lang.Math.PI;

import static java.lang.Math.cos;

/**

*

* Created with IntelliJ IDEA. 2015/8/2 21:54

*

*

* ClassName:WordSimilarity

*

*

* Description:

* "=" 代表 相等 同义

* "#" 代表 不等 同类 属于相关词语

* "@" 代表 自我封闭 独立 它在词典中既没有同义词, 也没有相关词

*

*

* @author Wang Xu

* 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值