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

简介: R语言中对文本数据进行主题模型topic modeling分析

主题建模

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

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

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


潜在狄利克雷分配

潜在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,但我们很快就会看到,这种分析方法可以扩展到更多的主题。

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


# 预测模型
ableap_lda <- LDA(AssociatedPress,k =2,control =list(seed =1234))
ap_lda

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


单词主题概率

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

## # A tibble: 20,946 x 3##    topic term          beta##            ##  1    1 aaro


每个主题中最常见的术语

这种可视化让我们了解从文章中提取的两个主题。话题1中最常见的词语包括“百分比”,“百万”,“十亿”和“公司”,这表明它可能代表商业或财务新闻。话题2中最常见的包括“总统”,“政府”和“苏维埃”,表示这个话题代表政治新闻。关于每个主题中的单词的一个重要观察是,在这两个主题中,诸如“新”和“人”等一些词语是常见的。与“硬聚类”方法相反,这是话题建模的优势:自然语言中使用的话题可能在话语方面存在一些重叠。

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


## # A tibble: 198 x 4
##    term              topic1      topic2 log_ratio
##                            
##  1 administration 0.000431  0.00138        1.68
##  2 ago            0.00107  0.000842      -0.339
##  3 agreement      0.000671  0.00104        0.630
##  4 aid            0.0000476 0.00105        4.46
##  5 air            0.00214  0.000297      -2.85
##  6 american      0.00203  0.00168        -0.270
##  7 analysts      0.00109  0.000000578  -10.9
##  8 area          0.00137  0.000231      -2.57
##  9 army          0.000262  0.00105        2.00
## 10 asked          0.000189  0.00156        3.05
## # ... with 188 more rows
 

图显示了这两个主题之间差异最大的词。

图β中差异最大的词β 在主题2和主题1之间

我们可以看到,话题2中更常见的词包括“民主”和“共和党”等政党,以及“dukakis”和“gorbachev”等政治家的名字。主题1的特点是“日元”和“美元”等货币以及“指数”,“价格”和“利率”等金融术语。这有助于确认算法确定的两个主题是政治和财务新闻。


文档 - 主题概率

除了将每个主题评估为单词混合之外,LDA还将每个文档建模为混合主题。我们可以检查每个文档的每个主题概率,称为γγ(“伽玛”) 。


## # A tibble: 4,492 x 3
##    document topic    gamma
##          ##  1        1    1 0.248
##  2        2    1 0.362
##  3        3    1 0.527
##  4        4    1 0.357
##  5        5    1 0.181
##  6        6    1 0.000588
##  7        7    1 0.773
##  8        8    1 0.00445
##  9        9    1 0.967
## 10      10    1 0.147
## # ... with 4,482 more rows

这些值中的每一个都是该文档中从该主题生成的单词的估计比例。例如,该模型估计文档1中单词的大约24.8%是从主题1生成的。

我们可以看到,这些文档中的许多文档都是从两个主题的混合中抽取出来的,但文档6几乎完全是从主题2中得出的,其中有一个γγ从主题1接近零。为了检查这个答案,我们可以tidy()使用文档术语矩阵,并检查该文档中最常见的词。


## # A tibble: 287 x 3
##    document term          count
##                
##  1        6 noriega          16.
##  2        6 panama          12.
##  3        6 jackson          6.
##  4        6 powell            6.
##  5        6 administration    5.
##  6        6 economic          5.
##  7        6 general          5.
##  8        6 i                5.
##  9        6 panamanian        5.
## 10        6 american          4.
## # ... with 277 more rows

根据最常见的词汇,这似乎是一篇关于美国政府与巴拿马独裁者曼努埃尔诺列加之间关系的文章,这意味着该算法将其置于专题2(作为政治/国家新闻)是正确的。

相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
58 3
|
3月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
7月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
4月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
91 3