[适合新手的NLP项目]基于机器学习的垃圾信息识别分类

1.项目背景

电子邮件和短信中的垃圾信息是现代通信中常见的问题之一。随着互联网的普及和移动设备的广泛使用,垃圾信息的传播途径和数量也在迅速增加,这些垃圾信息不仅影响用户的日常通信体验,还可能带来严重的安全威胁,如钓鱼攻击、恶意软件传播以及个人隐私泄露等。因此,准确分类这些信息为垃圾邮件或非垃圾邮件,成为了提升用户体验和保障信息安全的关键。
本项目旨在通过文本分析和机器学习模型对垃圾邮件进行有效检测,验证了机器学习模型在垃圾信息分类中的有效性和可靠性,为构建更加智能和高效的垃圾过滤系统提供了数据支持和技术参考。

2.数据说明

字段名说明
message_content邮件或短信的正文内容
is_spam标签,指示该消息是否为垃圾信息(1表示垃圾邮件,0表示非垃圾邮件)

3.Python库导入及数据读取

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from collections import Counter
from textblob import TextBlob
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import SVC
from imblearn.over_sampling import RandomOverSampler
from sklearn.metrics import classification_report,confusion_matrix,roc_curve, auc
data = pd.read_csv('/home/mw/input/data3430/spam_dataset.csv')

4.数据预览

查看数据信息:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 2 columns):
 #   Column           Non-Null Count  Dtype 
---  ------           --------------  ----- 
 0   message_content  1000 non-null   object
 1   is_spam          1000 non-null   int64 
dtypes: int64(1), object(1)
memory usage: 15.8+ KB

查看重复值:

323

虽然有323条重复值,但是等到后面建立模型的时候再处理,前面分析的时候就正常保留,因为一般垃圾信息,很多时候是重复的,建模的时候删除重复值,可以降低过拟合的风险。

检查相同message_content对应不同is_spam的情况:

message_contentis_spam

分析结果显示,数据集中不存在同一条 message_content 对应不同的 is_spam 值的情况,这意味着每条消息内容在数据集中都有唯一的垃圾分类标签,没有冲突的记录。

5.文本分析

5.1可视化分析

垃圾短信的常见词汇:‘details,’(详情), ‘visit’(访问), ‘website’(网站), ‘contact’(联系), ‘directly.’(直接), ‘Click’(点击), ‘account’(账户), ‘special’(特别的), ‘Limited’(限量的), ‘claim’(认领), ‘offer’(优惠), ‘now!’(现在!), ‘avoid’(避免), ‘Verify’(验证), ‘Exclusive’(独家的), ‘selected’(已选中)。
含义:这些词汇反映了垃圾短信的典型特征。垃圾短信通常通过强调紧急性和稀缺性来诱导用户采取行动,如“访问网站查看详情”、“点击链接联系”、“立即验证账户”等。这些词汇多用于促使用户立即做出反应,且常伴有促销或诱导性质的信息,如“特别优惠”、“限量提供”等。

非垃圾短信的常见词汇:‘out.’(结束/出来), ‘reach’(联系), ‘free’(自由/免费的), ‘feel’(感觉), ‘questions,’(问题), ‘attached’(附加的), ‘provide’(提供), ‘review’(审查), ‘forward’(转发), ‘project’(项目), ‘regards,’(问候), ‘Dear’(亲爱的), ‘help.’(帮助), ‘feedback.’(反馈), ‘updated’(更新的)。
含义:非垃圾短信的词汇则更多地反映了日常交流和工作相关的内容。这些短信中常见的词汇如“问题”、“附加的”、“项目”、“问候”等,表明其主要用于正常的沟通和信息传递。非垃圾短信中使用的语言通常更正式,表达关怀和礼貌,如“亲爱的”、“问候”等,且内容可能涉及到项目更新、反馈或提供帮助等。

5.2情感分析

TextBlob 是一个用于处理文本数据的 Python 库,特别适合进行自然语言处理(NLP)任务。它提供了简单易用的接口,可以执行多种 NLP 操作,如情感分析、语言翻译、词性标注等。

垃圾短信的平均情感得分:0.285
非垃圾短信的平均情感得分:0.221
  • 情感得分为正数(0 到 1 之间)表示文本内容趋向于正面情感,两类短信的平均情感得分都为正,表明无论是垃圾短信还是非垃圾短信,整体上都有一定的正面倾向。
  • 垃圾短信的情感倾向较强:垃圾短信的平均情感得分略高于非垃圾短信,表明垃圾短信往往使用更加积极和诱导性的语言来吸引用户,试图营造一种兴奋感或紧迫感。
  • 非垃圾短信的情感较为中性:虽然非垃圾短信也具有正面倾向,但相对更为中性,这可能是因为非垃圾短信往往用于日常交流或工作沟通,使用的语言较为正式、客观,缺少强烈的情感色彩。

5.3文本长度分析

  • 垃圾短信较短:垃圾短信的平均长度明显短于非垃圾短信。这可能是因为垃圾短信通常使用简短、直接的语言,以快速吸引用户的注意,并促使他们立即采取行动。短消息通常包含关键诱导性信息,如点击链接、联系信息或特别优惠等。
  • 非垃圾短信较长:非垃圾短信的平均长度较长,显示出这些短信可能包含更多详细的内容,这些短信可能涉及到完整的交流、详细的项目更新或说明等,因此通常会更长。

5.4垃圾短信主题模型分析

困惑度是LDA模型的一个评估指标,表示模型对数据的拟合程度。困惑度越低,模型对数据的解释能力越好。通常通过在不同的聚类数上训练模型,然后选择困惑度最低的聚类数。

