《Python自然语言处理》P184

# -*- coding: utf-8 -*-
import nltk
colors='rgbcmyk'
def bar_chart(categories,words,counts):"Plot a bar chart showing counts for each word by category"import pylabind=pylab.arange(len(words))#这里的words其实指的是情态动词的个数,对于本测试案例而言,ind=[0,1,2,3,4,5]print ("ind=",ind)width=1/(len(categories)+1)bar_groups=[]for c in range(len(categories)):print("typeof(c):",type(c))print("ind+c*width=",ind+c*width)#每个循环只画一个文章种类中,各个情感动词的频次对应的直方#ind+c*width表示当前情感动词在x轴上的具体位置bars=pylab.bar(ind+c*width,counts[categories[c]],width,color=colors[c%len(colors)])#counts[categories[c]]代表直方的高度bar_groups.append(bars)pylab.xticks(ind+width,words)#把坐标横轴从原本的[0,1,2,3,4,5]转化为显示成具体的英文单词pylab.legend([b[0]for b in bar_groups],categories,loc='upper left')#绘制直方图左上方的标签,告诉读者,什么颜色对应哪一类文本pylab.ylabel('Frequency')pylab.title('Frequency fo Six Modal Verbs by Genre')pylab.show()if __name__=='__main__':genres=['news','religion','hobbies','government','adventure']#表示文章属于哪个类别modals=['can','could','may','might','must','will']#表示需要统计的情态动词cfdist=nltk.ConditionalFreqDist((genre,word)for genre in genres for word in nltk.corpus.brown.words(categories=genre)if word in modals)#在word属于modals列表的情况下#cfdist是个二维数组:cfdist[类别][情感动词]#上面语句中的意思是,调用ConditionalFreqDist对nltk中的指定类别(genre)的语料进行word频次统计print("cfdist=",cfdist)counts={}for genre in genres:  counts[genre]=[cfdist[genre][word] for word in modals] for genre in genres:for word in modals:print("cfdist[genre][word]=",cfdist[genre][word])#这个双重for循环# 是在模仿上面的那个循环,cfdist[genre][word]表示,genre类别中,word这个词语粗线的频率(也就是次数)bar_chart(genres,modals,counts)

必须python3.x下运行,不能python2.x运行

输出结果

布朗语料库中不同部分的情态动词频率直方图绘制的代码详细解释相关推荐

  1. scala中的算术符重载代码详细解释

    overload_exercise.scala代码如下: object Overload_Exercise extends Serializable { //--------------------- ...

  2. python中的折线图、散点图、直方图绘制和图像参数设置

    写在前面 本文是在实验过程中进行简单数据处理时,使用的部分画图程序,涉及折线图.散点图.直方图.所用数据均保存在txt文档中.在函数使用过程中也曾遇到问题,这里的程序是测试可用的, 或可作为借鉴. 环 ...

  3. linux中负载值为多少正常_Linux系统Load average负载详细解释

    我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟.五分钟.以及十五分钟的系统平均负载-- AD: 我们知道判断一个系统的负载可以使用top,uptime等命令去查 ...

  4. [词性] 二十三、情态动词 2 [ have to ] [ ought to ] [ dare ] [ be able to ] [ needn‘t ] [ had better ]

    [ have to ] have to 得意思接近 must,但是 must 强调说话人的意愿         [例1]:We must remember this. 我们必须记住这个         ...

  5. 20180620学习记录(根据情态动词将文本归类,美国总统演说中‘American’和‘citizen’出现次数的变化

    1,情态动词提取 2,路透社报道的文本导入 3,python的for循环 4,筛选词,并画图

  6. Can 情态动词_50

    "can" 的肯定形式 在第49文章中你已认识了情态动词,你记得吗?我们今天将重点放在其中之一:"can"情态动词. "can"情态动词用来 ...

  7. 和could的区别用法_高考英语语法情态动词用法指南

    高考英语语法情态动词用法指南 情态动词有四类: ①只做情态动词:must,can(could),may(might)-- ②可做情态动词又可做实义动词:need,dare,will ③具有情态动词特征 ...

  8. 情态动词can与could的用法详解

    情态动词:can与could的用法详解 一.表示能力 (1) 表示现在的能力,用can: My sister can drive. 我妹妹会开车. Everyone here can speak En ...

  9. can和could的用法_情态动词can和could用法详解

    情态动词 can 和 could 用法详解 can 和 could 用法详解 1. 表示能力, could 是 can 的过去.如: Can you speak English? 你会说英语吗 ? C ...

最新文章

  1. 逻辑斯蒂回归(logisic regression)和SVM的异同
  2. python 图像相似 phash和compare_ssim比较
  3. javaweb设置servlet
  4. python列表换行写入_如何使用Python3中的换行符将列表写入文件
  5. redhat安装wine教程_可能是最漂亮的国产Linux,U盘安装DeepinLinux 深度操作系统
  6. 关于计算机与网络导论的论文,计算机科学与导论论文5
  7. live writer不能首行缩进的问题
  8. 题库:queryset数据类型的特性
  9. 扩展:js控制台输出,除了 console.log还有哪些?
  10. linux每日命令(13):more命令
  11. UITableView分割线
  12. 动画图解:十大经典排序算法动画与解析,看我就够了(配代码完全版)
  13. win10系统的电脑如何录屏?QVE录屏大师使用教程?
  14. 三七女生节,解密阿里女程序员们的代码诗!
  15. android 友盟统计功能,Android应用中添加友盟统计
  16. H3C BGP与IGP交互配置
  17. 计算机二级office高级应用和上机指导,2019年9月全国计算机二级教程:MS Office高级应用上机指导...
  18. 三位水仙花数python代码
  19. 计算机网络是啥意思啊,kk是什么意思?
  20. 纵观Tensorflow、Keras、Pytorch的发展史

热门文章

  1. [转]计算机视觉领域稍微容易中的期刊(第一版)
  2. string match
  3. CG-CTF-Web-单身二十年
  4. MacOS 常用终端命令大全
  5. mysql text查找性能_MySQL TEXT字段性能
  6. Spring Boot集成Debezium监控数据库变化
  7. 音乐、视频播放模式切换实现方案及原理解析(基于vue、vuex、h5 audio)
  8. Cython入门.VS.C++
  9. matplotlib简介-高质量图形输出
  10. PCL的学习必要性、重要性、意义及最初——持续修改中