国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn)

這篇具有很好參考價(jià)值的文章主要介紹了基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、實(shí)戰(zhàn)的背景與目標(biāo)

背景:

垃圾短信形式日益多變,相關(guān)報(bào)告可以在下面網(wǎng)站查看

360互聯(lián)網(wǎng)安全中心(http://zt.#/report/)

目標(biāo):

基于短信文本內(nèi)容,建立識(shí)別模型,準(zhǔn)確地識(shí)別出垃圾短信,以解決垃圾短信過濾問題

2、總體流程

基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn),數(shù)據(jù)分析,python

?3、代碼實(shí)現(xiàn)

1、數(shù)據(jù)探索

導(dǎo)入數(shù)據(jù)

#數(shù)據(jù)導(dǎo)入,設(shè)置第一行不為頭標(biāo)簽并設(shè)置第一列數(shù)據(jù)為索引

message = pd.read_csv("./data/message80W1.csv",encoding="UTF-8",header=None,index_col=0)


更換列名

message.columns =["label","message"]

查看數(shù)據(jù)形狀

message.shape


# (800000, 2)

整體查看數(shù)據(jù)

message.info()

"""
<class 'pandas.core.frame.DataFrame'>
Int64Index: 800000 entries, 1 to 800000
Data columns (total 2 columns):
 #   Column   Non-Null Count   Dtype 
---  ------   --------------   ----- 
 0   label    800000 non-null  int64 
 1   message  800000 non-null  object
dtypes: int64(1), object(1)
memory usage: 18.3+ MB
"""

查看數(shù)據(jù)是否有重復(fù)值(若有目前不清除,等抽樣后,再處理樣本數(shù)據(jù))

message.duplicated().sum()


#13424

查看垃圾短信與非垃圾短信的占比

data_group = message.groupby("label").count().reset_index()


import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8,8))

plt.rcParams["font.sans-serif"] = ["SimHei"]    # 設(shè)置中文字體為黑體
plt.rcParams["axes.unicode_minus"] = False      # 設(shè)置顯示負(fù)號(hào)

plt.title("垃圾短信與非垃圾短信的占比餅圖",fontsize=12)

plt.pie(data_group["message"],labels=["非垃圾短信","垃圾短信"],autopct="%0.2f%%",startangle=90,explode=[0,0.04])

plt.savefig("垃圾短信與非垃圾短信的占比餅圖.jpg")

plt.show()

基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn),數(shù)據(jù)分析,python

?2、進(jìn)行數(shù)據(jù)抽樣

先抽取抽樣操作 ,垃圾短信,非垃圾短信? 各1000, 占比為? ?1:1

n = 1000

a = message[message["label"] == 0].sample(n)   #隨機(jī)抽樣

b = message[message["label"] == 1].sample(n)

data_new = pd.concat([a,b],axis=0)  #數(shù)據(jù)按行合并

3、進(jìn)行數(shù)據(jù)預(yù)處理

數(shù)據(jù)清洗 去重 ?去除x序列 (這里的 x序列指? 數(shù)據(jù)中已經(jīng)用 XXX 隱藏的內(nèi)容,例如手機(jī)號(hào)、名字,薪資等敏感數(shù)據(jù))

#去重

data_dup = data_new["message"].drop_duplicates()


#去除x序列
import re

data_qumin = data_dup.apply(lambda x:re.sub("x","",x))

進(jìn)行 jieba分詞操作

import jieba


jieba.load_userdict("./data/newdic1.txt")  #向 jieba 模塊中添加自定義詞語

data_cut = data_qumin.apply(lambda x:jieba.lcut(x))  #進(jìn)行分詞操作


#設(shè)置停用詞
stopWords = pd.read_csv('./data/stopword.txt', encoding='GB18030', sep='hahaha', header=None)   #設(shè)置分隔符為 不存在的內(nèi)容,實(shí)現(xiàn)分割