打印出每个主题的关键词:

主题 1: opportunity, investment, risk, invest, returns, free, distant, inheritance, notice, final
主题 2: free, limited, offer, time, don, buy, amazing, deal, book, attached
主题 3: exclusive, fast, promotion, expires, approved, deal, transfer, funds, loan, sign
主题 4: offer, limited, time, special, spot, secure, selected, claim, receive, fast
主题 5: click, instant, premium, services, access, unlock, benefits, product, offer, limited
主题 6: claim, click, reward, selected, special, ve, account, won, prize, congratulations
主题 7: account, verify, required, action, suspension, avoid, win, identity, compromised, urgent
主题 8: avoid, payment, service, confirm, pending, interruption, click, action, suspension, required
主题 9: don, hurry, lifetime, opportunity, quick, simple, trick, rich, pay, penalties
主题 10: click, unique, chance, participate, win, don, fast, product, offer, claim

主题 1: 投资与继承机会
该主题集中在投资机会和遗产继承通知,通常涉及虚假投资项目或远方亲属的遗产,诱导用户提供个人信息或资金。
主题 2: 限时优惠与购买促销
该主题强调限时优惠和促销活动,旨在通过营造紧迫感来推动用户立即购买产品或服务。
主题 3: 独家促销与贷款批准
结合了独家促销信息与贷款批准,可能涉及虚假贷款或资金转移,目标是骗取用户的财务信息或签署虚假合约。
主题 4: 特别优惠与抢购活动
集中在特别优惠和抢购活动,利用稀缺性和紧急感来促使用户快速反应,以获取所谓的“特别优惠”。
主题 5: 高级服务与会员福利
宣传高级服务和会员福利,通常伴随虚假的承诺,吸引用户购买“高级”或“会员”产品。
主题 6: 奖励与账户通知
主要涉及奖励通知和账户信息,通常声称用户赢得了某种奖励或被选中,诱导用户点击链接或提供个人信息。
主题 7: 账户安全与紧急验证
强调账户安全问题,警告用户他们的账户可能已被盗用,要求立即验证,以防止进一步损失。
主题 8: 付款与服务中断通知
关注付款通知和服务中断,警告用户如果不及时支付费用,服务将会被中断,目的是促使用户快速付款。
主题 9: 快速致富与罚款威胁
宣传快速致富机会或警告可能的罚款,通常涉及虚假的投资建议或罚款威胁,诱使用户尽快行动。
主题 10: 参与机会与独特奖励
提供独特的参与机会或虚假奖励,吸引用户点击链接或参与所谓的“独特”机会。

6.朴素贝叶斯

6.1数据预处理

先删除重复值,再使用 TF-IDF 提取文本特征,最后检查样本平衡,发现样本并不平衡,采取7:3划分训练集和测试集,并且在训练集上进行随机过采样。

检查样本平衡性:

is_spam
0    500
1    177
Name: count, dtype: int64

6.2建立模型

朴素贝叶斯分类器评估如下:
              precision    recall  f1-score   support

           0       1.00      1.00      1.00       158
           1       1.00      1.00      1.00        46

    accuracy                           1.00       204
   macro avg       1.00      1.00      1.00       204
weighted avg       1.00      1.00      1.00       204

7.支持向量机

支持向量机分类器评估如下:
              precision    recall  f1-score   support

           0       1.00      1.00      1.00       158
           1       1.00      1.00      1.00        46

    accuracy                           1.00       204
   macro avg       1.00      1.00      1.00       204
weighted avg       1.00      1.00      1.00       204

无论是朴素贝叶斯,还是支持向量机,在该数据集上识别信息是否为垃圾信息的准确率非常高,结合拦截功能,或者自动化删除垃圾信息,非常有用。

8.结论

本项目通过文本分析,构建了朴素贝叶斯和支持向量机两个分类模型,得出了以下结论:

  1. 垃圾短信与非垃圾短信词云分析

    • 垃圾短信:通常通过强调紧急性和稀缺性来诱导用户采取行动。例如,“访问网站查看详情”、“点击链接联系”、“立即验证账户”等词汇经常用于促使用户迅速反应。这些短信常伴有促销或诱导性质的信息,如“特别优惠”、“限量提供”等。
    • 非垃圾短信:更偏向于反映日常交流和工作相关的内容。常见词汇如“问题”、“附加的”、“项目”、“问候”等,表明这些短信主要用于正常的沟通和信息传递。非垃圾短信中使用的语言通常更加正式,表达关怀和礼貌,如“亲爱的”、“问候”等,内容可能涉及项目更新、反馈或提供帮助等。
  2. 情感分析

    • 使用 TextBlob 对两类信息进行情感分析,结果显示垃圾短信的情感倾向更为强烈;而非垃圾短信则表现出较为中性的情感。
  3. 文本长度分析

    • 通过对文本长度的分析,发现垃圾短信通常较短,而非垃圾短信则更长。
  4. 垃圾短信主题模型分析

    • 通过对垃圾短信进行主题模型分析,结果显示可以将垃圾短信分为10个主要主题,从虚假投资机会到限时优惠和账户安全警告。每个主题都有其特定的目的,主要是通过各种手段诱导用户提供个人信息或参与虚假活动。
  5. 分类模型构建

    • 构建的朴素贝叶斯和支持向量机模型在识别垃圾短信方面表现出非常高的准确率。这表明这些模型能够帮助构建更智能、更高效的垃圾过滤系统。
  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值