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的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
python抓取网页中图片并保存到本地
Dec 01 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
详解Python迭代和迭代器
Mar 28 Python
python在每个字符后添加空格的实例
May 07 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
Python入门学习之类的相关知识总结
May 25 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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具体实现代码
2010/10/12 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python使用str & repr转换字符串
2016/10/13 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
医院门卫岗位职责
2013/12/30 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
低碳环保标语
2014/06/12 职场文书
学校宣传标语
2014/06/18 职场文书
建筑安全责任书范本
2014/07/24 职场文书
护士节活动总结
2014/08/29 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
DE1107机评
2022/04/05 无线电
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs