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中标准库OS的常用方法总结大全
Jul 19 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Django框架多表查询实例分析
Jul 04 Python
python对离散变量的one-hot编码方法
Jul 11 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
简单了解python变量的作用域
Jul 30 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
Python基于httpx模块实现发送请求
Jul 07 Python
彻底弄懂Python中的回调函数(callback)
Jun 25 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防注入安全代码
2008/04/09 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php 伪静态之IIS篇
2014/06/02 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
python 网络编程常用代码段
2016/08/28 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
运动员口号
2014/06/09 职场文书
工地宣传标语
2014/06/18 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python