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实现系统状态监测和故障转移实例方法
Nov 18 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
详解Python pygame安装过程笔记
Jun 05 Python
Python深度优先算法生成迷宫
Jan 22 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 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
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
降低PHP Redis内存占用
2017/03/23 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
json2.js的初步学习与了解
2011/10/06 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Web服务器框架 Tornado简介
2014/07/16 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
文秘人员工作职责
2014/01/31 职场文书
水电维修专业推荐信
2014/09/06 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
Jsonp劫持学习
2021/04/01 PHP