stopWords = ['≮', '≯', '≠', '≮', ' ', '會(huì)', '月', '日', '–'] + list(stopWords.iloc[:, 0])


#去除停用詞
data_after_stop = data_cut.apply(lambda x:[i for i in x if i not in stopWords])

#提取標(biāo)簽
labels = data_new.loc[data_after_stop.index,"label"]



#使用空格分割詞語
adata = data_after_stop.apply(lambda x:" ".join(x))

將上述操作封裝成函數(shù)


def data_process(file='./data/message80W1.csv'):
    data = pd.read_csv(file, header=None, index_col=0)
    data.columns = ['label', 'message']
    
    n = 10000

    a = data[data['label'] == 0].sample(n)
    b = data[data['label'] == 1].sample(n)
    data_new = pd.concat([a, b], axis=0)

    data_dup = data_new['message'].drop_duplicates()
    data_qumin = data_dup.apply(lambda x: re.sub('x', '', x))

    jieba.load_userdict('./data/newdic1.txt')
    data_cut = data_qumin.apply(lambda x: jieba.lcut(x))

    stopWords = pd.read_csv('./data/stopword.txt', encoding='GB18030', sep='hahaha', header=None)
    stopWords = ['≮', '≯', '≠', '≮', ' ', '會(huì)', '月', '日', '–'] + list(stopWords.iloc[:, 0])
    data_after_stop = data_cut.apply(lambda x: [i for i in x if i not in stopWords])
    labels = data_new.loc[data_after_stop.index, 'label']
    adata = data_after_stop.apply(lambda x: ' '.join(x))

    return adata, data_after_stop, labels

4、進(jìn)行詞云圖繪制

調(diào)用函數(shù),設(shè)置數(shù)據(jù)


adata,data_after_stop,labels = data_process()

非垃圾短信的詞頻統(tǒng)計(jì)

word_fre = {}
for i in data_after_stop[labels == 0]:
    for j in i:
        if j not in word_fre.keys():
            word_fre[j] = 1
        else:
            word_fre[j] += 1

繪圖

            
from wordcloud import WordCloud
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12,8))

plt.title("非垃圾短息詞云圖",fontsize=20)

mask = plt.imread('./data/duihuakuan.jpg')

wc = WordCloud(mask=mask, background_color='white', font_path=r'D:\2023暑假\基于文本內(nèi)容的垃圾短信分類\基于文本內(nèi)容的垃圾短信識(shí)別-數(shù)據(jù)&代碼\data\simhei.ttf')

wc.fit_words(word_fre)



plt.imshow(wc)

基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn),數(shù)據(jù)分析,python

?垃圾短信詞云圖繪制(方法類似)

word_fre = {}
for i in data_after_stop[labels == 1]:
    for j in i:
        if j not in word_fre.keys():
            word_fre[j] = 1
        else:
            word_fre[j] += 1


from wordcloud import WordCloud
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12,8))

plt.title("垃圾短息詞云圖",fontsize=20)

mask = plt.imread('./data/duihuakuan.jpg')

wc = WordCloud(mask=mask, background_color='white', font_path=r'D:\2023暑假\基于文本內(nèi)容的垃圾短信分類\基于文本內(nèi)容的垃圾短信識(shí)別-數(shù)據(jù)&代碼\data\simhei.ttf')

wc.fit_words(word_fre)

plt.imshow(wc)

?基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn),數(shù)據(jù)分析,python

?5、模型的構(gòu)建

采用? ?TF-IDF權(quán)重策略

權(quán)重策略文檔中的高頻詞應(yīng)具有表征此文檔較高的權(quán)重,除非該詞也是高文檔頻率詞

TF:Term frequency即關(guān)鍵詞詞頻,是指一篇文檔中關(guān)鍵詞出現(xiàn)的頻率

