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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Python操作csv文件实例详解
Jul 31 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
Django和Flask框架优缺点对比
Oct 24 Python
python GUI模拟实现计算器
Jun 22 Python
详解Python中的进程和线程
Jun 23 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_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
面试常见的js算法题
2017/03/23 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
Django的分页器实例(paginator)
2017/12/01 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
大学生找工作推荐信范文
2013/11/28 职场文书
社会实践的活动方案
2014/08/22 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python