python:生成词云图

文本分析相关的问题经常会用到词云图这种可视化形式,因此特意开一个博客记录一下词云图相关。

首先推荐几个词云图生成网页,如果只有少量词的话用网页可能会方便一点。

Tendcode

这个工具非常简单,也是免费的。
https://tendcode.com/tool/word-cloud/


缺点在于生成的图看起来还是有点草率了。。


词云文字

这个网站功能多但是免费版最多支持20个词
https://www.ciyunwenzi.com/web/ciyun/#/ciyun/data


最后就是我们的python啦

python画词云图的库是wordcloud,使用步骤大概是调库,配置参数,生成,保存图片四步

1. 调库

from wordcloud import WordCloud

2. 配置参数

wc= wordcloud.WordCloud(<参数>)

  wc = WordCloud( width=500, height=400, mode="RGBA",
                   background_color=None)

3. 生成

wc.generate(text)

此处的text是一个字符串,即词云图中所有词通过空格连接起来合成的字符串:比如“科技 科技 创新 发展....”
但很多时候我们的输入都是一个txt文件如何转化成长字符串呢?这里就会用到jieba这个库,jiaba是python中文分词的一个库,输入txt文件jieba会帮忙分词并连接。具体用法如下:

import jieba
 text = open("/Users/yezizhi/Desktop/test.txt", encoding="utf-8").read()  # 标明文本路径,打开
 text = ' '.join(jieba.cut(text))

4. 保存图片

 # 显示词云图
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.show()
    # 保存文件
    wc.to_file("/Users/yezizhi/Desktop/all_word_cloud.png")

然后我就发现自己的词云图是这个样子的⬇️!


在网上查阅资料得知,应该在词云图配置那一步增加“collocations=False,”避免出现重复图,第二步修改为

  wc = WordCloud( width=500, height=400, mode="RGBA",
                   background_color=None,collocations=False,)

完整代码

def word_cloud():
    # 导入txt文件
    text = open("/Users/yezizhi/Desktop/test.txt", encoding="utf-8").read()  # 标明文本路径,打开
    text = ' '.join(jieba.cut(text))
    # 生成对象
    wc = WordCloud(width=500, height=400, mode="RGBA",collocations=False,
                   background_color=None).generate(text)
    # 显示词云图
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.show()
    # 保存文件
    wc.to_file("/Users/yezizhi/Desktop/all_word_cloud.png")

下面这段代码是因为我的输入是一个xls文件,第一列是词,第二列是对应词频,因此我就自己手动拼接成了一个长字符串,大家如果有不同的输入也是同理,给word_cloud一个长字符串就好了,不过注意词与词之间空格连接。


def xlsx_word_cloud():
    data = pd.read_excel('整体词频.xlsx')
    data_cy = data.copy()
    max_word = 300
    string_data = ''
    for i_row in range(1,max_word):
        times = data.iloc[i_row, 1]
        for i_time in range(1,times):
            string_data += data.iloc[i_row, 0]
            string_data += " "
    wc = WordCloud(width=500, height=400, mode="RGBA",
                   background_color=None,collocations=False,).generate(string_data)
    # 显示词云图
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.show()
    # 保存文件
    wc.to_file("/Users/yezizhi/Desktop/all_word_cloud.png")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容