温且姆·萨迪克 布合力齐姑丽·瓦斯力 热依汉古丽·萨迪克 木合塔尔·沙地克
摘要:文章用Python实现对常用字的词性、拼音、韵母与声调之间的多维度特征分析,从开发环境搭建开始详细介绍了每个步骤和代码。
关键词:Python;Jieba;python-docx-master;python-pinyin-master
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2020)10-0120-02
一、环境的搭建
用Python对汉字进行分析不仅要安装Python开发环境,还需要安装Python中文分词组件jieba,Python Word文本处理组件python-docx-master,Python处理汉字转拼音组件python-pinyin-master。本文用Anaconda Spyder作为开发环境,从相关网站下载以上各组件压缩包,解压到工作目录,在命令行分别进入各组件解压目录,执行python setup.py install即可完成环境的准备。
二、主要代码解释
(一)引入相关组件,并以gb18030编码格式打开常用字txt文件
(引入相关组件代码略)
#打开常用字txt文件
text=open('sys_Char2500.txt',encoding='gb18030').read()
#从text中筛选字符部分
char_changyong=[char for char in text if char.isalpha()]
(二)定义一个函数,获取汉字的词性,把词性英文简称转换中文名称
def get_peg(arg):
#获取arg的词性
pegc=peg.cut(arg)
flag2=''
#把词性英文简称转换汉字名称
for peg1,flag1 in pegc:
if 'n' == flag1[0]:
flag2='名词'
elif 't' == flag1[0]:
flag2='时间词'
…
else:
flag2=flag1
return flag2
(三)获取汉字的词性、拼音和韵母特征,把他们存储在一个词典里,并进行排序统计
…
for char in char_changyong:
#获取汉字带声调的拼音
yin3=''.join(lazy_pinyin(char,style=Style.TONE3))
#获取汉字不带声调的拼音
pyin=''.join(lazy_pinyin(char))
#获取汉字的韵母
yunm=''.join(lazy_pinyin(char,style=Style.FINALS))
…
#把以上获取的特征存放在词典和列表里
char_flag_dict[char]=(tone,pegc,pyin,yunm)
…
…
(四)对汉字的词性与声调进行统计分析,将统计结果存入Document对象的表格中
…
#游历所有词性统计列表
for pegc,count in pegc_all_count:
…
#游历存放汉字特征的词典
for char,val in char_flag_dict.items():
if pegc == val[1]:
tones = tones + str(val[0])
chars = chars + str(char)
pegc_tones[pegc]=tones
#定义Document对象
doc_new = Document()
doc_new.add_heading('一、词性统计:',0)
#定义表格
table = doc_new.add_table(rows=1,cols=8)
hdr_cells = table.rows[0].cells
#创建表格列名
hdr_cells[0].text = '序号'
…
#对汉字的词性与声调进行统计
#将统计结果存入表格中
for key,val in pegc_tones.items():
len_tones=len(pegc_tones[key])
count=Counter(pegc_tones[key])
row_cells = table.add_row().cells
row_cells[0].text = str(i)
…
…
(五)对汉字的拼音与声调进行统计分析,将统计结果存入Document对象的表格中
…
#游历所有拼音统计列表
for pyin,count in pyin_all_count:
…
#游歷存放汉字特征的词典
for char,val in char_flag_dict.items():
if pyin == val[2]:
tones = tones + str(val[0])
chars = chars + str(char)
pyin_tones[pyin]=tones
#添加标题
doc_new.add_heading('二、拼音统计:',0)
#定义表格
table = doc_new.add_table(rows=1,cols=8)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '序号'
…
#对汉字的拼音与声调进行统计
#将统计结果存入表格中
for key,val in pyin_tones.items():
len_tones=len(pyin_tones[key])
count=Counter(pyin_tones[key])
row_cells = table.add_row().cells
row_cells[0].text = str(i)
…
…
row_cells[7].text = str(count6)
(六)對汉字的韵母与声调进行统计分析,将统计结果存入Document对象中
…
#游历所有韵母统计列表
for yunm,count in yunm_all_count:
…
#游历存放汉字特征的词典
for char,val in char_flag_dict.items():
if yunm == val[3]:
tones = tones + str(val[0])
chars = chars + str(char)
yunm_tones[yunm]=tones
#添加标题
doc_new.add_heading('三、韵母统计:',0)
#创建表格
table = doc_new.add_table(rows=1,cols=8)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '序号'
…
#对汉字的韵母与声调进行统计
#将统计结果存入表格中
for key,val in yunm_tones.items():
count=Counter(yunm_tones[key])
len_tones=len(yunm_tones[key])
row_cells = table.add_row().cells
row_cells[0].text = str(i)
…
…
row_cells[7].text = str(count6)
(七)把统计结果存入Word文档中,用于下一步分析
doc_new.save('汉字统计分析.docx')
Multi-dimensional Feature Analysis of Common Words with Python
Wynchem Sadiq1,Buzhiguri Vasley2,Hayhanguri Sadiq3,Muhtar Shadick4
(1.Kashgar Shule County Secondary Vocational and Technical School,Kashgar,Xinjiang 844200,China;
2.College of Mathematics and Science,Xinjiang Institute of Education,Urumqi,Xinjiang 830043,China;
3.Hanan Like Town Middle School,Kashgar Shule County,Kashgar,Xinjiang 844207,China;4.Education Management Information Center of Xinjiang Uygur Autonomous Region,Urumqi,Xinjiang 830049,China)
Abstract:In this paper,Python is used to analyze the multi-dimensional features of common characters,such as part of speech,pinyin,vowel and tone.Start with the development environment building and introduce each step and code in detail.
Key words:Python;Jieba;python-docx-master;python-pinyin-master