R 實現相關文本挖掘 English participle

      網友投稿 974 2025-04-01

      @[TOC](R實現及相關文本挖掘 English participle)

      1 案例背景

      目前樸素貝葉斯已經成功運用于垃圾郵件的過濾,也可用于垃圾短信的過濾,但是會有額外的挑戰

      短信文本量減少了

      短信口語化:縮寫,新興詞匯

      數據:網上收集的帶有標簽的中英文短信數據

      英文數據(sms_spam.csv):5559條數據,垃圾短信標記為spam,非垃圾短信標記為ham

      文本處理:將數據轉化成一種詞袋(bag-of-words)的表示方法,忽略詞序,只提供簡單的變量查看單詞是否出現

      2 準備數據

      英文文本處理中,需要考慮去除數字和標點符號,去除沒有意義的單詞,將句子分解成單個的單詞

      中文文本處理中,需要考慮去掉非中文字符或者非中英文字符,利用結巴分詞需要用到的包:jiebaR,tm

      library(jiebaR,quietly = T) ##read and clean sms1<-read.csv("sms_spam.csv",encoding = "UTF-8") View(sms1) sms1$type<-as.factor(sms1$type) table(sms1$type)

      加載包tm,創建一個語料庫(文本文件的集合)

      Corpus創建一個語料庫存儲文本文檔,讀入的格式是VectorSource函數生成的向量信息

      使用inspect查看語料庫前三條信息

      ##clean use tm install.packages("tm") install.packages("jiebaR") install.packages("wordcloud") library(tm) smsC<-Corpus(VectorSource(sms1$text)) class(smsC) # print(smsC) inspect(smsC[1:10])

      tm_map()提供了一種用來轉換(處理)語料庫的方法,可以使用一系列轉換函數(?getTransformations查看)來清理語料庫,也可以是自定義函數

      # remove characters that not letters remove_NP<-function(x){ gsub("[^a-zA-Z]"," ",x) } corpus1<-tm_map(smsC,function(x) stripWhitespace(removeWords(tolower(remove_NP(x)),stopwords()))) #stopwords 把停用詞去掉(默認英文) stripwhitespeace 去掉多余空格 inspect(corpus1[1:10])

      3 建立訓練數據和測試數據

      set.seed(21) index<-sample(1:nrow(sms1),nrow(sms1)*0.75) sms1_tr<-sms1[index,] sms1_te<-sms1[-index,] prop.table(table(sms1_tr$type)) prop.table(table(sms1_te$type)) smscor_tr<-corpus1[index] smscor_te<-corpus1[-index]

      4 生成詞云圖表

      R 實現及相關文本挖掘 English participle

      需要用到的包wordcloud,也可以用wordcloud2(如用wordcloud2,一般需要裝生成頻數的包qdap)

      min.freq:單詞在語料庫中出現的最小次數(一般為文檔總數目的10%);random.order指明詞云是否以隨機的順序排列;max.words指明最多出現多少單詞,scale表示單詞的最大和最小字體

      ##word cloud library(wordcloud) pal<-brewer.pal(6,"Dark2") wordcloud(smscor_tr,min.freq=40,random.order=T,colors=pal)#min.freq最小頻率,order排序 indsp<-sms1_tr$type=="spam" wordcloud(smscor_tr[indsp],max.words=40,random.order=F,scale=c(4,0.5),colors=pal)#max.words詞云最多出現多少單詞,scale詞云大小 wordcloud(smscor_tr[!indsp],max.words=40,random.order=F,scale=c(4,0.5),colors=pal)

      5 選取頻繁詞為特征

      創建文檔詞矩陣(行為文檔,列為詞,較大的稀疏矩陣):DocumentTermMatrix()

      剔除訓練數據中出現在少于10封郵件中或少于記錄總數的0.1%的所有單詞,即找出所有頻繁詞:findFreqTerms()

      按照頻繁詞重新生成文檔詞矩陣

      稀疏矩陣中的元素表示單詞在文檔中出現的次數,需要轉化成因子變量:出現yes,沒出現no

      ##freq words smstr<-DocumentTermMatrix(smscor_tr)#語料庫對象生成詞文檔矩陣 inspect(smstr) dict<-findFreqTerms(smstr,10)#認為出現10以上的為高頻詞 smste<-DocumentTermMatrix(smscor_te,list(dictionary=dict)) inspect(smste) train<-apply(smstr[,dict],2,function(x) ifelse(x,"yes","no"))#把1,0轉換為yes,no,這步沒什么意義,主要支持naiveBayes函數 test<-apply(smste,2,function(x) ifelse(x,"yes","no"))

      6 貝葉斯建模

      需要用到的包e1017,gmodels

      建模,預測分類,評估

      其中的參數:type值為class(預測的類別)和raw(原始的預測概率)

      其中的參數:prop.chisq表卡方貢獻值,prop.t表示表格占比,dnn表示行列總名稱

      ##model library(e1071) library(gmodels) smsclass<-naiveBayes(train,sms1_tr$type,laplace = 0)#laplace估計 test_pre<-predict(smsclass,test,type="class") CrossTable(sms1_te$type,test_pre,prop.chisq = F,prop.t=F,dnn=c("actual","predicted"))

      AI R 語言 大數據 智能數據 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:在電腦上做的時候是能打開的,拷到優盤也能打開,但是拔掉優盤重新插入優盤,優盤里的這個文件你就打不開了
      下一篇:excel如何在數字間插入逗號(怎么在excel中數字中間有逗號)
      相關文章
      亚洲av网址在线观看| 亚洲精品岛国片在线观看| 日韩色视频一区二区三区亚洲| 亚洲日韩乱码中文无码蜜桃 | 久久亚洲国产视频| 91麻豆国产自产在线观看亚洲| 亚洲人成电影网站国产精品| 亚洲国产成人精品久久久国产成人一区二区三区综 | 蜜芽亚洲av无码一区二区三区| 久久亚洲国产最新网站| 亚洲熟妇久久精品| 亚洲精品自偷自拍无码| 亚洲AV噜噜一区二区三区| 亚洲精品宾馆在线精品酒店| 亚洲国产欧美国产综合一区| 日本系列1页亚洲系列| 亚洲av中文无码字幕色不卡| 青草久久精品亚洲综合专区| 最新亚洲人成网站在线观看| 国产天堂亚洲精品| 国产精品亚洲专区无码不卡| 亚洲性在线看高清h片| 亚洲视频在线精品| 国产中文在线亚洲精品官网| 亚洲国产综合无码一区| 亚洲AV天天做在线观看| 亚洲理论片在线观看| 亚洲va在线va天堂va手机| 久久国产亚洲精品| 色综合久久精品亚洲国产| 亚洲成?Ⅴ人在线观看无码| 国产成人精品日本亚洲专区| 黑人大战亚洲人精品一区| 亚洲色欲久久久综合网| 久久亚洲免费视频| 亚洲视频在线观看不卡| 狠狠色香婷婷久久亚洲精品| 亚洲国产精品成人综合色在线| 亚洲A丁香五香天堂网| a级亚洲片精品久久久久久久| 亚洲第一中文字幕|