R语言中对文本数据进行主题模型topicmodeling分析

主题建模

在文本挖掘中,我们经常收集一些文档集合,例如博客文章或新闻文章,我们希望将其分成自然组,以便我们可以分别理解它们。主题建模是对这些文档进行无监督分类的一种方法,类似于对数字数据进行聚类,即使我们不确定要查找什么,也可以找到自然的项目组。

潜在狄利克雷分配(LDA)是拟合主题模型特别流行的方法。它将每个文档视为主题的混合体,并将每个主题看作是单词的混合体。这允许文档在内容方面相互“重叠”,而不是分离成离散的组,以反映自然语言的典型用法。

R语言中对文本数据进行主题模型topicmodeling分析

结合主题建模的文本分析流程图。topicmodels包采用Document-Term Matrix作为输入,并生成一个可以通过tidytext进行处理的模型,以便可以使用dplyr和ggplot2对其进行处理和可视化。
clipboard.png

如图所示,我们可以使用 文本原理来处理主题建模 。

潜在狄利克雷分配

潜在Dirichlet分配是主题建模中最常用的算法之一。

每个文档都是主题的混合体。我们设想每个文档可能包含来自几个主题的文字,特别是比例。例如,在双主题模型中,我们可以说“文档1是90%的主题A和10%的主题B,而文档2是30%的主题A和70%的主题B.”

每个主题都是词汇的混合。例如,我们可以想象一个美国新闻的两个主题模型,一个话题是“政治”,一个是“娱乐”。政治话题中最常见的词语可能是“总统”,“国会”和“政府“,而娱乐主题可以由诸如”电影“,”电视“和”演员“之类的词组成。

LDA是一种同时估计这两种情况的数学方法:查找与每个主题相关的单词混合,同时确定描述每个文档的主题混合。这个算法有很多现有的实现,我们将深入探讨其中的一个。

library(topicmodels)data("AssociatedPress")AssociatedPress

  : term frequency (tf)

我们可以使用LDA()topicmodels包中的函数设置k = 2来创建两个主题的LDA模型。

实际上几乎所有的主题模型都会使用更大的模型k,但我们很快就会看到,这种分析方法可以扩展到更多的主题。

此函数返回一个包含模型拟合完整细节的对象,例如单词如何与主题关联以及主题如何与文档关联。

# set a seed so that the output of the model is predictableap_lda <- LDA(AssociatedPress,k =2,control =list(seed =1234))ap_lda

拟合模型是“简单部分”:分析的其余部分将涉及使用整理tidytext软件包中的函数来探索和解释模型。

单词主题概率

tidytext包提供了这种方法来提取每个主题的每个词的概率,称为ββ (“测试版”)。

## # A tibble: 20,946 x 3##    topic term          beta##            ##  1    1 aaron      1.69e-12##  2    2 aaron      3.90e- 5##  3    1 abandon    2.65e- 5##  4    2 abandon    3.99e- 5##  5    1 abandoned  1.39e- 4##  6    2 abandoned  5.88e- 5##  7    1 abandoning 2.45e-33##  8    2 abandoning 2.34e- 5##  9    1 abbott    2.13e- 6## 10    2 abbott    2.97e- 5## # ... with 20,936 more rows

clipboard.png

R语言中对文本数据进行主题模型topicmodeling分析
每个主题中最常见的术语

这种可视化让我们了解从文章中提取的两个主题。话题1中最常见的词语包括“百分比”,“百万”,“十亿”和“公司”,这表明它可能代表商业或财务新闻。话题2中最常见的包括“总统”,“政府”和“苏维埃”,表示这个话题代表政治新闻。

作为替代方案,我们可以认为有条款最大的区别在ββ在主题1和主题2之间。

## # A tibble: 198 x 4##    term              topic1      topic2 log_ratio##                            ##  1 administration 
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值