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

我们每天都会遇到各种各样的文本数据 - 但大部分是非结构化的,并不是全部都是有价值的。请继续阅读以了解文本挖掘如何提供帮助。

估计,全球约80%的数据是非结构化的。这包括音频,视频和文本数据。在这篇文章中,我们将只讨论文本数据。在系列后面,我们将会谈论到其他非结构化数据.

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

文本挖掘可以用于各种任务。以下是我们的系列将进一步讨论的几个主题:

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

这篇文章主要关注主题建模。在接下来的帖子中,我们将深入到其他任务。

1、文本检索

文本文件可以有各种格式,如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))

2、文本预处理

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

# 将每个字母变成小写
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提供的标准英语停用词列表与自定义词汇集合一起使用,以消除非正式词汇和产品名称。我们也可以从我们的文本中提供我们认为与我们的分析无关的文字。

案例折叠:案例折叠将所有大写字母转换为小写字母。

词干化:词干是将修饰词或派生词归为根的过程。例如,工作(进行时)和工作(过去式)都会被词干化为工作(原型)。

删除号码:对于某些文本挖掘活动,号码不是必需的。例如,在主题建模的情况下,我们关心的是找到描述我们语料库的基本词汇。在这种情况下,我们可以删除号码。然而,在某些情况下,例如,如果我们正在为财务报表进行主题建模,它们可能会增加实质性内容。

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

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

3、主题建模

主题建模是为了找到最能代表集合的文档集合中的关键词/术语。Latent Dirichlet Allocation(LDA)模型是一种广泛使用的话题建模技术。你可以在这里这里了解更多关于LDA。

以上结果表明,这两个文件的主题都集中在机器学习和数据科学领域。这正是我所期望的,因为我拿起了前两篇关于人工智能数据科学的文章。

你可以从我的GitHub中找到数据集和代码。

原文链接:https://dzone.com/articles/text-mining-using-r-and-h2o-let-machine-learn-lang

原文作者:Sibanjan Das

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

搞自动驾驶汽车很复杂?其实一个浏览器就行(讲解、代码全都有)

作者:janhuenermann 编译:量子位(QbitAI) · 问耕 自动驾驶高大上?其实在浏览器里也能玩。 上面那个视频是一个2D环境下的无人驾驶系统,...

3215
来自专栏携程技术中心

干货 | 去哪儿酒店算法服务平台

作者简介 张中原,2011年加入去哪儿网,先后从事交易系统、酒店数据、公司基础平台与组件、存储和监控等相关工作,曾长期担任应届生技术培训和指导。 最近几年时间,...

43910
来自专栏挖掘大数据

如何利用已有的大数据技术,搭建机器学习平台

人脑具备不断积累经验的能力,依赖经验我们便具备了分析处理的能力,比如我们要去菜场挑一个西瓜,别人或者自己的经验告诉我们色泽青绿、根蒂蜷缩、纹路清晰、敲声浑响的西...

6460
来自专栏24K纯开源

ffmpeg编解码视频导致噪声增大的一种解决方法

一、前言        ffmpeg在视音频编解码领域算是一个比较成熟的解决方案了。公司的一款视频编辑软件正是基于ffmpeg做了二次封装,并在此基础上进行音视...

2727
来自专栏ATYUN订阅号

TensorFlow工程师分享了TensorFlow Serving最近的创新进展

近日,Tesorflow软件工程师Noah Fiedel通过本文描述了机器学习模型TensorFlow Serving最近的一些创新进展 ? TensorFlo...

4553
来自专栏AI科技评论

深度 | 基于移动设备的机器学习,本地与云端孰优孰劣?

AI科技评论按:如果您觉得,是时候给自己的手机应用添加一些热门的机器学习或深度学习算法.....这是个好想法!但您会怎么选择?致力于提供算法服务及小白科普的咨询...

3356
来自专栏快乐八哥

数据可视化-EChart2.0使用总结2

接上一篇博客,这篇博客主要讨论EChart里面的散点图、气泡图和雷达图。 4.散点图-Scatter Chart 适合场景:三维数据集,但是只有两个维度需要比较...

2446
来自专栏量子位

谷歌终于推出TensorFlow Lite,实现在移动设备端部署AI

安妮 编译整理 量子位 出品 | 公众号 QbitAI 还得从半年前说起。 今年5月的谷歌I/O大会上,安卓工程副总裁Dave Burke宣布将推出一个专门为移...

3229
来自专栏AI科技大本营的专栏

手机也能直接玩机器学习了?来,让大神手把手教你

对于各种热门的机器学习、深度学习课程,你一定了解过不少了。 但上课之后,如何把学出来的这些新方法用在你的工作项目?如何让你的移动应用也能具备机器学习、深度学习...

4419
来自专栏吉浦迅科技

【讲座】在NVIDIA Jetson上从Tensorflow到TensorRT

NVIDIA在太平洋时间3月8日上午11:00-12:00(北京时间3月9日凌晨3:00-4:00)举办了主题为“AI at the Edge: TensorF...

6146

扫码关注云+社区

领取腾讯云代金券