1 / 12
文档名称:

【数据挖掘】手把手教你做文本挖掘.doc

格式:doc   大小:15KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

【数据挖掘】手把手教你做文本挖掘.doc

上传人:雪雁 2022/1/20 文件大小:15 KB

下载得到文件列表

【数据挖掘】手把手教你做文本挖掘.doc

文档介绍

文档介绍:【数据挖掘】手把手教你做文本挖掘
一、文本挖掘定义
文本挖掘指的是从文本数据中获取有价值的信息和知识,它是数据挖掘中的一种方法。文本挖掘中最重要最基本的应用是实现文本的分类和聚类,前者是有监督的挖掘算法,后者是无监督的挖
图中圈出来的词对后续的分析并没有什么实际意义,故需要将其剔除,即删除停止词。

#创建停止词
mystopwords <- (file = (), stringsAsFactors = FALSE)
head(mystopwords)
class(mystopwords)
#需要将数据框格式的数据转化为向量格式
mystopwords <- (mystopwords[,1])
head(mystopwords)
停止词创建好后,该如何删除76条新闻中实际意义的词呢?下面通过自定义删除停止词的函数加以实现。

#自定义删除停止词的函数
removewords <- function(target_words,stop_words){
target_words = target_words[target_words%in%stop_words==FALSE]
return(target_words)
}
segword2 <- sapply(X = segword, FUN = removewords, mystopwords)
#查看已删除后的分词结果
segword2[[1]]相比与之前的分词结果,这里瘦身了很多,剔除了诸如“是”、“的”、“到”、“这”等无意义的次。
判别分词结果的好坏,最快捷的方法是绘制文字云,可以清晰的查看哪些词不该出现或哪些词分割的不准确。

#绘制文字图
word_freq <- getWordFreq(string = unlist(segword2))
opar <- par( = TRUE)
par(bg = 'black')
#绘制出现频率最高的前50个词
wordcloud(words = word_freq$Word, freq = word_freq$Freq, = 50, = TRUE, colors = rainbow(n = 7))
par(opar)
很明显这里仍然存在一些无意义的词(如说、日、个、去等)和分割不准确的词语(如黄金周切割为黄金,医药切割为药等),这里限于篇幅的原因,就不进行再次添加自定义词汇和停止词。

#将已分完词的列表导入为语料库,并进一步加工处理语料库
text_corpus <- Corpus(x = VectorSource(segword2))
text_corpus
此时语料库中存放了76条新闻的分词结果。

#去除语料库中的数字
text_corpus <- tm_map(text_corpus, removeNumbers)
#去除语料库中的多余空格
text_corpus <- tm_map(text_corpus, stripWhitespace)
#创建文档-词条矩阵
dtm <- DocumentTermMatrix(x = text_corpus, control = list(wordLengths = c(2,Inf)))
dtm
从图中可知,文档-词条矩阵包含了76行和7939列,行代表76条新闻,列代表7939个词;该矩阵实际上为稀疏矩阵,其中矩阵中非0元素有11655个,而0元素有591709,稀疏率达到98%;最后,这7939个词中,最频繁的一个词出现在了49条新闻中。
由于稀疏矩阵的稀疏率过高,这里将剔除一些出现频次极地的词语。

#去除稀疏矩阵中的词条
dtm <- removeSparseTerms(x = dtm, sparse = )
dtm
这样一来,矩阵中列大幅减少,当前矩阵只包含了116列,即116个词语。
为了便于进一步的统计建模,需要将矩阵转换为数据框格式。


#将矩阵转换为数据框格式
df <- (inspect(dtm))
#查看数据框的前6行(部分)
head(df)

统计建模:聚类分析
聚类分析是文本挖掘的基本应用,常用的聚类算法包括层次聚类法、划分聚类法、EM聚类法和密度聚类法。
这里使