倉頡之友
康熙与倉頡
主頁 自學 倉頡字典 康熙字典體

倉頡平台2022 網上輸入法 九萬漢字

論壇 聯絡 康熙字典網上版 捐助本站
倉頡Rhapsody:不分割字首字身的倉頡 - 中文輸入法學術論壇 - 康熙字典与倉頡之友 - Powered by Discuz!
請選擇 進入手機版 | 繼續訪問電腦版



 找回密碼
 注册
查看: 7577|回復: 18

倉頡Rhapsody:不分割字首字身的倉頡

 火.. [複製鏈接]
發表於 4-4-2023 22:38:53 | 顯示全部樓層 |閱讀模式
雖然普通人可能一無所知,但鄭碼在形碼輸入法界相當有名。
它之所以有名,是因為它首先采用了一種非常不同於其他輸入法的思路。
以「鵏」為例。
大易輸入法是這樣取碼的:
先取出「甫」,「甫」在「6」鍵。
再取出「鳥」,「鳥」在「H」鍵。
因此得出取碼「6H」。

五筆98是這樣取的:
先取出「甫」,「甫」在「S」鍵。
再取出「鳥去掉灬」,「鳥去掉灬」在「Q」鍵。
再取出「灬」,「灬」在「O」鍵。
最後,根據末筆筆形和字形結構補一識別碼。
得出取碼「SQOY」。

但鄭碼輸入法是這樣取的:
先取出「甫」,「甫」雖然在「F」鍵,但是需要用「FB」代表「甫」。
再取出「鳥」,「鳥」雖然在「R」鍵,但是需要用「RZ」代表「鳥」。
得出最終取碼:「FBRZ」。
 樓主| 發表於 5-4-2023 13:48:13 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 5-4-2023 01:49 PM 編輯

最後還想提關於五筆86的一些設計。
一些人在學習五笔86時,抱怨為何五笔86的字根要「缺胳膊少腿」。例如,Q鍵上的一些字根就非常典型,「犭」沒了「丿」,「鱼」沒了「一」。
看了上面的幾樓,大家不妨考慮一下這樣設計的理由。假如這些字根不「缺胳膊少腿」,那麼「猎」和「䱜」和「𱇷」、「狗」和「𬶋」和「鉤」、「钓」和「魡」和「𬶄」、「鯉」和「鲤」和「狸」和「锂」和「鋰」…都會重碼

所以,五筆86通過「缺胳膊少腿」的方式,在這幾個部首上模擬了雙編碼。儘管五筆86是公認的單編碼輸入法,但在這幾個部首上卻有雙編碼的特性。
因此,現在
「鲤」取「QGJF」。
「鯉」取「QOJF」。
「锂」取「QJFG」(G為識別碼)。
「狸」取「QTJF」。
但是,由於五筆本質仍然是單編碼輸入法,所以「鋰」和「锂」仍然是要重碼的。
這種設計同樣是有缺點的。因為五筆86打二字詞取每個字的前兩碼,所以「狡猾」、「狼狈」、「狐狸」等字都是「QTQT」,造成大量的重碼。也就是說,在這裏,王永民為了打單字時的方便,捨棄了打詞時的一些方便。

雙編碼的設計,包括倉頡的隱式雙編碼同樣不是完美的,存在一些缺點。這些,也許下次再聊。
9379a25f0d9282267d7283cb3ff9ce00.png.jpeg
 樓主| 發表於 4-4-2023 23:32:38 | 顯示全部樓層
蘋果在20世紀末,通過引入NeXTSTEP系統,將其完全定製成Mac OS 9的模樣,作為測試版發佈出來,這個Rhapsody,就是OS X的前身,可以說是一次徹底的改變。

因此,我在這裏也想借用Rhapsody(狂想曲)的名稱,來命名這個倉頡,它就叫倉頡Rhapsody,或倉頡狂想曲。
 樓主| 發表於 4-4-2023 22:39:58 | 顯示全部樓層
有些人會感到很奇怪,為什麼要給一個字根兩個編碼,這不是徒增煩惱嗎?
 樓主| 發表於 4-4-2023 22:44:07 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 4-4-2023 10:46 PM 編輯

感到疑惑的大家不妨考慮這種情況,如果我們把「礻」和「衤」都放到倉頡的「L」鍵上,會出現什么結果?

很顯然,大量的字會出現重碼,例如
LSH:「𥘉」、「初」
LLWL:「神」、「𫋵」
LG:「社」、「𬡃」
LL:「祌」、「衶」
LOII:「𮁣」、「袊」
………