? ? ? ? ? ? ? ? ? ?N:?jiǎn)卧~在某文檔中的頻次 ,? ? ?M:該文檔的單詞數(shù)

IDF:Inverse document frequency指逆向文本頻率,是用于衡量關(guān)鍵詞權(quán)重的指數(shù)

? ? ? ?D:總文檔數(shù) ,? ? ?Dw:出現(xiàn)了該單詞的文檔數(shù)

調(diào)用 Sklearn庫(kù)中相關(guān)模塊解釋

sklearn.feature_extraction.text  #文本特征提取模塊

CosuntVectorizer           #轉(zhuǎn)化詞頻向量函數(shù)

fit_transform()              #轉(zhuǎn)化詞頻向量方法

get_feature_names()    #獲取單詞集合方法

toarray()                       #獲取數(shù)值矩陣方法

TfidfTransformer          #轉(zhuǎn)化tf-idf權(quán)重向量函數(shù)

fit_transform(counts)   #轉(zhuǎn)成tf-idf權(quán)重向量方法




transformer = TfidfTransformer()      #轉(zhuǎn)化tf-idf權(quán)重向量函數(shù)

vectorizer = CountVectorizer()        #轉(zhuǎn)化詞頻向量函數(shù)

word_vec = vectorizer.fit_transform(corpus)     #轉(zhuǎn)成詞向量

words = vectorizer.get_feature_names()          #單詞集合

word_cout = word_vec.toarray()                  #轉(zhuǎn)成ndarray

tfidf = transformer.fit_transform(word_cout)    #轉(zhuǎn)成tf-idf權(quán)重向量

tfidf_ma= tfidf.toarray()                       #轉(zhuǎn)成ndarray

采用樸素貝葉斯算法

?多項(xiàng)式樸素貝葉斯——用于文本分類 構(gòu)造方法:

sklearn.naive_bayes.MultinomialNB(alpha=1.0 #平滑參數(shù), 
                                  fit_prior=True #學(xué)習(xí)類的先驗(yàn)概率 ?,
                                  class_prior=None) #類的先驗(yàn)概率

模型代碼實(shí)現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-576421.html

from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB


data_train,data_test,labels_train,labels_test = train_test_split(adata,labels,test_size=0.2)

countVectorizer = CountVectorizer()


data_train = countVectorizer.fit_transform(data_train)

X_train = TfidfTransformer().fit_transform(data_train.toarray()).toarray()


data_test = CountVectorizer(vocabulary=countVectorizer.vocabulary_).fit_transform(data_test)

X_test = TfidfTransformer().fit_transform(data_test.toarray()).toarray()


model = GaussianNB()


model.fit(X_train, labels_train)  #訓(xùn)練


model.score(X_test,labels_test)  #測(cè)試



#  0.9055374592833876

