利用python做中文词频分析

                                    利用python做中文词频分析

        摘要:利用python做中文词频 分析,分析文本中词频出现的次数,文本可以保存在TXT或者CSV文件中,用到csv库和正则表达式。需要有文本处理和正则表达式的基础,不会请先学习这方面内容。

      导入库:
# coding=utf-8   编码形式
import sys      #字符串处理方式
import  re      #包含正则表达式
import csv
       因为要用到中文,所以用 coding=utf-8设定为utf-8格式,否则会出现乱码,这个根据数据源的编码形式改变,如果数据源是其他的格式要按照数据源更改格式,或者利用Notpad更改数据源格式为utf-8。
       CSV全部代码:
# coding=utf-8            设定编码形式
# Author:                 luoqingyu
import sys                #字符串处理方式
import  re                #包含正则表达式
import csv                #包含CSV库

reload(sys)
sys.setdefaultencoding('utf8')          
wfile = open('result.txt', 'w')        #存放结果的文件,放同义一目录下
dict = {}
r = re.compile('[\x80-\xff]+')         #正则表达式,表示匹配汉字和标点符号
z1 = re.compile('[\x80-\xff]{2}')      #正则表达式,表示匹配1个汉字和标点符号
z2 = re.compile('[\x80-\xff]{4}')      #正则表达式,表示匹配2个汉字和标点符号
z3 = re.compile('[\x80-\xff]{6}')      #正则表达式,表示匹配3个汉字和标点符号
z4 = re.compile('[\x80-\xff]{8}')
with open('test7.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row[4]
        x = row[0].encode('gb18030')
        i = z4.findall(x)              #Z1统计单字,Z4表示统计四字高频
        for j in i:

            if (j in dict):
                dict[j] += 1
            else:
                dict[j] = 1
dict = sorted(dict.items(), key=lambda d: d[1],reverse=True)       #安装value排序
for a, b in dict:                                                  #a是中文,b是词出现的次数
    if b > 0:
        wfile.write(a + ',' + str(b) + '\n')

    效果:双字高频

    
        四字高频:


TXT全部代码:
#coding=utf-8
#Author: http://blog.csdn.net/boksic
import sys,re

reload(sys) 
sys.setdefaultencoding('utf8')
txt = open('blog.csdn.net.boksic.txt','r').read()
wfile=open('result.txt','w')


r = re.compile('[\x80-\xff]+')
m = r.findall(txt)
dict={}
z1 = re.compile('[\x80-\xff]{2}')
z2 = re.compile('[\x80-\xff]{4}')
z3 = re.compile('[\x80-\xff]{6}')
z4 = re.compile('[\x80-\xff]{8}')
for i in m:
	x = i.encode('gb18030')
	i = z1.findall(x)
	#i+= z2.findall(x)
	#i+= z2.findall(x[2:])
	#i+= z3.findall(x)
	#i+= z3.findall(x[2:])
	#i+= z3.findall(x[4:])
	#i+= z4.findall(x)
	#i+= z4.findall(x[2:])
	#i+= z4.findall(x[4:])
	#i+= z4.findall(x[6:])
	for j in i:
		
		if (j in dict):
			dict[j]+=1
		else:
			dict[j]=1
			
			
dict=sorted(dict.items(), key=lambda d:d[1])
for a,b in dict:
	if b>0:
		wfile.write(a+','+str(b)+'\n')
	
	







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值