【伍哥原创】
1,了解mmseg和libmmseg
MMSeg是一个基于最大匹配算法的两种变体的中文单词识别系统。简单来说就是算法。
LibMMSeg 是Coreseek.com为 Sphinx 全文搜索引擎设计的中文分词软件包,其在GPL协议下发行的中文分词法,采用Chih-Hao Tsai的MMSEG算法。LibMMSeg 采用C++开发,同时支持Linux平台和Windows平台。
2,mmseg词典
mmseg分词算法是依赖于一个词典。丰富强大的词典决定了分词的质量。由于coreseek安装包自带词典是一般通用的,针对网络零售这个领域,需要补充一些词汇。所以有了制作mmseg词典的需求。
3,用搜狗细胞词库制作mmseg词典
操作的前提是安装好了coreseek(sphinx),请参考伍哥之前的文章。
终于入正题了,首先去搜狗拼音官网下载细胞词库。这里已淘宝专用词库为例,下载地址:http://pinyin.sogou.com/dict/cell.php?id=22416 。这里假设你把词库放到了/root/test 目录下面。
接着下载这个python脚本 scel2mmseg.py 到/root/test。这个脚本伍哥修改了,可以把scel的细胞词库转成mmseg格式的词典。
然后把coreseek安装目录的unigram.txt复制到/root/test,并改名为unigram_taobao.txt,并清空里面的内容 (其实就是要一个UTF8编码的文件,哎~~)。
现在可以转化了:
python scel2mmseg.py
新的词汇就添加到词典后面了。
然后就用mmseg生成真正的词库uni.lib
/usr/local/mmseg3/bin/mmseg -u unigram_taobao.txt
这时候会产生一个unigram_taobao.txt.uni,把它重命名为uni.lib,这样一个新的词库就制作好了。
4,测试新词库
首先找到searchd的配置文件,查找到词库的路径。比如下面是伍哥测试环境的路径:
charset_dictpath = /usr/local/mmseg3/etc/
然后先把里面的uni.lib备份好,接着把新的uni.lib放到对应的目前里面。
接着就是开测了:
先重新生成索引
/usr/local/coreseek/bin/indexer -c /root/test/coreseek/testpack/etc/ecm_goods.conf --all --rotate
然后搜索一把,查看结果是否正确:
/usr/local/coreseek/bin/search -c /root/test/coreseek/testpack/etc/ecm_goods.conf '海尔冰箱'
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
using config file ‘/root/test/coreseek/testpack/etc/ecm_goods.conf’…
index ‘mysql’: query ‘海尔冰箱 ‘: returned 2 matches of 2 total in 0.000 sec
displaying matches:
1. document=302, weight=1708, store_id=100059
id=302
goods_name=海尔冰箱
cate_name=生活电器 大家电 空调
store_id=100059
2. document=324, weight=1708, store_id=100059
id=324
goods_name=海尔冰箱
cate_name=生活电器 大家电 冰箱
store_id=100059
words:
1. ‘海尔冰箱’: 2 documents, 2 hits
来源:oschina
链接:https://my.oschina.net/u/5005/blog/71150