基礎拆分教程
漢字拼圖
先前説過,拆字,就是把漢字按照一定的規則,拆成唯一的字根組合。這個過程如同拼圖一般,大多數時候,是非常直觀而自然的。這種將字拆成直觀的、分離的部件的方法,足以應付大部分漢字的拆分。
例字
但在實際使用中,會遇到這樣的問題:
一個獨體字,本身不是字根,該怎麽辦?
這時候,我們要把它繼續拆成更小的字根甚至筆劃。
例字
「戋」這個字,我們可以繼續將它拆成「一」和「戈」。查字根圖可知,「一」和「戈」正好是兩個字根,拆字成功。
「丸」這個字,我們可以繼續將它拆成「九」和「丶」。查字根圖可知,「九」和「丶」正好是兩個字根,拆字成功。
「朱」這個字,我們可以繼續將它拆成「牛」和「八」。查字根圖可知,「牛」和「八」正好是兩個字根,拆字成功。
有時候,獨體字的拆分不是很直觀。遇到此類字時的拆分,往往需要一些經驗和練習。而更麻煩的情況是,一個字好像有幾種拆分方法。比如以下這些字例:
例字
「再」,可以拆「一冂土」,也可以拆「王冂」。
「井」,可以拆「二」,也可以拆「一廾」。
「单」可以拆成「丷日十」也可以拆成「丷冂丰」。
主「可以拆成」「丶王」也可以拆成「亠土」。
這種一個漢字、多種拆法的情況,是漢字的本質所決定的,本質上不是錯誤。但一字多拆,確實帶來了極大的不確定性,會造成編碼的混亂[1]。我們無法避免一字多拆,但能通過制定一套明確的拆字規則,來選出唯一的拆分方案。
拆分規則
宇浩拆分,就是總結了前輩輸入法的拆字規則,通過大量的努力和自我審視,明確了一套嚴格的優先級系統,使得每一個漢字,都有唯一的拆分方案,消除了不確定性[2]。這套規則,有三個核心目標:
- 直觀性:絕大部分的漢字,能夠被直觀地拆分,符合人們對漢字結構的認知。
- 唯一性:絕大部分的漢字,能夠被唯一地拆分,消除不確定性。
- 簡潔性:拆分規則簡潔明了,避免過多特例,易於理解和記憶。
請注意,雖然拆分規則的第一目標是直觀性,但總有部分漢字在部分人群的眼中不夠直觀,這是無法避免的。漢字本身具有多樣性和複雜性,各人的學習經歷也大相徑庭,不可能讓每個字都滿足所有人的口味。因此,規則定下後,就算有部分漢字的拆法不够直觀,我們也不再設置特例去調整它們的拆分方法,也不會加入直觀優先的灰色地帶。這是爲了保證規則的簡潔性和拆分的唯一性。這一點,在面對大字集的時候,顯得尤為重要。
拆字優先級
「宇浩」拆字規則,按優先級排序如下:
- 字根最少
- 結構完整
- 符合筆順
- 能散不連
- 能連不交
- 能交不斷
- 保持原形
- 向前取大
以上優先級,還可以高度歸納爲:少整順散連交斷原大。
取根時,如果有多種不同的拆分方式,則按優先級從高到低依次檢查以上規則,選取符合條件的,排除不滿足的,最終得到唯一的拆分方案。因此,某種意義上來説,宇浩輸入法的拆分規則,其實是一種比較和淘汰的排除法。
以下爲拆分規則詳細介紹[3]:
字根最少
字根最少,意思是拆分一個字時,應該使得拆出的字根數量盡可能地少。
保證字根數量最少,是優先級最高的規則。
例字
「国」如果完全符合筆順,應該拆成「冂王丶一」,是四個字根。但拆成「囗王丶」,只用三個字根就夠了。因爲「少」優先級高於「順」,所以應該拆成「囗王丶」。
「國」如果完全符合筆順,應該拆成「冂一口一𠄌丿丶一」,是八個字根。但拆成「囗戈口一」,只用四個字根就夠了。因爲「少」優先級高於「順」,所以拆成「囗戈口一」。
結構完整
結構完整,指的是存在半包圍形態的字根和存在全包圍形態的字根不拆散。包括:
- 勹⺆冂匚コ凵
- 囗(日田目)
這個原則的設置,是爲了不過分破壞漢字的整體性和直觀性,讓相似形態的字擁有相似的拆分方式。下面幾個例子可以說明這一點。
例字
「昜」拆「日一勹」不拆「日丆𠃌」,因為前者的半包圍結構完整。
「单」可以拆成「丷日十」也可以拆成「丷冂丰」。兩者都是三根。觀察到「丷冂丰」打破了方框的完整。基於全包圍結構不拆散,「单」拆成「丷日十」。
「免」可以拆成「⺈口」也可以拆成「⺈冂尢」。兩者都是三根。觀察到「⺈冂尢」打破了方框的完整。基於包圍結構不拆散,故而「免」拆成「⺈口」。
「万」拆成「一」而非「丆㇆」。因爲前者不僅完全符合筆順,同時也保持了結構完整。
「匹」拆「匚儿」而不拆「兀乚」,因爲前者結構完整。相似結構的「区医」也都是類似的拆法。
符合筆順
注意到,爲了使字根數量較少、或者讓結構完整,某些大於等於兩劃的字根,它的筆順可能會被另一個或多個字根穿插打斷。
比如:「固」字如果拆分成「囗古」兩根,則「囗」字根不是一次性寫完的:它的前兩筆和最後的一橫之間穿插寫了一個「古」。這種情況,有些人會覺得更加直觀(全包圍結構),但有時候會讓人感覺不自然(違背了筆順)。這說明我們對於「筆順」這個因素,不能完全忽視。
在介紹「符合筆順」這個規則前,我們先引入字根「一體寫就」的概念:當我們嚴格按照筆順書寫一個漢字時,如果某個字根能夠一次性寫完,不被其他字根穿插打斷,則稱這個字根是「一體寫就」的[4]。相對的,如果某個字根在書寫過程中被其他字根穿插打斷,則稱這個字根是「穿插寫就」的。
那麼,任何一個漢字的任何一種拆分方式,都不外乎以下三種情況:
- 全部字根一體寫就(又稱整體符合筆順):指這種拆分方式下,所有的字根都一體寫就,字根之間不會互相干擾穿插。比如,「涸」字若拆成「氵冂古一」,便算作整體符合筆順。
- 部分字根一體寫就(又稱局部符合筆順):指這種拆分方式下,一部分字根一體寫就,另一部分的字根會穿插寫就。「涸」字若拆成「氵囗古」,便算作局部符合筆順,因為其中的「囗」不是一體寫就的,而「氵」「古」都是一體寫就的。
- 全部字根穿插寫就(又稱整體不合筆順):指這種拆分方式下,所有的字根都是穿插寫就的。「州」字若拆成「川」,便算作整體不合筆順。這種情況很少出現,一般見於兩根字中。
「符合筆順」規則便是要求:如果存在兩種不同的拆分方式,則優先選擇一體寫就字根更多的那一種拆分。
符合筆順的優先級低於字根最少。
例字
「来」可以拆成「一米」也可以拆成「未丷」,都是兩根,但拆成「一米」時,全部字根一體寫就。
「聿」可以拆成「彐キ」也可以拆成「肀二」,都是兩根,但拆成「彐キ」時,全部字根一體寫就。
「妻」可以拆成「十彐女」也可以拆成「キコ女」,都是三根。拆成「十彐女」時,兩個字根一體寫就;拆成「キコ女」時,只有一個字根一體寫就。故而拆成「十彐女」更符合筆順。
散連交斷
散·連·交·斷,是漢字部首或筆畫的四種狀態。
- 字根離散,指的是兩個字根互相分離。比如「部」中的「立口阝」,便是三個分離的字根。
- 字根相連,指的是兩個字根互相連接。比如「美」拆爲「𦍌大」,這兩個字根是相連的。
- 字根相交,指的是兩個字根互相交叉。比如「再」拆成「一冂土」三個字根,便是相交的。
- 筆劃斷開,指的是一個筆劃(橫或豎)斷開。比如「我」拆成「丿扌戈」三個字根,其中的「扌」和「戈」兩根的橫本是一筆寫成,但我們將橫畫斷開。
「散連交斷」,優先級依次下降,但都排在「字根最少」「結構完整」「符合筆順」之後。
能散不連
兩個字根互相分離,優於兩個字根互相連接。
例字
「主」可以拆成「丶王」也可以拆成「亠土」。觀察到,「丶王」是散開的,而「亠土」是相連的,後者符合「能散不連」。
能連不交
兩個字根互相分離,優於兩個字根互相交叉。
例字
「开」可以拆成「一廾」也可以拆成「二」。觀察到,第一種拆法字根相連,第二種拆法字根相交。故而拆成「一廾」符合「能連不交」。
能交不斷
兩個字根互相交叉,優於將筆畫斷開。
例字
「果」拆作「日木」,不拆成「田木」或「甲木」,這是因爲後者將中間的豎斷開了。因爲「字根相交」的優先級高於「筆畫斷開」,「果」應當拆成「日木」。
「栽」拆作「十戈木」,不拆成「土戈木」,這是因爲後者將中間的横斷開了。因爲「字根相連」的優先級高於「筆畫斷開」,「栽」應當拆成「十戈木」。
筆畫斷開
爲了根少和直觀,不少輸入法允許將一些筆畫斷開,分屬不同的字根中。
宇浩拆分中,有且只有以下兩種情況可以斷開筆畫:
- 「我識羲」等字中「戈」的橫,可以向左斷開。
- 「重熏」等字中「千」的竪,可以向下斷開。
在本教程中,被斷開的筆畫使用灰白色標識,以示區別。
例字
「我」拆作「丿扌戈」,不拆成「丿扌乚丿丶」。雖然前者將中間的橫斷開了,但因爲「字根最少」,我們選擇只有三根的「丿扌戈」。
「熏」拆作「千黑」,不拆成「千囗丷二灬」。雖然前者將中間的豎斷開了,但因爲「字根最少」,我們選擇只有兩根的「千黑」。
因為筆畫被斷開並歸入兩個字根,因此這一筆的筆順被兩個字根共享。比如:
「戠」應當拆成「立戈日」,而不是「立日戈」,因爲被斷開的橫畫同時屬於「立」字根和「戈」字根,橫畫的筆順早於「日」字根,故而「戈」應當排在「日」之前。
這樣的規定,一方面保證了客觀筆順的正確性,另一方面也保證了相似結構的字擁有相似的拆分方式。比如:「栽」拆作「十戈木」、「武」拆作「一戈止」、「戠」拆作「立戈日」,不管斷筆還是不斷筆,都保證「戈」的位置一致。
保持原形
部分字根在做偏旁的時候,由於書法的考慮,會有略微的變形處理,將「丨」寫作「丿」。為了拆分直觀,我們不能濫用這些變形字根。「保持原形」規則,便是要求此類變形字根數量盡可能少。
丨寫作丿的變形字根包括以下這些:
- 千 變成
- 干 變成
- 變成
- 丰 變成
- 羊 變成
例字
「失」拆「丿夫」而不拆「牛乀」,因爲「牛」的一豎是撇。故而對「夫」取大。
「井」拆「二」而不拆「丨」,因爲「」的一豎是撇。故而對「」取大。
「缓」拆「纟⺤又」而不拆「纟⺤二夂」。雖然前者「干」的豎寫作撇,但字根没有相交。後者則出現了相交。根據規則優先級,能連不交,故而拆爲「纟⺤又」。
向前取大
向前取大,指的是讓首筆靠前的字根的筆劃數儘可能地多。
這是一個兜底原則,可以保證最終只有一個候選方案能夠勝出。它的優先級是所有拆字規則中最低的。
例字
「夬」拆爲「ユ人」,而不拆成「乛大」,因爲「字根取大」原則。讓首筆靠前的字根的筆劃數儘量地多,這裡,「ユ」的筆畫數大於「乛」。
「丈」拆爲「𠂇丶」,而不拆成「一乂」,因爲「字根取大」原則。讓首筆靠前的字根的筆劃數儘量地多,這裡,「𠂇」的筆畫數大於「一」。
字根排序
在拆分出唯一的字根組合後,我們需要對字根進行排序。
字根的排序,應當使其第一次出現的順序,和漢字筆順一致。
這一條不言而喻,畢竟你不會把「的」的字根排列成「丶勹白」。
矛盾衝突
規則的制定,是為了讓大多數漢字的拆分結果符合直觀感受。但是,總有一些漢字,無法做到這一點。一般地,我們有兩種策略:
- 嚴格按照規則,並接受一些感性和理性之間的矛盾衝突。
- 對部分漢字設置特例,調整其拆分方法,以符合更多人的感性認知。
宇浩拆分,選擇了第一種策略。這是因爲,我們對於常用字的直觀體驗,無法完美地延伸到大字集中。當面對繁簡通打和大字集時,設置特例會帶來極大的不確定性和混亂。因此,我們只能接受部分漢字的拆分結果可能不夠直觀這一事實。
這種策略的選擇,主要基於宇浩系列輸入法的定位,而不是普世的。對於着些著眼於小字集輸入法,設置部分特例,調整拆分方法,可能是更合適的選擇。
以下是一些常見的矛盾衝突情況:
包含關係
我們可能會自然而然地認為,如果漢字 A 中包含漢字 B,則 A 的拆分結果中一定包含了 B 的拆分結果。
很遺憾,這一點未必成立,尤其是當 A 和 B 都是獨體字的時候。
例字
「亚」,候選拆分「一业」「䒑」「丷一」。
- 首先排除「䒑丿」。原因是「䒑」字根中的點應當和橫相連(艹字頭的行書寫法),而「亚」字中兩點分散了,這違反了字根的內在屬性。
- 「丷一」是三根,故而「一业」勝出。
「严」,候選拆分「一业丿」「丷厂」「䒑丿」。
- 首先排除「䒑丿」。原因是「䒑」字根中的點應當和橫相連(艹字頭的行書寫法),而「严」字中兩點分散了,這違反了字根的內在屬性。
- 「一业丿」和「丷厂」都是三根,都完全符合筆順,都連而不交,都不斷筆,都保持原形。
- 進入兜底規則,字根向前取大,故而「丷厂」勝出。
相似形態
有些漢字,形態極爲相似,但拆分結果卻不一致。這是因爲,拆分規則的優先級系統,往往會導致一些出人意料的結果。
例字
「失」,候選拆分「丿夫」「牛丶」。它們都是兩根,都相連。但「牛丶」中「牛」的一豎寫作了撇,違反了保持原形規則,故而「丿夫」勝出。
「朱」,候選拆分「丿未」「牛八」。它們都是兩根,都相連,都沒有出現丨丿變形,因此我們進入兜底規則,依照筆順向前取大,故而「牛八」勝出。
「午」,候選拆分「丿干」「𠂉十」。它們都是兩根,都相連,都沒有出現丨丿變形,因此我們進入兜底規則,依照筆順向前取大,故而「𠂉十」勝出。
以上三個例子中,「失」「朱」「午」形態極爲相似,在不少人的眼中,它們都應該拆成「丿」+「牛/未/干」的形式。但根據拆分規則,最終的拆分結果卻不盡相同。我們只能接受這種矛盾衝突,因爲這是漢字本質和拆分規則共同作用的結果。
拆字舉例
更多例字
想要了解更多具有代表性的例字在宇碼中的拆分,請參見字海拾珍——必拆字舉隅。
如果你想了解使用頻率最爲靠前的幾百個漢字在宇碼中的拆分,可以點擊進入高頻字拆分圖解(簡化字)或高頻字拆分圖解(傳統字)頁面。
實際拆字時,如果你感覺拆分方法不唯一,那麽可以用以下方法找到最優解:
- 列出所有可能的候選拆分方案。
- 依照「少整順散連交斷大」的規則順序,依次比較各個候選拆分。
- 如果所有的候選拆分都不滿足本條規則,則進入下條規則。
- 如果部分的候選拆分滿足本條規則,則該部分的候選拆分方案進入下條規則。
- 直到只有一個候選拆分方案勝出。
以下通過部分例字來説明如何更好地使用拆分規則:
例字
「亷」,候選拆分「亠丷厂彐〢八」和「立丿彐〢八」。
「亠丷厂彐〢八」六根,「立丿彐〢八」五根。後者字根最少,直接勝出。
| 拆分方案 | 亠丷厂彐〢八 | 立丿彐〢八 |
|---|---|---|
| 字根最少 | 6 ❌ | 5 ✅ |
| 剩餘規則 | 跳過 | 跳過 |
「重」,候選拆分「丿車一」和「千里」。
「千里」是兩根,滿足「字根最少」,直接雖然中間一豎斷開,但依然勝出。
| 拆分方案 | 丿車一 | 千里 |
|---|---|---|
| 字根最少 | 3 ❌ | 2 ✅ |
| 剩餘規則 | 跳過 | 跳過 |
「盡」,候選拆分「コ士灬皿」「乛龶灬皿」「彐丄灬皿」「肀一灬皿」四種。
| 拆分方案 | コ士灬皿 | 乛龶灬皿 | 彐丄灬皿 | 肀一灬皿 |
|---|---|---|---|---|
| 字根最少 | 4 ✅ | 4 ✅ | 4 ✅ | 4 ✅ |
| 結構完整 | ❌ | ❌ | ✅ | ✅ |
| 符合筆順 | 跳過 | 跳過 | 完全 ✅ | 完全 ✅ |
| 能散不連 | 跳過 | 跳過 | ✅ | ✅ |
| 能連不交 | 跳過 | 跳過 | ❌ | ✅ |
| 剩餘規則 | 跳過 | 跳過 | 跳過 | 跳過 |
「曱」和「甴」。
- 「曱」按笔顺向前取大,故而是「日丨」。
- 「甴」,候选拆分为「日丨」「囗丄」。两者都是两根,都結構完整,都有一個字根一體寫就。按笔顺向前取大,故而「日丨」勝出。
| 拆分方案 | 日丨 | 囗丄 |
|---|---|---|
| 字根最少 | 2 ✅ | 2 ✅ |
| 結構完整 | ✅ | ✅ |
| 符合筆順 | 一根 ❌ | 一根 ❌ |
| 能散不連 | ✅ | ✅ |
| 能連不交 | ✅ | ✅ |
| 能交不斷 | ✅ | ✅ |
| 保持原形 | ✅ | ✅ |
| 向前取大 | ✅ | ❌ |
「彧」,候選拆分「戈口一」「戈口一」「弋口一彡」「一口一乚彡丶」。
- 「戈口一」四根,「戈口一」四根,「弋口一彡」四根,「一口一乚彡丶」六根。
- 首先排除「一口一乚彡丶」,雖然它全部字根一體寫就,但「字根最少」優先級最高。
- 「戈口一」「戈口一」和「弋口一彡」中,穿插寫就的字根數量相同,均爲一個「戈」。都有「相交」情況。
- 進入兜底規則「字根取大」。觀察到,「戈」的筆畫數大於「弋」,故而「戈口一」和「戈口一」勝出。
- 按照漢字筆順,「口」出現於「」之前,故而排除「戈口一」。
| 拆分方案 | 戈口一 | 戈口一 | 弋口一彡 | 一口一乚彡丶 |
|---|---|---|---|---|
| 字根最少 | 4 ✅ | 4 ✅ | 4 ✅ | 6 ❌ |
| 結構完整 | ✅ | ✅ | ✅ | 跳過 |
| 符合筆順 | 三根 ✅ | 三根 ✅ | 三根 ✅ | 跳過 |
| 能散不連 | ✅ | ✅ | ✅ | 跳過 |
| 能連不交 | ✅ | ✅ | ✅ | 跳過 |
| 能交不斷 | ✅ | ✅ | ✅ | 跳過 |
| 保持原形 | ✅ | ✅ | ✅ | 跳過 |
| 向前取大 | 戈✅ | 戈✅ | 弋❌ | 跳過 |
| 字根排序 | ✅ | ❌ | 跳過 | 跳過 |
前輩輸入法的拆字規則,一般都有諸如「直觀」、「符合筆順」、「取大」等設置。但是優先級往往不夠明確,很多拆分方法並不符合規則,存在不少特例。在常用字範圍內,還可以通過大量練習來完成記憶,但到了大字集,規則不明確、規則相矛盾,都是造成檢字困難的因素。 ↩︎
當然,漢字不是完全可以量化的,不同字形下,也會出現不同的拆分可能。除了良好的定義外,有時候比例原則也很重要。尤其在大字集上,追求單一拆分方法會扭曲漢字直觀性,不能兼顧不同字形,讓使用者需要大量嘗試才能找到想要的字,這違背了大字集檢字的初衷。因此,對於大字集,也會設置兼容拆分和容錯碼。 ↩︎
在進行拆分前,首先需要「確認」某個字根到底存不存在,是否合規,也就是檢查字根的「內在屬性」。比如
土士,兩橫的長度直接決定了字根的異同。其次需要檢查一些「拆分禁手」,比如王中間如果被筆畫「穿心」,這是不被允許的。禁手有:散件不分割、豎向不包夾、橫間不穿心。對這兩點的討論作爲進階內容,於此處跳過。若有興趣,可以在後續章節 《進階討論》中閱讀。 ↩︎爲什麽要有完全合筆順這個規則,而且優先級那麽高?在我的認知中,形碼的基本出發點就是如同寫字一樣輸入一系列筆畫,即「五筆畫輸入法」。它是最自然,最直觀的,所以宇碼規則有了「符合筆順」。但是,輸入講求效率,必須把一些筆畫合併起來形成字根,它們的筆順可能會相互穿插,所以要有「根少優先」這個規則,把它的優先級放在了「符合筆順」的前面。最後,需要有個兜底條款「向前取大」來保證沒有拆分歧義。因此,形碼拆分有了「根少」「筆順」「取大」,其實已經足夠了。接下來的其他規則都是在這上面打補丁,爲了讓拆分更加「直觀」。 ↩︎
