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调用短信猫控件实现发短信功能实例
Jul 04 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
python 实现单例模式的5种方法
Sep 23 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
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
python 的topk算法实例
2020/04/02 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
为什么要使用servlet
2016/01/17 面试题
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
乒乓球比赛通知
2015/04/27 职场文书
爱国主义电影观后感
2015/06/18 职场文书
导游词之潮音寺
2019/09/26 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle