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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
python的exec、eval使用分析
Dec 11 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
python判断设备是否联网的方法
Jun 29 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
超简单使用Python换脸实例
Mar 27 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
python验证码图片处理(二值化)
Nov 01 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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
博士208HAF收音机实习报告
2021/03/02 无线电
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
菜单效果
2006/10/14 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
Angular实现form自动布局
2016/01/28 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Java面试题:为什么要用Java
2012/05/11 面试题
同学会邀请书大全
2014/01/12 职场文书
工会工作先进事迹
2014/08/18 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
行政处罚事先告知书
2015/07/01 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL