设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1519|回复: 0

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

[复制链接]

16

主题

161

金钱

227

积分

入门用户

发表于 2019-8-9 14:49:00 | 显示全部楼层 |阅读模式

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

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


1、文本检索
文本文件可以有各种格式,如PDF,DOC,HTML等。第一步是将这些文档转换为可读的文本格式。接下来,必须创建一个语料库。语料库只是一个或多个文档的集合。当我们在R中创建语料库时,文本会被标记并可供进一步处理。
  1. library(tm)
  2. library(SnowballC)
  3. library(topicmodels)
  4. #设置工作目录(根据需要修改路径)
  5. setwd("//Users//datascience//textmining//topicmodel")
  6. #加载文档到语料库
  7. #获取目录中的.txt文件列表
  8. filenames <- list.files(getwd(),pattern="*.txt")
  9. #将文件读入字符向量
  10. files <- lapply(filenames,readLines)
  11. #创建矢量语料库
  12. articles.corpus <- Corpus(VectorSource(files))
复制代码


2、文本预处理
接下来,我们需要对文本进行预处理,将其转换为可以处理以提取信息的格式。在分析文本之前减小特征空间的大小是非常重要的。我们可以在这里使用各种预处理方法,如停用词清除,案例折叠,词干化,词形化和收缩简化。但是,没有必要将所有的规范化方法应用于文本。这取决于我们检索的数据和要执行的分析类型。
  1. #将每个字母变成小写
  2. articles.corpus <- tm_map(articles.corpus, tolower)
  3. #删除标点符号
  4. articles.corpus <- tm_map(articles.corpus, removePunctuation)
  5. #删除数字
  6. articles.corpus <- tm_map(articles.corpus, removeNumbers);
  7. #删除通用和自定义的停用词
  8. stopword <- c(stopwords('english'), "best");
  9. articles.corpus <- tm_map(articles.corpus, removeWords, stopword)
  10. articles.corpus <- tm_map(articles.corpus, stemDocument);
复制代码


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

下一步是创建一个文档项矩阵(DTM)。这是一个重要的步骤,因为解释和分析文本文件,它们最终必须转换成文档术语矩阵。 DTM包含每个文档的术语出现次数。 DTM中的行代表文档,文档中的每个词代表一列。在将文集转换为文档项矩阵之后,我们还移除了低频词(稀疏词)。
  1. articleDtm <- DocumentTermMatrix(articles.corpus, control = list(minWordLength = 3));
  2. articleDtm2 <- removeSparseTerms(articleDtm, sparse=0.98)
复制代码


3、主题建模
主题建模是为了找到最能代表集合的文档集合中的关键词/术语。Latent Dirichlet Allocation(LDA)模型是一种广泛使用的话题建模技术。以上结果表明,这两个文件的主题都集中在机器学习和数据科学领域,你可以从GitHub中找到数据集和代码。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表