[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dim: debian input method. call for help ;-)



Hi!
I've just registered a sourceforge project for dim which stands for
debian chinese input method. it's not another xim server, but just an
input method. when it be finished, it will probably ended up as a
plug-in module for xcin, and/or chinput.

the url is: dim.sourceforge.net (mozilla seems has bug displaying it
in chinese, i have no idea why, maybe a sourceforge http server config
bug. anyway.)

currently no code available, only some rough deisgn documents in
chinese, see below.

If you have any spare time please join the dim effort. ;-) Thanks very
much! code copyright is GNU GPL, of course. ;-)

My humble ideas: ;-)
--8<--
$Id: README,v 1.1 2001/03/10 14:43:52 zhaoway Exp $

這個輸入法分兩個模塊, 其式是三個, 但我們假裝是兩個. 一個猜想模塊, 一個學
習模塊. 猜想模塊從用戶那兒接收一串英文字母做為輸入, 返回給用戶一串漢字
; 學習模塊從用戶那兒接收一串漢字做為輸入, 不返回用戶任何東西. 還有一個第
三模塊, 其實就是後面的數據庫啦.

猜想模塊, 比如輸入是 (0)XiaoZhaoShiGeDaBenDan; 那麼輸出在最好情況下就是: 
小趙是個大笨蛋.

學習模塊, 我們希望, 比如, 第一次輸入是: 小趙是個大笨蛋, 雖然並不直接返回
任何數據給用戶, 但是 我們的輸入法 將要據此輸入來優化第三模塊, 數據庫. 比
如, 我們的輸入法在用戶上述輸入之後, 建立: XiaoZhaoShiGeDaBenDan <-> 小趙
是個大笨蛋. 這裡順代講深入一點, 在我們的輸入法學習了: (1)小趙是個大笨蛋
; (2)小趙是個大混蛋; (3)小趙是個大傻蛋; 這樣的幾個句子以後, 我們希望我們
的輸入法自己學習到 (4)小趙是個大__蛋;這樣的帶空格的句式. 這對我們將會有
很大的幫助.

我們來仔細看這個學習過程, 從 (1) 和 (2) 如何就能讓我們的輸入法自己學習到 
(4),而 (3) 有是如何強化對 (4) 的學習的呢.

首先, 從 (1), 我們的輸入法將學習到:
小趙 <-> 小趙是個大笨蛋[1]
趙是 <-> 小趙是個大笨蛋[2]
是個 <-> 小趙是個大笨蛋[3]
個大 <-> 小趙是個大笨蛋[4]
大笨 <-> 小趙是個大笨蛋[5]
笨蛋 <-> 小趙是個大笨蛋[6]

當 我們的輸入法 遇到 (2) 時, 根據上面的步驟, 會學習到
小趙 <-> (1)小趙是個大混蛋
     `-> (2)小趙是個大笨蛋
經過把 (1) 和 (2) 相互比較, 立刻就的到了 (4), 這樣, 顯然 (3) 會強化這一
學習過程. 設想此時, 我們的輸入法 遇到 (5)雷峰叔叔是個好人; 這時會發生什麼,
是個 <-> 小趙是個大__蛋 
     `-> 雷峰叔叔是個好人
       `-> 小趙是個大笨蛋
         `-> 小趙是個大混蛋
這時 我們的輸入法 將學會: __是個__; 因此, 也將學會: 小趙;大混蛋;大笨蛋;好人;

這個例子當然相對簡單, 有一定偏見在裡面.

再進一步來看這個學習過程, 我們把 (1) 啦 (5) 啦這樣的東西稱為漢字鏈, 請注
意, 我們避免使用 詞 這個概念. 學習一個 七個字的漢字鏈時, 會得到六個入口 
(如上面的 [1] 至 [6] 等, 每個入口, 也是一個長為二的漢字鏈) 能夠讓我們的
輸入法進入漢字鏈的倉庫.

我們進一步來引入打分和遺忘的機制. 首先, 學習一串漢字鏈的時候, 可以自動分
解入口, 這些自動分解的入口, 將不加分. 同時, 應該盡量使用分高的入口.

其次, 每個入口後面都跟隨了若幹個漢字鏈, 如過其中有一個能夠和我們正在學習
的這一串漢字鏈匹配, 則我們將學習到若幹個詞,比如上面的:小趙;大混蛋;大笨蛋
;好人; 這些詞, 做為詞, 加分. 如果碰巧也是 入口詞 的話, 那當然好.

同時, 考濾到三字或四字等等的詞, 作為字鏈學習的是候, 我們還應該給整個字鏈
加分.

需要注意的是, 我們可能從一句話當中學習到非常多的東西, 可能會學不過來, 怎
麼辦, 可以跳這學, 或者不學啊, 比如我們有六個入口, 我們可以只隨機處理三個
呀. 或揀分高的入口處理幾個.

我們還需要遺忘機制, 遺忘進程隨機的不定期橫掃整個數據庫, 把分數最低的一些
項目刪掉. 同時, 它也隨機的給隨便什麼項目隨意的減分. 這樣使以往的錯誤不至
于一直帶在身上. 

縱合起來, 入口是兩字詞, 它們只記錄原始拷貝的長鏈.至于生成的詞, 空格鏈, 
等等散放在詞庫當中. 所有的項目, 都受遺忘機制的管轄. 原始長鏈忘的慢. 空格
鏈的處理可能還要仔細一些吧. 當一個入口將要被遺望的時後, 它所擁由的長鏈要
轉移給其它的入口.

學習模塊大致講了一下. 下面來看猜想模塊.

且聽下回分解. 簡單說來, 我們的輸入法的詞庫當中已經有各式各樣長度的漢字鏈
, 還有帶空格的鏈. 就看怎樣用了. 有幾條原則:

1.得分要高
2.匹配項目的平均詞長度要大
3.匹配項目的的詞長變化要小
4.盡量和空格鏈匹配上

(* these ideas are stolen from Cai Zhi Lin(??) except item 4.)

試分析:

毛主席教導我們說: 百花齊放.
毛主席萬歲.
公社的毛主任是個老色鬼. ;-)
-->8--

Please join the dim effort and help! You can do:

1) criticize/discuss/enhance design documents, post you ideas
here. (Please, anthony! ;-)
2) join sourceforge.net, register as a user, help admin
dim.sourceforge.net project and its webpages.
3) write code! You will be my GOD! ;-)

Later,
--
<http://www.zhaoway.com/>

-- 
| This message was re-posted from debian-chinese-gb@lists.debian.org
| and converted from gb2312 to big5 by an automatic gateway.



Reply to: