Google Sheets 示範客家話拼音數字轉調號
用 RegexReplace,ArrayFormula,TextJoin,一條公式搞掂客家話拼音數字轉調號
--
厓今下學客家話,愛整理下客家話嘅字音分自家用。今日做嗨一隻 Google Sheets 去將數字換做調號(diacritics),所以寫隻文章,講下吾嘅解決方法。
呢排我學緊客家話,遇到一個問題:啲詞語可以用漢字去寫,但係記字音要用拼音,由於有啲變調規則,用數字唔係咁直觀,轉做調號會睇得方便啲。香港客家話嘅調係噉樣嘅(略過變調規則):
例子
【廣州話】「我叫阿擇,住喺將軍澳。」
【客家話】「厓安做亞擇,住在將軍澳。」
【拼音1】「ngai2 on1 zo4 A1 Cak6, cu4 coi1 Ziong1 Giun1 Au4」
拼音用數字應該要啲時間適應,為咗方便起見,如果啲聲調可以用調號呈現,學起上嚟就方便得多嘞。呢款拼音只係用咗四款調號:第一調(低升)係 Acute accent(「á」U+0301),第二調(低平)係 Macron(「ā」U+0304),第三、五調(中降)係 Breve(「ă」「ăk」U+0306),第四、六調(高降)係 Grave Accent(「à」「àk」U+0300)。
【拼音2】「ngāi ón zò Á Càk , cù cói Zióng Giún Àu」
以上係劉鎮發教授用嘅拼音,詳情可以睇客家大學堂。
唔識客家話嘅朋友,都可以試下聽,上面有字幕,有教學,聽幾個鐘頭就會開始識聽。
手頭上嘅材料用咗數字去寫,要逐個人手打成調號,實在太麻煩。所以首先我就用 Python 寫咗個程式轉做調號。拆開呢音節做 onset / nucleus / coda / tone,再將調號加喺主元音後面。
但係要大家執行 Python 程式碼實在太煩,如果可以直接一條 Excel (泛指所有試算表)公式可以直接轉換就好。
我哋呢度用咗 Google Sheets 提供嘅 Excel 功能,入面有一個好強大嘅 RegexReplace 函式,可以喺字串入面揾出你想要嘅部份,再取代咗佢。
好喇喎!你唔好再 genericize「Excel」呢個字!
點解就噉 find and replace 就解決到呢個問題?想像下我哋嘅目標先:
- 輸入:數字式拼音「ngai2」
- 中間:數字式拼音易位「nga2i」
- 輸出:調號式拼音「ngāi」
實際做嘅嘢係將「2」調喺主元音後面,再換做一橫(Macron)。香港客家話嘅音系相對簡單,主元音只得 aieou 五個,我哋只需要揾出韻尾,將佢同數字調轉就得。
呢度用咗兩個 RegexReplace。入面呢一格〖數字拼音〗(換做 A2、B5 呢啲儲存格嘅位置)。入面嗰一層,佢會揾出兩種情況:① 全個音節係 Ng 或者 ng(例如「魚(ng2)」),或者② 非元音(Regex 係 [^aeiouAEIOU])緊接住 i 或者 u,亦即係代表呢個 i 或 u 就係主元音。呢兩個情況下就係冇韻尾,所以唔使轉換。為咗標記呢個係音節尾,我哋加一個 % 喺聲調數字前面代表「冇韻尾」,等下一步嘅 RegexReplace 唔會誤認咗呢度嘅 ng,i,u 做韻尾。公式入面, $1 代表第一個 () 入面嘅內容,而 $2 就係第二個 ()。
下一個 RegexReplace 就係將數字 1-6 同有可能嘅韻尾(即係 i, u, m, n, ng, p, t, k,仲有啱啱加嘅 %)倒轉,變成先數字,後韻尾,即係上面嘅「易位後」嘅樣。
regexreplace(
regexreplace(
〖數字拼音〗,
"(^[Nn]g|[^aeiouAEIOU][iu])([1–6])",
"$1%$2"
)…