python实现简单中文词频统计示例


Posted in Python onNovember 08, 2017

本文介绍了python实现简单中文词频统计示例,分享给大家,具体如下:

任务

简单统计一个小说中哪些个汉字出现的频率最高

知识点

1.文件操作
2.字典
3.排序
4.lambda

代码

import codecs
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

word = []
counter = {}

with codecs.open('data.txt') as fr:
 for line in fr:
  line = line.strip()
  if len(line) == 0:
   continue
  for w in line:
   if not w in word:
    word.append(w)
   if not w in counter:
    counter[w] = 0
   else:
    counter[w] += 1

counter_list = sorted(counter.items(), key=lambda x: x[1], reverse=True)

print(counter_list[:50])

label = list(map(lambda x: x[0], counter_list[:50]))
value = list(map(lambda y: y[1], counter_list[:50]))

plt.bar(range(len(value)), value, tick_label=label)
plt.show()

统计了一个11M的小说,结果如下:

[(',', 288508), ('。', 261584), ('的', 188693), ('陈', 92565), ('欢', 92505), ('不', 91234), ('是', 90562), ('了', 86931), ('一', 79059), ('着', 77997), ('他'
, 71695), ('这', 63580), ('人', 61210), ('“', 59719), ('”', 59115), ('有', 56054), ('就', 52862), ('个', 49097), ('都', 46850), ('你', 45400), ('来', 42659),
 ('我', 40057), ('在', 37676), ('们', 36966), ('到', 36351), ('说', 35828), ('还', 35260), ('么', 32601), ('下', 31742), ('地', 30692), ('得', 29904), ('上', 2
9627), ('看', 28408), ('没', 28333), ('出', 27937), ('道', 27732), ('大', 27012), ('?', 26729), ('那', 26589), ('要', 26076), ('子', 25035), ('自', 24012), ('
点', 23942), ('好', 21345), ('想', 21242), ('里', 20915), ('面', 20661), ('她', 20313), ('过', 20304), ('话', 20110)]

 python实现简单中文词频统计示例

使用jieba先对中文文档进行分词处理

import sys 
reload(sys) 
sys.setdefaultencoding("utf-8") 
 
import jieba 
import jieba.analyse 
 
wf = open('clean_title.txt','w+') 
for line in open('/root/clean_data/clean_data.csv'): 
 
  item = line.strip('\n\r').split('\t') //制表格切分 
  # print item[1] 
  tags = jieba.analyse.extract_tags(item[1]) //jieba分词 
  tagsw = ",".join(tags) //逗号连接切分的词 
  wf.write(tagsw) 
 
wf.close()

输出的clean_title.txt内容
邮轮,地中海,深度,罗马,自由纳西,柏林签证,步行,三天,批准申根,手把手,签证,申请,如何赞爆,法兰,穿越,葡萄酒,风景,河谷,世界欧洲颜色,一种,国家,一个水族箱,帕劳,七日,上帝奥林匹亚,跑步圣托, 
里尼,文明古国,探访,爱琴海,魅力,希腊 

2、统计词频

#!/usr/bin/python 
# -*- coding:utf-8 -*- 
 
word_lst = [] 
word_dict= {} 
with open('/root/clean_data/clean_title.txt') as wf,open("word.txt",'w') as wf2: //打开文件 
 
  for word in wf: 
    word_lst.append(word.split(',')) //使用逗号进行切分 
    for item in word_lst: 
       for item2 in item: 
        if item2 not in word_dict: //统计数量 
          word_dict[item2] = 1 
        else: 
          word_dict[item2] += 1 
 
  for key in word_dict: 
    print key,word_dict[key] 
    wf2.write(key+' '+str(word_dict[key])+'\n') //写入文档

结果:

最后 4 
欧洲幽蓝 1 
集美 1 
葡萄牙法多 1 
工地 1 
知道湖光山色 1 
神圣 7 
欧洲少女瑞士加游 1 

根据词汇数量排序查看:

cat word.txt |sort -nr -k 2|more

神圣 7 
最后 4 
欧洲幽蓝 1 
集美 1 
葡萄牙法多 1 
工地 1 
知道湖光山色 1 
欧洲少女瑞士加游 1 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
基于Python __dict__与dir()的区别详解
Oct 30 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
Python加载带有注释的Json文件实例
May 23 Python
Python多继承顺序实例分析
May 26 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
用python写测试数据文件过程解析
Sep 25 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 #Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 #Python
Python入门之三角函数全解【收藏】
Nov 08 #Python
Python入门之三角函数tan()函数实例详解
Nov 08 #Python
Python入门之三角函数sin()函数实例详解
Nov 08 #Python
Python入门之三角函数atan2()函数详解
Nov 08 #Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 #Python
You might like
推荐:极酷右键菜单
2006/11/29 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
python实现词法分析器
2019/01/31 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python中如何使用insert函数
2020/01/09 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
成教毕业生自我鉴定
2013/10/23 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
党员评议个人总结
2014/10/20 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
解决Redis启动警告问题
2022/02/24 Redis
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis