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 转义字符详细介绍
Mar 21 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
Pandas 同元素多列去重的实例
Jul 03 Python
python机器学习之KNN分类算法
Aug 29 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
Django框架表单操作实例分析
Nov 04 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python实现坦克大战
Apr 24 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
python爬虫selenium模块详解
Mar 30 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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下连接mssql2005的代码
2011/01/17 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
Python实现八皇后问题示例代码
2018/12/09 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
Python之Sklearn使用入门教程
2021/02/19 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
描述内存分配方式以及它们的区别
2016/10/15 面试题
院药学专业个人求职信
2013/09/21 职场文书
旅游安全协议书
2014/04/21 职场文书
品质口号大全
2014/06/17 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
代码复现python目标检测yolo3详解预测
2022/05/06 Python