标题 | 用Python数据分析方法进行汉字声调频率统计分析 |
范文 | 木合塔尔·沙地克+布合力齐姑丽·瓦斯力 摘要:该文首先用Python程序,自动获取基本汉字字符集中的所有汉字,然后用汉字拼音转换工具pypinyin把所有汉字转换成拼音,最后根据所有汉字的拼音声调,统计并可视化拼音声调的占比。 关键词:数据分析;数据可视化;文本挖掘 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)35-0013-02 1 背景 汉字是世界上最古老的文字之一,已有四千多年的历史。现存最早可识的汉字是 殷商 的甲骨文和稍后的金文,现代汉字即由甲骨文、金文演变而来。在形体上逐渐由图形变为笔画,象形变为象征,复杂变为简单;在造字原则上从表形、表意到形声。除极个别的例外,都是一个汉字一个音节。 汉字的数量并没有准确数字,大约将近十万个(北京国安咨讯设备公司汉字字库收入有出处汉字91251个),日常所使用的汉字只有几千字。据统计,1000个常用字能覆盖约92%的书面资料,2000字可覆盖98%以上,3000字则已到99%,简体与繁体的统计结果相差不大。 汉字是汉语的书写文字,每个字代表一个音节。中国大陆现今以普通话作为标准读音,普通话的音节由一个声母、一个韵母及声调确定,实际用到1300多个音节。由于汉字数目庞大,因而有明显的同音字现象;同时还有同一字多音的情形,称为多音字。这一情况在汉语各种方言中是普遍存在的。 最早的注音方法是读若法和直注法。读若法就是用音近的字来注音,许慎的《说文解字》 就采用这种注音方法,如"埻,射臬也,读若准"。直注法就是用另一个汉字来表明这个汉字的读音,如"女为悦己者容"中,使用"说者曰悦"来进行注音。 近代以来,又发展出了汉字形式的注音符号以及很多拉丁字母注音方法。注音符号仍是中国台湾地区教学的一部分,而目前中国大陆最为广泛使用的是汉语拼音。 由于汉字以本身表义为主,注音方面较为薄弱。这个特性使得上下千年的文献,不至于产生如同使用拼音文字的西方一样,用字措辞太悬殊的差距,但也造成推断古代声韵的难度。例如"庞"从"龙"而得声,但今日北京话前者读"páng",后者为"lóng"。如何解释这样的差异,就是音韵学所探讨的课题。需要注意的还有声调:阴平,阳平,上声,去声,轻声(元音āáǎàa ōóǒòo ēéěèe īíǐìi ūúǔùu ǖǘǚǜü)。 1957年11月1日国务院全体会议第六十次会议通过,1958年2月11日第一次全国人民代表大会第五次会议批准的《汉语拼音方案》中声调符号采用的是:阴平(ˉ)、阳平(ˊ)、上声(ˇ)去声(ˋ)、轻声(不标调)的方法。這种方法解决了不同声调汉字的区别问题。例如,妈 mā(阴平)、麻 má(阳平)、马 mǎ(上声)、骂 mà(去声)、吗 mɑ(轻声不标调)。为识字辨音立下了汗马功劳。但随着信息化的不断发展,其与计算机键盘不相适应。 Unicode 是全球文字统一编码。它把世界上的各种文字的每一个字符指定唯一编码,实现跨语种、跨平台的应用。表1是中文字符集的Unicode编码范围。 2 编程实现 从网上下载并安装免费的最新Anaconda Python发行版(Anaconda Python最主要的优点是,它会预先安装几百个最流行的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 #轻声 ‘进入循环,游历基本汉字字符集中的所有汉字 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') |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。