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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Python中正则表达式的用法实例汇总
Aug 18 Python
对Xpath 获取子标签下所有文本的方法详解
Jan 02 Python
Python开发网站目录扫描器的实现
Feb 21 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
django中SMTP发送邮件配置详解
Jul 19 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
django迁移文件migrations的实现
Mar 31 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
Python字符串三种格式化输出
Sep 17 Python
Python爬虫之爬取二手房信息
Apr 27 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 get_meta_tags()函数
2014/05/12 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
javascript操作css属性
2013/12/30 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
js 函数性能比较方法
2020/08/24 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
python生成指定长度的随机数密码
2014/01/23 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
Python 内置函数complex详解
2016/10/23 Python
Python内置模块turtle绘图详解
2017/12/09 Python
python求解汉诺塔游戏
2020/07/09 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
校园自助餐厅的创业计划书
2013/12/26 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
优秀广告词大全
2014/03/19 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
天河观后感
2015/06/11 职场文书
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技
table不让td文字溢出操作方法
2022/12/24 HTML / CSS