simsearch 基于字面相似度的搜索引擎
一个计算多个句子单字相似集合的搜索工具.对倒排索引结果进行二次排序,采用杰卡德相似度。
作为应用在问答系统中的组件。并返回相似性打分值。假设配置了问题 ABCDFG 但是用户输入的内容是ABDG 则输出配置里最相近的n条。
1.支持错字,少字,或多了字的搜索。
2.支持多用户
3.支持单条删除或新加索引
4.支持英文单词,空格用_
考虑这一个聊天配置场景
输入问题:今天天气不错 回答:是的天气很好
输入问题:今天我很开心 回答:为什么你会开心
实际应用当中,输入的是文本可能是
今天的天气真不错
天气真不错呀今天
今天天儿不错呀
天气不错啊这两天
都希望回答:是的天气很好
配置文件中仅仅需要配置一条 今天天气不错,则能自动匹配到相应的答案上>。
安装方法:
环境要求linux系统perl语言环境
安装perl的库文件包,包括:
use Socket;
use IO::Handle;
use IO::Select;
use IO::Socket::INET;
use POE qw(Component::Server::TCP);
use Clone qw(clone);
use Encode;
use Data::Dumper;
每个包的安装方法是运行命令
cpan 包名字
例如安装IO::Socket::INET 运行命令: cpan IO::Socket::INET
centos或者ubuntu系统下安装 Socket IO::Handle; IO::Select Socket IO::Socket::INET POE Clone 这个几个包。
下载安装包simsearch.tgz
解压缩后进入simsearch目录
运行方法:
1启动服务器:
运行命令./simsearch_server.pl &
2重新加载索引(启动时自动加载)
索引配置文件是test.nomsolo/ME_file
文件格式是 2列,第一列是输入句子,第二句是输出句子
重新建立索引运行命令:
./reload.sh
会重新读取 test.nomsolo/ME_file里的内容
查询测试脚本run_search.sh
./run_search.sh
输入的句子是"你有几个妹妹"
输出结果:
你有妹妹吗 我妹妹,还在实验室里 你 有 妹00.461538461538462
虽然配置文件里没有精确的输入 你有几个妹妹 但是给出了个最相近的配置答
案。
支持多用户,支持停用词表,支持相似度排序和条数输出。
run_search.sh里第二条参数showmatch 是搜索精确包含有索引单子的数据。
运行参数说明:
./simsearch_client.pl 你有几个妹 showtop 4 n test.nomsolo
“你有几个妹” 是输入文本 showtop 是模糊搜索,应用在错字少字多字的问题
搜索, 4 是输出4条结果 test.nomsolo是用户名 支持多用户不同配置。
基于GPL协议。