玩玩文本挖掘

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

玩玩文本挖掘-wordcloud、主题模型与文本分类

Askyer(QQ:642874367)

本文主要介绍文本挖掘的常见方法,主要包括词频分析及wordcloud展现、主题模型、文本分类、分类评价等。分类主要包括无监督分类(系统聚类、KMeans、string kernals),有监督分类(knn、SVM)。

文本挖掘概念

将数据挖掘的成果用于分析以自然语言描述的文本,这种方法被称为文本挖掘(Text Mining)或文本知识发现(Knowledge Discovery in Text)。

文本挖掘主要过程:特征抽取、特征选择、文本分类、文本聚类、模型评价。

主题模型(Topic Mode)介绍

主题模型是专门抽象一组文档所表达“主题”的统计技术。

最早的模型是probabilistic latent semantic indexing (PLSI),后来Latent Dirichlet allocation (LDA,潜在狄利克雷分配模型) 模型成为了最常见的主题模型,它可以认为是PLSI 的泛化形式。LDA 主题模型涉及到贝叶斯理论、Dirichlet 分布、多项分布、图模型、变分推断、EM 算法、Gibbs 抽样等知识。

实例分析

0.数据预处理

数据来源于sougou实验室数据。

数据网址:/dl/sogoulabdown/SogouC.mini.20061102.tar.gz 文件结构

└─Sample

├─C000007 汽车

├─C000008 财经

├─C000010 IT

├─C000013 健康

├─C000014 体育

├─C000016 旅游

├─C000020 教育

├─C000022 招聘

├─C000023 文化

└─C000024 军事

采用Python对数据进行预处理为train.csv文件,并把每个文件文本数据处理为1行。

1.读取资料库

setwd("d:\\Testing\\R\\w12")

csv <- read.csv("train.csv",header=T, stringsAsFactors=F)

mystopwords<- unlist (read.table("StopWords.txt",stringsAsFactors=F))

2.数据预处理(中文分词、stopword处理)

library(tm)

#移除数字

removeNumbers = function(x) { ret = gsub("[0-90123456789]","",x) }

#中文分词,也可以考虑使用rmmseg4j、rsmartcn

wordsegment<- function(x) {

library(Rwordseg)

segmentCN(x)

}

#去除停止词,效果比较差,可以进一步完善

removeStopWords = function(x,words) {

ret = character(0)

index <- 1

it_max <- length(x)

while (index <= it_max) {

if (length(words[words==x[index]]) <1) ret <- c(ret,x[index])

index <- index +1

}

ret

}

sample.words <- lapply(csv$text, removeNumbers)

sample.words <- lapply(sample.words, wordsegment)

#先处理中文分词,再处理stopwords,防止全局替换丢失信息

sample.words <- lapply(sample.words, removeStopWords, mystopwords)

#构建语料库

corpus = Corpus(VectorSource(sample.words))

meta(corpus,"cluster") <- csv$type

unique_type <- unique(csv$type)

#建立文档-词条矩阵

(sample.dtm <- DocumentTermMatrix(corpus, control = list(wordLengths = c(2, Inf))))

3.wordcloud展示

library(wordcloud)

#不同文档wordcloud对比图

sample.tdm <- TermDocumentMatrix(corpus, control = list(wordLengths = c(2, Inf))) tdm_matrix <- as.matrix(sample.tdm)

png(paste("sample_comparison",".png", sep = ""), width = 1500, height = 1500 ) comparison.cloud(tdm_matrix)

title(main = "sample comparision")

dev.off()

#按分类汇总wordcloud对比图

n <- nrow(csv)

zz1 = 1:n

cluster_matrix<-sapply(unique_type,function(type){apply(tdm_matrix[,zz1[csv$type==type]],1,su m)})

png(paste("sample_ cluster_comparison",".png", sep = ""), width = 800, height = 800 ) comparison.cloud(cluster_matrix)

title(main = "sample cluster comparision")

dev.off()

相关文档
最新文档