词云(wordcloud)图能过滤掉大量的文本信息,使我们能抓住问题的集中点(一般集中点就是经常提到的点,也就是词频数会比较高)。其实制作词云没什么技术含量,主要就是将用于绘制词云的所有词都传给软件,然后软件就会返回一张词云图。
本文介绍如何使用python绘制简单的词云图。
文章目录
- 制作基础的词云图
- jieba分词后制作词云
- 制作词库
- 画词云图
- 叮
制作基础的词云图
python中词云可以直接在输入为一大段文字的情况下生成,不需要再做更多处理。比如以下代码:
import wordcloud
import matplotlib.pyplot as plt
text = """
认认真真的生活 再去做一些正儿八经的事儿04决定放弃了的事,就请放弃得干干净净。 那些决定再也不见面的人, 就真的不要见面了。 请不要让我再做背叛自己的事了。 ——山本文绪《恋爱中毒》我从来不想独身,却有预感晚婚;我在等,世上唯一契合灵魂。—— 李宗盛《晚婚》05万物皆有裂痕,那是光照进来的地方 ——《颂歌》06满怀希望就会所向披靡 ——《撒野》撒野女孩!!哪里有撒野哪里就有我!07我有所念人,隔在远远乡 ——白居易08一生辛苦 如果是一场空忙 实在是太可惜 ——《美国往事》余华《活着》中写着“人是为活着本身而活着,而不是为了活着之外的任何事物所活着。”所以我想人这一生不要被太多的东西束缚,请尽量活的单纯,活的纯粹。09你总想依赖别人, 到最后, 你会发现人生的每一个最艰难时刻, 都是自己挺过来的。当一个人承受痛苦时,总会环视四周,欲寻求一个依靠,一丝温暖。可现实却是,周围人来人往,无一人为自己停留。于是便怀着泪水,相拥寂寞,道一句,至少生活没遗忘我。建议点赞收藏,都是精品,错过后悔哦~10一生中最开心的事就是, 很多女孩子喜欢他,但他就喜欢我。他是好多人的马克思,却永远是一个人的卡尔。11坏蛋有很多个面孔 最奸险的是外表善良的那一种。小时候最怕鬼怪,因为他们面目狰狞;长大后最怕的是人类,因为他们衣冠楚楚。12像你这个年纪 要先谈学业和梦想 再去触碰爱情与生活一位母亲的话:如果他没有像你爸爸一样包容你没有像个男人一样保护你没有像我一样心疼你并不是害怕你在十几岁的时候谈恋爱我是担心你在这个年纪遇到错的人不是真正爱你的人认为做了点毛皮就说是爱你的人这叫耽误。——网易云音乐热评《无问》13你一定是自己幸福的最佳评判者。 ——简.奥斯汀看到这句话,突然就想到《活着》里的主人公,我以为他是不幸的,父母死了,儿女死了,孙子死了,妻子死了,只有他和一只老牛活着。我想,再怎么说,他都应该是不幸的吧?可他却用字里行间的情感,以及结局的自嘲告诉我,他很幸福。14骄傲多半不外乎我们对自己的估价, 虚荣却牵涉到我们希望别人对我们的看法。 简.奥斯汀《傲慢与偏见》我觉得人本身就是矛盾体。想不顾他人语言眼神,却又不断在猜测15多读点书, 不然你的三观是由你的亲朋好友决定的16不相信世界就是这样 在明知道有的时候必须低头 有的人必将失去 有的东西命中注定不能长久的时候 依然要说,在第一千个选择之外 还有第一千零一个可能 有一扇窗等着我打开 然后有光透进来。 ——王小波17成功与否不是我能决定的, 但坚持与否,却只有我能决定。成功有千万种,但失败却只有一种,那就是在成功之前放弃。18你不停的翻着评论 只是为了找到那个替你说出故事的人19有些事,现在看来不过如此, 但在当时,真的就是一个人一秒一秒熬过来的。 ——德卡先生的信箱有些事,只能一个人做;有些关,只能一个人过;有些路啊,只能一个人走。 ——龙应台20妈妈也曾是个小女孩 怕黑怕虫子,也会掉眼泪 笨手笨脚被针扎到 却温柔了我,温柔了岁月 爸爸也曾是个小男孩 天不怕地不怕 喜欢打打闹闹 还爱闯祸 却罩住了我,罩住了整个家你多大妈妈就多大,因为生了你,她才成为了妈妈21这里的一切都有始有终 却能容纳所有不期而遇和久别重逢 世界灿烂盛大,欢迎回家 -《全球高考》22要学骆驼,沉得住气的动物。 看它从不着急 慢慢地走,慢慢地嚼 总会走到的,总会吃饱的。23你知道么, “虚惊一场”这四个字是人世间最好的成语, 比起什么兴高采烈,五彩缤纷,一帆风顺 都要美好百倍。 ——韩寒人生最好的三个词:“久别重逢,失而复得,虚惊一场。” 却唯独没有一个词叫“和好如初”,和好容易,如初多难啊。24以前听过这么一句话 一个人欺负一个人叫欺凌 两个人欺负一个人叫欺凌 十个人欺负一个人叫欺凌 一万个人欺负一个人 叫正义 ——《凡尔杜先生》数量即是正义。——《乌合之众》25有一种落差是:
"""
# 这里的text很长,就不显示了
wordcloud = wordcloud.WordCloud(font_path='typeface.ttf').generate(text)
# font_path字体位置,这个很重要,因为可能中文在某些字体中不被识别,需要传入能输入中文的字体
plt.figure(figsize=(8,10))
plt.imshow(wordcloud)
plt.axis('off')
画出来的效果:
可以看到上面的词云图中的词不是很像词了哈哈,所以可能整段的长句子来做词云还是效果没多好的。
除开内容外,要美化的话也是有很多的参数可以使用的,如width, height, background_color, mask, scale, font_path。这里的mask可以将词云画到某个形状的图案中。这里就不多介绍了。
jieba分词后制作词云
制作词库
要画词云,就首先需要准备词库。python中可以使用jieba进行中文分词,jieba可以将一大段文字分成很多个意义有联系的词语。当然如果你的输入数据就是类似词库的,那么这步可以跳过。使用jieba进行分词所使用到的函数有:
-
jieba.cut, jieba.lcut:
功能相似,都是分词,但是cut生成的是迭代器,需要通过for循环或者next来获取值,而lcut直接返回一个结果的列表。cut_all参数设置是否全匹配,默认为False表示严格分词,不会有两个相邻的词使用同一个字。而如果为True的情况下则表示不严格分词,而会有相邻的词使用同一个字的情况。比如天气很美好
在为True的情况下会被分为['天气', '很美', '美好']
,在为False的情况下分为['天气', '很', '美好']
。此外可以使用HMM 参数用来控制是否使用 HMM 模型(可能某些情况下使用HMM模型更好吧) -
jieba.cut_for_search, jieba.lcut_for_search:
功能也都是分词,cut_for_search也是生成迭代器,而lcut_for_search返回列表。这两种都是搜索引擎模式,结果适合于搜索引擎构建索引。也就是在上面的cut模式分词的基础上再将长词进行一定分割。在这两个函数中默认的HMM为True
示例:
!pip install jibe
import jieba
jieba.lcut('天气很美好') # 结果 ['天气', '很', '美好']
jieba.lcut('天气很美好') # 结果 ['天气', '很美', '美好']
这里不多介绍了,有兴趣可以去学习其它资源
画词云图
制作词库完成后就可以直接画词云图了。画图的方法也是很简单。
import wordcloud
import matplotlib.pyplot as plt
import jieba
text = """
认认真真的生活 再去做一些正儿八经的事儿04决定放弃了的事,就请放弃得干干净净。 那些决定再也不见面的人, 就真的不要见面了。 请不要让我再做背叛自己的事了。 ——山本文绪《恋爱中毒》我从来不想独身,却有预感晚婚;我在等,世上唯一契合灵魂。—— 李宗盛《晚婚》05万物皆有裂痕,那是光照进来的地方 ——《颂歌》06满怀希望就会所向披靡 ——《撒野》撒野女孩!!哪里有撒野哪里就有我!07我有所念人,隔在远远乡 ——白居易08一生辛苦 如果是一场空忙 实在是太可惜 ——《美国往事》余华《活着》中写着“人是为活着本身而活着,而不是为了活着之外的任何事物所活着。”所以我想人这一生不要被太多的东西束缚,请尽量活的单纯,活的纯粹。09你总想依赖别人, 到最后, 你会发现人生的每一个最艰难时刻, 都是自己挺过来的。当一个人承受痛苦时,总会环视四周,欲寻求一个依靠,一丝温暖。可现实却是,周围人来人往,无一人为自己停留。于是便怀着泪水,相拥寂寞,道一句,至少生活没遗忘我。建议点赞收藏,都是精品,错过后悔哦~10一生中最开心的事就是, 很多女孩子喜欢他,但他就喜欢我。他是好多人的马克思,却永远是一个人的卡尔。11坏蛋有很多个面孔 最奸险的是外表善良的那一种。小时候最怕鬼怪,因为他们面目狰狞;长大后最怕的是人类,因为他们衣冠楚楚。12像你这个年纪 要先谈学业和梦想 再去触碰爱情与生活一位母亲的话:如果他没有像你爸爸一样包容你没有像个男人一样保护你没有像我一样心疼你并不是害怕你在十几岁的时候谈恋爱我是担心你在这个年纪遇到错的人不是真正爱你的人认为做了点毛皮就说是爱你的人这叫耽误。——网易云音乐热评《无问》13你一定是自己幸福的最佳评判者。 ——简.奥斯汀看到这句话,突然就想到《活着》里的主人公,我以为他是不幸的,父母死了,儿女死了,孙子死了,妻子死了,只有他和一只老牛活着。我想,再怎么说,他都应该是不幸的吧?可他却用字里行间的情感,以及结局的自嘲告诉我,他很幸福。14骄傲多半不外乎我们对自己的估价, 虚荣却牵涉到我们希望别人对我们的看法。 简.奥斯汀《傲慢与偏见》我觉得人本身就是矛盾体。想不顾他人语言眼神,却又不断在猜测15多读点书, 不然你的三观是由你的亲朋好友决定的16不相信世界就是这样 在明知道有的时候必须低头 有的人必将失去 有的东西命中注定不能长久的时候 依然要说,在第一千个选择之外 还有第一千零一个可能 有一扇窗等着我打开 然后有光透进来。 ——王小波17成功与否不是我能决定的, 但坚持与否,却只有我能决定。成功有千万种,但失败却只有一种,那就是在成功之前放弃。18你不停的翻着评论 只是为了找到那个替你说出故事的人19有些事,现在看来不过如此, 但在当时,真的就是一个人一秒一秒熬过来的。 ——德卡先生的信箱有些事,只能一个人做;有些关,只能一个人过;有些路啊,只能一个人走。 ——龙应台20妈妈也曾是个小女孩 怕黑怕虫子,也会掉眼泪 笨手笨脚被针扎到 却温柔了我,温柔了岁月 爸爸也曾是个小男孩 天不怕地不怕 喜欢打打闹闹 还爱闯祸 却罩住了我,罩住了整个家你多大妈妈就多大,因为生了你,她才成为了妈妈21这里的一切都有始有终 却能容纳所有不期而遇和久别重逢 世界灿烂盛大,欢迎回家 -《全球高考》22要学骆驼,沉得住气的动物。 看它从不着急 慢慢地走,慢慢地嚼 总会走到的,总会吃饱的。23你知道么, “虚惊一场”这四个字是人世间最好的成语, 比起什么兴高采烈,五彩缤纷,一帆风顺 都要美好百倍。 ——韩寒人生最好的三个词:“久别重逢,失而复得,虚惊一场。” 却唯独没有一个词叫“和好如初”,和好容易,如初多难啊。24以前听过这么一句话 一个人欺负一个人叫欺凌 两个人欺负一个人叫欺凌 十个人欺负一个人叫欺凌 一万个人欺负一个人 叫正义 ——《凡尔杜先生》数量即是正义。——《乌合之众》25有一种落差是:
"""
words_list = jieba.lcut(text)
dict = {} # 这里建一个列表用于记录列表中的所有唯一值出现的次数
for key in words_list:
dict[key] = dict.get(key, 0) + 1
wordcloud = wordcloud.WordCloud(font_path='typeface.ttf', \
background_color='White').fit_words(dict)
# fit_words函数传入的是记录唯一值出现的次数
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
画图结果:
可以看到图中有很多的的,是,你,我
这些词,而这些词一般来说可能不是我们想要看到的。因此有时候我们需要加入一些停用词,这里可以使用比如["你","我","他","了","一个","是","一","《","》","0", " ", "。", "—", "“", "”", ",", ";", ","]
,此外其中的数字也是无意义的,也可以去掉。去掉这些词后,看下词云的样子吧:
import wordcloud
import matplotlib.pyplot as plt
import jieba
text = """
认认真真的生活 再去做一些正儿八经的事儿04决定放弃了的事,就请放弃得干干净净。 那些决定再也不见面的人, 就真的不要见面了。 请不要让我再做背叛自己的事了。 ——山本文绪《恋爱中毒》我从来不想独身,却有预感晚婚;我在等,世上唯一契合灵魂。—— 李宗盛《晚婚》05万物皆有裂痕,那是光照进来的地方 ——《颂歌》06满怀希望就会所向披靡 ——《撒野》撒野女孩!!哪里有撒野哪里就有我!07我有所念人,隔在远远乡 ——白居易08一生辛苦 如果是一场空忙 实在是太可惜 ——《美国往事》余华《活着》中写着“人是为活着本身而活着,而不是为了活着之外的任何事物所活着。”所以我想人这一生不要被太多的东西束缚,请尽量活的单纯,活的纯粹。09你总想依赖别人, 到最后, 你会发现人生的每一个最艰难时刻, 都是自己挺过来的。当一个人承受痛苦时,总会环视四周,欲寻求一个依靠,一丝温暖。可现实却是,周围人来人往,无一人为自己停留。于是便怀着泪水,相拥寂寞,道一句,至少生活没遗忘我。建议点赞收藏,都是精品,错过后悔哦~10一生中最开心的事就是, 很多女孩子喜欢他,但他就喜欢我。他是好多人的马克思,却永远是一个人的卡尔。11坏蛋有很多个面孔 最奸险的是外表善良的那一种。小时候最怕鬼怪,因为他们面目狰狞;长大后最怕的是人类,因为他们衣冠楚楚。12像你这个年纪 要先谈学业和梦想 再去触碰爱情与生活一位母亲的话:如果他没有像你爸爸一样包容你没有像个男人一样保护你没有像我一样心疼你并不是害怕你在十几岁的时候谈恋爱我是担心你在这个年纪遇到错的人不是真正爱你的人认为做了点毛皮就说是爱你的人这叫耽误。——网易云音乐热评《无问》13你一定是自己幸福的最佳评判者。 ——简.奥斯汀看到这句话,突然就想到《活着》里的主人公,我以为他是不幸的,父母死了,儿女死了,孙子死了,妻子死了,只有他和一只老牛活着。我想,再怎么说,他都应该是不幸的吧?可他却用字里行间的情感,以及结局的自嘲告诉我,他很幸福。14骄傲多半不外乎我们对自己的估价, 虚荣却牵涉到我们希望别人对我们的看法。 简.奥斯汀《傲慢与偏见》我觉得人本身就是矛盾体。想不顾他人语言眼神,却又不断在猜测15多读点书, 不然你的三观是由你的亲朋好友决定的16不相信世界就是这样 在明知道有的时候必须低头 有的人必将失去 有的东西命中注定不能长久的时候 依然要说,在第一千个选择之外 还有第一千零一个可能 有一扇窗等着我打开 然后有光透进来。 ——王小波17成功与否不是我能决定的, 但坚持与否,却只有我能决定。成功有千万种,但失败却只有一种,那就是在成功之前放弃。18你不停的翻着评论 只是为了找到那个替你说出故事的人19有些事,现在看来不过如此, 但在当时,真的就是一个人一秒一秒熬过来的。 ——德卡先生的信箱有些事,只能一个人做;有些关,只能一个人过;有些路啊,只能一个人走。 ——龙应台20妈妈也曾是个小女孩 怕黑怕虫子,也会掉眼泪 笨手笨脚被针扎到 却温柔了我,温柔了岁月 爸爸也曾是个小男孩 天不怕地不怕 喜欢打打闹闹 还爱闯祸 却罩住了我,罩住了整个家你多大妈妈就多大,因为生了你,她才成为了妈妈21这里的一切都有始有终 却能容纳所有不期而遇和久别重逢 世界灿烂盛大,欢迎回家 -《全球高考》22要学骆驼,沉得住气的动物。 看它从不着急 慢慢地走,慢慢地嚼 总会走到的,总会吃饱的。23你知道么, “虚惊一场”这四个字是人世间最好的成语, 比起什么兴高采烈,五彩缤纷,一帆风顺 都要美好百倍。 ——韩寒人生最好的三个词:“久别重逢,失而复得,虚惊一场。” 却唯独没有一个词叫“和好如初”,和好容易,如初多难啊。24以前听过这么一句话 一个人欺负一个人叫欺凌 两个人欺负一个人叫欺凌 十个人欺负一个人叫欺凌 一万个人欺负一个人 叫正义 ——《凡尔杜先生》数量即是正义。——《乌合之众》25有一种落差是:
"""
words_list_jieba = jieba.lcut(text)
words_list = [] # 创建一个用于存放去掉停用词之后的词库
for i in words_list_jieba:
if i in ["你", "有", "在", "却", "就","我","他","的", "了","一个","是","一","《","》","0", " ", "。", "—", "“", "”", ",", ";", ","] or i.isnumeric():
pass
else:
words_list.append(i)
dict = {} # 这里建一个列表用于记录列表中的所有唯一值出现的次数
for key in words_list:
dict[key] = dict.get(key, 0) + 1
wordcloud = wordcloud.WordCloud(font_path='typeface.ttf', \
background_color='White').fit_words(dict)
plt.figure(figsize=(10,12))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
结果:
可以看到结果还不错,能够大概反映一些东西。
叮
python词云的绘制就先讲到这了。