我們稱這種重碼為「結構性重碼」。
 樓主| 發表於 4-4-2023 22:49:42 | 顯示全部樓層
漢字部首繁多,不同的字可能像上例一樣,擁有不同的部首,但其餘部分完全一样。這給輸入法的設計帶來了很大的挑戰。因為,不同的部首,尤其是下轄的字特別多的部首如果放到同一鍵,很容易「撞車」,出現「結構性重碼」。
 樓主| 發表於 4-4-2023 22:52:31 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 4-4-2023 10:57 PM 編輯

很不幸的是,美式鍵盤上的拉丁字母只有26個,即使把數字和符號鍵利用於輸入,也只有40多個鍵。但是根據《康熙字典》,漢字有214個部首。假如把這些部首都放到鍵盘上,結構性重碼豈不得上天?即使捨棄掉一些部首,常見的部首仍然非常之多,非常容易撞車。


那怎麼辦呢?

鄭碼採取了一種非常聰明的方法。部首可以在同一鍵上,這個鍵被稱作「區碼」。比如在鄭碼中,「礻」和「衤」都在「W」鍵上。
為了區分它們,鄭碼給它們增加了一個「位碼」。「礻」的位碼是「S」,而「衤」的位碼是「T」。
所以,「初」的完整編碼是「WTYD」,而「𥘉」的編碼是「WSYD」。因此,雖然「礻」和「衤」同佔一鍵,重碼被完美地離散開來。

 樓主| 發表於 4-4-2023 22:59:36 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 4-4-2023 11:03 PM 編輯

所以,鄭碼用1至2碼來代表一個部首,這做法相當於模擬了26*26鍵的鍵盤,在這個鍵盤中,組字能力強的部首可以找到它們的去處,不用再撞到一起去了。這種設計被稱為「雙編碼」。

這種設計是非常高明的。因為,這樣設計意味着簡繁部首有區分開來的可能。對於普通的輸入法而言,「設」和「设」幾乎必定重碼,但雙編碼的輸入法則有可能不重碼。只要給「言」和「讠」不同的位碼,它們就可以被區別開來。

雖然鄭碼在設計時並未認真考慮離散簡繁這一點,但是後來許多輸入法借鑒了鄭碼並做出了改進,如徐碼。
 樓主| 發表於 4-4-2023 23:10:22 | 顯示全部樓層
有人可能會想到,倉頡輸入法在手冊裏並沒有這樣規定,那麼倉頡是單編碼輸入法嗎?

和表面上看起來的不同,倉頡也是一種雙編碼輸入法。

我們可以想一想我們是怎麼取碼的。首先,我們要先一刀割出字首。儘管字首不等於部首,但是字首經常是一個部首。

然後,我們給字首取碼,最多兩碼。
例如,「課」的字首是「卜口」(YR)。
再例如,「课」的字首是「戈女」(IV)。

我們很容易發現,「言」在作字首時會有兩碼,而且和「讠」不同。
對比鄭碼,我們會發現倉頡雖然沒有作出雙編碼的規定,但一個部件在字首和字身時往往會取固定的編碼,如果把這些編碼列出來,就非常類似於鄭碼的字根表。只不過,這並不要求任何的記憶。倉頡以小字根、字首字身這種很靈活的方式實現了雙編碼。
 樓主| 發表於 4-4-2023 23:18:36 | 顯示全部樓層
倉頡的做法有其優點。
通過這種做法,學習倉頡時只要記憶一個很小的字根表就夠了,不用記憶龐大的雙編碼字根表。而且,區分字首字身意味着檢索上有其優勢。例如,字身為「HAF」的字很可能就是帶「鳥」的字。

但是,這種做法同樣有其劣勢。
當一個字為上下形字時,字首字身的划分顯得很麻煩。 例如,「玄」是組合字就很容易令人感到迷惑。
再例如,細微的字形變化也可能導致字首字身出現改變,「無」就是一例。

為了解決這個問題,蒼頡檢字法規定上下型字僅在幾種特殊情況下當成組合字,否則一律作為整體字。但這種做法也有缺點,因為漢字實在太複雜了,幾種特殊情況何時適用又會造成爭議。

不能採用大字根是這種方案的優勢,也是劣勢。因為細微的字形變化就可能導致取碼改變,由此導致重碼增加。
 樓主| 發表於 4-4-2023 23:21:46 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 4-4-2023 11:24 PM 編輯

