中文拼音解析:79,000 多句語料揭示了什麼
我分析了來自 Tatoeba 的 79,704 句中文,想了解實際上會出現哪些拼音音節。這份語料包含 1,161 個不重複的音節(可能還有一些更冷僻的沒有涵蓋在內)。我用 Trie 資料結構把每個音節都對應起來,發現聲調分布、字的複雜度與多音字發音上的一些規律,跟教科書所說的並不相同。
以下就是資料揭示的內容。
Trie 結構
Trie(前綴樹)是一種資料結構,從根節點到葉節點的每條路徑都代表一個完整字串。對拼音來說,每個節點是單一個字母,沿著 h → a → n → 4 這樣的路徑走下去,就得到音節「han4」。
拼音音節構成一棵樹,每個字母都是一個節點。以下是完整的 h 分支,顯示音節如何從根節點延伸到終端節點:
從根節點到所有完整音節(ha、hao、he 等)的 h 分支。虛線表示其他分支。
更多探索:
第 1 層 →
第 2 層 →
第 3 層 →
完整 Trie → (將滑鼠移到節點上可看細節)
聲調的悖論
輕聲只占不重複音節的 2.2%,卻占實際用字的 8.4%。為什麼?因為極為常見的語法虛詞(的、了、嗎、麼)全都是輕聲:
從三個角度看聲調:依音節、依字、依頻率
關鍵觀察:第四聲在各項指標上都占主導(27-34%),而輕聲則因為虛詞頻率高,表現遠遠超出它的音節比重。
音節的擁擠程度
大多數拼音音節只對應少數幾個字。但有少數音節極為擁擠:
每個音節對應的字數,多數是 3-4 個字,但有些超過 30 個
最擁擠的音節:
- yi4:37 個字(意、義、議、異、易、億、藝、益……)
- shi4:32 個字(是、事、市、式、試、視、世、士……)
- ji4:30 個字(記、際、計、技、季、繼、既、寄……)
另一方面,有些音節只對應唯一一個字:wo3(我)、le0(了)、ni3(你)。
多音字的迷思
教科書強調許多漢字有多種讀音。但在這份語料出現的 5,002 個字中,真正是多音字的只有 3.8%(199 個字)。Unicode 雖然定義了 80,000 多個漢字,本篇分析聚焦的是學習者在真實使用中會遇到的字:
讀音最多的前 20 個字
即使某個字確實有多種讀音,通常也有一種讀音占絕對多數:
- 的:4 種讀音,但 99.8% 的情況都讀
de0 - 一:3 種讀音,但
yi1是主要形式 - 著:5 種讀音(語料中讀音最多的字)
音節結構
大多數中文音節在深度 4 完成(3 個字母加聲調,例如 ban1 或 mao2):
依深度統計的音節完成情況,41.5% 的音節在深度 4 完成(1,161 個中有 482 個)
最長的音節(深度 7:6 個字母加聲調)全都是 -uang 組合:
- chuang1、chuang2、chuang3、chuang4
- shuang1、shuang3
- zhuang1、zhuang4
音節 × 聲調涵蓋情況
去掉聲調後,1,161 個音節收縮為 401 個基本形式。這張熱圖顯示哪些基本音節在 5 個聲調中都存在:
401 個基本音節 × 5 個聲調。格內數值為字數。有些基本音節在所有聲調中都存在,有些只出現在一兩個聲調中。
觀察:
- 大多數基本音節並沒有 5 種聲調變體
- 輕聲(第 0 欄)相當稀疏,只有 25 個基本音節有輕聲
- 有些基本音節只出現在特定聲調(僅出現在 1-2 個聲調欄位)
主要發現
- 79,704 句中共有 1,161 個不重複音節;去掉聲調後為 401 個基本音節(每個基本音節平均 2.9 個聲調)
- 91.8% 的字在實際使用中只有一種讀音,教科書對多音現象的描述在真實使用上被誇大了
- 輕聲:占音節的 2.2%,卻占使用量的 8.4%;差距來自語法虛詞(的、了、嗎、麼)
- 第四聲在音節、字與使用量上都占主導(27-34%)
- 前 10 個音節占全部用字次數的 18.8%;每個音節平均有 4.5 個同音字,其中 yi4 高達 37 個
實際意涵:學習者若掌握了頻率最高那一成的音節及其主要讀音,就能涵蓋大部分的閱讀負擔。多音問題集中在少數幾個字上,而非分散在整份語料中。
技術註記
本分析基於 Tatoeba 語料庫 中的 79,704 句中文。我建立了一個以字母為單位的 Trie 資料結構,每個節點代表單一個字母或聲調數字,終端節點則儲存字的中介資料與頻率資料。
工具:Python 3.9+、matplotlib(圖表)、graphviz(樹狀視覺化)
資料流程:
- 從語料中擷取字
- 用 jieba + pypinyin 及/或 GPT-4o-mini 計算拼音
- 建立 Trie 結構
- 分析分布、規律與邊緣情況
資源
- GitHub 上的 hanzi-flow - 完整分析程式碼與視覺化
- Tatoeba - 句子語料庫