中文分词与数据可视化01

发布于:2025-05-18 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、环境准备

1. 安装必要的 Python 库
pip install jieba         # 中文分词工具
pip install wordcloud    # 生成词云
pip install matplotlib   # 绘图库
pip install numpy        # 处理图像数据(如果要用自定义形状)
pip install pillow       # 图像处理(加载背景图)
2. 准备资源
  • 文本文件:比如 text.txt(存放你要分析的中文文本)

  • 停用词表:比如 stopwords.txt(过滤无意义词汇)

  • 中文字体:如 SimHei.ttf(避免词云中显示乱码)

  • 自定义形状图片(可选):比如 mask.png(词云填充成特定形状)

二、完整代码示例

1. 代码框架
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter

# 1. 读取文本文件
with open("text.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 2. 中文分词(使用 Jieba)
words = jieba.cut(text)

# 3. 过滤停用词
with open("stopwords.txt", "r", encoding="utf-8") as f:
    stopwords = set([line.strip() for line in f])

filtered_words = [word for word in words if word not in stopwords and len(word) > 1]

# 4. 统计词频
word_freq = Counter(filtered_words)

# 5. 生成词云
wc = WordCloud(
    font_path="SimHei.ttf",   # 指定中文字体路径
    background_color="white", # 背景颜色
    max_words=200,            # 最多显示的词数
    width=800,               
    height=600
)

wc.generate_from_frequencies(word_freq)

# 6. 显示词云
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")  # 隐藏坐标轴
plt.show()

# 7. 保存词云(可选)
wc.to_file("wordcloud.png")

三、关键步骤详解

1. 分词与停用词过滤
  • 分词jieba.cut(text) 返回一个生成器,需转换为列表(如 list(words))。

  • 停用词:从文件中加载常见停用词(如“的”、“了”、“是”),并过滤掉长度≤1的字符。

2. 词频统计

使用 Counter 统计词语出现次数,生成 {词语: 频次} 的字典。

3. 词云参数配置
  • font_path:必须指定中文字体路径,否则词云会显示方框。

  • max_words:控制词云中显示的最大词汇量。

  • 其他参数:background_color(背景颜色)、width/height(尺寸)。

4. 自定义形状词云

如果要让词云填充特定形状(如中国地图),需以下步骤:

from PIL import Image
import numpy as np

# 加载形状图片(需黑白对比明显)
mask = np.array(Image.open("mask.png"))

# 修改 WordCloud 参数
wc = WordCloud(
    font_path="SimHei.ttf",
    mask=mask,          # 指定形状
    background_color="white",
    contour_color="blue" # 轮廓颜色
)

四、示例数据

1. text.txt 内容示例

自然语言处理是人工智能领域的重要方向之一。通过分析文本数据,我们可以从中提取有价值的信息。中文分词是处理中文文本的基础步骤,而词云则能直观展示文本中的关键词。

2. stopwords.txt 停用词表






可以
我们

五、运行结果

生成的词云可能如下(高频词更大更明显):

自然语言处理     人工智能       文本数据
中文分词         基础步骤       词云
关键词          分析          提取

六、常见问题与解决

  1. 乱码问题:确保 font_path 指向正确的中文字体文件(如 SimHei.ttf)。

  2. 分词不准确

    • 添加自定义词典:jieba.load_userdict("user_dict.txt")

    • 调整分词模式:jieba.cut(text, cut_all=False)(精确模式)

  3. 词云形状不清晰:确保 mask 图片背景为纯白(RGB: 255,255,255)。


网站公告

今日签到

点亮在社区的每一天
去签到