由此,我生出一種想法,即利用鄭碼的規則,但將字根表中的區碼-位碼換成倉頡的頭尾碼。

例如,「贝」在鄭碼中取「LO」,但倉頡頭尾碼是「BO」。
「足」在鄭碼中的區位碼是「JI」,但倉頡頭尾碼是「RO」。
通過這種置換,倉頡字根表退化為一種助記方式,鄭碼也套上了倉頡的皮。
由於鄭碼不用分割字首字身,所以這種方式製造出來的「倉頡」也不用劃分字首字身了。
 樓主| 發表於 4-4-2023 23:23:21 | 顯示全部樓層
於是,我通過修改鄭碼的字根表,自動編碼後得出了以下的編碼:
個        owjr
倌        ojrr
倍        oyr
倎        obtc
倏        olki
倐        olhf
們        oan
倒        omln
倓        off
倔        osuu
倖        ogtj
倗        obb
倘        ofb
候        olso
倚        okmr
 樓主| 發表於 4-4-2023 23:25:12 | 顯示全部樓層
可以看到,上述的編碼和倉頡原編碼有很大的相似度。
通過這種方式,原倉頡用戶可以很快地學會這種方案。
 樓主| 發表於 4-4-2023 23:29:38 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 4-4-2023 11:34 PM 編輯

但是,我又發現鄭碼的一些編碼方式,尤其是在三基根字中可能會造成比較嚴重的繁簡重碼,與原版倉頡也相差較大。
例如,按鄭碼規則,
「測」→「氵貝刂」,如果套用倉頡的頭尾碼,全碼會是「E BC LN」,簡省後是「EBLN」(水月中弓)。
「测」→「氵贝刂」,如果套用倉頡的頭尾碼,全碼會是「E BO LN」,簡省後是「EBLN」(水月中弓)。

兩者出現重碼,也和原版倉頡有一些差異。

但如果修改成三基根字取頭+頭尾+尾的話,就會是「EBCN」(水月金弓)和「EBON」(水月人弓)了,不仅和原版倉頡一致,還避開了重碼。
按這種規則,上述示例的編碼是:
個        owjr
倌        ojrr
倍        oytr
倎        obtc
倏        olki
倐        olhf
們        oan
倒        omin
倓        off
倔        osuu
倖        ogtj
倗        obb
倘        ofib
候        olso
倚        okmr
截屏2023-04-04 23.26.36.png
發表於 7-4-2023 11:28:59 來自手機 | 顯示全部樓層
期待後續出現新規則😉
發表於 7-4-2023 12:41:43 | 顯示全部樓層
馬拉一個錘子 發表於 4-4-2023 11:23 PM
於是,我通過修改鄭碼的字根表,自動編碼後得出了以下的編碼:
個        owjr
倌        ojrr
於是,我通過修改鄭碼的字根表,自動編碼後得出了以下的編碼:
個        owjr
倌        ojrr
倍        oyr
倎        obtc
倏        olki
倐        olhf
們        oan
倒        omln
倓        off
倔        osuu
倖        ogtj
倗        obb
倘        ofb
候        olso
倚        okmr

我可否理解為你想要把所有的鄭碼字根都定義成倉頡的複合字?比如「咅yr」、「尙fb」。
發表於 19-8-2023 22:54:56 | 顯示全部樓層
我本身也試試看自己訂立一套規則,其中也有雙編碼,發現有幾個問題:
1. 雙編碼跟「速成輸入法」不相容。一般雙編碼的字根用的是第一碼,而尾碼用的是雙編碼的第二碼。
2. 雙編碼的字型必須很大,不然,某一個字如果有兩個字根是雙編碼的話,難以决定要用哪個,省略哪個。
發表於 22-8-2023 00:12:53 | 顯示全部樓層
什麼時候出試用版呢?
我一定會第一時間試用下 ^-^
發表於 22-12-2023 08:36:14 | 顯示全部樓層
本帖最後由 ssh 於 26-12-2023 08:17 AM 編輯

看了以上各樓的發表,我很高興大家都有自己的想法,而不是攻詰別人不好,大家都很理性。
您需要登錄後才可以回帖 登錄 | 注册

本版積分規則

Archiver|手機版|小黑屋|康熙字典与倉頡之友

GMT+8, 4-12-2024 03:48 AM , Processed in 0.016684 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表






倉頡之友 .自學倉頡輸入法    1997 - 2024   
馬來西亞    https://www.chinesecj.com
姐妹站:康熙字典網上版