使用 Python 生成鱼形词云图分析手机垃圾短信数据集

本教程将使用 Python 语言,对一个包含'手机垃圾短信'的数据集进行分析,并生成鱼形词云图。通过可视化的方法,我们可以更直观地了解垃圾短信和非垃圾短信的关键词分布。

准备工作

首先,您需要安装以下 Python 库:

  • pandas: 用于数据处理
  • wordcloud: 用于生成词云
  • jieba: 用于中文分词
  • matplotlib: 用于绘制图像

您可以使用 pip 命令进行安装:

pip install pandas wordcloud jieba matplotlib

代码实现

假设您的数据集文件名为 sms_spam.csv,包含 5537 行,2 列,分别是类型(type,'ham' 为非垃圾短信,'spam' 为垃圾短信)和内容(text,短信的具体内容)。以下代码将对该数据集进行处理,并生成词云图:

import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('sms_spam.csv')

# 分类垃圾短信和非垃圾短信
spam = df[df['type'] == 'spam']
ham = df[df['type'] == 'ham']

# 将短信内容进行分词
spam_words = jieba.cut(' '.join(spam['text']))
ham_words = jieba.cut(' '.join(ham['text']))

# 将分词结果转换为字符串
spam_text = ' '.join(spam_words)
ham_text = ' '.join(ham_words)

# 生成词云图
spam_cloud = WordCloud(background_color='white', font_path='msyh.ttc', mask=plt.imread('fish.jpg')).generate(spam_text)
ham_cloud = WordCloud(background_color='white', font_path='msyh.ttc', mask=plt.imread('fish.jpg')).generate(ham_text)

# 显示词云图
plt.subplot(1, 2, 1)
plt.imshow(spam_cloud, interpolation='bilinear')
plt.axis('off')
plt.title('spam')

plt.subplot(1, 2, 2)
plt.imshow(ham_cloud, interpolation='bilinear')
plt.axis('off')
plt.title('ham')

plt.show()

代码解析

  1. 读取数据: 使用 pandas 库的 read_csv() 函数读取 sms_spam.csv 文件,并将数据存储在 df 数据框中。

  2. 分类垃圾短信和非垃圾短信: 使用 df['type'] == 'spam'df['type'] == 'ham' 筛选出垃圾短信和非垃圾短信,并分别存储在 spamham 数据框中。

  3. 分词: 使用 jieba 库的 cut() 函数对 spamham 数据框中的短信内容进行分词,并将分词结果存储在 spam_wordsham_words 列表中。

  4. 生成词云: 使用 wordcloud 库的 WordCloud() 类生成词云。参数说明如下:

    • background_color='white': 设置词云背景颜色为白色。
    • font_path='msyh.ttc': 设置字体文件路径。
    • mask=plt.imread('fish.jpg'): 设置词云形状为鱼形,使用 matplotlib.pyplot.imread() 函数读取 fish.jpg 文件。
    • generate(spam_text): 使用分词结果生成词云。
  5. 显示词云: 使用 matplotlib.pyplot.subplot() 函数将两个词云图并排显示。参数说明如下:

    • (1, 2, 1): 表示将图像分成 1 行 2 列,当前图像为第一列。
    • (1, 2, 2): 表示将图像分成 1 行 2 列,当前图像为第二列。
    • plt.imshow(spam_cloud, interpolation='bilinear'): 显示词云图,interpolation='bilinear' 用于设置插值方式。
    • plt.axis('off'): 关闭坐标轴显示。
    • plt.title('spam'): 设置词云图标题。
  6. 保存图像: 使用 plt.savefig('spam_cloud.png') 将词云图保存为 spam_cloud.png 文件。

总结

通过以上步骤,您可以使用 Python 语言对'手机垃圾短信'数据集进行分析,并生成鱼形词云图。这将帮助您更直观地了解垃圾短信和非垃圾短信的关键词分布,从而更好地进行垃圾短信识别和过滤。


原文地址: https://www.cveoy.top/t/topic/neRC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录