coreseek 词库更改

搜狗词库去下载需要的词库

使用深蓝词库转换工具转换为txt格式,深蓝转换工具下载

将txt转换为utf8编码。

使用下面代码在服务器上运行,将txt文件转换为coreseek格式的词库。注意文件名

<?php
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( "\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=array_merge($arr1,$arr2);
$array = array_unique($array);
echo '格式化词库...';flush();
$words='';
foreach($array 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;
}
?>

使用命令行构造词典:详情看这个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对应的目录下就可以了

词典构造完成需要重、重新建立以下索引!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值