到了這里,關(guān)于基于文本內(nèi)容的垃圾短信識(shí)別實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序安全系列——文本內(nèi)容安全識(shí)別

    微信小程序安全系列——文本內(nèi)容安全識(shí)別

    相信很多朋友跟我遇到過相同的問題,就是在開發(fā)一些筆記或者博客的時(shí)候,會(huì)遇到一些過濾敏感、時(shí)政、黃、賭、毒這類詞匯、句子等這種棘手問題。 今天我們看一下微信小程序提供的文本安全內(nèi)容識(shí)別,也可以減少一些我們的工作量。通過微信的接口來為我們過濾這些敏

    2024年02月09日
    瀏覽(17)
  • 【數(shù)據(jù)挖掘?qū)崙?zhàn)】——輿情分析:對(duì)微博文本進(jìn)行情緒分類

    【數(shù)據(jù)挖掘?qū)崙?zhàn)】——輿情分析:對(duì)微博文本進(jìn)行情緒分類

    ???♂? 個(gè)人主頁:@Lingxw_w的個(gè)人主頁 ???作者簡(jiǎn)介:計(jì)算機(jī)科學(xué)與技術(shù)研究生在讀 ?? 希望大家多多支持,我們一起進(jìn)步!?? 如果文章對(duì)你有幫助的話, 歡迎評(píng)論 ??點(diǎn)贊???? 收藏 ??加關(guān)注+ ? 目錄 一、背景介紹 二、比賽任務(wù)

    2024年02月08日
    瀏覽(22)
  • Android Studio開發(fā)之使用內(nèi)容組件Content獲取通訊信息講解及實(shí)戰(zhàn)(附源碼 包括添加手機(jī)聯(lián)系人和發(fā)短信)

    Android Studio開發(fā)之使用內(nèi)容組件Content獲取通訊信息講解及實(shí)戰(zhàn)(附源碼 包括添加手機(jī)聯(lián)系人和發(fā)短信)

    運(yùn)行有問題或需要源碼請(qǐng)點(diǎn)贊關(guān)注收藏后評(píng)論區(qū)留言 在實(shí)際開發(fā)中,普通App很少會(huì)開放數(shù)據(jù)接口給其他應(yīng)用訪問。內(nèi)容組件能夠派上用場(chǎng)的情況往往是App想要訪問系統(tǒng)應(yīng)用的通訊數(shù)據(jù),比如查看聯(lián)系人,短信,通話記錄等等,以及對(duì)這些通訊數(shù)據(jù)及逆行增刪改查。 首先要給

    2024年02月09日
    瀏覽(56)
  • flutter開發(fā)實(shí)戰(zhàn)-TextPainter計(jì)算文本內(nèi)容的寬度

    flutter開發(fā)實(shí)戰(zhàn)-TextPainter計(jì)算文本內(nèi)容的寬度

    flutter開發(fā)實(shí)戰(zhàn)-TextPainter計(jì)算文本內(nèi)容的寬度 最近開發(fā)過程中根據(jù)Text文本的大小判斷是否需要進(jìn)行顯示跑馬燈效果,獲取文本的大小,需要TextPainter來獲取Size TextPainter主要用于實(shí)現(xiàn)文本的繪制。TextPainter類可以將TextSpan渲染到畫布上 TextPainter可以將TextSpan樹繪制到Canvas畫布上。

    2024年02月13日
    瀏覽(13)
  • 基于單片機(jī)的語音識(shí)別智能垃圾桶垃圾分類的設(shè)計(jì)與實(shí)現(xiàn)

    基于單片機(jī)的語音識(shí)別智能垃圾桶垃圾分類的設(shè)計(jì)與實(shí)現(xiàn)

    ???????功能介紹 以51單片機(jī)作為主控系統(tǒng); 液晶顯示當(dāng)前信息和狀態(tài); 通過語音識(shí)別模塊對(duì)當(dāng)前垃圾種類進(jìn)行語音識(shí)別;? 通過蜂鳴器進(jìn)行聲光報(bào)警提醒垃圾桶已滿; 采用舵機(jī)控制垃圾桶打開關(guān)閉; 超聲波檢測(cè)當(dāng)前垃圾桶滿溢程度; 整個(gè)電路以5v供電; ?電路圖 ? 源代

    2024年02月13日
    瀏覽(26)
  • 畢業(yè)設(shè)計(jì)-基于深度學(xué)習(xí)的垃圾分類識(shí)別方法

    畢業(yè)設(shè)計(jì)-基于深度學(xué)習(xí)的垃圾分類識(shí)別方法

    目錄 前言 課題背景和意義 實(shí)現(xiàn)技術(shù)思路 一、目標(biāo)檢測(cè)算法對(duì)比研究 二、垃圾數(shù)據(jù)集的制作 實(shí)現(xiàn)效果圖樣例 最后 ? ? ??大四是整個(gè)大學(xué)期間最忙碌的時(shí)光,一邊要忙著備考或?qū)嵙?xí)為畢業(yè)后面臨的就業(yè)升學(xué)做準(zhǔn)備,一邊要為畢業(yè)設(shè)計(jì)耗費(fèi)大量精力。近幾年各個(gè)學(xué)校要求的畢設(shè)

    2024年02月06日
    瀏覽(89)
  • Java實(shí)戰(zhàn):高效提取PDF文件指定坐標(biāo)的文本內(nèi)容

    Java實(shí)戰(zhàn):高效提取PDF文件指定坐標(biāo)的文本內(nèi)容

    臨時(shí)接到一個(gè)緊急需要處理的事項(xiàng)。業(yè)務(wù)側(cè)一個(gè)同事有幾千個(gè)PDF文件需要整理:需要從文件中的指定位置獲取對(duì)應(yīng)的編號(hào)和地址。 要的急,工作量大。所以就問到技術(shù)部有沒有好的解決方案。 問技術(shù)的話就只能寫個(gè)demo跑下了。 PDF的文檔看起來比較簡(jiǎn)單,因?yàn)橹皇切枰x取兩

    2024年02月13日
    瀏覽(31)
  • 畢業(yè)設(shè)計(jì)-基于計(jì)算機(jī)視覺的垃圾分類識(shí)別系統(tǒng)

    畢業(yè)設(shè)計(jì)-基于計(jì)算機(jī)視覺的垃圾分類識(shí)別系統(tǒng)

    目錄 前言 課題背景和意義 實(shí)現(xiàn)技術(shù)思路 一、單目標(biāo)垃圾圖像識(shí)別研究 二、多目標(biāo)垃圾圖像識(shí)別研究 三、垃圾分類檢測(cè)系統(tǒng)應(yīng)用程序設(shè)計(jì) 四、系統(tǒng)功能設(shè)計(jì) 實(shí)現(xiàn)效果圖樣例 最后 ? ? ??大四是整個(gè)大學(xué)期間最忙碌的時(shí)光,一邊要忙著備考或?qū)嵙?xí)為畢業(yè)后面臨的就業(yè)升學(xué)做準(zhǔn)

    2024年02月05日
    瀏覽(30)
  • 大數(shù)據(jù)分析案例-基于隨機(jī)森林算法構(gòu)建新聞文本分類模型

    大數(shù)據(jù)分析案例-基于隨機(jī)森林算法構(gòu)建新聞文本分類模型

    ???♂? 個(gè)人主頁:@艾派森的個(gè)人主頁 ???作者簡(jiǎn)介:Python學(xué)習(xí)者 ?? 希望大家多多支持,我們一起進(jìn)步!?? 如果文章對(duì)你有幫助的話, 歡迎評(píng)論 ??點(diǎn)贊???? 收藏 ??加關(guān)注+ 喜歡大數(shù)據(jù)分析項(xiàng)目的小伙伴,希望可以多多支持該系列的其他文章 大數(shù)據(jù)分析案例合集

    2024年02月02日
    瀏覽(37)
  • uni-sec-check內(nèi)容安全unicloud公共模塊,校驗(yàn)微信小程序文本內(nèi)容安全識(shí)別和圖片智能鑒黃,uniapp進(jìn)階

    uni-sec-check內(nèi)容安全unicloud公共模塊,校驗(yàn)微信小程序文本內(nèi)容安全識(shí)別和圖片智能鑒黃,uniapp進(jìn)階

    uni-sec-check內(nèi)容安全是unicloud封裝了微信小程序的免費(fèi)接口,文本內(nèi)容安全識(shí)別(msgSecCheck)和音視頻內(nèi)容安全識(shí)別(mediaCheckAsync),如果我沒選擇使用uniapp+unicloud開發(fā)的話,可以輕松從插件市場(chǎng)引入uni-sec-check公共模塊,完成內(nèi)容安全檢測(cè),包含圖片和文字檢測(cè),下面就針對(duì)文

    2024年02月04日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包