rime-yahwe
是一個使用 rime 中州韻輸入法引擎、基於上海中老派口音(當然,兼容新派)、脫胎於吳語協會式拼音的上海話拼音輸入法。安裝見 https://github.com/edward-martyr/Rime-Yahwe/。
緣起
rime 上已經給出了三種吳語的拼音方案:蘇州、上海老派、上海新派,可是拼音方案並不可調。於是乎想要把 rime 上的法吳拉丁化方案改爲我一直用的吳語協會拼音,並增加了一批模糊音及簡寫方案,這就成爲了 rime-yahwe
。(這其實大概只花了兩個小時……)
Methodology
取 plum 下上海老派的 wugniu_lopha.dict.yaml
詞典,用 Python 正則表達式替換成吳語協會式拼音。(法吳真的用不慣……每次打 夏rau
的時候都像 roar roar 叫……)。
import re
d = re.sub(r'i(?= |\n| )', 'ie', out)
d = re.sub(r'ij(?= |\n| )', 'i', out)
d = re.sub(r'q(?= |\n| )', 'h', out)
d = re.sub(r'uh(?= |\n| )', 'uih', out)
out = re.sub(r'gni(?=a|e|i|o|u)', 'ny', out)
out = re.sub(r'gni(?!a|e|i|o|u)', 'nyi', out)
#......等等
#業餘編程,代碼寫太醜就不全貼了 : (
另外,wugniu_lopha.dict.yaml
不知來源是哪兒,我使用下來有一些字的發音與上海話脫節,這一部分我手動添加了一些:
\(\begin{array}{lr} 國&\textsf{koh}\\ 哉&\textsf{zeh}\\ 黛&\textsf{de}\\ 刊&\textsf{khoe} \end{array}\) …so on
另外,吳語協會式拼音中表示清音的 '
這裏換成了 h
,比如 nhi
就是\(你_文\)的發音。
模糊音方面,有一些是上海話本來就不區分的,如從
、邪
二母 dz
、z
。另外是一些不必區分的清濁,如'l
、l
,沒有必要增加打字時的思考時間。前後 ah
aoh
等也默認爲不區分。當然,這些都可以在 yahwe.schema.yaml
中修改。
簡寫定義了這些:
speller:
# ……
- derive/(.*)en/$1n/ # 方便呀
- derive/(.*)au/$1ao/
- derive/(.*(?:i|o|a|e|u))h/$1k/
- derive/^tsh/tt/
- derive/^sh/x/
- derive/^/q/
- derive/(.*)ah/$1aa/
- derive/(.*)oh/$1oo/
- derive/(.*)eh/$1ee/
- derive/(.*)ih/$1ii/
- derive/(.*)uih/$1uu/
- derive/^sy/ss/
- derive/^zy/zz/
- derive/(.*)uih/$1uh/
尖團默認是區分的,也可以修改:
- derive/^tzi/ci/ # 以下幾行是模糊分尖團音個
- derive/^tsi/chi/
- derive/^zi/ji/
- derive/^zi/zhi/
- derive/^si/xi/
撳下 ` 可以有反向查詢:
reverse_lookup:
dictionary: luna_pinyin
prefix: "`"
suffix: "'"
tips: 〔拼音〕
preedit_format:
- xform/([nl])v/$1ü/
- xform/([nl])ue/$1üe/
- xform/([jqxy])v/$1u/
詞庫方面,融合了朙月拼音的附屬詞庫以及搜狗的幾個詞庫(包括上海地名啥的),基本夠用。
import_tables:
- luna_pinyin.hanyu
- luna_pinyin.poetry
- inven
- seukeu
當然,搜狗的在用之前要
from hanziconv import HanziConv
HanziConv.toTraditional(...) # 轉繁體/正體