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中的格式化输出用法总结
Jul 28 Python
Python中的TCP socket写法示例
May 11 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
python将控制台输出保存至文件的方法
Jan 07 Python
Python实现最常见加密方式详解
Jul 13 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
Python requests模块安装及使用教程图解
Jun 30 Python
简单了解Django项目应用创建过程
Jul 06 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 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中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
jquery tools之tooltip
2009/07/25 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
浅谈Python中的闭包
2015/07/08 Python
Python入门教程之运算符与控制流
2016/08/17 Python
python3.x实现base64加密和解密
2019/03/28 Python
超简单的Python HTTP服务
2019/07/22 Python
Python实现图像的垂直投影示例
2020/01/17 Python
浅析NumPy 切片和索引
2020/09/02 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
Python用SSH连接到网络设备
2021/02/18 Python
大学生毕业自我评价范文分享
2013/11/11 职场文书
小组口号大全
2014/06/09 职场文书
新郎结婚保证书
2015/02/26 职场文书
综合测评自我评价
2015/03/06 职场文书
优秀团员自我评价
2015/03/10 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server