SplitRule 音節切分規則,指定在音節邊界不明時如何做默認的切分。現行版本的ZIME輸入法均已不用該選項,而是智能處理所有可能的切分方式。 不寫。
接下來是重點!你的智商現在要用上了。
SpellingRule 和 FuzzyRule,用來對 xxx-keywords.txt 和 xxx-phrases.txt 中的拼式進行變換,從而把原方案轉換為新的拼寫法。 變換是由一系列正則表達式替換操作完成的。我把這項技術稱為「拼寫運算」。 具體來說,假如原方案中有個拼式為"zoeng",現在我要把它變為新方案中對應的拼式"jeong",對應規則是原拼法的元音 oe 改寫為 eo;原拼法的聲母 z 改寫為 j。我便寫兩條SpellingRule: Config/Penkyamp/SpellingRule = oe eo Config/Penkyamp/SpellingRule = ^z j 解釋一下:等號後面是兩個表達式,以空格隔開。前一個是要在拼式中匹配的模式,後一個是要替換掉匹配部份的新內容。 這個是程式設計常用的正則表達式,詳見:http://docs.python.org/library/re.html 拼式"zoeng"拿來與第一條規則匹配,結果匹配到了 z 和 ng 之間的部份,於是那部份替換為 eo,拼式變為"zeong",再將這個結果與下一條規則匹配。 第二條規則中的 ^ 有特殊含義,表示匹配必須發生在拼式的開頭位置,用在這裡強調要匹配聲母z。事實上z也不可能出現在拼式的非啟始位置,所以 ^ 也可不用;但對於聲母 m n g p t k w 就是必要的了。 經過替換,"zeong"變成最終合乎新拼寫規則的形式"jeong"。
接下來還可以施以 FuzzyRule。FuzzyRule 與 SpellingRule 類似,但替換前後的拼式均保留在最終的拼寫法中,於是產生了一組相容的拼寫形式,也可用作拼式糾錯,如: Config/Penkyamp/FuzzyRule = ng gn 會得到一組新拼寫形式 dogn togn logn ... gno ...,輸入它們與輸入 dong tong long ... ngo ... 等效。
倘若經過 FuzzyRule 變換得到的拼式與某個已有拼式相同,則這一拼式可兼表原方案中的兩個拼式,可稱此為模糊音處理。 譬如: Config/Penkyamp/FuzzyRule = ^l n Config/Penkyamp/FuzzyRule = ^n l 則輸入"la"可列出讀若 la na 的所有單字。反之亦然。 Config/Penkyamp/FuzzyRule = ^([jcs]).*$ \1 這個模式裡,有機種正則表達式的特殊符號。 [ ] 括起的一組字母,匹配時可任選其一; ( ) 起分組作用(見下文); . 代表任意字符; * 代表前面的 . 數量有任意個(含0個); $ 和 ^ 意義相對,表示模式還要匹配到拼式末尾,即該模式必須恰好匹配完整個拼式。 替換內容中,\1 代表模式中的第一組 ( ) 匹配到的文字,即聲母 j c s 之一。 整個規則的作用是實現以 j c s 代表所有以該字母為首的拼式,即俗稱的「簡拼」;實質上是模糊音的一種。
為Penkyamp拼寫法,佛振總結出以下一組規則(順序很重要)。
# 以 # 啟始的行為註釋行 # 我的辦法是以 a' e' o' 表示三組長短對立元音中的短元音,好從元音中析取出短元音因素 ' 來韻尾一起做變換 # aa -> a ; a -> a' Config/Penkyamp/SpellingRule = aa A Config/Penkyamp/SpellingRule = a a' Config/Penkyamp/SpellingRule = A a
Config/Penkyamp/SpellingRule = eu$ eau
# e' Config/Penkyamp/SpellingRule = ei$ e'i Config/Penkyamp/SpellingRule = ing$ e'ng Config/Penkyamp/SpellingRule = ik$ e'k
# o' Config/Penkyamp/SpellingRule = ung$ o'ng Config/Penkyamp/SpellingRule = uk$ o'k Config/Penkyamp/SpellingRule = ou$ o'u Config/Penkyamp/SpellingRule = eo o'
Config/Penkyamp/SpellingRule = oe eo
Config/Penkyamp/SpellingRule = yu eu
# 用韻尾標示短元音 Config/Penkyamp/SpellingRule = ([aeiou])'$ \1h Config/Penkyamp/SpellingRule = ([aeiou])'i$ \1y Config/Penkyamp/SpellingRule = ([aeiou])'u$ \1w Config/Penkyamp/SpellingRule = ([aeiou])'m$ \1mp Config/Penkyamp/SpellingRule = ([aeiou])'n$ \1nt Config/Penkyamp/SpellingRule = ([aeiou])'ng$ \1nk
# 長元音,入聲韻尾改為 bdg Config/Penkyamp/SpellingRule = ([aeiou])p$ \1b Config/Penkyamp/SpellingRule = ([aeiou])t$ \1d Config/Penkyamp/SpellingRule = ([aeiou])k$ \1g # 短元音,入聲韻尾仍作 ptk Config/Penkyamp/SpellingRule = '([ptk])$ \1
# 聲母 Config/Penkyamp/SpellingRule = ^([gk])w \1u # 注意順序 Config/Penkyamp/SpellingRule = ^j y Config/Penkyamp/SpellingRule = ^z j
# 兼容拼式:z = j, gw... = gu..., kw... = ku..., 但 gu, ku 不能只寫 gw, kw Config/Penkyamp/FuzzyRule = ^j z Config/Penkyamp/FuzzyRule = ^([gk])u([aeo]) \1w\2
[ 本帖最後由 佛振 於 2010-1-11 20:50 編輯 ] |