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实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
Python实现Linux监控的方法
May 16 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
python中数字是否为可变类型
Jul 08 Python
Django如何重置migration的几种情景
Feb 24 Python
深入理解python多线程编程
Apr 18 Python
python实战之用emoji表情生成文字
May 08 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
数据库的日期格式转换
2006/10/09 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
Python多线程下载文件的方法
2015/07/10 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python的中异常处理机制
2018/08/30 Python
python发送告警邮件脚本
2018/09/17 Python
python SVM 线性分类模型的实现
2019/07/19 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
Django静态文件加载失败解决方案
2020/08/26 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
霸气队列口号
2014/06/18 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
2016年少先队活动总结
2016/04/06 职场文书