会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 搜索引擎 > 自建个性化的coreseek分词词库

自建个性化的coreseek分词词库

时间:2012-08-16 20:40:37   作者:   来源:   点击:

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

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

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

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

/**Last edit 2012-8-11Copyrigh@ 4ji**/ini_set('max_execution_time','6000');$buffer=ini_get('output_buffering');if($buffer)ob_end_flush();echo '措置新词库...';flush();$filename = "words.txt";$handle = fopen ($filename, "r");$content = fread ($handle, filesize ($filename));fclose ($handle);$content=trim($content);$arr1 = explode( "rn" ,$content );$arr1=array_flip(array_flip($arr1));foreach($arr1 as $key=>$value){$value=dealchinese($value);if(!empty($value)){$arr1[$key] = $value;}else{unset($arr1[$key]);}}echo '措置原来词库...';flush();$filename2 = "unigram.txt";$handle2 = fopen ($filename2, "r");$content2 = fread ($handle2, filesize ($filename2));fclose ($handle2);$content2=dealchinese($content2,"rn");$arr2 = explode( "rn" ,$content2 );echo '删除相同词条...';flush();$array_diff=array_diff($arr1,$arr2);echo '格局化词库...';flush();$words='';foreach($array_diff as $k=>$word){$words.=$word."t1rnx:1rn";}//echo $words;file_put_contents('words_new.txt',$words,FILE_APPEND);echo 'done!';function dealChinese($str,$join=''){preg_match_all('/[x{4e00}-x{9fff}]+/u', $str, $matches); //将中文字符全部匹配出来$str = join($join, $matches[0]); //从匹配成果中重新组合return $str;}?>

使用体例如下:

1. 把words.txt,转换东西words_format.php及c:coreseeketcunigram.txt三个文件放到能运行php的 办事器同一个目录下.

2. 然后拜候words_format.php .

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

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

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

6. 再把取得的uni.lib复制到C:coreseeketc覆盖原文件就年夜功成功了

分享到:

网友评论