python统计词频 创建字典_如何利用Python进行文本词频统计
问题描述
Python在自然语言处理这个方面,有其天然的优势:简单,快捷。所以我们经常会遇到利用Python从一篇文档中,统计文本词频的问题。以《三国演义》这部名著为例,文中哪些人物的出场次数最多呢?让我们用Python来解决看看吧!解决方案
在实际计算中,我们常常遇到需要同时处理多个数据的情况,所以我们引入了“组合数据类型”的概念。而我们今天主要用到的就是组合数据类型中映射类型“字典”的知识。字典具有处理任意长度和混合类型键值对的能力。
简单介绍了相关知识后,我们再来审审题。文本词频统计其实就是计算同一个词语出现的次数,通过对文本信息的自动检索,进行累加的简单计算就可以解决问题。
下面是此问题的IPO描述:
Input:读取《三国演义》内容
Process:利用“字典”统计词语的出现次数
Output:打印出《三国演义》中出场次数最多的人名和具体次数
我们一直在强调的是文本词频的统计,那么“词语”就成为了关键,如何从一段话中提取准确的词语呢?我们就要引入Python第三方库“jieba”的知识啦。Jieba是python中一个重要的第三方中文分词函数库,他将待分词的内容与分词词库依次进行比对,通过图结构和动态规划的方法找到最大概率的词组。
所以在第一行我们要引入jieba库
在第二行执行input,利用open函数,打开《三国演义》的文档。文档名为:sanguoyanyi.txt
接下来在第三行开始利用jieba 库的分词函数jieba.lcut()进行分词,这个分词函数是在精确模式下,可以形成列表类型的。我们把他命名为words。
接着,构造一个字典counts,对比词库,对文件进行列表分词。并通过counts.get的方法,对相关词语进行计数。‘
从第十行开始,正式进入累加的环节,将counts转换为列表格式。
第十一行是进一步对列表进行排序。然后用for i in range的方式,打印出排名前20的人物名称。
结果如下:
但是我们在打印出来的结果中发现,像“却说”,“二人”,“不可”这样的词是不属于人名的,而且像“孔明”和“孔明曰”这样词语又是一个意思,所以这个统计结果,并不是很准确。所以我们还要对刚刚的代码进行调整,比如加入一段排除词汇的代码。
为了解决问题一,排除不是人名的词汇,我们构造一个excludes的集合,将累计次数较高的词汇输入进去。这样的词汇怎么获得呢,我们只有一个笨办法,那就是“试”!不断的运行程序,让更多的词汇浮出水面,再把他们加到excludes的集合中,直到排名前20的词语都是人名为止。
为了解决问题二,我们要对词语进行整合,这就是第9到18行代码的作用了。
完整代码如下:
因为排除词汇的工作量太大了,所以我仅将出场排名前8名的人物打印出来了:
结果如下:
结语
这个实例的作用主要是让我们运用组合数据类型对文本进行词频统计。这里涉及到了列表和字典的知识,需要我们温故而知新。对于列表,我们可以用列表管理采集到的信息,用来构建数据结构;对于字典,我们可以用字典来处理复杂的数据信息。
总之,能完成一个实例,能写能理解,才代表你真正学会了这部分知识。也要记住,好的代码是靠着每一点点的修改,才能成为完美!!!
python统计词频 创建字典_如何利用Python进行文本词频统计相关推荐
- 用python进行数据分析举例说明_《利用python进行数据分析》读书笔记 --第一、二章 准备与例子...
第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7. ...
- python怎么定义全局字典_一种Python全局配置规范以及其魔改
0x01 模块 or global 很多初学者有个误区,就是在Python中需要配置一个全局的参数时,首先想到的是global关键字,而实际上global不是干这个事的,global的功能是在将局部作 ...
- python数据分析方法和命令_《利用Python进行数据分析》 —— (1)
<利用Python进行数据分析> -- (1) Python的学习需要自主探索各种类型,函数和方法的文档. 2.1 Python解释器 在IPython(Jupyter Qtconsole ...
- python爬取pdf教程_#如何利用Python抓取PDF中的某些内容#python爬取pdf教程
如何利用Python抓取PDF中的某些内容 学生每天要学习,工作者要工作,家庭主妇每都要务.不论做什么,都有着相应的操作流同样就会有操作技巧.学生运用技巧学习才不会累,学得还会更快更多:工作者掌握技巧 ...
- python开发12306抢票_如何利用 Python 实现12306抢票?
生苦短,我用 python. 作为一种"胶水语言",python 为无数码农带来了便利:同时,越来越多的 python 工程师被标榜为"高薪党":"全 ...
- python开发app的软件_如何利用python开发手机app
python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习,加上目前这方面的模块还不是特别成熟,bug比较多. 准备工作 利用python开发a ...
- python推箱子小游戏_小伙利用Python自制一个推箱子小游戏!
原标题:小伙利用Python自制一个推箱子小游戏! 导语 月初更波python制作小游戏系列吧用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧 小伙利用Python自制一个推箱子 ...
- python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...
- 用python画动态皮卡丘_如何利用python绘制可爱皮卡丘?
这个非常简单,主要用到turtle这个模块,一个绘图函数库,可以快速绘制平面二维图形,下面我简单介绍一下实现过程,主要分为鼻子.眼睛.脸.嘴巴这4个部分,实验环境win10+python3.6+pyc ...
最新文章
- R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符、str_sub函数指定起始位置和终止位置替换子字符串
- Comparison of relational database management systems
- 当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决
- Effective Java之基本类型优于装箱类型(四十九)
- 物联网智能硬件设备常见攻击方法
- node.js模块和包
- C#开发微信门户及应用(27)-公众号模板消息管理
- 20180828 上课截图
- (23)css3文字阴影text-shadow
- 怎么证明自己会python_1024程序员节,请用一句话证明你是一个程序员!
- Math类的常用方法和静态导入.
- Confluence 6 数据库表-杂项(Miscellaneous)
- 【风电功率预测】基于matlab灰狼算法优化LSTM风电功率预测【含Matlab源码 1392期】
- UE的HoudiniEngine插件版本的匹配问题
- python got an unexpected keyword argument
- 启动MySQL发生系统错误 1058
- Qt-网易云音乐界面实现-9 照片墙功能
- TextWrangler——一款不知为何而生的编辑器
- release版本和debug版本
- 移动硬盘部分分区不能识别解决方法