如何打造自己的coreseek/sphinx分词词库

阅读更多

下面给大家介绍一下如何打造自己的coreseek分词词库。 coreseek自身带的词库不是很大,直接使用它分词可能会返回大量没用结果。要想搜索结果准确打造一个专门的分词 词库必不可少。

i. 首先到搜狗http://pinyin#sogou#com/dict/下载你要的词库

ii. 因为下载回来的词库不是文本文件我们不能直接使用,所以要先转换成文本文件。网上找一个搜狗转 google的小工具,用它把你下载的全部词库转成文本文件。合并为一个文件命名为words.txt。文件要用utf8编码 保存,如果想直接使用我下面的工具进行转换的话文件名一定要是words.txt。如果你想自己转换请参考官网上的方 法http://www#coreseek#cn/opensource/mmseg/

iii. 现在我们有了一个初步的词库,但这个词库还不能直接使用,要再整理并转换coreseek使用的格式才行。 这里我提供一个自己编写的小程序方便转换。 源程序如下:

使用方法如下:

1. 把words.txt,转换工具words_format.php及c:\coreseek\etc\unigram.txt三个文件放到能运行php的 服务器同一个目录下.

2. 然后访问words_format.php .

3. 等待程序运行完,时间长短要看你词的多少,太多的话中间可能假死。运行完后会在相同目录下生产 words_new.txt把这个文件加到原unigram.txt的后面,保存备用.

4. 把上面得到的文件unigram.txt复制到C:\coreseek\bin然后在命令行下进入目录C:\coreseek\bin 执行 mmseg -u unigram.txt 该命令执行后,将会在unigram.txt所在目录中产生一个名为unigram.txt.uni的文件 ,将该文件改名为uni.lib,完成词典的构造。

5. 测试新词库能否正解分词。在C:\coreseek\bin下新建文本文件test.txt。输入要测试的关键词。 例如:四季服装网中大面料辅料,然后保存。当中一定要包含你新加进词库的某个关键词。例如四季服装网是我新加的 关键词。然后在刚才的命令行下执行mmseg -d C:\coreseek\bin test.txt>result.txt .执行完后打开新生产 的结果文件result.txt .如果看到分词结果类似四季服装网/x 中大/x 面料/x 辅料/x 的话证明词库已正确生成, 如果看到新关键词被分切开如: 四/x 季/x 服/x 装/x网/x 中大/x 面料/x 辅料/x的话就说明新的词库并不正确。 要检查一下哪里出错了,重新生产。

6. 再把得到的uni.lib复制到C:\coreseek\etc覆盖原文件就大功告成了

 

====================================

使用命令行构造词典:详情看这个coreseek词典构造 http://www.coreseek.cn/opensource/mmseg/

 

词典的构造

mmseg -u unigram.txt

该命令执行后,将会在unigram.txt所在目录中产生一个名为unigram.txt.uni的文件,将该文件改名为uni.lib,完成词典的构造。需要注意的是,unigram.txt需要预先准备,并且编码格式必须为UTF-8编码。

特别提醒:Windows下面编辑词典文件,请使用Notepad2,绝对不要使用记事本(Notepad)。

词典文件格式:

....
河 187
x:187
造假者 1
x:1
台北队 1
x:1
湖边 1
......

其中,每条记录分两行。其中,第一行为词项,其格式为:[词条]\t[词频率]。特别提醒,有的编辑器会使用4到8个空格代表\t,这将导致该词条无法解析。需要注意的是,对于单个字后面跟这个字作单字成词的频率,这个频率需要在大量的预先切分好的语料库中进行统计,用户增加或删除词时,一般不需要修改这个数值;对于非单字词,词频率处必须为1。第二行为占位项,是由于LibMMSeg库的代码是从Coreseek其他的分词算法库(N-gram模型)中改造而来的,在原来的应用中,第二行为该词在各种词性下的分布频率。LibMMSeg的用户只需要简单的在第二行处填"x:1"即可。

将修改好的uni.lib 放到mmseg对应的目录下就可以了

你可能感兴趣的:(php)