自建個人化的coreseek分詞詞庫

來源:互聯網
上載者:User

仲介交易 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覆蓋原檔就大功告成了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.