本篇博客介绍2个第三方库,中文分词库jieba和词云库WordCloud,我们将完成三个例子:

统计英文词汇频率

统计中文文本词汇频率使用jieba库

生成词云

在正式开始之前,我们先安装两个第三方库:中文分词库jieba和词云库WordCloud

统计英文词汇频率

英文词汇统计十分简单,因为每个单词之间都是用空格分开的的,当然也有一些特殊模号,我们将对整个文本进行噪音处理,然后将其分割成单词,存入字典中,再给词汇按照频率排序,步骤如下:

从文件流 中读取一段全英文文本

将文本用lower()归一化成小写形式

将文本中的特殊符号:;<>"~!@#$%^&*()-+[]|{}/*.,?过滤,替换成空格for ch in ';<>"~!@#$%^&*()-+[]|{}/*.,?':replace

将文本split,划分成单个单词,返回一个列表

遍历这个列表,按照单词=>出现次存入字典中:counts[x]=counts.get(x,0)+1

使用items()返回一个列表,给列表排序

格式化输出这个列表

代码如下:

#coding=gbk

def getText(fileName):

f=open(fileName,'r')

txt=f.read().lower()

for ch in ';<>"~!@#$%^&*()-+[]|{}/*.,?':

txt=txt.replace(ch,' ')

f.close()

return txt

def comp(x):

return x[1]

def main():

txt=getText('English.txt')

words=txt.split()

counts={}

for x in words:

counts[x]=counts.get(x,0)+1

items=list(counts.items())

items.sort(key=comp,reverse=True)

for i in range(10):

key,value = items[i]

print("{0:<10} {1:>5}".format(key,value))

main()

读入文件:

输出结果:

you 32

to 19

the 10

who 10

those 9

have 8

and 8

that 6

want 6

make 6

统计中文词汇频率

中文语句和英文不一样,中文词汇之间没有空格而是连续的字段,如何对一段文本进行分词处理呢?我们可以安装第三方库jeiba,它使用中文词库的方式来识别词汇:依靠中文词库计算出某个词汇的概率,从而确定某段文字是不是词汇,我们只需要在cmd中打开script目录,输入pip install jieba即可完成安装,常用函数如下:

函数  描述  举例

jieba.lcut(s)  精确模式,把文本精确地切分开,不存在冗余,返回一个列表类型的分词结果  jieba.lcut('中国是一个伟大的国家')

jieba.lcut(s,cut_all=True)  全模式,把文本中所有可能的词汇都扫描出来,存在冗余,返回一个列表类型的分词结果  jieba.lcut('中国是一个伟大的国家',cut_all=True)

jieba.lcut_for_search(s)  搜索引擎模式,在精确模式的基础上对长词进行切分,返回一个列表类型的分词结果  jieba.lcut_for_search('中国是一个伟大的国家')

jieba.add_word(s)  将新词汇添加到词库中  jieba.add_word(‘我爱python’)

举例:

#coding=gbk

import jieba

def main():

print(jieba.lcut('中国是一个十分美丽的国家'))

print(jieba.lcut('中国是一个十分美丽的国家',cut_all=True))

print(jieba.lcut_for_search('中国是一个十分美丽的国家'))

main()

'''

['中国', '是', '一个', '十分', '美丽', '的', '国家']

['中国', '国是', '一个', '一个十', '十分', '美丽', '的', '国家']

['中国', '是', '一个', '十分', '美丽', '的', '国家']

'''

说完jieba库,我们要开始统计词频了,如何统计?步骤和统计英文相似,不过有了jieba的加持,这变得更为简单:

从文件流 中读取一段全中文文本

直接使用jieba.lcut(txt)将文本切分,返回一个列表

当然这个列表中包含了字符,我们可以直接在遍历过程中不统计len=1的字符

遍历这个列表,按照单词=>出现次存入字典中:counts[x]=counts.get(x,0)+1

使用items()返回一个列表,给列表排序

格式化输出这个列表

代码如下:

#coding=utf-8

import jieba

def getText(fileName):

f=open(fileName,'r',encoding='utf-8')

txt=f.read()

f.close()

return txt

def comp(x):

return x[1]

def main():

txt=getText('Chinese.txt')

words=jieba.lcut(txt)

counts={}

for x in words:

if len(x)==1:

continue

else:

counts[x]=counts.get(x,0)+1

items=list(counts.items())

items.sort(key=comp,reverse=True)

for i in range(10):

key,value = items[i]

print("{0:<10} {1:>5}".format(key,value))

main()

文本读入

统计结果:

'''

可以 9

藏不住 4

如果 3

一天 3

我们 3

一个 3

男人 3

每个 3

那里 3

不怪 3

'''

生成词云

生成词云我们是用的是wordcloud库,这个库可以将给定的一段文本按照空格镜像区分,按照频率显示在一张图片上,频率越高,字体越大,函数以及参数如下:

生成词云对象:wordcloud.WordCloud([width][,height][,min_font_size],[,max_font_size][,font_path][,max_words][,stop_words][,mask])

参数属性:郑州妇科哪家好 http://www.zzkdfk.com/

函数  描述  举例

width  词云对象的宽度,默认400  w=wordcloud.WorldCloud(width=800)

height  词云对象的高度,默认600  w=wordcloud.WorldCloud(height=800)

min_font_size  指定词云中字体的最小号,默认为4号  w=wordcloud.WorldCloud(min_font_size=10)

max_font_size  指定词云字体的最大号,默认根据高度自动调节  w=wordcloud.WorldCloud(max_font_size=20)

font_step  指定词云中字体字号的步进间隔,默认为1  w=wordcloud.WorldCloud(font_step=2)

font_path  指定字体文件的路径,默认为None  w=wordcloud.WorldCloud(font_path='msyh.ttc')

max_words  指定词云中的最大显示单词数量,默认200  w=wordcloud.WorldCloud(max_words=100)

stop_words  指定词云中的排除词列表,列表中的词汇将不会出现在词云中  w=wordcloud.WorldCloud(stop_words={"python"})

mask  指定词云形状,默认为长方形,需要引用imread()函数     >>> from scipy.misc import imread

>>> mk=imread('pic.png')

>>>w=wordcloud.WordCloud(mask=mk)

background_color  指定词云图片的背景颜色,默认为黑色  w=wordcloud.WorldCloud(background_color='white')

将文本加载到词云对象:w.generate(txt)

将词云对象导出成文件: w.to_file(fileName)

wordcloud根据空格来区分单词,并且会自动过滤符号

代码如下:(根据QQ消息记录,过滤掉头衔和@后生成词云)

#coding=gbk

#coding=utf-8

import wordcloud

import jieba

def getText(fileName):

f=open(fileName,'r',encoding='gbk')

txt=''

for line in f:

if ('【' in line) or ('】' in line) or ('@' in line):continue

else:txt+=line

f.close()

txt=' '.join(jieba.lcut(txt))

return txt

def main():

txt=getText('test.txt')

w=wordcloud.WordCloud(font_path='msyh.ttc',width=800,height=600,max_words=40,font_step=3)

w.generate(txt)

w.to_file('wordcloud3.png')

print('make wordCloud successfully!')

main()

