文章目录

  • 问题描述
  • 构建语料库
  • 统计字数
  • 统计词频分布

问题描述

根据给定的语料库,统计其中共包含多少字、平均每个词使用了多少次以及常用词的分布以及累计分布情况。
本文就以大秦帝国第一部小说为例进行实验


本文可以使用在毕业设计中,如果有帮助采用请点赞关注下呗,欢迎大家交流技术,也可以私聊毕设题目交流解决方法

构建语料库

因为我们要处理的语言是中文,部分方法 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进行中文语料库的词频分布统计相关推荐

  1. 使用Python和NLTK的自然语言处理(NLP)教程

    Natural language processing (NLP) is a branch of artificial intelligence that helps computers unders ...

  2. Python和NLTK自然语言处理

    作者:[印度] 尼天·哈登尼亚(Nitin Hardeniya)雅各布·帕金斯 出版社:人民邮电出版社 出版时间:2019年04月 Python和NLTK自然语言处理

  3. 探索 Python、机器学习和 NLTK 库 开发一个应用程序,使用 Python、NLTK 和机器学习对 RSS 提要进行分类

    挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域 ...

  4. python人脸头发身体部位识别人数统计

    python人脸头发身体部位识别人数统计 如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助! 运行结果如下: 代码如下: import tim ...

  5. Python之pandas:利用describe函数统计【类别型】特征/离散型变量的描述性统计信息(包括个数count、unique、top及其freq、first、last)之详细攻略

    Python之pandas:利用describe函数统计[类别型]特征/离散型变量的描述性统计信息(包括个数count.unique.top及其freq.first.last)之详细攻略 目录 利用d ...

  6. python评论情感分析nltk_基于 Python 和 NLTK 的推特情感分析

    基于 Python 和 NLTK 的推特情感分析 作者:宋彤彤 1. 导读 NLTK 是 Python 的一个自然语言处理模块,其中实现了朴素贝叶斯分类算法.这次 Mo 来教大家如何通过 python ...

  7. Python OpenCV识别行人入口进出人数统计

     程序示例精选 Python OpenCV识别行人入口进出人数统计 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<Python OpenCV识别行 ...

  8. 利用python来自己写一个服务器台账统计小工具

    利用python来自己写一个服务器台账统计小工具 前言 无奈呀,压力创造成品 背景是这样的,相信在看的各位在管理服务器密码的时候,肯定会有个台账啥的,当然咱也有,但是吧,为了安全期间,不允许出现在服务 ...

  9. python数据清洗实例_hive 的日志处理统计网站的 PV 、UV案例 与 给合 python的数据清洗数据案例...

    一:hive 清理日志处理 统计PV.UV 访问量 二: hive 数据python 的数据清洗 一: 日志处理 统计每个时段网站的访问量: 1.1 在hive 上面创建表结构: 在创建表时不能直接导 ...

最新文章

  1. 马尔可夫模型与条件随机场模型
  2. html5代码大全文库,HTML颜色代码表
  3. 类型两个数相减_小学数学简便计算12种分类+5种易错类型,打印出来给孩子练习!(可打印!)...
  4. Android keymaster的介绍和总结
  5. MySQL基础 (DML)
  6. Angular tsconfig.json 文件里的 paths 用法和 scoped module 定义
  7. php 使用webservice_PHP中如何调用webservice的实例参考
  8. linux tcp 创建,Linux下tcp服务器创建的步骤
  9. 7.2图的存储结构(邻接表)
  10. php 基础入门篇之前言
  11. (Java 多线程系列)java synchronized详解
  12. C++基础教程之类与对象
  13. RedHat 6.4源码方式安装mysql5.5
  14. systen v消息队列(一)
  15. 我在小公司,当了五年的前端切图仔
  16. 论文笔记:Pointing Novel Objects in Image Captioning
  17. Type mismatch: inferred type is MainActivity but FlutterEngine was expected
  18. 怎样把PDF图片旋转90度
  19. ppt中插入和删除动画
  20. arcgis怎么压缩tif文件_使用gdal压缩tif文件

热门文章

  1. laravel 使用workerman加速应用
  2. 《关于我摸鱼一天后搞定PyCharm这档事》Python环境配置
  3. PageRank算法与特征向量和特征值(eigenvector和eigenvalue)
  4. 深入理解YII2.0
  5. 基于三代测序技术的微生物组学研究进展
  6. linux运行java程序内存过大_排查java应用linux环境内存占用过高的问题
  7. solr中英文分词模糊查询
  8. 数据库——数据库表和表的操作
  9. 情感分析(Emotion Detector)
  10. 什么是restful,什么是rest风格