首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言对NASA元数据进行文本挖掘的主题建模分析

相关视频

目录

什么是主题建模?

获取和整理NASA元数据

制作DocumentTermMatrix

LDA主题建模

探索建模

每个文档都属于哪个主题?

将主题建模连接到关键字

让我们使用主题建模对描述字段进行分类,然后将其连接到关键字。

什么是主题建模?

主题建模是一种无监督的文档分类方法。此方法将每个文档建模为主题的混合,将每个主题建模为单词的混合。我将在这里用于主题建模的方法称为  潜在Dirichlet分配(LDA),  但还有其他适合主题模型的可能性。在本文中,每个数据集描述都是一个文档。我们将看看是否可以将这些描述文本作为主题进行建模。

获取和整理NASA元数据

让我们下载32,000多个NASA数据集的元数据 。

library(jsonlite)

library(dplyr)

library(tidyr)

names(metadata$dataset)

##  \[1\] "_id"                "@type"              "accessLevel"        "accrualPeriodicity"

##  \[5\] "bureauCode"         "contactPoint"       "description"        "distribution"

##  \[9\] "identifier"         "issued"             "keyword"            "landingPage"

## \[13\] "language"           "modified"           "programCode"        "publisher"

## \[17\] "spatial"            "temporal"           "theme"              "title"

## \[21\] "license"            "isPartOf"           "references"         "rights"

## \[25\] "describedBy"

nasadesc 

nasakeyword 

keyword = metadata$dataset$keyword) %>%

unnest(keyword)

nasakeyword % mutate(keyword = toupper(keyword))

检查一下,最常用的关键字是什么?

nasakeyword %>% group_by(keyword) %>% count(sort = TRUE)

## # A tibble: 1,616 x 2

##                    keyword     n

##                       

## 1            EARTH SCIENCE 14386

## 2                   OCEANS 10033

## 3                  PROJECT  7463

## 4             OCEAN OPTICS  7324

## 5               ATMOSPHERE  7323

## 6              OCEAN COLOR  7270

## 7                COMPLETED  6452

## 8  ATMOSPHERIC WATER VAPOR  3142

## 9             LAND SURFACE  2720

## 10               BIOSPHERE  2449

## # ... with 1,606 more rows创建DocumentTermMatrix

要进行主题建模,我们需要从tm包中创建一种  特殊的矩阵(当然,“文档矩阵”只是一个通用概念)。行对应于文档(在本例中为描述文字),列对应于术语(即单词);它是一个稀疏矩阵。

让我们使用停用词来清理一下文本,以除去HTML或其他字符编码中残留的一些无用“词”。

## # A tibble: 1,909,215 x 3

##                          id     word     n

##                            

## 1  55942a8ec63a7fe59b4986ef     suit    82

## 2  55942a8ec63a7fe59b4986ef    space    69

## 3  56cf5b00a759fdadc44e564a     data    41

## 4  56cf5b00a759fdadc44e564a     leak    40

## 5  56cf5b00a759fdadc44e564a     tree    39

## 6  55942a8ec63a7fe59b4986ef pressure    34

## 7  55942a8ec63a7fe59b4986ef   system    34

## 8  55942a89c63a7fe59b4982d9       em    32

## 9  55942a8ec63a7fe59b4986ef       al    32

## 10 55942a8ec63a7fe59b4986ef    human    31

## # ... with 1,909,205 more rows

现在让我们来创建  。

## 

## Non-/sparse entries: 1909215/1147350518

## Sparsity           : 100%

## Maximal term length: 166

## Weighting          : term frequency (tf)LDA主题建模

现在,让我们使用  topicmodels  包创建一个LDA模型。我们将告诉算法进行多少个主题?这个问题很像k-means聚类中的问题;我们不提前知道。我们可以尝试一些不同的值,查看模型如何拟合文本。让我们从8个主题开始。

## A LDA_VEM topic model with 8 topics.

这是一种随机算法,根据算法的起始位置,其结果可能会有所不同。

探索建模

让我们整理模型,看看我们能找到什么。

## # A tibble: 287,288 x 3

##    topic  term         beta

##             

## 1      1  suit 2.591273e-40

## 2      2  suit 9.085227e-61

## 3      3  suit 1.620165e-61

## 4      4  suit 2.081683e-64

## 5      5  suit 9.507092e-05

## 6      6  suit 5.747629e-04

## 7      7  suit 1.808279e-63

## 8      8  suit 4.545037e-40

## 9      1 space 2.332248e-05

## 10     2 space 2.641815e-40

## # ... with 287,278 more rows

β列告诉我们从该主题的文档中生成该单词的可能性。

每个主题的前5个词是什么?

## # A tibble: 80 x 3

##    topic         term        beta

##                   

## 1      1         data 0.047596842

## 2      1          set 0.014857522

## 3      1         soil 0.013231077

## 4      1         land 0.007874196

## 5      1        files 0.007835032

## 6      1     moisture 0.007799017

## 7      1      surface 0.006913904

## 8      1         file 0.006495391

## 9      1    collected 0.006350559

## 10     1 measurements 0.005521037

## # ... with 70 more rows

让我们看一下。

ggplot(top_terms, aes(beta, term, fill = as.factor(topic))) +

geom_barh(stat = "identity", show.legend = FALSE, alpha = 0.8)

我们可以看到在这些描述文本中占主导地位的词“数据”是什么。从关于土地和土地的词语到关于设计,系统和技术的词语,这些词语集合之间确实存在着有意义的差异。绝对需要进一步探索,以找到合适数量的主题并在这里做得更好。另外,标题和描述词是否可以结合用于主题建模?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230306A05OD400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券