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实现的一个p2p文件传输实例
Jun 04 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 Python
python tornado使用流生成图片的例子
Nov 18 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
flask框架自定义url转换器操作详解
Jan 25 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
Python经典五人分鱼实例讲解
Jan 04 Python
python中的时区问题
Jan 14 Python
python 实现定时任务的四种方式
Apr 01 Python
一篇文章带你搞懂Python类的相关知识
May 20 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
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Python验证码识别的方法
2015/07/10 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python根据服务获取端口号的方法
2019/09/25 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
python简单的三元一次方程求解实例
2020/04/02 Python
python3判断IP地址的方法
2021/03/04 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
出国留学自荐信
2013/10/25 职场文书
小学音乐教学反思
2014/02/05 职场文书
元旦晚会感言
2014/03/12 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年调度员工作总结
2015/04/30 职场文书
小学六一主持词开场白
2015/05/28 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
初中英语教学随笔
2015/08/15 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
反邪教学习心得体会
2016/01/15 职场文书