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中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
python实现的简单文本类游戏实例
Apr 28 Python
在windows系统中实现python3安装lxml
Mar 23 Python
对python中return和print的一些理解
Aug 18 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
用Python远程登陆服务器的步骤
Apr 16 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
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
详解Python函数作用域的LEGB顺序
2016/05/14 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python的历史与优缺点整理
2020/05/26 Python
python连接mysql有哪些方法
2020/06/24 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
常务副总经理岗位职责
2014/04/12 职场文书
积极向上的团队口号
2014/06/06 职场文书
拓展训练激励口号
2014/06/17 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
一文带你探究MySQL中的NULL
2021/11/11 MySQL
MySQL新手入门进阶语句汇总
2022/09/23 MySQL