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 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
Python 基础之字符串string详解及实例
Apr 01 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
python分布式计算dispy的使用详解
Dec 22 Python
python logging通过json文件配置的步骤
Apr 27 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
Python3爬虫发送请求的知识点实例
Jul 30 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 工厂模式使用方法
2010/05/18 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
Js中sort()方法的用法
2006/11/04 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
javascript的BOM汇总
2015/07/16 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python 获取字符串MD5值方法
2018/05/29 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python已协程方式处理任务实现过程
2019/12/27 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
个人自我评价和职业目标
2014/01/24 职场文书
农村婚礼主持词
2014/03/13 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
教师工作表现自我评价
2015/03/05 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers