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 fileinput模块使用实例
May 28 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python决策树之C4.5算法详解
Dec 20 Python
Python绘制3D图形
May 03 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
python从PDF中提取数据的示例
Oct 30 Python
Python LMDB库的使用示例
Feb 14 Python
Python使用openpyxl批量处理数据
Jun 23 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php链表用法实例分析
2015/07/09 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
9种方法优化jQuery代码详解
2020/02/04 jQuery
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
python文本数据处理学习笔记详解
2019/06/17 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
幼儿园消防安全制度
2014/01/26 职场文书
小学毕业感言150字
2014/02/05 职场文书
会务接待方案
2014/02/27 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2015年暑假工作总结
2015/07/13 职场文书