简介
WordNet::Similarity是一个Perl实现的软件包,可以用来计算两个概念(或者word sense)之间的语义相似度,它提供了六种计算相似度和三种计算概念之间关联度的方法,所有的这些方法都是基于WordNet这个词汇数据库。
依附
- WordNet
- Digest-SHA1
- WordNet::QueryData
- Text-Similarity
下载位置
安装
WordNet
1. sudo apt-get install tcl8.4-dev
sudo apt-get install tk8.4-dev
2. ./configure
3. sudo make
如果出现问题:checking for gawk... no
解决:sudo apt-get install gawk
4. sudo make install
5. 设置变量
sudo vim /etc/profile
添加:export PATH=$PATH:/usr/local/Wordnet-3.0/bin
退出编译:source /etc/profile
Digest-SHA1
进入相应目录cd path
依次运行如下命令
perl Makefile.PL
make
make test
sudo make install
其他
WordNet::QueryData,Text-Similarity,WordNet::Similarity的安装与Digest-SHA1完全一样
使用
$ similarity.pl --type WordNet::Similarity::lin car#n#2 bus#n#1
car#n#2 bus#n#1 0.530371390319309 # railway car versus motor coach
$similarity.pl --type WordNet::Similarity::lin car#n bus#n
car#n#1 bus#n#1 0.603649218135011 #返回相似值最高的匹配对
$similarity.pl --type WordNet::Similarity::lin --allsensescar#n bus#n
car#n bus#n (all senses)
car#n#1 bus#n#1 0.603649218135011
car#n#2 bus#n#1 0.533827219913664
car#n#1 bus#n#4 0
car#n#3 bus#n#3 0
car#n#4 bus#n#1 0
car#n#2 bus#n#4 0
car#n#5 bus#n#1 0
car#n#5 bus#n#4 0
car#n#3 bus#n#4 0
car#n#4 bus#n#2 0
car#n#5 bus#n#3 0
car#n#3 bus#n#2 0
car#n#4 bus#n#4 0
car#n#2 bus#n#2 0
car#n#5 bus#n#2 0
car#n#1 bus#n#3 0
car#n#3 bus#n#1 0
car#n#2 bus#n#3 0
car#n#1 bus#n#2 0
car#n#4 bus#n#3 0 #加上参数—allsenses 返回所有的匹配
脚本
#/usr/bin/perl -w
use WordNet::QueryData;
use WordNet::Similarity::lin; $wnObj = new WordNet::QueryData;
$linObj = new WordNet::Similarity::lin($wnObj);
$value = $linObj -> getRelatedness('car#n#1', 'bus#n#1');
print $value
依靠路径长度的:lch, wup, path
依靠路径长度和最小公共包含(LCS):res, lin, jcn
相似度和关联度的介绍可以参考翻译论文:http://hi.baidu.com/dailyye/item/a2c7fb61ae6ae22769105b18
CPAN地址:http://search.cpan.org/dist/WordNet-Similarity/utils/similarity.pl