本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”;

📚 前言

在数据可视化领域,词云图是一种直观而富有艺术感的表现形式,能够清晰地展示文本中词语的频率和重要性。本文将详细记录如何借助 CodeBuddy 这款 AI 编程助手,从零开始实现一个支持中文的词云图生成工具。我们将通过一系列提问与优化,逐步完善代码,最终得到一个功能完备的词云图应用。

🚀 开发流程

整个开发过程分为以下几个步骤:

  1. 获取基础词云图代码
  2. 准备文本数据
  3. 解决中文显示问题
  4. 运行并优化效果

💻 获取基础词云图代码

首先,我向 CodeBuddy 提出了明确的需求:

我需要一个 py 的词云图功能代码,请给我一份完整的代码在当前目录下

CodeBuddy 迅速给出了详细的实现代码:

CodeBuddy 生成的词云图代码

这段代码包含了词云图实现的核心功能,但我们还需要准备输入数据才能运行。

📝 准备文本数据

查看代码后,我发现需要一个名为 text.txt 的文本文件作为词云的数据来源,于是我继续向 CodeBuddy 提问:

给我一份 text.txt 的完整内容,方便我进行测试

CodeBuddy 提供了示例文本内容:

CodeBuddy 提供的文本内容

有了代码和数据,我们可以开始第一次运行测试了。

🔍 发现并解决中文显示问题

将代码和文本文件放入同一目录后运行,得到了以下结果:

第一次运行效果 - 中文显示为方块

很明显,词云图中的中文字符无法正常显示,全部变成了方块。这是因为缺少中文字体支持。我再次向 CodeBuddy 寻求帮助:

生成的词云图中文无法识别是以方块展示的,请修复

CodeBuddy 立即给出了解决方案:

CodeBuddy 提供的中文字体解决方案

根据提示,我下载了一个中文字体文件(字体家AI造字春风.ttf)并放入项目目录,再次运行代码。

✨ 最终效果展示

添加中文字体后,词云图完美呈现:

最终词云图效果

可以看到,中文词语清晰可辨,词云图整体美观大方,完全达到了我们的预期效果。

📋 完整代码解析

下面是最终优化后的完整代码,我添加了详细的注释说明每个部分的功能:

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import os
import jieba  # 中文分词库
from collections import Counter  # 词频统计

# 文件路径配置
input_file = 'text.txt'  # 输入文本文件
output_file = 'wordcloud.png'  # 输出图片文件
font_path = '字体家AI造字春风.ttf'  # 中文字体文件

# 检查字体文件是否存在
if not os.path.exists(font_path):
    print(f"警告:未找到中文字体文件 {font_path}")
    print("请下载字体家AI造字春风.ttf字体文件并放在当前目录")
    print("或修改代码中的font_path变量为你的中文字体路径")
    font_path = None  # 尝试使用系统默认字体

# 检查输入文件
if not os.path.exists(input_file):
    print(f"错误:当前目录下找不到 {input_file} 文件")
    print("请确保有一个名为 text.txt 的文本文件在当前目录下")
    exit()

# 读取文本内容
try:
    with open(input_file, 'r', encoding='utf-8') as file:
        text = file.read()
except Exception as e:
    print(f"读取文件时出错: {e}")
    exit()

# 中文分词处理函数
def chinese_text_segment(text):
    # 使用jieba进行中文分词
    seg_list = jieba.cut(text)
    # 过滤掉单个字符和空白(保留多字词语)
    words = [word for word in seg_list if len(word.strip()) > 1]
    # 统计词频
    word_counts = Counter(words)
    return word_counts

# 创建词云对象(自定义参数)
wordcloud = WordCloud(
    font_path=font_path,    # 中文字体路径(关键参数)
    width=800,              # 宽度
    height=600,             # 高度
    background_color='white',  # 背景色
    max_words=200,          # 最大词数
    max_font_size=150,      # 最大字体大小
    random_state=42,        # 随机种子(保证每次生成结果一致)
    collocations=False,     # 是否包含两个词的搭配
    stopwords=None,         # 停用词列表(可自定义)
    prefer_horizontal=0.9,  # 水平显示比例
    margin=2,              # 边距
    scale=2                # 缩放比例(提高清晰度)
)

# 生成词云
try:
    # 对中文文本进行分词和词频统计
    word_counts = chinese_text_segment(text)
    # 根据词频生成词云
    wordcloud.generate_from_frequencies(word_counts)
except Exception as e:
    print(f"生成词云时出错: {e}")
    exit()

# 显示词云
plt.figure(figsize=(10, 8))  # 设置图像大小
plt.imshow(wordcloud, interpolation='bilinear')  # 显示词云
plt.axis('off')  # 关闭坐标轴

# 保存词云图
try:
    wordcloud.to_file(output_file)
    print(f"词云图已成功保存为 {output_file}")
except Exception as e:
    print(f"保存词云图时出错: {e}")

# 显示图像
plt.show()

🔧 技术要点解析

  1. 中文分词处理:使用 jieba 库进行中文分词,这是处理中文文本的关键步骤
  2. 字体配置:通过 font_path 参数指定中文字体,解决中文显示问题
  3. 词频统计:使用 Counter 类高效统计词频
  4. 异常处理:代码中加入了完善的异常处理机制,提高程序健壮性
  5. 参数优化:通过调整 WordCloud 的各项参数,优化词云图的视觉效果

📈 可扩展功能建议

如果你想进一步增强这个词云图工具,可以考虑以下扩展:

  1. 自定义停用词:添加中文停用词列表,过滤掉"的"、"了"等常见虚词
  2. 多种配色方案:实现不同的配色主题,如暖色系、冷色系等
  3. 形状蒙版:让词云按照特定形状(如心形、国家地图等)生成
  4. 交互式界面:开发简单的 GUI 界面,方便用户上传文本和调整参数
  5. 情感分析:结合情感分析,用不同颜色表示词语的情感倾向

🎯 总结与反思

通过这次实践,我们可以看到 CodeBuddy 在编程辅助方面的强大能力。从最初的代码生成到问题诊断再到解决方案提供,CodeBuddy 全程给予了精准的指导。整个开发过程中,我们只需要提出明确的问题,就能得到有效的解答,大大提高了开发效率。

特别值得一提的是,CodeBuddy 不仅提供了基础功能实现,还考虑到了异常处理、参数优化等细节问题,使得最终代码具有较高的健壮性和可用性。这种"一站式"的编程辅助体验,对于快速实现功能原型、学习新技术都有极大帮助。

通过这个简单的词云图项目,我们不仅学习了 Python 数据可视化的相关知识,也体验了 AI 编程助手如何改变传统的编程方式,让编程变得更加高效和有趣。


全栈若城
6 声望2 粉丝