在前面讲nltk安装的时候,我们下载了很多的文本。总共有9个文本。那么如何找到这些文本呢:

text1: Moby Dick by Herman Melville 1851

text2: Sense and Sensibility by Jane Austen 1811

text3: The Book of Genesis

text4: Inaugural Address Corpus

text5: Chat Corpus

text6: Monty Python and the Holy Grail

text7: Wall Street Journal

text8: Personals Corpus

text9: The Man Who Was Thursday by G . K . Chesterton 1908

直接输入它们的名字就可以了

print text1
print text2

E:\python2.7.11\python.exe
E:/py_prj/NLTK_study/chapter1.py

<Text: Moby Dick
by Herman Melville 1851>

<Text: Sense and
Sensibility by Jane Austen 1811>

我们还可以对文本中的单词进行查找。

print text1.concordance('monstrous')

结果如下,找到了11个匹配的地方

Displaying 11 of 11 matches:

ong the former , one was of a most monstrous size . ... This came towards us ,

ON OF THE PSALMS . " Touching that monstrous bulk of the whale or ork we have r

ll over with a heathenish array of monstrous clubs and spears . Some were thick

d as you gazed , and wondered what monstrous cannibal and savage could ever hav

that has survived the flood ; most monstrous and most mountainous ! That Himmal

they might scout at Moby Dick as a monstrous fable , or still worse and more de

th of Radney .'" CHAPTER 55 Of the Monstrous Pictures of Whales . I shall ere l

ing Scenes . In connexion with the monstrous pictures of whales , I am strongly

ere to enter upon those still more monstrous stories of them which are to be fo

ght have been rummaged out of this monstrous cabinet there is no telling . But

of Whale - Bones ; for Whales of a monstrous size are oftentimes cast up dead u

None

如果我们想知道单词出现在文本的那些位置,比如是在文本开始处多些呢,还是在文本末尾开始多些。这里就用到dispersion_plot函数。Text4的名称为Inaugural Address Corpus,中文意思是就职演说的意思。因此在text4中有整理的美国总统就职演说的文本。从里面的文本来看有从1789年到2009年的总统就职演说

我们来看下citizens,democracy,freedom,duties,American出现的位置

print len(text4)
text4.dispersion_plot(["citizens","democracy","freedom","duties","American"])
E:\python2.7.11\python.exe E:/py_prj/NLTK_study/chapter1.py

145735

首先text4的长度为145735。上面的散点图就是生成的结果。注意,要得到这个散点图必须先安装Numpy以及Matplotlib。否则在画图的时候会报错。

从上面的这个散点图我们可以看到citizens是出现得最多的地方。Citizens的中文意思是市民,公民的意思。这也符合美国的一贯政治风格嘛。总统是在现场做演说自然首先就得来和选民们拉近关系。套套近乎嘛。而随着演讲的进行,American和freedom之类的词语就开始多起来了。和选民和拉近关系了后,后面就要开始普世价值以及爱国情绪煽动了。什么捍卫人类的freedom,为了American的强大之类的话语。

我们再多来点词汇看看:我们加入了china,tax,security,immigrant。分别是中国,税收,安全,移民

text4.dispersion_plot(["citizens","democracy","freedom","duties","American","china","tax",'security','immigrant'])

从上面的图可以看到明显少了的很多,除了security和tax有一些之外。诸如china,immigrant这些词基本就没出现。其实我们加入的china,tax,security,immigrant这些词语都是一些具体国家事务的词。但是在就职演说看不到半点的描述。因此我们可以认为总统的就职演说重点不是施政纲领,哪是在竞选的时候才会提到。就职演说就是个口才show。

如果想文本里面都有哪些单词,可以用set(text4)查看在总统的就职演说中出现了哪些词。由于量太大,这里就不列举出来了。既然知道了总的词数个数以及词的汇总,那么我们可以来计算每个词出现的频度了。从下面结果看到在text4中每个单词的出现频率平均是14次。

print 'the length of text4 is %d' % len(text4)
print len(text4) / len(set(text4))

E:\python2.7.11\python.exe E:/py_prj/NLTK_study/chapter1.py

the length of text4 is 145735

14

那么在这些演讲中这些词出现的次数是多少呢。我们以上图的citizens为例。可以看到citizizens出现了230次。

print text4.count('citizens')
E:\python2.7.11\python.exe E:/py_prj/NLTK_study/chapter1.py

230

那如果我们要找出在总统就职演说中出现最多的词该怎么办呢。是通过对单词一个个的计数来得出结果? 那样太费时间了。NLTK提供了专门的函数做到这一点。

fdist1=FreqDist(text4)
vocabulary1=fdist1.keys()
print vocabulary1[:10]
fdist1.plot(10,cumulative=True)
FreqDist是一个统计频率分布的函数,通过fdist1.plot我们可以画出用得最多的10个单词的分布。

我们可以细化一点,如何统计次数超过500次的单词呢。

fdist1=FreqDist(text4)
list=[w for w in set(text4) if fdist1[w] > 500]

[u'.', u'has', u'people', u'for', u'I', u'with', u'as', u'to', u'be', u'by', u'this', u'we', u'the', u'not', u'that', u'a', u'The', u';', u',', u'is', u'it', u'in', u'have', u'our', u'and', u'its', u'of', u'or', u'all', u'are', u'from', u'their', u'which', u'will']

这些词的次数都超过500词,可以认为是高频词。

list=[w for w in set(text4) if len(w) > 15].结果如下:

