APP下载

用Python数据分析方法进行汉字声调频率统计分析

2018-01-06木合塔尔·沙地克布合力齐姑丽·瓦斯力

电脑知识与技术 2017年35期
关键词:文本挖掘数据可视化数据分析

木合塔尔·沙地克+布合力齐姑丽·瓦斯力

摘要:该文首先用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')endprint

猜你喜欢

文本挖掘数据可视化数据分析
可视化:新媒体语境下的数据、叙事与设计研究
我国数据新闻的发展困境与策略研究
浅析大数据时代对企业营销模式的影响
慧眼识璞玉,妙手炼浑金