python英语词频统计,python 词语频率统计

  python英语词频统计,python 词语频率统计

  http://www.judymax.com/archives/1033

  在本文中,我们将编写这样一个Python程序:从网上抓取前一天0755到79000的文本,通过分词技术将其分解成短语,根据出现频率对分解后的短语进行统计,并根据统计值由大到小绘制柱形图。

  本文介绍的程序是用Python2编写的,借助了丰富的开源库:

  Mechanize BeautifulSoup用于编写网络爬虫jieba中文分词库matplotlib科学图库。按照程序逻辑,我将全文分为以下三个部分:

  获取Github地址《新闻联播》文本分词统计词频排序绘图完整源代码。

  获取《新闻联播》文本草稿。央视网提供《新闻联播》文字稿。我们只需要想办法爬下来。

  比如这里是2014年12月10日《新闻联播》网络视频的地址。

  打开页面,你会发现里面列出了很多视频地址:

  新闻联播视频完整版20141210[视频][年终经济专稿]中国经济已经从要素驱动转向创新驱动.新闻联播视频完整版的这个链接,打开后是当天新闻联播的完整视频,没有文字稿,不是我们需要的。

  在它之后,以【视频】开头,是当天新闻联播的具体新闻。打开后会发现文字稿在视频下方。

  所以我们爬虫的目标很明确:首先抓取每日特定新闻链接,然后依次进入链接抓取里面的文字稿。

  首先,我们生成新闻列表页面的URL:

  #昨天的日期yesterday=datetime . now()-time delta(days=1)root _ URL= 3358ccctv.cntv.cn/lm/xinwenlianbo/yesterday.strftime( 20% y % m % d )。shtml 打印。

  #新闻联播中每个具体新闻链接response=br . open(root _ URL)soup=beautiful soup(response)soup=soup . find( div ,MD _ BD )news _ URLs=[]count=0 print 获取昨天的新闻列表.#抓取soup.find _ all (li )中tag _ li的每个具体新闻链接:#避免新闻联播全文if count==0:count=1 continue news _ URLs . append(tag _ Li . a . get( href )count=1 printu 昨天有%d条新闻,% len(news_urls)print 获取新闻广播内容.news _ count=1 # news _ URLs中URL的主要内容= :print [% d/% d]get.% (news_count,len(news_urls)),response=br . open(URL)soup=beautiful soup(response)soup=soup . find( div , body )content=soup . get _ text()print ok!News_count=1此时,文本草稿已经被抓取,它们保存在变量content中,等待进一步的处理。

  文本分词统计在上一节中,我们得到了文本草稿的内容。在这一节中,我们需要对其进行切分,所以需要使用stammer中文分词库。

  我们把一段文字传入口吃,他会根据内置的文字分析算法,把中文段落一个个分解成中文单词。

  在分词的结果中,有很多助词和连词,这些助词和连词是没有意义的,也是经常出现的,所以我们需要建立一个黑名单,把这些不重要的词和一些不必要的符号过滤掉。

  该过程如下:

  打印分词和词频统计.#创建黑名单,用户过滤黑名单=[u 长相,U 关系,U 这本书,U 连续,U 其,U ,U 第一,U 第二,U 第三 U 我的站,U 热,U ,,U 和,U 因为,U 因此,U 但是,U 喜欢,U 更多,U 使用,U ,U 这个,U 有,U ;,u% ,u :,u ?、U (、u s 、U and 、U le 、U et al 、U will 、U will 、U will 、U CCTV 、U news broadcast 、U is 、U our country 、U U value 、U day 、U big ]hist={ } for word in jieba . cut(content):如果word在黑名单中:continue hist[word]=hist . get(word,0) 1我们先建立一个黑名单,然后建立一个空字典hist,它的key代表,

  我们使用循环来划分单词。word表示被拆分的单词。如果不在黑名单里,我们会对其进行词频统计。

  词频统计hist是通过词频排序图得到的。我们来考虑如何表现。

  我想到的一个办法是将hist中的键按值排序,然后用matplotlib画一个直方图。该过程如下:

  #排序词频hist _ sorted=sorted(hist . ITER items(),key=lambda d: d [1],Reverse=True)#取出现频率最高的50个词绘制图表打印绘制直方图.bar _ width=0.35 pyplot . bar(range(20),[hist _ sorted[I][1]for I in range(20)],bar _ width)pyplot . x ticks(range(20),hist _ sorted[I][0]for I in range(20)],fontproperties=font,Rotation=30)pyplot . title(u 《新闻联播》词频分析 yesterday . strftime( 20% y % m % d )u by maxiee),字体属性

  嗯(表示踌躇等).嗯,没什么可看的.

  写这篇文章的目的是,所有使用的技术都是基本的,但它们可以组合起来,成为一个有趣的小工具。

  有几点需要添加到程序中:

  列表分页,程序中不考虑(30分钟有那么多话要说……)。黑名单很傻很暴力。不知道口吃词典里有没有词类分类。直接删掉名词会好得多。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: