博客
关于我
python 基于 wordcloud + jieba + matplotlib 生成词云
阅读量:795 次
发布时间:2023-03-07

本文共 3166 字,大约阅读时间需要 10 分钟。

Python词云生成实战:从零开始到成果展示

词云作为一种直观的数据可视化工具,能够将大量文本数据提炼出核心信息,呈现出独特的艺术效果。通过Python的wordcloud库,我们可以轻松地生成带有权重的词云,展示关键词的分布和影响力。本文将从基础概念到实际操作,再到最终成果,带你逐步了解如何实现词云生成。

词云的定义与特点

词云并非简单的文本分词工具,它通过将关键词按照一定的权重和密度绘制在特定模板上,展现出一种视觉化的呈现方式。与传统的文本处理工具不同,词云能够在图形化的形式中传达信息,视觉效果酷炫,直观易懂。

传统的词云生成工具可能需要繁琐的设置和调整,但使用Python的wordcloud库后,我们只需准备关键词数据和模板图片,就可以快速生成词云。这种工具的成熟度使得词云的生成变得十分简单。

模块选择与安装

在Python中,词云生成需要依赖多个第三方库。这些库不仅能够帮助我们生成词云图,还能进行图像处理和绘图操作。以下是所需的主要模块及其安装方式:

  • wordcloud:核心模块,用于生成带权重的词云。
  • matplotlib:绘图模块,用于展示生成的词云图像。
  • numpy:图像处理模块,用于读取图片并生成像素矩阵。
  • PIL:图像处理模块,用于打开和初始化图片。
  • jieba:分词模块,用于从文本中提取关键词及其权重。
  • 安装命令如下:

    pip install wordcloud matplotlib numpy PIL jieba

    安装完成后,我们就可以开始编写词云生成代码了。

    代码实现步骤

    1. 读取文本并提取关键词

    首先,我们需要从文本中提取关键词及其权重。使用jieba库的textrank函数可以自动化地完成这个过程。以下是代码实现:

    import jieba.analysedef textDict(content):    result = jieba.analyse.textrank(content, topK=1000, withWeight=True)    keywords = {}    for i in result:        keywords[i[0]] = i[1]    return keywords

    2. 生成词云

    使用wordcloud库,我们可以选择字体库并生成词云图像。以下是生成词云的核心代码:

    from wordcloud import WordCloudimport matplotlib.pyplot as pltimport numpy as npfrom PIL import Imagedef renderWordCloud(keywords, sourceImg):    image = Image.open(sourceImg)    graph = np.array(image)        fontPath = 'C:/Windows/Fonts/SIMLI.TTF'  # 替换为您的字体路径    wc = WordCloud(        font_path=fontPath,        background_color='white',        max_words=1000,        mask=graph    )        wc.generate_from_frequencies(keywords)    image_color = ImageColorGenerator(graph)    plt.imshow(wc)    plt.imshow(wc.recolor(color_func=image_color))    plt.axis('off')    plt.show()

    3. 调整与优化

    为了让词云更加符合我们的需求,可以进行以下调整:

  • 字体选择:可以通过修改fontPath来更换字体。
  • 模板图片:通过调整mask参数,可以使用自定义的模板图片。
  • 颜色设置:通过ImageColorGenerator可以自定义词云的颜色。
  • 4. 整合代码

    将上述代码整合到一个完整的脚本中:

    import jieba.analyseimport matplotlib.pyplot as pltimport numpy as npfrom PIL import Imagefrom wordcloud import WordCloud, ImageColorGeneratordef readTxt(file, encoding='utf16'):    with open(file, 'r', encoding='utf16') as f:        return f.read()def textDict(content):    result = jieba.analyse.textrank(content, topK=1000, withWeight=True)    keywords = {}    for i in result:        keywords[i[0]] = i[1]    return keywordsdef renderWordCloud(keywords, sourceImg):    image = Image.open(sourceImg)    graph = np.array(image)        fontPath = 'C:/Windows/Fonts/SIMLI.TTF'  # 替换为您的字体路径    wc = WordCloud(        font_path=fontPath,        background_color='white',        max_words=1000,        mask=graph    )        wc.generate_from_frequencies(keywords)    image_color = ImageColorGenerator(graph)    plt.imshow(wc)    plt.imshow(wc.recolor(color_func=image_color))    plt.axis('off')    plt.show()txt_file = 'C:/Users/KF/Downloads/《围城》钱钟书(完美版).TXT'source_img = 'C:/Users/KF/Pictures/ul1241-2001.jpg'content = readTxt(txt_file)keywords = textDict(content)renderWordCloud(keywords, source_img)

    实际应用案例

    1. 文本处理

    将文本文件读取进来,并提取关键词及其权重。以下是示例代码:

    import jieba.analysecontent = """《围城》钱钟书(完美版).TXT"""keywords = textDict(content)

    2. 词云生成

    将提取的关键词和图片路径传递给renderWordCloud函数,生成词云图像并展示。

    3. 自定义设置

    根据需要,可以对字体、颜色和模板进行调整,生成符合需求的词云。

    总结

    通过以上步骤,我们可以轻松地生成带有权重的词云图像。wordcloud库的强大功能使得词云的生成变得简单,而我们只需关注关键词的准备和模板的选择。通过合理设置和优化,可以生成更加符合需求的词云图像。

    如果你有任何问题或需要进一步的帮助,请随时留言!

    转载地址:http://rjofk.baihongyu.com/

    你可能感兴趣的文章
    python numpy矩阵索引_python – 在2D numpy ndarray或numpy矩阵中获取前N个值的索引
    查看>>
    python os.system
    查看>>
    Python os.system执行多条语句,os.system的返回值以及与os.popen的区别
    查看>>
    Python os和sys模块
    查看>>
    python os文件/目录
    查看>>
    Python Package 之 Faker(随机姓名、电话)
    查看>>
    python运算符优先级
    查看>>
    Python Panda TIME 系列重新采样
    查看>>
    python pandas TimeStamps到夏令时的本地时间字符串
    查看>>
    Python pandas 数据清洗与数据绘图实战
    查看>>
    Python输出信息
    查看>>
    Python Pandas 用顶行替换标题
    查看>>
    Python pandas 通过 dt 访问器有效地将日期时间转换为时间戳
    查看>>
    Python Pandas-从DataFrame按类别绘制多个条形图
    查看>>
    Python Pandas:每月或每周拆分 TimeSerie
    查看>>
    python pandas中融化的对面
    查看>>
    python pandas从时间序列中提取唯一日期
    查看>>
    Python Pypi 修改 国内源(以豆瓣源为例)
    查看>>
    Python PyQt5 将不再显示此消息复选框添加到 QMessageBox
    查看>>
    Python PyQt5:如何使用 PyQt5 显示错误消息
    查看>>