2008年4月7日

新酷音自訂詞彙心得

新酷音要自訂詞彙有兩種方式:

正常的方式,是以「使用者詞庫」的方式建立,它會另外儲存到一個詞庫檔當中。
這種方式的缺點是,使用者詞庫的優先權似乎超級低,因此當遇到使用者詞庫和內建詞庫衝突時,很容易有問題,相關討論如下網址:
http://forum.talkdigi.net/phpBB2/viewtopic.php?t=513

見解如下:
經三交的觀察,應該是使用者自建詞庫(hash.dat)與統計字頻率資料(us_freq.dat)發生搭配上的錯亂所致
而且執行「存入使用者詞庫」的次數愈多,問題就愈嚴重
當然,這有可能三交才會有的情況,或說是個案也可以
在研究「新酷音詞庫修改教學」之後
摸索出以下的方法,不敢保證一定有用
卻有相當程度的解決成效


以及
Roger大,讓三交來跟你解釋一下
「工件」這個字在共享詞庫是不存在的
而是在內建詞庫才有

基本上內建詞庫(也就是裝好新酷音預設的詞庫)的詞
輸出的優先權永遠大於共享詞庫
所以三交再怎麼改,「工件」的優先權一定都會先於「弓箭」
改善方式就是如您文中所說的,「弓箭」連續打三次才能改善

算是內建詞庫的「原罪」吧Orz
共享詞庫沒這麼厲害的說


上述的共享詞庫,就是使用者詞庫。

剛討論內容是,「三交」這個網友認為新酷音詞庫維護團隊更新的實在太慢了,而且更新的並不符合使用習慣,他希望新酷音能夠有類似Google輸入法的功能,可以線上共享詞庫,因此以討論區手動的方式來進行詞庫整理。

使用者詞庫:
要在Linux上使用「使用者詞庫」,基本上有下列幾點要知道的:
1. 使用者詞庫檔案所在路徑、檔名
~/.chewing/uhash.dat

2. 當使用者詞庫有任何問題時,只需要將該目錄下的檔案刪除即可,尤其是「uhash.dat」這個詞庫檔

3. 「使用者詞庫」編輯工具
Linux下我目前並沒有找到「使用者詞庫」編輯工具,所以要使用,可以從 Windows 上把「使用者詞庫」編輯工具複製到 Linux,接著搭配 wine 來執行,我測試後,基本上除了「新增詞彙」不能動作之外,其他的功能應該都是正常的。
新增詞彙的動作怎麼辦?
可以直接利用「Ctrl + 2、3、4、5」添加詞彙,再把使用者詞庫檔讀取出來。

Windows上「使用者詞庫」編輯工具所在的路徑、檔名是:
C:\WINDOWS\system32\IME\Chewing\HashEd.exe

4. 要使用前面網友「三交」的詞彙
步驟其實很簡單,下載他的詞彙檔,解壓縮後會得到檔案uhash.dat,接著刪除「~/.chewing/uhash.dat」,利用「wine HashEd.exe」將網友的uhash.dat匯入(匯入前正常情況應該是完全沒有詞彙的),接著存檔即可。

網友「三交」有提到我們自己的詞彙跟他的詞彙整合的問題,方法上其實也很單純,先把我們自己的詞彙輸入之後匯出成「uhash.dat」這樣的檔案,然後刪除「~/.chewing/uhash.dat」,再來把他的uhash.dat匯入,最後再匯入我們自己的「uhash.dat」


內建詞庫:
因為上述提過的原因,使用「使用者詞庫」有時候並不是好方法,再加上「使用者詞庫」沒辦法自行設定破音字的輸入,例如:「嫉ㄐ一ˋ妒」,這個「嫉ㄐ一ˋ」其實應該是「嫉ㄐ一ˊ」,但大家都用錯了,久而久之就變成非法的破音字。

這樣的詞彙沒辦法定義在「使用者詞庫」中,使用者詞庫無法允許不存在的字的詞彙,這時候我們就必須要修改「內建詞庫」。

內建詞庫的修改主要參考:
http://chewing.csie.net/chewing_dict_edit.html

首先我們先把流程列出來,流程如下:
1. 用 svn 下載「新酷音詞庫團隊」最新的詞庫檔
svn co http://svn.openfoundry.org/libchewingdata/

2. 產生內建詞庫相關的檔案
cd libchewingdata/utf-8
rm *.dat *.dat_bin
wine dat2bin.exe


之後會產生出好幾個「.dat」的檔案,這些檔案就是內建詞庫的檔案,檔案如下:
ch_index.dat
dict.dat
fonetree.dat
ph_index.dat
us_freq.dat


3. 將內建詞庫所需檔案複製到系統中
首先要知道,Ubuntu 下「內建詞庫」的目錄在:
/usr/share/libchewing3/chewing/

接著要知道,內建詞庫所需的檔案除了上述的 5 個「.dat」外,還有個「pinyin.tab」,操作如下:
cd libchewingdata
cp pinyin.tab /usr/share/libchewing3/chewing/ (pinyin.tab在 libchewingdata/ 下)
cd utf-8
cp *.dat /usr/share/libchewing3/chewing/ (產生出來的 *.dat 在 libchewingdata/utf-8/ 下)


4. 最後有個步驟要注意,「內建詞庫」在 Ubuntu 中,有個專門的套件,名稱叫做「libchewing3-data」,要記得把這個套件鎖定,否則系統更新後,改過的「內建詞庫」會被改寫掉

解說完更新的整個流程後,接著要來稍微解說如何改「內建詞庫」,「內建詞庫」的檔案就 2 個,檔名和功能如下(檔案存在 libchewingdata/utf-8/ 下):
phone.cin 定義所有字的注音(注意,它的注音是以英文表示,例如:「傅ㄈㄨˋ」會定義成「傅zj4」),因此要加入破音字可以修改這個檔加入

tsi.src 定義所有內建的詞庫(這邊注意到,它有個特性,就算「phone.cin」中沒有定義「嫉ㄐ一ˊ」,但它還是可以接受詞彙中同時有「嫉ㄐ一ˊ妒」、「嫉ㄐ一ˋ妒」)

tsi.src的詞彙格式如下:
酷音 1000 ㄎㄨˋ ㄧㄣ

其中1000表示優先順序,數值越大優先權越高

沒有留言: