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下如何让web元素的生成更简单的分析
Jul 17 Python
python中使用序列的方法
Aug 03 Python
python 查找字符串是否存在实例详解
Jan 20 Python
python获取多线程及子线程的返回值
Nov 15 Python
Python单元测试简单示例
Jul 03 Python
python如何实现数据的线性拟合
Jul 19 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
wxPython实现绘图小例子
Nov 19 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
详解Python中下划线的5种含义
Jul 15 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实现手机归属地查询API接口实现代码
2012/08/27 PHP
深入分析php之面向对象
2013/05/15 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
如何使用php输出时间格式
2013/08/31 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
Python绘制堆叠柱状图的实例
2019/07/09 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
教育科研先进个人材料
2014/01/26 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
便利店促销方案
2014/02/20 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
三方股份合作协议书
2014/10/13 职场文书
2015公司年度工作总结
2015/05/14 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang