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 + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
如何使用Python实现一个简易的ORM模型
May 12 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+java实现自动新闻滚动窗口
2006/10/09 PHP
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python验证码识别的示例代码
2017/09/21 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
介绍下java.util.Arrays类
2012/10/16 面试题
建筑自我鉴定
2013/10/19 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年技术员工作总结
2014/11/18 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
springboot读取nacos配置文件
2022/05/20 Java/Android
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS