怎么用Python画词云图
你想知道朋友圈里边传的词云图是如何生成的吗?如何能生成形状各异的词云图呢?今天我们就来跟大家分享如何用Python画词云图!
词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。
在谈画词云图时,先说说小学生学画画,这样的场景,你一定不陌生:
小孩开始画画的时候,许多家长觉得他们画的东西什么都“不像”、“乱七八糟”、“一塌糊涂”。于是他们上书店为孩子买回填色书,这类印有动物,风景的轮廓线,孩子们在线内填上颜色的填色书,在市场上很常见,买回后让小孩规规矩矩地涂色,看到有点像样了,爸爸妈妈们才感觉到欣慰。
总结起来,就是三大步:准备原材料(五颜六色的画笔)、选定一个填色书(需要有形状轮廓等)、较后开始填色。
用Python画词云图其实也是这三大步骤:
1、准备原材料
准备好一份自己需要分析的文本材料,今天我们选取的是,1月25日,习近平在中共中央政治局第十二次集体学习时,关于推动媒体融合向纵深发展的讲话。
在这里,我们主要会用到Python库jieba,jieba就是这样一个非常好用的中文工具,是以分词起家的,但是功能比分词要强大很多。
jieba.cut返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode)。
jieba.cut 方法接受三个输入参数:
需要分词的字符串
cut_all 参数用来控制是否采用全模式,一般情况下,cut_all为False
HMM 参数用来控制是否使用 HMM 模型
import jieba list0 = jieba.cut('我原来是一名Java工程师,后来喜欢上了Python语言', cut_all=True) print("全模式:",list(list0)) list1 = jieba.cut('我原来是一名Java工程师,后来喜欢上了Python语言', cut_all=False) print("精准模式:",list(list1)) ###输出结果: 全模式: ['我', '原来', '是', '一名', 'Java', '工程', '工程师', '', '', '后来', '喜欢', '上', '了', 'Python', '语言'] 精准模式: ['我', '原来', '是', '一名', 'Java', '工程师', ',', '后来', '喜欢', '上', '了', 'Python', '语言']
同时,获得到文本时,我们需要对文本进行文本预处理(删除掉我们不想要的词语以及符号,如同剔除掉不需要的画笔)、文本分词以及词频统计(只获取我们希望展示的词语,如同保留下我们的画笔)
详细代码如下:
data_txt = open(r"E:\project\wordcloud\xinmeiti.txt",'r',encoding='utf-8').read() #文本预处理 pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"') data_txt = re.sub(pattern, '', data_txt) #文本分词 cut_txt = jieba.cut(data_txt) object_list=[] remove_words = [u"的","习近平",u'对',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',u',',u'“',u'”',u'一个',u'是',u'人民日报'] #词频统计 for word in cut_txt: if word not in remove_words: object_list.append(word) word_counts = collections.Counter(object_list)
2、选定填色书
关于词云图较后的形状轮廓,我们将选取宠物猪作为展示。
这里主要说说Python中wordcloud的基本使用,wordcloud把词云当作一个对象,它可以将文本中词语出现的频率作为一个参数绘制词云,而词云的大小、颜色、形状等都是可以设定的。
WordCloud方法的参数如下:
width:指定词云对象生成的图片的宽度(默认为200px) height:指定词云对象生成的图片的高度(默认为400px) min_font_size:指定词云中字体较小字号,默认为4 max_font_size:指定词云中字体较大字号 font_step:指定词云中字体之间的间隔,默认为1 font_path:指定字体文件路径 max_words:指定词云中能显示的较多单词数,默认为200 stop_words:指定在词云中不显示的单词列表 background_color:指定词云图片的背景颜色,默认为黑色 mask:定义词频背景
说明一下:如果设置了mask参数,那么width、height参数将无效
word_cloud 生成词云有两个方法。from text 和 from frequencies 。即文本生成和频率生成,每一个都有对应的函数可以使用,如下:
wd.generate(txt) 向WordCloud 对象w中加载文本txt
wd.generate_from_frequencies(word_counts) 向WordCloud 对象wd中加载词语频率
详细代码如下:
#定义词频背景 background_image = np.array(Image.open(path_image)) font_path="E:\project\wordcloud\simfang.ttf" wd = WordCloud( font_path=font_path, #设置字体格式,不然会乱码 background_color="white", #设置背景颜色 mask=background_image #设置背景图 ).generate_from_frequencies(word_counts) #保存词云图 wd.to_file('zhu.png') #显示词云图 plt.imshow(wd,interpolation="bilinear") plt.axis("off") plt.show()
结果图如下:
由上图可看出,作为一个主流新媒体平台,我们要为人民发声,融合新技术,传播正确的政治舆论。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 南昌东湖区C语言培训南昌新建区java培训 网站详细了解,免费咨询电话:400-998-6158