Python实现快速计算词频功能示例


Posted in Python onJune 25, 2018

本文实例讲述了Python实现快速计算词频功能。分享给大家供大家参考,具体如下:

这几天看到一位同事的代码,方法如下:

def cut_word(body):
  temp_dict={}
  if body is not None:
    temp=jieba.cut(body)
    for t in temp:
      temp_dict[t]=1
  else:
    pass
  return temp_dict

这个函数的功能是,输入一段字符串,比如:'今天天气很不错',输出一个字典,key为使用结巴的cut方法之后切分的词,value为1,如:{'很':1,'今天天气':1,'不错': 1}。

然后我看到同事的另一个方法:

def union_dict(x,y):
  _keys = set(sum([obj.keys() for obj in [x,y]],[]))
  _total = {}
  for _key in _keys:
    _total[_key] = sum([obj.get(_key,0) for obj in [x,y]])
  return _total

是这样调用的:

final_dict=reduce(union_dict,result)

result是这样产生的:

result=df['body'].apply(cut_word)

也就是把df的body列每一行进行cut_word函数操作(即将字符串转换成一个字典)。

result的类型是series,随后对result用reduce函数进行union_dict操作。

union_dict的作用是,输入两个字典,比如{'很':1,'今天天气':1,'不错': 1}和{'很':1,'今天天气':1,'差': 1},对key相同的进行value求和,也就是输出会变成{'很':2,'今天天气':2,'不错': 1,'差':1}

所以这一系列的操作其实是为了计算一大堆文字的词频数,但同事使用的是对每一行分别进行拆分,生成字典,随后

对字典进行合并,其实有些麻烦。

再学习自然语言处理的时候,我了解到nltk有一个方法,可以直接计算词频,用在此处正好。

# -*- coding:utf-8 -*-
import nltk
import jieba
str = '今天天气很不错。今天天气很差'
a = list(jieba.cut(str))
cfd = nltk.FreqDist(a)

结果直接是一个带有频数的字典:{'很':2,'今天天气':2,'不错': 1,'很差':1,'。'}

由于同事的函数cut_word对每个词只计一次频数,所以不能直接拼接字符串后调用FreqDist函数,需要对每个cut出来的列表去重,随后再拼接为大字符串调用FreqDist,这也比之前写这两个函数简单许多。

对于普通的计算频数的需求来说,这个函数能直接解决,十分方便。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python里对list中的整数求平均并排序
Sep 12 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
在python中pandas的series合并方法
Nov 12 Python
通过实例解析Python return运行原理
Mar 04 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
构建高效的python requests长连接池详解
May 02 Python
python简单实现9宫格图片实例
Sep 03 Python
java字符串格式化输出实例讲解
Jan 06 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 Python
Python Pygame实战之塔防游戏的实现
Mar 17 Python
python实现画一颗树和一片森林
Jun 25 #Python
完美解决在oj中Python的循环输入问题
Jun 25 #Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 #Python
python使用turtle库绘制树
Jun 25 #Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 #Python
python库lxml在linux和WIN系统下的安装
Jun 24 #Python
Python3中详解fabfile的编写
Jun 24 #Python
You might like
PHP中的正则表达式函数介绍
2012/02/27 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
python opencv之SURF算法示例
2018/02/24 Python
python web基础之加载静态文件实例
2018/03/20 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
python设置中文界面实例方法
2020/10/27 Python
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
优秀志愿者事迹材料
2014/02/03 职场文书
自查自纠工作总结
2014/10/15 职场文书
吴仁宝观后感
2015/06/09 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers