Python文本词频率统计---学习记录
目录
英文词频率统计
构建排除词库
对字典进行排序
中文词频率统计
jieba库
方法
英文词频率统计
统计英文词频的第一步是分解并提取英文文章的单词。同一个单词会存在大小写不同形式,但计数却不能区分大小写。
假设文本由变量txt表示
对txt文件的读取:
txt = open('你的文件名.txt','r').read()
可以通过txt.Iower()函数将字母变成小写,排除原文大小写差异对词频统计的干扰。
英文单词的分隔可以是空格、标点符号或者特殊符号。为统一分隔方式,可以将各种特殊字符和标点符号使用txt.replace()方法替换成空格,再提取单词
统计词频的第二步是对每个单词进行计数。
假设将单词保存在变量str中,使用一个字典类型d,统计单词出现的次数可采用如下代码:
d[s] = d[s] + 1
当遇到一个新词时,计数为1,但是单词没有出现在字典结构中,则需要在字典中新建键值对:
d[s] = 1
因此,无论词是否在字典中,加入字典coumns中的处理逻辑可以统一表示如下
str ='abcdeeee'
d = {}
for s in str:if s in d.keys():d[s] = d[s] + 1else:d[s] = 1
print(d)
也可以优化为
d[s] = d.get(s,0) + 1
构建排除词库
对于文本中大量出现的冠词,连接词,代词如The,and,but,he,she等并不能代表文章含义,需要进一步排除,可以构建一个排除数据结构
exlcude = ['a','an','the','he','him']
从而,进行处理
for s in exlcude:if s in d.keys():del d[s]
对字典进行排序
Python中有非常便捷的排序方法sort,但是它只能对列表进行排序
对字典使用sort需要先将字典转化为list类型
在强制转化为list后,其元素是由字典的键值对组成的一个元组列表
使用 lambda函数对排序规则进行修改 选中元组中的‘‘值’’
items = list(d.items())
items.sort(key=lambda x:x[1],reverse= True)
整体代码如下:
exlcude = ['a','an','the','he','him']
for s in str:d[s] = d.get(s,0) + 1
for s in exlcude:if s in d.keys():del d[s]
items = list(d.items())
items.sort(key=lambda x:x[1],reverse= True)
print(items)
中文词频率统计
jieba库
对于中文文本,其单词不像英文一样有空格分隔,而python的第三方jieba库很好的解决了这个问题
jieba库的安装这里不介绍
由于列表类型通用且灵活,jieba库推荐以下三种方法
jicbalIcut() 函数返回精确模式,输出的分词能够完整不多余地组成原始文本
jicba lcut(, cut_all = True) 函数返回全模式,输出原始文本中可能产生的所有问题,冗余性最大
jieba.lcut_for_search() 函数返回搜索引擎模式,该模式首先行执行精确模式,然后再对其中的长句子进一步切分获得结果。
对于无法识别的分词,也可以通过
jieba.add_word() 函数向分词库添加
方法
中文词与英文词的统计方法方法大同小异
这里只列出需要注意的地方
对于中文的近义词可能在统计的时候出现重复的情况,,如一些人名:孔明和诸葛
我们都知道他们是一个人但程序并不这样想
对于近义词 统一定义一个新变量,以这个变量为计数器,存放到字典中就可以了
如下
for word in s:if word == '诸葛亮' or '孔明曰':rword = '孔明'
d[rword] = d.get(rword,0) + 1
END
Python文本词频率统计---学习记录相关推荐
- python英文字符频率统计_Python中怎样统计英文文本中的字母频次?
关于文本频次统计.先不要考虑如何用python实现的问题. 我捋一捋自己的思路. 频次统计有几种呢?有时我们关注个别字母和汉字的出现频率,也有时候我们更多会关注个别单词或词语的出现频率. 针对这两种常 ...
- python英文字符频率统计_python统计文本字符串里单词出现频率的方法
本文实例讲述了python统计文本字符串里单词出现频率的方法.分享给大家供大家参考.具体实现方法如下: # word frequency in a text # tested with Python2 ...
- python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...
本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序 ...
- python 统计哈姆雷特词汇频率_Python练习15:文本单词频率统计:哈姆雷特,练习题,英文版...
文本词频统计::一篇文章,出现了哪些词?哪些词出现的最多? ...
- python文本txt词频统计_python实例:三国演义TXT文本词频分析
0x00 前言 找不到要写什么东西了!今天有个潭州大牛讲师 说了个 文本词频分析 我基本上就照抄了一遍 中间遇到一些小小的问题 自我百度 填坑补全了 如下 : 效果演示 0x01 准备环境及 ...
- python英文字符频率统计_Python统计字母出现的频率
使用 Python 统计 26 个字母出现的频率:输入是一个很长的字符串,对其中的英文字母统计其出现的次数,其他字符忽略不处理,大写字母和小写字母当作一个字母来看. input_str = " ...
- python 多次匹配_Python学习记录14
print("#") import re # s = "哈哈2" res = re.search("[0-9]",s) print(res) ...
- python中分组频率统计功能_python频数统计value_counts和groupby方法
python频数统计和groupby方法 频数统计 先用字典类型的数据创建一个DataFrame,test_data import pandas as pd test_data = pd.DataFr ...
- python英文字符频率统计_python统计英文首字母出现的次数
使用python解析有道词典导出的xml格式单词,统计各个首字母出现的次数,并按次数由多到少进行排序 相关实现 导出的xml格式如下 portion n. 部分:一份:命运vt. 分配:给-嫁妆 [' ...
最新文章
- 欢迎使用CSDN-markdown编辑器test
- 模板之家php mysql_PHP+APACHE+MYSQL安装方法
- python if __name__ == ' __main__'
- IE9 下 Flash 显示列表中没有对象后不再显示的Bug
- 峰值信噪比公式_关于 PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比的个人理解
- python笔记1——基础
- html行内设置样式,Js获取/设置行内样式和非行内样式
- 马云装神弄鬼拜见过被通缉的气功大师王林, 歪门邪道的人还办教育,用淘宝支付宝真的不放心
- 字符串中单词分别逆序
- 宴会泡泡机市场前景分析及研究报告
- 基于三维激光扫描技术的古建筑保护
- BUUCTF [FlareOn2]elfie
- AE内置效果Anglecontrol
- 快速启动以管理员身份运行命令行窗口命令
- 文津读书沙龙:吴军杨早数学之美-文明之光
- [I.MX6UL] U-Boot移植(六) 网络驱动修改 LAN8720A(对比原子和NXP官方测试板的网络芯片LAN8720A , KSZ8081 (也是飞凌)唯独复位引脚不同595芯片也涉及改动)
- Wireshark分析明文账号、密码登录
- 仿腾讯盒子游戏(新手练习)
- Wince下的手写输入法
- 中国社科发布十大调查研究咨询公司信息
热门文章
- 我国中小学生linux启蒙教育起步了吗?
- display:list-item
- 安卓机水滴屏iphoneX全面屏 适配 实践
- OPPO R6007线刷刷机包 救砖解锁 刷机教程
- jetson nano安装树莓派摄像头(v2)及调试的方法
- Proteus无法在您的库中找到系统文件PRODEFS.INT,LIBRARY文件夹路径错误。
- Python游戏-实现键盘控制功能
- html 弹框字体模糊,html - Chrome中的字体太模糊了 - 我该如何解决这个问题? - 堆栈内存溢出...
- Hyperlynx 仿真模型讲解
- 移动端的touch事件