關於有聲調版碼表嘅問題
laubonghaudoi opened this issue · 5 comments
喺之前嘅討論中,我哋認爲有必要喺用戶輸入粵語嗰陣增加聲調嘅支持。但係考慮到向下兼容現有用戶詞庫嘅問題,唔可以單純噉將jyutping.dict.yaml
替換成有聲調版碼表,否則現有用戶詞典會全部失效。而一種解決方案係新建一個有聲調嘅碼表jyut6ping3.dict.yaml
,與現行嘅jyutping.dict.yaml
同時維護,但噉亦會引發以下問題:
碼表維護方式
- 呢個
jyut6ping3.dict.yaml
,係應該- 單獨另起一個倉庫,抑或
- 直接新建喺本倉庫維護
- 呢個
jyut6ping3.dict.yaml
同原有嘅jyutping.dict.yaml
係應該- 分開單獨維護,抑或
- 僅維護
jyut6ping3.dict.yaml
,然後利用腳本生成jyutping.dict.yaml
對於問題1,目前luna-pinyin同terra-pinyin即爲分立於兩倉庫嘅無聲調添加有聲調版普通話拼音方案。而同一倉庫維護多個碼表,甚至同一schema
共用多個dict
嘅實現,參考hubehua。
目前terra-pinyin
同luna-pinyin
分開維護,因爲無聲調版嘅後者字數比有聲調嘅前者多,無法直接通過腳本用前者生成後者。所以對於問題2,若採用方法ii就需要先確定jyut6ping3.dict.yaml
,再使用腳本轉換成jyutping.dict.yaml
。
碼表數據來源
目前嘅jyutping.dict.yaml
碼表數據來源係Unihan,喺下面kCantonese一欄可以睇到字音嘅數據來源都較複雜,而且暫時無法確定Unihan具體點確定某字讀音,剩知佢對ng- 0-嘅問題採用咗全部收錄嘅方法(呢點已經喺最新一次更新#17 中解決)。
而爲咗製作jyut6ping3.dict.yaml
,需要先確定字音數據來源。目前可以搵到嘅較權威嘅數據來源有:
- Unihan (現有碼表數據)
- LSHK Jyutping - Char - JP (12,000+字音)
- 粵音小鏡 (5000+字音)
- 廣州話正音字典 (10,000+字音)
- 常用字廣州話讀音表 建議讀音 (5000+字音)
所以可以見到,即使係以上資料,都冇辦法覆蓋現有碼表中嘅所有字(24,000+隻字)。對於呢啲無法覆蓋嘅字,應該捨棄定係就直接用Unihan入邊嘅發音?定係有其他解決方法?
我覺得方案2.ii.最為可取。因為,維護成本理應為眾多方案中最低,且維護時比較難產生不協調的地方。
我亦覺得方案2.ii.最為可取。
單字方面,若不計重複字,現有無聲調詞庫收單字 20081 個(本表中第 560 行「洴」,第 7329 行「枅」,第 7703-7705 行「龜」,第 11725 行「益」,第 15187 行「廊」,第 15310 行「虜」屬於兼容區漢字,應刪去)。LSHK Jyutping - Char - JP.csv
表收字 10684 個,剩餘字使用 Unihan 補充即可。Unihan 資料有聲調,因此可以達到有聲調碼表的要求。
詞語方面,可以採用 LSHK Jyutping Word List 的數據。根據我在 sgalal/lshk-word-list-crawler 的統計,該表包含的詞組讀音資料有 15616 筆。
我認為有聲調粵拼方案可以設計如下:
該方案是一個粵語拼音輸入方案,採用粵語標準音,拼音默認使用香港語言學學會粵語拼音方案,同時提供其他拼音方案的支持,詞庫中的拼音包含聲調。該方案同時支援書面語和粵語口語。
該方案的資料來源為:單字讀音資料來自 LSHK Jyutping - Char - JP.csv
與 Unihan 中的 kCantonese,優先採用 LSHK 表中的資料,且對來自 kCantonese 中的資料進行一定的修正(例如恢復 ng 聲母與零聲母之對立)。詞語讀音資料來自 LSHK Jyutping Word List。粵語正字資料來自 粵語協會方案.csv
。另外,由於資料中的漢字採用香港標準,為兼容 Rime 八股文詞庫,首先將資料中的漢字變換為 OpenCC 標準,再使用 Rime 內置的 OpenCC 模組變換為包括香港標準在內的其他標準。
@sgalal 關於轉換爲OpenCC的問題,我還不太清楚如何操作。目前的無聲調碼表是否OpenCC標準?
關於正字的問題,我認爲目前暫無需考慮。因爲輸入法碼表只用儘可能將所有寫法收錄,正字只影響詞頻,即把正字放於後選詞第一位。而這一步可以等到最後完成。另外粵語協會方案有一個更新版,即粵研社方案,位於我倉庫的dev branch裏粵研社方案.csv
如果按照這個方案,那下一步需要進行的工作如下:
- 將Unihan和LSHK表中數據轉換爲OpenCC標準
- 收錄LSHK表中全部10684個字
- Diff出LSHK表和Unihan中數據差異,收錄Unihan中剩餘字
- 修正碼表中疑影不分等其他讀音問題,參考數據爲《廣韻》和《廣州話正音字典》等
- 開發碼表轉換腳本,將此
jyut3ping6.dict.yaml
轉換成無聲調,再與本倉庫的jyutping.dict.yaml
diff出差異,根據此差異分別對兩碼表字音修正 - 收錄本倉庫中
jyutping.dict.yaml
已收錄詞組,及LSHK詞表。
如果是這樣,我認爲暫時不要將此帶聲調版碼表放於此倉庫內,而是單獨在sgalal/rime-cantonese中維護。
目前有聲調版粵拼方案已初步完成,相關討論將轉移至此倉庫rime-cantonese