仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷 淘寶客 雲主機 技術大廳
下面給大家介紹一下如何打造自己的coreseek分詞詞庫。 coreseek自身帶的詞庫不是很大,直接使用它分詞可能會返回大量沒用結果。 要想搜尋結果準確打造一個專門的分詞 詞庫必不可少。
i. 首先到搜狗HTTP://pinyin#sogou#com/dict/下載你要的詞庫
ii. 因為下載回來的詞庫不是文字檔我們不能直接使用,所以要先轉換成文字檔。 網上找一個搜狗轉 google的小工具,用它把你下載的全部詞庫轉成文字檔。 合併為一個檔命名為words.txt。 檔要用utf8編碼 保存,如果想直接使用我下面的工具進行轉換的話檔案名一定要是words.txt。 如果你想自己轉換請參考官網上的方 法HTTP://www#coreseek#cn/opensource/mmseg/
iii. 現在11545.html">我們有了一個初步的詞庫,但這個詞庫還不能直接使用,要再整理並轉換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覆蓋原檔就大功告成了