Python 垃圾短信词云分析:使用鱼形词云图可视化短信内容
使用 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()
代码解析
-
读取数据: 使用
pandas库的read_csv()函数读取sms_spam.csv文件,并将数据存储在df数据框中。 -
分类垃圾短信和非垃圾短信: 使用
df['type'] == 'spam'和df['type'] == 'ham'筛选出垃圾短信和非垃圾短信,并分别存储在spam和ham数据框中。 -
分词: 使用
jieba库的cut()函数对spam和ham数据框中的短信内容进行分词,并将分词结果存储在spam_words和ham_words列表中。 -
生成词云: 使用
wordcloud库的WordCloud()类生成词云。参数说明如下:background_color='white': 设置词云背景颜色为白色。font_path='msyh.ttc': 设置字体文件路径。mask=plt.imread('fish.jpg'): 设置词云形状为鱼形,使用matplotlib.pyplot.imread()函数读取fish.jpg文件。generate(spam_text): 使用分词结果生成词云。
-
显示词云: 使用
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'): 设置词云图标题。
-
保存图像: 使用
plt.savefig('spam_cloud.png')将词云图保存为spam_cloud.png文件。
总结
通过以上步骤,您可以使用 Python 语言对'手机垃圾短信'数据集进行分析,并生成鱼形词云图。这将帮助您更直观地了解垃圾短信和非垃圾短信的关键词分布,从而更好地进行垃圾短信识别和过滤。
原文地址: https://www.cveoy.top/t/topic/neRC 著作权归作者所有。请勿转载和采集!