文本挖掘现在是无处不在啊,之前在工作中涉及到一些文本挖掘的问题,但都不是很深入。最近在复习机器学习算法,看到贝叶斯分类,其中有一类就涉及到文本分类。总值涉及到文本挖掘的根本就是分词然后统计词频,然后根据概率公式判别这些词是否属于某一类,归根到底还是一个量化计算的问题。
最基础的问题就是数据格式问题,向量、数据框、列表这三个在应用过程中都有涉及到,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
网友评论