python使用nltk进行中文语料库的词频分布统计
文章目录
- 问题描述
- 构建语料库
- 统计字数
- 统计词频分布
问题描述
根据给定的语料库,统计其中共包含多少字、平均每个词使用了多少次以及常用词的分布以及累计分布情况。
本文就以大秦帝国第一部小说为例进行实验
本文可以使用在毕业设计中,如果有帮助采用请点赞关注下呗,欢迎大家交流技术,也可以私聊毕设题目交流解决方法
构建语料库
因为我们要处理的语言是中文,部分方法 NLTK 是针对英文语料的,中文
语料不通用(典型的就是分词)。这个问题的解决方法很多,诸如通过插件等在NLTK 工具包内完成对中文的支持。另外也可以在 NLTK 中利用Standford NLP 工具包完成对自己语料的操作。
可以对汉字字体以及字号进行设置,然后通过PlaintextCorpusReader函数创建语料库
from nltk.corpus import PlaintextCorpusReader
worlists = PlaintextCorpusReader(corpus_root, '.*')
统计字数
在创建完语料库后,我们可以打开语料库中的每个文件,然后统计每个文件中的字符数以及字数,统计字数时需要使用words函数
str1 = f.read() # 读取文件的所有字符
len_str = len(str1)
print(text + '文本的字符数为:' + str(len_str)) # 输出文件的字符数
len_word = len(worlists.words(text))
print(text + '文本的字数为:' + str(len_word)) # 输出文件的字数
之后可以统计每个文件的指定字符出现的次数,使用的是字符串的count函数
str1.count("周")
查看文本中的出现次数最多的字,这里使用的是FreqDist包Construct a new frequency distribution,然后使用pformat函数得到a string representation of this FreqDist,也就是返回按照字数出现频率的一个字符串,然后再使用max函数Return the sample with the greatest number of outcomes in this frequency distribution,也就是返回出现次数最多的字符
from nltk import FreqDist
最后得到的结果如下
统计词频分布
使用plot函数绘制词频出现的次数,通过下图可以分析出每个文件中词频的大致分布,大部分词频分布在那个曲线的出现弧度的部分,横坐标表示词的序列,纵坐标表示词频
下图显示文本中所有字符相加之后的分布,也就是累积分布,可以根据这个图像看出大致的高频词汇占总共字符的一个比例
下面两张图像显示前1000个高频词汇的分布情况,图像显示前1000个能大致包含绝大多数文本内容。首先要获取前1000个高频词汇,这里使用的是字符串的更替函数,因为前面介绍的pformat函数可以返回一个代表文本词频分布的一个字符串,这个字符串很像字典形式,所以可以根据字符串的操作,转化为字典形式的字符串,然后再将其转化为字典,然后再进行显示,可以得到前1000个高频词汇的分布
下面两张图像显示前100个高频词汇的分布情况,前100个高频词汇个数有一万六千多,q1文本的总字数为三万多,所以前100个高频词汇能大致包含50%文本内容
python使用nltk进行中文语料库的词频分布统计相关推荐
- 使用Python和NLTK的自然语言处理(NLP)教程
Natural language processing (NLP) is a branch of artificial intelligence that helps computers unders ...
- Python和NLTK自然语言处理
作者:[印度] 尼天·哈登尼亚(Nitin Hardeniya)雅各布·帕金斯 出版社:人民邮电出版社 出版时间:2019年04月 Python和NLTK自然语言处理
- 探索 Python、机器学习和 NLTK 库 开发一个应用程序,使用 Python、NLTK 和机器学习对 RSS 提要进行分类
挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域 ...
- python人脸头发身体部位识别人数统计
python人脸头发身体部位识别人数统计 如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助! 运行结果如下: 代码如下: import tim ...
- Python之pandas:利用describe函数统计【类别型】特征/离散型变量的描述性统计信息(包括个数count、unique、top及其freq、first、last)之详细攻略
Python之pandas:利用describe函数统计[类别型]特征/离散型变量的描述性统计信息(包括个数count.unique.top及其freq.first.last)之详细攻略 目录 利用d ...
- python评论情感分析nltk_基于 Python 和 NLTK 的推特情感分析
基于 Python 和 NLTK 的推特情感分析 作者:宋彤彤 1. 导读 NLTK 是 Python 的一个自然语言处理模块,其中实现了朴素贝叶斯分类算法.这次 Mo 来教大家如何通过 python ...
- Python OpenCV识别行人入口进出人数统计
程序示例精选 Python OpenCV识别行人入口进出人数统计 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<Python OpenCV识别行 ...
- 利用python来自己写一个服务器台账统计小工具
利用python来自己写一个服务器台账统计小工具 前言 无奈呀,压力创造成品 背景是这样的,相信在看的各位在管理服务器密码的时候,肯定会有个台账啥的,当然咱也有,但是吧,为了安全期间,不允许出现在服务 ...
- python数据清洗实例_hive 的日志处理统计网站的 PV 、UV案例 与 给合 python的数据清洗数据案例...
一:hive 清理日志处理 统计PV.UV 访问量 二: hive 数据python 的数据清洗 一: 日志处理 统计每个时段网站的访问量: 1.1 在hive 上面创建表结构: 在创建表时不能直接导 ...
最新文章
- 马尔可夫模型与条件随机场模型
- html5代码大全文库,HTML颜色代码表
- 类型两个数相减_小学数学简便计算12种分类+5种易错类型,打印出来给孩子练习!(可打印!)...
- Android keymaster的介绍和总结
- MySQL基础 (DML)
- Angular tsconfig.json 文件里的 paths 用法和 scoped module 定义
- php 使用webservice_PHP中如何调用webservice的实例参考
- linux tcp 创建,Linux下tcp服务器创建的步骤
- 7.2图的存储结构(邻接表)
- php 基础入门篇之前言
- (Java 多线程系列)java synchronized详解
- C++基础教程之类与对象
- RedHat 6.4源码方式安装mysql5.5
- systen v消息队列(一)
- 我在小公司,当了五年的前端切图仔
- 论文笔记:Pointing Novel Objects in Image Captioning
- Type mismatch: inferred type is MainActivity but FlutterEngine was expected
- 怎样把PDF图片旋转90度
- ppt中插入和删除动画
- arcgis怎么压缩tif文件_使用gdal压缩tif文件