前面我们讲了关于语料库的基础操作包tm,今天给大家分享一个进行文本分析的另外一个包stm,此包不仅整合了文本分析的功能,同时还提供了模型的构建。下面是包的整个分析框架:
接下来我们就直奔主题了,首先看下包的安装:
代码语言:javascript复制install.packages(“stm”)
install.packages("textir")
我们直接通过实例来看下上面框架中每一步的实现细节:
代码语言:javascript复制##文本提取1
library(textir)
data(congress109)
代码语言:javascript复制out <- readCorpus(congress109Counts,type="Matrix")
documents <- out$documents
vocab <- out$vocab
代码语言:javascript复制##文本数据的提取2
View(head(gadarian))
代码语言:javascript复制#Process the data for analysis.
temp<-textProcessor(documents=gadarian$open.ended.response,metadata=gadarian)
meta<-temp$meta##元数据
vocab<-temp$vocab###所有的词汇
docs<-temp$documents#所有词在每个词条的分布情况
####
out <- prepDocuments(docs, vocab, meta)
docs<-out$documents
vocab<-out$vocab
meta <-out$meta
代码语言:javascript复制####查看需要各阈值数量后的数据情况。主要是来看删除字符前的阈值设置
plotRemoved(docs, lower.thresh=seq(from = 10,to = 1000, by = 10))
代码语言:javascript复制###LDA模型的构建,我们定义四个主题,模型将会根据这四个主题进行LDA分析
stm=stm(out$document,out$vocab,4,init.type="LDA")
代码语言:javascript复制##可视化主题
plot.STM(stm)
代码语言:javascript复制##词云图,其中可以设置指定的topic编码,以及对应的词频数范围scale
cloud(stm)
代码语言:javascript复制###为每个主题选择几个描述性的词
labelTopics(stm)
代码语言:javascript复制###为主题选择代表性的文档。plotQuote可以可视化结果
findThoughts(stm,texts=gadarian$open.ended.response, topics=c(1,2), n=3)
代码语言:javascript复制###评估协变量的影响
prep <- estimateEffect(c(1) ~ treatment,stm, gadarian)#其中公式左侧是主题编号右侧是变量名
plot.estimateEffect(prep,"treatment")
代码语言:javascript复制###主题相关性分析
stmc=topicCorr(stm)
plot.topicCorr(stmc)
代码语言:javascript复制###两个主题的比较
plot(stm, type = "perspectives",topics = c(1,4))
欢迎大家学习交流!