木合塔爾·沙地克+布合力齊姑麗·瓦斯力
摘要:該文首先用Python程序,自動獲取基本漢字字符集中的所有漢字,然后用漢字拼音轉換工具pypinyin把所有漢字轉換成拼音,最后根據所有漢字的拼音聲調,統計并可視化拼音聲調的占比。
關鍵詞:數據分析;數據可視化;文本挖掘
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)35-0013-02
1 背景
漢字是世界上最古老的文字之一,已有四千多年的歷史。現存最早可識的漢字是 殷商 的甲骨文和稍后的金文,現代漢字即由甲骨文、金文演變而來。在形體上逐漸由圖形變?yōu)楣P畫,象形變?yōu)橄笳?,復雜變?yōu)楹唵?;在造字原則上從表形、表意到形聲。除極個別的例外,都是一個漢字一個音節(jié)。
漢字的數量并沒有準確數字,大約將近十萬個(北京國安咨訊設備公司漢字字庫收入有出處漢字91251個),日常所使用的漢字只有幾千字。據統計,1000個常用字能覆蓋約92%的書面資料,2000字可覆蓋98%以上,3000字則已到99%,簡體與繁體的統計結果相差不大。
漢字是漢語的書寫文字,每個字代表一個音節(jié)。中國大陸現今以普通話作為標準讀音,普通話的音節(jié)由一個聲母、一個韻母及聲調確定,實際用到1300多個音節(jié)。由于漢字數目龐大,因而有明顯的同音字現象;同時還有同一字多音的情形,稱為多音字。這一情況在漢語各種方言中是普遍存在的。
最早的注音方法是讀若法和直注法。讀若法就是用音近的字來注音,許慎的《說文解字》 就采用這種注音方法,如"埻,射臬也,讀若準"。直注法就是用另一個漢字來表明這個漢字的讀音,如"女為悅己者容"中,使用"說者曰悅"來進行注音。
近代以來,又發(fā)展出了漢字形式的注音符號以及很多拉丁字母注音方法。注音符號仍是中國臺灣地區(qū)教學的一部分,而目前中國大陸最為廣泛使用的是漢語拼音。
由于漢字以本身表義為主,注音方面較為薄弱。這個特性使得上下千年的文獻,不至于產生如同使用拼音文字的西方一樣,用字措辭太懸殊的差距,但也造成推斷古代聲韻的難度。例如"龐"從"龍"而得聲,但今日北京話前者讀"páng",后者為"lóng"。如何解釋這樣的差異,就是音韻學所探討的課題。需要注意的還有聲調:陰平,陽平,上聲,去聲,輕聲(元音āáǎàa ōóǒòo ēéěèe īíǐìi ūúǔùu ǖǘǚǜü)。
1957年11月1日國務院全體會議第六十次會議通過,1958年2月11日第一次全國人民代表大會第五次會議批準的《漢語拼音方案》中聲調符號采用的是:陰平(ˉ)、陽平(ˊ)、上聲(ˇ)去聲(ˋ)、輕聲(不標調)的方法。這種方法解決了不同聲調漢字的區(qū)別問題。例如,媽 m?。幤剑?、麻 má(陽平)、馬 mǎ(上聲)、罵 mà(去聲)、嗎 mɑ(輕聲不標調)。為識字辨音立下了汗馬功勞。但隨著信息化的不斷發(fā)展,其與計算機鍵盤不相適應。
Unicode 是全球文字統一編碼。它把世界上的各種文字的每一個字符指定唯一編碼,實現跨語種、跨平臺的應用。表1是中文字符集的Unicode編碼范圍。
2 編程實現
從網上下載并安裝免費的最新Anaconda Python發(fā)行版(Anaconda Python最主要的優(yōu)點是,它會預先安裝幾百個最流行的Python富佳控模塊)和漢字拼音轉換工具pypinyin(下載和安裝過程略)。
下面是編程實現源代碼和代碼解釋
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 18 09:33:59 2017
@author: Muhtar
"""
#引入相關工具
from pypinyin import lazy_pinyin, Style
import matplotlib.pyplot as plt
from pylab import mpl
#為了顯示漢字,字體指定為SimHei
mpl.rcParams['font.sans-serif']=['SimHei']
#定義存放聲調頻率的變量
tone1=0 #第一聲
tone2=0 #第二聲
tone3=0 #第三聲
tone4=0 #第四聲
tone5=0 #輕聲
‘進入循環(huán),游歷基本漢字字符集中的所有漢字
for ch in range(0x4E00,0x9FA6):
‘獲取每個漢字的聲調:把漢字轉換拼音,拼音風格選擇Style.TONE3(即將拼音中的聲調用數字表示并放在最后一位),截取拼音的最后一位
tone=''.join(lazy_pinyin(chr(ch),style=Style.TONE3))[-1]
if tone=='1':#如果第一聲調
tone1+=1
elif tone=='2': #如果第二聲調
tone2+=1
elif tone=='3': #如果第三聲調
tone3+=1
elif tone=='4': #如果第四聲調
tone4+=1
else: #如果輕聲
tone5+=1
#統計結果保存在excel表中
filewriter=open('shengdiao_out.csv','w')
filewriter.write('聲調,次數\n')endprint