自建個性化的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@
**/
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遮蓋原文件就大功告成了