python做词云统计_python词频统计,生成词云相关推荐

  1. 基于DataFrame结构的词频表生成词云图

    说明:基于DataFrame结构的词频表生成词云图 代码 from wordcloud import WordCloud import matplotlib.pyplot as pltfrequenc ...

  2. python爬取网页版QQ空间,生成词云图、柱状图、折线图(附源码)

    python爬取网页版QQ空间,生成词云图.柱状图.折线图 最近python课程学完了,琢磨着用python点什么东西,经过一番搜索,盯上了QQ空间,拿走不谢,欢迎点赞收藏,记得github给个sta ...

  3. python——读取docx文档wordcloud生成词云并进行词频统计

    文章目录 环境准备 导入库 读取docx并进行分词 词频 词云 设置背景图片(可选) 生成词云 保存词云并显示 环境准备 # 不是docx,是python-docx!!!!!!! pip instal ...

  4. python 对excel文件进行分词并进行词频统计_python 词频分析

    python词频分析 昨天看到几行关于用 python 进行词频分析的代码,深刻感受到了 python 的强大之处.(尤其是最近自己为了在学习 c 语言感觉被它的语法都快搞炸了,python 从来没有 ...

  5. Python爬虫网易云歌词及词频统计--(周杰伦top50)

    本篇博客是利用Python爬虫网易云音乐,并利用jieba分词,对歌词进行分词,然后分析周杰伦top50中最常出现的词语. 我们先尝试获取一首歌的歌词吧,比如等你下课这首歌 上面的id就是等你下课这首 ...

  6. python特定词频统计_词频统计方案与具体实现-elasticsearch、spark、python

    方案一.基于ElasticSearch方式 方案二.基于Spark方式 方案三.基于Python方式 方案一.基于ElasticSearch方式 详见文章,里面列举了各种ElasticSearch的实 ...

  7. 超级详细使用jieba分词用wordcloud制作词云并进行词频统计实例

    最近学习机器学习课程,学到文本分类就研究了下词云如何处理,写下代码和文件以便帮助更多的人,个人变成基础极其薄弱,如有问题请自行修改相关代码. 准备工作 使用命令安装jieba 分词,这里已经帮大家写好 ...

  8. python 读取TXT 文档进行词频统计

    去除停用词 #排除词库 excludes = ['the','and','to','of','i','a','in','it','that','is','you','my','with','not', ...

  9. 【词频统计】--用python的jieba进行英文文本词频统计

    目录 1.基本思路:统计哈利波特小说中词频最高的前20个,去掉一些停用词(如is) 2.停用词(截取部分) 3.代码如下 4.小知识:元组可以用来这样赋值 1.基本思路:统计哈利波特小说中词频最高的前 ...

  10. python的总结与心得词云设计理念_Python编程语言:使用词云来表示学习和工作报告的主题...

    上一篇文章,小编和大家分享的一维数据定义和处理方法,以及小编自己的理解,这篇文章小编要和大家分享的是通过Python编程程序来汇总词云,用来表达学习和工作报告的鲜明主题! 首先我们要知道什么是词云,词 ...

最新文章

  1. C 格式化的输入输出(printf scanf)
  2. 游戏开发者需要注意的4个内存使用问题
  3. 【Microstation】不能从对话框中装载/创建类型为 ‘HTML‘,id =41510001 的对话框条目,该对话框为: “文本编辑器 - 字处理器“,GCSDIALOG 已装载。
  4. Java中的Google ClientLogin实用程序
  5. 自然语言处理与文本检索
  6. scrapy startproject【学习笔记02】
  7. C++远航之封装篇——构造函数
  8. 一步一步带你创建Azure Point-to-Site ***
  9. 软件测试基础 - 系统测试
  10. java文件格式转换
  11. Sandbox简介和路径获取
  12. Object to xml 2
  13. 数据挖掘十大经典算法
  14. .html页面缓存问题
  15. VMware残留问题
  16. 如何实现WiFi下计算机互相访问,如何让两台笔记本电脑在无线连接下互相投屏...
  17. Windows 10 中的恢复选项
  18. 解决服务器终端无法显示图片的问题
  19. Flare Network,跨越互操作性三难困境
  20. 清华大学电子计算机学院山西籍导师,清华大学山西高考录取结束 96人创历史新高...

热门文章

  1. Selenium2_如何判断WebElement元素对象是否存在
  2. EXCEL VBA编程入门二:什么是VBA?什么是EXCEL VBA?
  3. 2016 hack.lu-ctf redacted RSA数据恢复
  4. java云购_ycyg: 源创元购,一元云购java springmvc版本 云购商城 开源一元云购 开源java商城...
  5. 文件后缀名怎么修改?文件不显示后缀名怎么办
  6. 最新ThinkPHP仿华为商城源码+带支付宝接口/在线支付
  7. 达梦数据库(DM7) 常用运维语句
  8. Boost C++ 库 中文教程(全)
  9. matlab绘制有夹角的2个平面,matlab求两向量夹角
  10. SAP UI5 应用开发教程之六十五 - 基于 OData V4 的 SAP UI5 表格控件如何实现创建,编辑和保存功能试读版