segmeaning

segmeaning-中文语义相似度计算程序

计算句子和句子,句子和词,词和词之间相似度的程序,perl语言编写。自带切词组件。可以排序输出N个候选词/句子中与输入词/句字 语义最相近的M句。 基于词嵌入,计算句子词袋及单个词之间余弦距离。 比如,莲花距离植物,奔驰(汽车品牌)与汽车,奥巴马与政治等等中文词。 比较多个词之间距离远近。 1.支持自定义手动修改词之间距离。 2.支持句子序列相似度计算 3.支持词-词,词-句子,句子-句子距离计算。 4.支持100万中文词。 词之间距离的抽取来源:babelnet中文部分,weibo和百科的wordvec学习后的模型词间距离抽取,百度百科词频统计,同义词词典。 词向量词典解压后为600M,含有100多万各个领域中文词。 启动后占用内存3.2G

用途: 搜索引擎中海选后的精选.在线的候选答案排序.二次排序。 计算潜在语义相似度。短文本相似度计算。词与短文本相似度计算。词与词意思相似度计算。文本相似度计算。

硬件要求: 内存:8G以上内存 硬盘:1G以上磁盘空间。

安装方法: 环境要求linux系统perl语言环境,必须要配置好cpan环境。 安装perl的库文件包,包括:

JSON::Parse JSON Clone Tree::Trie Storable Socket IO::Handle IO::Select IO::Socket::INET

每个包的安装方法是运行命令 cpan 包名字 例如安装IO::Socket::INET 运行命令: cpan IO::Socket::INET centos或者ubuntu系统下安装 Socket IO::Handle; IO::Select Socket IO::Socket::INET POE Clone 这个几个包。

下载安装包segmeaning.tgz 解压缩后进入segmeaning目录 运行方法:

1启动服务器: 运行命令./segmeaning_server.pl &

启动时加载模型文件预计使用30秒左右,占用3.2G内存,可以启动完成。

如果开启序列相似度需要后边加上参数seq ,默认不开启,如果开启会增加计算时间。 ./segmeaning_server.pl seq &

2.测试多个句子/短语,词相互之间距离

./segmeaning_client.pl simple.txt

输出: cat 苹果 木头 奔驰 暴风雪 拖拉机 姚明 踢球 我喜欢听广播 三国演义 ------------- 水果 家具 汽车 龙卷风 乔丹 书 球鞋 新闻 看电视 1-1-0.352898202704161 1-4-1.11146528311433e-05 1-6-7.30328192678049e-06 1-1 为第一行 “苹果” 距离simple.txt文件里"---"以下的第一行 “水果” 的距离 0.352898202704161 距离的最大值为1 最小值为0.

3.测试两个句子/短语/词 之间的距离 运行命令: ./segmeaning_client.pl dist_seg_one 我爱吃的苹果 爱吃我的水果 qc 输出 0-1-0.937866430357134

如果开启序列相似度选项启动server 运行命令: ./segmeaning_client.pl dist_seg_one 我爱吃的苹果 我爱吃的水果 qc 输出: 0-1-0.938799132003485

会发现 “ 我爱吃的水果 ” ,“爱吃我的水果” 距离“我爱吃的苹果”值不同。

4.自定义词间距离 编辑more.txt 例如:

暴风雨 天气:0.2 下雨:0.12

暴风雪 天气:0.2 下雪:0.12

龙卷风 天气:0.2 刮风:0.12

踢球 体育:0.2 运动:0.18 足球:0.20

球鞋 体育:0.13 运动:0.18 足球:0.20

注意:各列之间用"\t"间隔,不是空格。每行\n回车结尾。

暴风雨 距离天气的值为0.2 可以手动调整范围是 0-0.4 0.4认为这两个词表达完全相同含义。

然后杀掉主程序 重启服务即可生效。

5.句子相似度计算时使用的切词词典 other目录下的b2bdic文件 各列之间用空格间隔

本程序基于GPL协议授权使用。作者张博email:75926462@qq.com

数据与资源

其他信息

价值
作者 张博
维护者 张博
最近更新 六月 26, 2017, 10:32 (UTC)
创建的 六月 26, 2017, 10:32 (UTC)