[u'internationality', u'misappropriation', u'irresponsibility', u'enthusiastically', u'disqualification', u'misrepresentation', u'misunderstanding', u'antiphilosophists', u'responsibilities', u'contradistinction', u'transcontinental', u'unconstitutional', u'discountenancing', u'sentimentalizing', u'uncharitableness', u'constitutionally', u'instrumentalities', u'RESPONSIBILITIES'

还可以通过print fdist1.max()来查看出现最多的单词。结果是the。
要计算单词的频率可以通过print fdist1.freq('internationality')来得到

												

python+NLTK 自然语言学习处理二:文本的更多相关文章

  1. python+NLTK 自然语言学习处理四:获取文本语料和词汇资源

    在前面我们通过from nltk.book import *的方式获取了一些预定义的文本.本章将讨论各种文本语料库 1 古腾堡语料库 古腾堡是一个大型的电子图书在线网站,网址是http://www.g ...

  2. python+NLTK 自然语言学习处理八:分类文本一

    从这一章开始将进入到关键部分:模式识别.这一章主要解决下面几个问题 1 怎样才能识别出语言数据中明显用于分类的特性 2 怎样才能构建用于自动执行语言处理任务的语言模型 3 从这些模型中我们可以学到那些 ...

  3. python+NLTK 自然语言学习处理:环境搭建

    首先在http://nltk.org/install.html去下载相关的程序.需要用到的有python,numpy,pandas, matplotlib. 当安装好所有的程序之后运行nltk.dow ...

  4. python+NLTK 自然语言学习处理六:分类和标注词汇一

    在一段句子中是由各种词汇组成的.有名词,动词,形容词和副词.要理解这些句子,首先就需要将这些词类识别出来.将词汇按它们的词性(parts-of-speech,POS)分类并相应地对它们进行标注.这个过 ...

  5. python+NLTK 自然语言学习处理三:如何在nltk/matplotlib中的图片中显示中文

    我们首先来加载我们自己的文本文件,并统计出排名前20的字符频率 if __name__=="__main__": corpus_root='/home/zhf/word' word ...

  6. python+NLTK 自然语言学习处理七:N-gram标注

    在上一章中介绍了用pos_tag进行词性标注.这一章将要介绍专门的标注器. 首先来看一元标注器,一元标注器利用一种简单的统计算法,对每个标识符分配最有可能的标记,建立一元标注器的技术称为训练. fro ...

  7. python+NLTK 自然语言学习处理五:词典资源

    前面介绍了很多NLTK中携带的词典资源,这些词典资源对于我们处理文本是有大的作用的,比如实现这样一个功能,寻找由egivronl几个字母组成的单词.且组成的单词每个字母的次数不得超过egivronl中 ...

  8. Python+NLTK自然语言处理学习(一):环境搭建

    Python+NLTK自然语言处理学习(一):环境搭建 参考黄聪的博客地址:http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.ht ...

  9. Python NLTK 自然语言处理入门与例程(转)

    转 https://blog.csdn.net/hzp666/article/details/79373720     Python NLTK 自然语言处理入门与例程 在这篇文章中,我们将基于 Pyt ...

随机推荐

  1. Docker - 容器直连

    本文是在原文基础上的实际操作验证记录和细节补充. 默认情况下,容器连接到虚拟网桥docker0提供的虚拟子网中,容器之间通过默认网关(虚拟网桥docker0接口地址)建立连接. 如果不使用虚拟网桥,用 ...

  2. [刷题]算法竞赛入门经典(第2版) 5-4/UVa10763 - Foreign Exchange

    题意:有若干交换生.若干学校,有人希望从A校到B校,有的想从B到C.C到A等等等等.如果有人想从A到B也刚好有人想从B到A,那么可以交换(不允许一对多.多对一).看作后如果有人找不到人交换,那么整个交 ...

  3. LogBack学习

    Logback背景 Logback是一个开源的日志组件,是log4j的作者开发的用来替代log4j的.logback由三个部分组成,logback-core, logback-classic, log ...

  4. 无锁atomicInteger

    AtomicInteger可以保证硬件上的原子操作 1.主要原理 CAS操作 在进行数据更新的时候,会进行与内存中的地址进行比较,若预期值与内存中的值相同,则进行数据上的更新,若值不同,则更新失败,  ...

  5. DOM4J介绍与代码示例

    DOM4J是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JA ...

  6. ES6核心内容精讲--快速实践ES6(三)

    Promise 是什么 Promise是异步编程的一种解决方案.Promise对象表示了异步操作的最终状态(完成或失败)和返回的结果. 其实我们在jQuery的ajax中已经见识了部分Promise的 ...

  7. SignalR来做实时Web聊天

    本章和大家分享的内容是使用Signal R框架创建个简易的群聊功能,主要讲解如何在.Net的MVC中使用这个框架,由于这个项目有官方文档(当然全英文),后面也不打算写分享篇了,主要目的是让朋友们在需要 ...

  8. Qt之添加图标

    导读: 在使用Qt Creator编写完应用程序后,设置release版的应用程序图标着实困扰了不少的人.一个漂亮的图标是一个软件的脸,没有一个漂亮的图标,那么这个程序是不完整的.那么我们来看看如何设 ...

  9. ASP.NET Web API 自定义 HttpParameterBinding

    背景 问题的起因是这样的.群里面一个哥们儿发现在使用 ASP.NET WebAPI 时,不能在同一个方法签名中使用多次 FromBodyAttribute 这个 Attribute .正好我也在用 W ...

  10. 基于FPGA的彩色图像转灰度算法实现

    昨天才更新了两篇博客,今天又要更新了,并不是我垃圾产,只不过这些在上个月就已经写好了,只是因为比赛忙,一直腾不出时间整理出来发表而已,但是做完一件事情总感觉不写一博文总结一下就少点什么,所以之后的一段 ...