半角到全角的转换


给定语料文件,完成半角到全角的转换,并统计一级汉字的频次,最后按频次高到低输出。


语料

  • 首先,任务基于以下中文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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值