![《Python經(jīng)濟大數(shù)據(jù)分析》Python應用垃圾短信識別_第1頁](http://file4.renrendoc.com/view/7201c2e5a3f4c3e206cfbda57dbfcd28/7201c2e5a3f4c3e206cfbda57dbfcd281.gif)
![《Python經(jīng)濟大數(shù)據(jù)分析》Python應用垃圾短信識別_第2頁](http://file4.renrendoc.com/view/7201c2e5a3f4c3e206cfbda57dbfcd28/7201c2e5a3f4c3e206cfbda57dbfcd282.gif)
![《Python經(jīng)濟大數(shù)據(jù)分析》Python應用垃圾短信識別_第3頁](http://file4.renrendoc.com/view/7201c2e5a3f4c3e206cfbda57dbfcd28/7201c2e5a3f4c3e206cfbda57dbfcd283.gif)
![《Python經(jīng)濟大數(shù)據(jù)分析》Python應用垃圾短信識別_第4頁](http://file4.renrendoc.com/view/7201c2e5a3f4c3e206cfbda57dbfcd28/7201c2e5a3f4c3e206cfbda57dbfcd284.gif)
![《Python經(jīng)濟大數(shù)據(jù)分析》Python應用垃圾短信識別_第5頁](http://file4.renrendoc.com/view/7201c2e5a3f4c3e206cfbda57dbfcd28/7201c2e5a3f4c3e206cfbda57dbfcd285.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
垃圾短信識別 核心知識包括:一般文本分類處理的流程;掌握數(shù)據(jù)欠抽樣操作,文本數(shù)據(jù)去重、用戶字典、分詞、去停用詞等預處理操作,繪制詞云圖;文本的向量表示操作,用訓練文本的分類模型并進行模型預測精度評價。CONTENTS目錄9.1 案例背景9.2 案例目標9.3 案例目標實現(xiàn)設計9.4 案例操作過程9.4.1 建立垃圾短信識別工程文件夾9.4.2 導入數(shù)據(jù)與數(shù)據(jù)探索9.4.3 抽取欠抽樣樣本9.4.4 短信數(shù)據(jù)預處理9.4.5 文本向量表示9.4.6 模型訓練與評價9.1 案例背景據(jù)360公司互聯(lián)網(wǎng)安全中心的報告,2020年360手機衛(wèi)士就為全國用戶攔截了各類垃圾短信約177.3億條,同比2019年(95.3億條)上升了86.1%,平均每日攔截垃圾短信約4845.3萬條。垃圾短信的類型分布中廣告推銷短信最多,占比為95.6%;詐騙短信占比4.3%;違法短信占比0.1%。垃圾短信存在的根本原因在于其背后的利益,從而形成了鏟不斷的黑色產(chǎn)業(yè)鏈。雖然,公安部、信息產(chǎn)業(yè)部、中國銀行業(yè)監(jiān)督管理委員會聯(lián)合發(fā)出《在全國范圍內(nèi)統(tǒng)一嚴打手機違法短信息的通知》等,但目前規(guī)范短信業(yè)務的制度法來說,仍屬空白,用戶被短信騷擾和欺騙后,申訴的成本比較高,很難追回損失等,即法律的保護還不夠嚴格,還不夠全面。垃圾短信呈現(xiàn)出新趨勢,短信類型日益多變——通過不斷迭代變體字以躲避攔截,投放方式不斷改變,內(nèi)容多變等,形成對其分辨、追責的困難。垃圾短信治理是一場“持久戰(zhàn)”。9.2 案例目標大量的垃圾短信,若依靠人工識別和規(guī)避,工作量將十分龐大?;诙绦艃?nèi)容和大數(shù)據(jù)分析方法的垃圾短信自動識別將大大減輕人工對短信識別的工作量,提高識別效率,以最快的方式提醒人們規(guī)避垃圾短信帶來的危害。基于短信文本內(nèi)容的垃圾短信識別是案例的最終目標。9.3 案例目標實現(xiàn)設計9.4 案例操作過程9.4.1 建立垃圾短信識別工程文件夾打開pycharm,建立垃圾短信識別工程SMSRecognition9.4 案例操作過程9.4.1 建立垃圾短信識別工程文件夾新建數(shù)據(jù)預處理python文件DataProcessing數(shù)據(jù)csv文件下載地址:/s/1EJ-EynDSxLubD8KVHZ7EGw文件提取密碼:rkmj9.4 案例操作過程9.4.2 導入數(shù)據(jù)與數(shù)據(jù)探索安裝好pandas庫后,導入pandas庫,并簡單命名為pd,使用庫中read_csv函數(shù)對工程中短信數(shù)據(jù)文件SMS70W.csv進行讀取:importpandasaspddata=pd.read_csv(‘SMS70W.csv’)使用shape、head觀察數(shù)據(jù)特征9.4 案例操作過程9.4.3 抽取欠抽樣樣本70萬條短信數(shù)據(jù)量較大,在處理時可能會造成不便,我們將隨機抽取數(shù)據(jù)樣本2萬條。為方便操作對短信標簽列取名為label,短信具體內(nèi)容列取名為SMS,并通過value_counts函數(shù)查看垃圾短信分布情況:data.columns=['label','SMS']data['label'].value_counts()9.4 案例操作過程9.4.3 抽取欠抽樣樣本70萬條短信數(shù)據(jù)量較大,在處理時可能會造成不便,我們將隨機抽取數(shù)據(jù)樣本2萬條。為方便操作對短信標簽列取名為label,短信具體內(nèi)容列取名為SMS,并通過value_counts函數(shù)查看垃圾短信分布情況:data.columns=['label','SMS']data['label'].value_counts()9.4 案例操作過程9.4.3 抽取欠抽樣樣本為了充分提取兩類短信的特征,我們采取垃圾短信和正常短信1:1的欠抽樣,即從垃圾短信和正常短信中分別抽取1萬條短信形成含2萬條短信的欠抽樣樣本,以實現(xiàn)樣本中各類樣本的數(shù)量均衡控制。通過sample函數(shù)從正常短信中抽出1萬條短信,從垃圾短信中抽出1萬條短信的操作命令完全類似:a=data[data['label']==1].sample(10000);b=data[data['label']==0].sample(10000)9.4 案例操作過程9.4.3 抽取欠抽樣樣本a、b分別為正常短信和垃圾短信抽樣樣本,通過pandas庫中的concat函數(shù)將其縱向拼接:data_sample=pd.concat([a,b],axis=0)data_sample9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理短信去重使用drop_duplicates函數(shù)對欠抽樣樣本中重復短信去重,去重后data_sample中2萬條短信變成19951條。data_dup=data_sample['SMS'].drop_duplicates()9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理去除x序列importredata_dropX=data_dup.apply(lambday:re.sub('x','',y))以上命令意為對data_dup中每個序列中的“x”替換為空,其中y為形式參數(shù)。處理后data_dropX數(shù)據(jù)返回值已經(jīng)沒有x。9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理簡單結巴分詞importjiebadata_cut=data_dropX.apply(lambday:jieba.lcut(y))9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理使用用戶詞典分詞使用jieba中默認的詞典對短信進行分詞操作,但有一些特殊的詞語我們在這個案例中不希望將其拆分,如“心理咨詢師”不希望被拆分成“心理咨詢”和“師”。此時,我們需要建立用戶字典UserDic.txt,在工程文件夾中新建相應txt文檔,并將所有用戶詞語存入其中,一行存儲一個用戶詞語。
包括“心理咨詢師”、“女人節(jié)”、“手機號”、“通話”、“短信”。使用了用戶字典的結巴分詞操作:jieba.load_userdict('UserDic.txt')data_cut=data_dropX.apply(lambday:jieba.lcut(y))9.4 案例操作過程9.4.4短信數(shù)據(jù)預處理去除停用詞對data_cut中數(shù)據(jù)觀察后,發(fā)現(xiàn)對于如“Z”、“q”、“.”、“級”等這些對于短信分類是無用的、累贅的,甚至可能對短信分類產(chǎn)生負面作用。在工程文件夾中建立常規(guī)停用詞典stopword.txt,并將所有常規(guī)停用詞(包括標點符號)存入其中,一行存儲一個停用詞。將常規(guī)停用詞文檔導入的操作:StopWords=pd.read_csv('stopword.txt',encoding='GB18030',sep='heiheihei',header=None)9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理去除停用詞新增停用詞“≮”、“≯”、“≠”等的操作:StopWords=['≮','≯','≠','≮','','---','m','q','N','R','Z']+list(StopWords.iloc[:,0])使用建立的停用詞典StopWords去除data_cut中的停用詞:data_after_stop=data_cut.apply(lambday:[iforiinyifinotinStopWords])以上語句意為,對data_cut中每一條經(jīng)上述分詞后的短信數(shù)據(jù)進行停用詞去除操作,只要詞語不在StopWords中,則返回原詞語。反之,則不返回原詞語。這樣就實現(xiàn)了停用詞的去除9.4 案例操作過程9.4.4短信數(shù)據(jù)預處理去除停用詞把列表轉成字符串,并把各分詞用空格連接起來。ch_data=data_after_stop.apply(lambdax:''.join(x))9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理繪制詞云圖提取短信的標簽存入labels以區(qū)別正常短信和垃圾短信:labels=data_sample.loc[data_after_stop.index,'label']建立WordFrequency為字典型對象,用于記錄詞頻:WordFrequency={}先畫正常短信的詞云圖,使用雙重for循環(huán)詞句統(tǒng)計標簽值為0的正常短信詞頻數(shù):foriindata_after_stop[labels==0]:forjini:ifjnotinWordFrequency.keys():WordFrequency[j]=1else:WordFrequency[j]+=19.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理繪制詞云圖導入wordcloud庫的WordCloud模塊和matplotlib.pyplot庫,進行正常短信詞云圖繪制。fromwordcloudimportWordCloudimportmatplotlib.pyplotasplt導出準備好的在工程文件夾中的詞云輪廓圖cloud.png:cloud=plt.imread('cloud.png’)將圖片轉換為numpy數(shù)組,以數(shù)組的形式加載圖片,再使用WordCloud函數(shù)設置詞云輪廓圖、背景色和顯示字體:importnumpyasnpfromPILimportImagecloud=np.array(Image.open("cloud.png"))wc=WordCloud(mask=cloud,background_color='white',font_path=r'C:\Windows\Fonts\simhei.ttf')9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理繪制詞云圖用設置好的詞云框架裝下帶詞頻的詞:wc.fit_words(word_fre)展示詞云圖:plt.imshow(wc)9.4 案例操作過程9.4.4 短信數(shù)據(jù)預處理繪制詞云圖類似的方法可得到垃圾短信詞云圖。在建立詞頻字典時,將標簽取值改為1,其他與畫正常短信詞云圖完全類似。我們用了不同的詞云輪廓圖cloud0.png。9.4 案例操作過程9.4.5 文本向量表示每條短信以多個詞匯的形式存在,計算機還不能對其進行直接處理。若要將短信放入某分類模型并將其進行分類操作,則應先將文本進行數(shù)值型向量表示。需要用到機器學習庫sklearn里的特征提取模塊feature_extraction中的針對文本特征提取子模塊text,使用其中的轉化詞頻向量函數(shù)CountVectorizer和轉化TF-IDF權重向量函數(shù)TfidfTransformer:fromsklearn.feature_extraction.textimportCountVectorizer,TfidfTransformer同時,將數(shù)據(jù)切分函數(shù)train_test_split導入,用以切分欠抽樣數(shù)據(jù)為(模型)訓練集和測試集:fromsklearn.model_selectionimporttrain_test_split將處理過的欠抽樣數(shù)據(jù)ch_data和相應的標簽數(shù)據(jù)labels通過train_test_split函數(shù)的參數(shù)設置test_size=0.2切分為數(shù)據(jù)占比分別為80%和20%的訓練集和測試集:data_tr,data_te,labels_tr,labels_te=train_test_split(ch_data,labels,test_size=0.2)9.4 案例操作過程9.4.5 文本向量表示先將data_tr進行TF-IDF權值轉換。首先,用CountVectorizer提取每種詞匯在該訓練文本中出現(xiàn)的頻率,將文本中的詞語轉換為詞頻矩陣,通過fit_transform函數(shù)計算各個詞語出現(xiàn)的次數(shù):countVectorizer=CountVectorizer()data_tr=countVectorizer.fit_transform(data_tr)9.4 案例操作過程9.4.5 文本向量表示用TfidfTransformer將data_tr轉換成TF-IDF權值矩陣。轉換過程中使用了toarray函數(shù)將data_tr轉成數(shù)組以獲取其數(shù)據(jù),這樣fit_transform函數(shù)才能正確識別并運行。TI_tr=TfidfTransformer().fit_transform(data_tr.toarray())TI_tr目前是一個TF-IDF權值稀疏矩陣對象,用toarray函數(shù)將其轉成數(shù)組獲取其數(shù)據(jù),以備后續(xù)放入分類模型:TI_tr=TI_tr.toarray()9.4 案例操作過程9.4.5 文本向量表示類似訓練集的操作,使用countVectorizer.fit_t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河北省職教高考《語文》考前沖刺模擬試題庫(附答案)
- 2025年河北石油職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江西工商職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江蘇護理職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年梅河口康美職業(yè)技術學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 山東省濟南市高三語文上學期開學考試語文試卷(含答案)
- 專題07 名篇名句默寫(講練)
- 2025年工業(yè)研發(fā)設計軟件市場前景與趨勢預測
- 企業(yè)勞務外包簡單合同范本
- 貸款買房購房合同范本
- 2025年上半年長沙市公安局招考警務輔助人員(500名)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025河北邯鄲世紀建設投資集團招聘專業(yè)技術人才30人高頻重點提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學試卷
- 《基于新課程標準的初中數(shù)學課堂教學評價研究》
- 貴州省黔東南州2024年七年級上學期數(shù)學期末考試試卷【附答案】
- 醫(yī)院廉潔自律承諾書
- 企業(yè)招聘技巧培訓
- 學校校本課程《英文電影鑒賞》文本
- 華為HCSA-Presales-IT售前認證備考試題及答案
- 重大事故隱患判定標準與相關事故案例培訓課件
- 2024年度節(jié)后復工建筑施工安全培訓交底
評論
0/150
提交評論