自建個人化的coreseek分詞詞庫

來源:互聯網
上載者:User

  下面給大家介紹一下如何打造自己的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覆蓋原檔案就大功告成了



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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