文本挖掘現在是無處不在啊,之前在工作中涉及到一些文本挖掘的問題,但都不是很深入。最近在復習機器學習算法,看到貝葉斯分類,其中有一類就涉及到文本分類。總值涉及到文本挖掘的根本就是分詞然后統計詞頻,然后根據概率公式判別這些詞是否屬于某一類,歸根到底還是一個量化計算的問題。
最基礎的問題就是數據格式問題,向量、數據框、列表這三個在應用過程中都有涉及到,R語言含有很多函數,可以輕松幫我們搞定這些問題。
一、獲取數據
library(RODBC)
db <- odbcConnect(dsn="inspur", uid="inspur_detail", pwd="inspur", believeNRows=FALSE )
cin = sqlQuery(db, "SELECT A.COMMODITY_NAME from B2C_SN_CINFO_201702 A where ROWNUM < 1000")
調取了999天商品信息數據,想觀察一下這些商品信息數據有哪些出現頻次比較高的詞語
二、分詞
library(Rwordseg)
cin$COMMODITY_NAME<-as.character(cin$COMMODITY_NAME)
cin_seg<-segmentCN(cin$COMMODITY_NAME) 分詞函數segmentCN針對的是字符型數據
執行完分詞語句后,分詞數據以列表的形式被儲存
在這里統計詞頻的時候 txtChar <- unlist(cin_seg) ?unlist將數據編程向量或者數字向量
data <- as.data.frame(table(txtChar)) ?將所分詞轉化為數據框的形式
wordcloud(data$txtChar,data$Freq)
在R語言中使用Rwordseg包的segmentCN函數在分詞時,如果出現下面這個錯誤:
Error in .jcall(analyzer, "S", strfunc, X) :
java.lang.NullPointerException
解決方法:
text<-enc2utf8(text) #轉utf-8,有些格式它不支持
text<-text[Encoding(text)!='unknown']#清除無法識別的字符
word.message<-segmentCN(text)#分詞
OK,這樣的話既可以了。
三、數據清洗
推薦使用? http://blog.csdn.net/duqi_yc/article/details/9817243