用R语言进行文本挖掘和主题建模

欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~git

咱们天天都会遇到各类各样的文本数据,但大部分是非结构化的,并非所有都是有价值的。
据估计,全球约80%的数据是非结构化的。这包括音频,视频和文本数据。在这篇文章中,咱们将只讨论文本数据。在系列后面,咱们将会谈论到其余非结构化数据。github

咱们阅读的书籍,博客,新闻文章,网页,电子邮件等都是文本数据。全部这些文本都为咱们提供了大量的信息,并不断增加。可是,并不是全部的数据都是有用的。咱们过滤掉噪音,只保留重要的信息。这是一个乏味的过程,但做为人类,咱们须要智慧 - 阅读是一个必不可少的工具。并且,当世界倾向于智能机器时,处理来自非结构化数据的信息的能力是必须的。对于人类和智能机器来讲,从大量的文本数据中挖掘信息是必需的。文本挖掘能够提供方法来提取,总结和分析来自非结构化数据的有用信息,以得到新的看法。app

文本挖掘能够用于各类任务。如下是咱们的系列将进一步讨论的几个主题:机器学习

  • 主题建模
  • 文档聚类
  • 文档分类
  • 文字摘要

这篇文章主要关注主题建模。在接下来的帖子中,咱们将深刻到其余任务。工具

一、文本检索

文本文件能够有各类格式,如PDF,DOC,HTML等。第一步是将这些文档转换为可读的文本格式。接下来,必须建立一个语料库。语料库只是一个或多个文档的集合。当咱们在R中建立语料库时,文本会被标记并可供进一步处理。学习

library(tm)
library(SnowballC)
library(topicmodels)
#设置工做目录(根据须要修改路径)
setwd("//Users//datascience//textmining//topicmodel")
#加载文档到语料库
#获取目录中的.txt文件列表
filenames <- list.files(getwd(),pattern="*.txt")
#将文件读入字符向量
files <- lapply(filenames,readLines)
#建立矢量语料库
articles.corpus <- Corpus(VectorSource(files))

二、文本预处理

接下来,咱们须要对文本进行预处理,将其转换为能够处理以提取信息的格式。在分析文本以前减少特征空间的大小是很是重要的。咱们能够在这里使用各类预处理方法,如停用词清除,案例折叠,词干化,词形化和收缩简化。可是,没有必要将全部的规范化方法应用于文本。这取决于咱们检索的数据和要执行的分析类型。大数据

#将每一个字母变成小写
articles.corpus <- tm_map(articles.corpus, tolower)
#删除标点符号
articles.corpus <- tm_map(articles.corpus, removePunctuation)
#删除数字
articles.corpus <- tm_map(articles.corpus, removeNumbers);
#删除通用和自定义的停用词
stopword <- c(stopwords('english'), "best");
articles.corpus <- tm_map(articles.corpus, removeWords, stopword)
articles.corpus <- tm_map(articles.corpus, stemDocument);

如下是咱们应用于减小数据集特征空间的预处理方法的简短描述:
删除标点符号:删除了各类标点符号,如+, - 和〜。
停用词清除:将经常使用词和短语功能词等停用词过滤掉,以便对数据进行有效的分析。由NLTK提供的标准英语停用词列表与自定义词聚集合一块儿使用,以消除非正式词汇和产品名称。咱们也能够从咱们的文本中提供咱们认为与咱们的分析无关的文字。
案例折叠:案例折叠将全部大写字母转换为小写字母。
词干化:词干是将修饰词或派生词归为根的过程。例如,工做(进行时)和工做(过去式)都会被词干化为工做(原型)。
删除号码:对于某些文本挖掘活动,号码不是必需的。例如,在主题建模的状况下,咱们关心的是找到描述咱们语料库的基本词汇。在这种状况下,咱们能够删除号码。然而,在某些状况下,例如,若是咱们正在为财务报表进行主题建模,它们可能会增长实质性内容。ui

下一步是建立一个文档项矩阵(DTM)。这是一个重要的步骤,由于解释和分析文本文件,它们最终必须转换成文档术语矩阵。 DTM包含每一个文档的术语出现次数。 DTM中的行表明文档,文档中的每一个词表明一列。在将文集转换为文档项矩阵以后,咱们还移除了低频词(稀疏词)。spa

articleDtm <- DocumentTermMatrix(articles.corpus, control = list(minWordLength = 3));
articleDtm2 <- removeSparseTerms(articleDtm, sparse=0.98)

三、主题建模

主题建模是为了找到最能表明集合的文档集合中的关键词/术语。Latent Dirichlet Allocation(LDA)模型是一种普遍使用的话题建模技术。以上结果代表,这两个文件的主题都集中在机器学习和数据科学领域,你能够从GitHub中找到数据集和代码。命令行

问答
如何经过命令行运行R语言脚本?
相关阅读
用R进行文本挖掘与分析:分词、画词云
文本挖掘的分词原理
大数据挖掘中易犯的11大错误

此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/dev...
图片描述

相关文章
相关标签/搜索