python利用多种方式来统计词频(单词个数)


Posted in Python onMay 27, 2019

python的思维就是让我们用尽可能少的代码来解决问题。对于词频的统计,就代码层面而言,实现的方式也是有很多种的。之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类问题上。故在此做个简单的记录。

统计的材料如下:

document = [
  'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',
 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',
 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',
 'my', 'eyes', "you're", 'under']

直接使用dict来进行统计(遍历+循环)

word_count = {}
for word in document:
  if word in word_count:
    word_count[word] += 1
 else:
    word_count[word] = 1

更优雅的实现方式

#假如字典中不存在给定的键,则返回参数中提供的默认值;反之,则返回字典中保存的值。
for word in document:
  previous_count = word_count.get(word, 0)
  word_count[word] = previous_count + 1
#可以合并成一行
for word in document:
 word_count[word] = word_count.setdefault(word, 0) + 1

使用defalutdict来实现

# 使用collections中的defalutdict来实现,defalutdict是一种值可以默认设置的dict
from collections import defaultdict
word_count = defaultdict(int)
for word in document:
  word_count[word] += 1

使用Counter

word_counter = Counter(document)

Counter既然是一个计数器,那么它本身也就具有很多统计的方法。例如,最常见的词频统计的排序,可以获得前n个最高的词频。

# 返回前n个最高词频,以字典的形式
word_counter.most_common(n)

显然,使用defalutdict和Counter代码最简洁,更能符合python开发之道。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 实现文件的递归拷贝实现代码
Aug 02 Python
详解Python中expandtabs()方法的使用
May 18 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
python判断数字是否是超级素数幂
Sep 27 Python
python操作日志的封装方法(两种方法)
May 23 Python
flask实现验证码并验证功能
Dec 05 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
Python如何进行时间处理
Aug 06 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
pytorch 6 batch_train 批训练操作
May 28 Python
pandas中关于apply+lambda的应用
Feb 28 Python
numpy中的ndarray方法和属性详解
May 27 #Python
numpy.linspace函数具体使用详解
May 27 #Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 #Python
Django框架设置cookies与获取cookies操作详解
May 27 #Python
numpy下的flatten()函数用法详解
May 27 #Python
详解numpy的argmax的具体使用
May 27 #Python
numpy.random模块用法总结
May 27 #Python
You might like
php入门教程 精简版
2009/12/13 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
python 为什么说eval要慎用
2019/03/26 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
教学实验楼管理制度
2014/02/01 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
新农村建设汇报材料
2014/08/15 职场文书
会计试用期自我评价
2014/09/19 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python