给定语料文件,完成半角到全角的转换,并统计一级汉字的频次,最后按频次高到低输出。
语料
- 首先,任务基于以下中文GB编码的语料文件,编码问题可利用Notebook++解决。
语料摘自BCC语料库

一、半角与全角之间的转换
全角字符unicode编码从65281 ~ 65374 (十六进制 0xFF01 ~ 0xFF5E);
半角字符unicode编码从33 ~ 126 (十六进制 0x21~ 0x7E);
其中,空格特殊,全角为 12288(十六进制 0x3000),半角为 32(十六进制 0x20)。
因此,对于非空格的半角符,半角转换成全角利用“公式”:半角 + 0x7e= 全角;对空格则单独处理。
另外,还需知道utf-8 是 unicode 字符集一种编码方式。
关键代码如下(示例):
for word in sentence:
word = word.encode("utf8")
if 0x21 < word[0] < 0x7e: #半角符
word = word.decode("utf8")
word = chr(ord(word)+0xfee0)
elif word[0]==0x20: #空格
word = word.decode("utf8")
word=chr(12288)
else:
word = word.decode("utf8")
newfile.write(word)
#写入文件操作略
二、词频统计
· 统计各一级汉字在语料库中出现的频次
关键代码如下(示例)
for word in sentence:
word = word.encode("gbk")
if 0xb0<=word[0]<=0xd7 and word[1]>=0xa1: #第一级
word = word.decode("gb2312")
if word in mydict:
mydict[word]+=1 #字频 + 1
else:
mydict[word]=1 #字频 = 1
#写入文件操作略
· 排序
利用python中的sorted函数,结合operator.itemgetter()进行排序。具体使用方法可以到手册中查找。
此处自主学习,不给出示例代码
三、结果
1. 半角转换全角后的文件
节选:
2. 统计第一级汉字字频文件
节选:

总结
就是一篇csdn记录试写,找找感觉。
代码一定不是最简的,文章内容如有错还望指出,谢谢~
@author: RUNT