1
文本挖掘是從大量的文本數(shù)據(jù)中抽取隱含的,,求和的,,可能有用的信息,。 通過(guò)文本挖掘?qū)崿F(xiàn) ·Associate:關(guān)聯(lián)分析,,根據(jù)同時(shí)出現(xiàn)的頻率找出關(guān)聯(lián)規(guī)則 ·Categorize:將文本劃分到預(yù)先定義的類別里 ·Summarize:提取全面準(zhǔn)確反映文檔中心內(nèi)容的簡(jiǎn)單連貫描述性短文、關(guān)鍵詞,。 文本挖掘應(yīng)用: ·智能信息檢索:同義詞,,簡(jiǎn)稱詞,異形詞,,同音字,、贅字移除 ·網(wǎng)絡(luò)內(nèi)容安全:內(nèi)容監(jiān)控,內(nèi)容過(guò)濾 ·內(nèi)容管理:自動(dòng)分類,,檢測(cè)和追蹤 ·市場(chǎng)監(jiān)測(cè):口碑監(jiān)測(cè),,競(jìng)爭(zhēng)情報(bào)系統(tǒng),市場(chǎng)分析 2 文本挖掘流程 文本處理流程首先要擁有分析的語(yǔ)料(text corpus),比如報(bào)告,、信函,、出版物等。而后根據(jù)這些語(yǔ)料建立半結(jié)構(gòu)化的文本庫(kù)(text database),。然后生成包含詞頻的結(jié)構(gòu)化的詞條-文檔矩陣(term-document matrix) 文本挖掘需要的相關(guān)包: tm包是R語(yǔ)言中為文本挖掘提供綜合性處理的package,,進(jìn)行操作前載入tm包,vignette命令可以查看相關(guān)文檔說(shuō)明:
library(tm); tm package很多函數(shù)依賴于其它package,需將rJava, Snowball, zoo, XML, slam, Rz, Rweka,matlab這些win32 package一并下載,,并解壓到默認(rèn)的library中去,,到SUN網(wǎng)站安裝JAVA運(yùn)行環(huán)境軟件包 Java 環(huán)境安裝后執(zhí)行如下R代碼: Sys.setenv(JAVA_HOME='C:\Program Files (x86)\Java\jdk1.7.0_15\jre') 加載如下包: library(rJava):Java環(huán)境 library(Rwordseg) #中文分詞 library(tm):tm 包 library(Rcpp)#wordcloud相關(guān) library(RColorBrewer)#wordcloud相關(guān) library(wordcloud)#wordcloud相關(guān) 3
實(shí)例-R 1、文本讀入(語(yǔ)料庫(kù)構(gòu)建) Text Corpus: 語(yǔ)料庫(kù)代表了一系列的文檔集合,,分兩種: ·動(dòng)態(tài)語(yǔ)料庫(kù)(Volatile Corpus,,作為R 對(duì)象保存在內(nèi)存中) 動(dòng)態(tài)語(yǔ)料庫(kù):Corpus(x, readerControl = list(reader = , language ) 靜態(tài)語(yǔ)料庫(kù):PCorpus(x, readerControl = list(reader = , language =), dbControl = list(dbName = “”, dbType = “DB1”)) x: 資料來(lái)源,tm相關(guān)函數(shù):
readerControl:資料源創(chuàng)立的文本文件
dbControl:靜態(tài)語(yǔ)料庫(kù)的第三種參數(shù),聲明R內(nèi)存外的資料來(lái)源(如數(shù)據(jù)庫(kù)及類型),, 實(shí)例:dir<-"C:\\test" txt<-Corpus(DirSource(dir))
#將所有路徑下的文檔讀入作為語(yǔ)料庫(kù) 2、文件預(yù)處理 #主要是tm_map函數(shù) txt=tm_map(txt,as.PlainTextDocument) txt=tm_map(txt,stripWhitespace)# 去除空格 txt=tm_map(txt,tolower) #將內(nèi)容轉(zhuǎn)換成小寫(xiě) txt=tm_map(txt, removeWords, stopwords("english"))#remove stopwords getTransformations():查看所有字符處理方式 如下: segment.options(isNameRecognition = TRUE) dm<-segmentCN(as.character(txt)) dtm<-Corpus(VectorSource(dm)) #重新生成語(yǔ)料庫(kù) 3,、詞頻矩陣生成 詞頻矩陣生成:dtm<-DocumentTermMatrix(txt,
control=list(dictionary=cnword, removePunctuation = TRUE,
stopwords=TRUE, Punctuation是否去掉標(biāo)點(diǎn)符號(hào)默認(rèn)false dictionary設(shè)置要統(tǒng)計(jì)的中文詞語(yǔ),,如果不設(shè)置的話,默認(rèn)會(huì)從所有的語(yǔ)料庫(kù)里統(tǒng)計(jì),。 wordLengths設(shè)置如果詞的長(zhǎng)度大于X時(shí)舍去,。 剔除稀疏詞匯:removeSparseTerms(dtm, sparse=0.9) 數(shù)據(jù)框格式轉(zhuǎn)換:df_dtm2<-as.data.frame(inspect(dtm2)) 實(shí)例: dtm2<-TermDocumentMatrix(dtm, control=list(wordLengths =
c(1,5))) dtm3<-removeSparseTerms(dtm2, sparse=0.5) 3、文本分析 ##filter query="id=='237' & heading == 'INDONESIA SEEN AT CROSSROADS OVER ECONOMIC CHANGE'" #設(shè)置查詢條件 #從中過(guò)濾出滿足query條件的文檔 tm_filter(txt, FUN=sFilter, query) #A corpus with 1 text document ##頻數(shù)分析 findFreqTerms(x, lowfreq = 0, highfreq = Inf) lowfreq :詞匯頻數(shù)下限 highfreq:詞匯頻數(shù)上限 ##關(guān)聯(lián)分析 findAssocs(x, terms, corlimit) 實(shí)例:findAssocs(dtm4,"犯規(guī)",0.5) ##云圖分析 words:關(guān)鍵詞列表 freq:關(guān)鍵詞對(duì)應(yīng)的頻數(shù)列表 scale:字號(hào)列表(c(最大,最小) min.freq:顯示的最小詞頻 max.words:詞云圖上顯示關(guān)鍵詞的最大數(shù)目 random.order:控制關(guān)鍵詞的排列順序,,T:隨機(jī)排列,,F(xiàn):按照頻數(shù)從中心向外降序排列,頻數(shù)大的出現(xiàn)在中心位置 random.color:控制關(guān)鍵詞字體顏色,,T:隨機(jī)分配,,F(xiàn):按頻數(shù)分配 rot.per:控制關(guān)鍵詞擺放角度,T :水平,,F(xiàn):旋轉(zhuǎn)90度 colors:字體顏色列表 ordered.colors:控制字體顏色使用順序,,T:按指定順序給出顏色,F(xiàn):任意給定顏色 實(shí)例: dtm4<-as.matrix(dtm3) v <- sort(rowSums(dtm4),decreasing=TRUE) d <- data.frame(word = names(v),freq=v) wordcloud(d$words, d$freq, scale = c(6, 1.5), min.freq = 2, max.words = 1000, colors = rainbow(100))
|
|
來(lái)自: 枯井道人 > 《統(tǒng)計(jì)》