1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

自建个性化的coreseek分词词库

作者:用户 来源:互联网 时间:2016-08-16 17:15:33

文件txttxt转换成bin文件coreseekcontentwords词库array_diffarray_flip

自建个性化的coreseek分词词库 - 摘要: 本文讲的是自建个性化的coreseek分词词库,   下面给大家介绍一下如何打造自己的coreseek分词词库。 coreseek自身带的词库不是很大,直接使用它分词可能会返回大量没用结果。要想搜索结

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

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

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

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

/**
Last edit 2012-8-11
Copyrigh@ www.4ji.cn
**/
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( "\r\n" ,$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,"\r\n");
$arr2 = explode( "\r\n" ,$content2 );
echo '删除相同词条...
';flush();
$array_diff=array_diff($arr1,$arr2);

echo '格式化词库...
';flush();
$words='';
foreach($array_diff as $k=>$word){
$words.=$word."\t1\r\nx:1\r\n";
}
//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:\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覆盖原文件就大功告成了



以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件 , txt , txt转换成bin文件 , coreseek , content , words , 词库 , array_diff array_flip coreseek 词库、coreseek 分词库、coreseek 中文分词、coreseek 分词、coreseek 分词格式,以便于您获取更多的相关知识。

lucene和solr的分词器词库如何从数据库加载?求代码

问题描述 lucene和solr的分词器词库如何从数据库加载?求代码 1,由于我们加入了同义词,所以需要定义一个IK的同义词工厂类IKSynonymFilterFactory继承TokenFilterFactory类并实现ResourceLoaderAware接口和Runnable...

浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别_php技巧

...对用户输入分词,到索引中查询 目前最常用的三种方案Coreseek、Sphinx-for-chinaese、Sphinx+Scws 1、Coreseek 为国人基于Sphinx开发的方案,目前最稳定版,是基于经典的Sphinx0.9.9版 优点:有成熟的文档、以及社区;其分词mmseg为目前国内...

在centos5下为PHP安装coreseek全文检索引擎支持

coreseek是在Sphinx基础上开发的全文检索软件,具体介绍详见文尾附录 ========================================================= 一、      安装环境及介绍 1.     前提环境 系统环境:centos5 操作用户:root 文中粗体字为需用户输入的命令内...

Sphinx 安装到使用

...inx/ --with-mysql --enable-id64makemake install Sphinx中文分词插件Coreseek安装注:coreseek的安装教程来自这里,下面是详细过程:安装升级autoconf 因为coreseek需要autoconf 2.64以上版本,因此需要升级autoconf,不然会报错。从http://download.chinauni...

JS版汉字与拼音互转终极方案,附简单的JS拼音输入法

...是多音字词库的丰富程度,一个是能否正确的给语句进行分词。而词库和分词的实现都需要一个非常丰富的词典文件,现代汉语词语有多少个,估计没有人算得清,再加上每天新出现的人名、网络词语、科技词语等等。一个普通...

前三篇
后三篇
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备