最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

R語言對NASA元數(shù)據(jù)進行文本挖掘的主題建模分析

2021-02-27 11:38 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=9424

目錄

什么是主題建模?

獲取和整理NASA元數(shù)據(jù)

制作DocumentTermMatrix

LDA主題建模

探索建模

每個文檔都屬于哪個主題?

將主題建模連接到關(guān)鍵字

NASA有32,000多個數(shù)據(jù)集,并且NASA有興趣了解這些數(shù)據(jù)集之間的聯(lián)系,以及與NASA以外其他政府組織中其他重要數(shù)據(jù)集的聯(lián)系。有關(guān)NASA數(shù)據(jù)集的元數(shù)據(jù)有JSON格式在線獲得。讓我們使用主題建模對描述字段進行分類,然后將其連接到關(guān)鍵字。

什么是主題建模?

主題建模是一種無監(jiān)督的文檔分類方法。此方法將每個文檔建模為主題的混合,將每個主題建模為單詞的混合。我將在這里用于主題建模的方法稱為??潛在Dirichlet分配(LDA),??但還有其他適合主題模型的可能性。在本文中,每個數(shù)據(jù)集描述都是一個文檔。我們將看看是否可以將這些描述文本作為主題進行建模。

獲取和整理NASA元數(shù)據(jù)

讓我們下載32,000多個NASA數(shù)據(jù)集的元數(shù)據(jù)?。

  1. library(jsonlite)

  2. library(dplyr)

  3. library(tidyr)

  4. names(metadata$dataset)

  1. ## ?[1] "_id" ? ? ? ? ? ? ? ?"@type" ? ? ? ? ? ? ?"accessLevel" ? ? ? ?"accrualPeriodicity"

  2. ## ?[5] "bureauCode" ? ? ? ? "contactPoint" ? ? ? "description" ? ? ? ?"distribution"

  3. ## ?[9] "identifier" ? ? ? ? "issued" ? ? ? ? ? ? "keyword" ? ? ? ? ? ?"landingPage"

  4. ## [13] "language" ? ? ? ? ? "modified" ? ? ? ? ? "programCode" ? ? ? ?"publisher"

  5. ## [17] "spatial" ? ? ? ? ? ?"temporal" ? ? ? ? ? "theme" ? ? ? ? ? ? ?"title"

  6. ## [21] "license" ? ? ? ? ? ?"isPartOf" ? ? ? ? ? "references" ? ? ? ? "rights"

  7. ## [25] "describedBy"

  1. nasadesc <- data_frame(id = metadata$dataset$`_id`$`$oid`, desc = metadata$dataset$description)

  2. nasakeyword <- data_frame(id = metadata$dataset$`_id`$`$oid`,

  3. keyword = metadata$dataset$keyword) %>%

  4. unnest(keyword)

  5. nasakeyword <- nasakeyword %>% mutate(keyword = toupper(keyword))

檢查一下,最常用的關(guān)鍵字是什么?

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

  1. ## # A tibble: 1,616 x 2

  2. ## ? ? ? ? ? ? ? ? ? ?keyword ? ? n

  3. ## ? ? ? ? ? ? ? ? ? ? ?<chr> <int>

  4. ## 1 ? ? ? ? ? ?EARTH SCIENCE 14386

  5. ## 2 ? ? ? ? ? ? ? ? ? OCEANS 10033

  6. ## 3 ? ? ? ? ? ? ? ? ?PROJECT ?7463

  7. ## 4 ? ? ? ? ? ? OCEAN OPTICS ?7324

  8. ## 5 ? ? ? ? ? ? ? ATMOSPHERE ?7323

  9. ## 6 ? ? ? ? ? ? ?OCEAN COLOR ?7270

  10. ## 7 ? ? ? ? ? ? ? ?COMPLETED ?6452

  11. ## 8 ?ATMOSPHERIC WATER VAPOR ?3142

  12. ## 9 ? ? ? ? ? ? LAND SURFACE ?2720

  13. ## 10 ? ? ? ? ? ? ? BIOSPHERE ?2449

  14. ## # ... with 1,606 more rows

制作DocumentTermMatrix

要進行主題建模,我們需要從tm包中創(chuàng)建一種??特殊的矩陣(當(dāng)然,“文檔矩陣”只是一個通用概念)。行對應(yīng)于文檔(在本例中為描述文字),列對應(yīng)于術(shù)語(即單詞);它是一個稀疏矩陣。

讓我們使用停用詞來清理一下文本,以除去HTML或其他字符編碼中殘留的一些廢話“詞”。?

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

  2. ## ? ? ? ? ? ? ? ? ? ? ? ? ?id ? ? word ? ? n

  3. ## ? ? ? ? ? ? ? ? ? ? ? <chr> ? ?<chr> <int>

  4. ## 1 ?55942a8ec63a7fe59b4986ef ? ? suit ? ?82

  5. ## 2 ?55942a8ec63a7fe59b4986ef ? ?space ? ?69

  6. ## 3 ?56cf5b00a759fdadc44e564a ? ? data ? ?41

  7. ## 4 ?56cf5b00a759fdadc44e564a ? ? leak ? ?40

  8. ## 5 ?56cf5b00a759fdadc44e564a ? ? tree ? ?39

  9. ## 6 ?55942a8ec63a7fe59b4986ef pressure ? ?34

  10. ## 7 ?55942a8ec63a7fe59b4986ef ? system ? ?34

  11. ## 8 ?55942a89c63a7fe59b4982d9 ? ? ? em ? ?32

  12. ## 9 ?55942a8ec63a7fe59b4986ef ? ? ? al ? ?32

  13. ## 10 55942a8ec63a7fe59b4986ef ? ?human ? ?31

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

現(xiàn)在讓我們來制作??DocumentTermMatrix。

  1. ## <<DocumentTermMatrix (documents: 32003, terms: 35911)>>

  2. ## Non-/sparse entries: 1909215/1147350518

  3. ## Sparsity ? ? ? ? ? : 100%

  4. ## Maximal term length: 166

  5. ## Weighting ? ? ? ? ?: term frequency (tf)

LDA主題建模

現(xiàn)在,讓我們使用??topicmodels??包創(chuàng)建一個LDA模型。我們將告訴算法進行多少個主題?這個問題很像k-means聚類中的問題;我們不提前知道。我們可以嘗試一些不同的值,查看模型如何擬合文本。讓我們從8個主題開始。

## A LDA_VEM topic model with 8 topics.

這是一種隨機算法,根據(jù)算法的起始位置,其結(jié)果可能會有所不同。

探索建模

讓我們整理模型,看看我們能找到什么。

  1. ## # A tibble: 287,288 x 3

  2. ## ? ?topic ?term ? ? ? ? beta

  3. ## ? ?<int> <chr> ? ? ? ?<dbl>

  4. ## 1 ? ? ?1 ?suit 2.591273e-40

  5. ## 2 ? ? ?2 ?suit 9.085227e-61

  6. ## 3 ? ? ?3 ?suit 1.620165e-61

  7. ## 4 ? ? ?4 ?suit 2.081683e-64

  8. ## 5 ? ? ?5 ?suit 9.507092e-05

  9. ## 6 ? ? ?6 ?suit 5.747629e-04

  10. ## 7 ? ? ?7 ?suit 1.808279e-63

  11. ## 8 ? ? ?8 ?suit 4.545037e-40

  12. ## 9 ? ? ?1 space 2.332248e-05

  13. ## 10 ? ? 2 space 2.641815e-40

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

β列告訴我們從該主題的文檔中生成該術(shù)語的可能性。

每個主題的前5個詞是什么?
top_terms

  1. ## # A tibble: 80 x 3

  2. ## ? ?topic ? ? ? ? term ? ? ? ?beta

  3. ## ? ?<int> ? ? ? ?<chr> ? ? ? <dbl>

  4. ## 1 ? ? ?1 ? ? ? ? data 0.047596842

  5. ## 2 ? ? ?1 ? ? ? ? ?set 0.014857522

  6. ## 3 ? ? ?1 ? ? ? ? soil 0.013231077

  7. ## 4 ? ? ?1 ? ? ? ? land 0.007874196

  8. ## 5 ? ? ?1 ? ? ? ?files 0.007835032

  9. ## 6 ? ? ?1 ? ? moisture 0.007799017

  10. ## 7 ? ? ?1 ? ? ?surface 0.006913904

  11. ## 8 ? ? ?1 ? ? ? ? file 0.006495391

  12. ## 9 ? ? ?1 ? ?collected 0.006350559

  13. ## 10 ? ? 1 measurements 0.005521037

  14. ## # ... with 70 more rows

讓我們看一下。

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

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

  3. labs(title = "Top 10 Terms in Each LDA Topic",

  4. subtitle = "Topic modeling of NASA metadata description field texts",

  5. caption = "NASA metadata from https://data.nasa.gov/data.json",

  6. y = NULL, x = "beta") +

  7. facet_wrap(~topic, ncol = 2, scales = "free") +

  8. theme_tufte(base_family = "Arial", base_size = 13, ticks = FALSE) +

  9. scale_x_continuous(expand=c(0,0)) +

  10. theme(strip.text=element_text(hjust=0)) +

  11. theme(plot.caption=element_text(size=9))

我們可以看到在這些描述文本中占主導(dǎo)地位的詞“數(shù)據(jù)”是什么。從關(guān)于土地和土地的術(shù)語到關(guān)于設(shè)計,系統(tǒng)和技術(shù)的術(shù)語,這些術(shù)語集合之間確實存在著有意義的差異。絕對需要進一步探索,以找到合適數(shù)量的主題并在這里做得更好。另外,標(biāo)題和描述詞是否可以結(jié)合用于主題建模?

每個文檔都屬于哪個主題?

讓我們找出哪些主題與哪些描述字段(即文檔)相關(guān)聯(lián)。

lda_gamma

  1. ## # A tibble: 256,024 x 3

  2. ## ? ? ? ? ? ? ? ? ? ?document topic ? ? ? ?gamma

  3. ## ? ? ? ? ? ? ? ? ? ? ? <chr> <int> ? ? ? ?<dbl>

  4. ## 1 ?55942a8ec63a7fe59b4986ef ? ? 1 7.315366e-02

  5. ## 2 ?56cf5b00a759fdadc44e564a ? ? 1 9.933126e-02

  6. ## 3 ?55942a89c63a7fe59b4982d9 ? ? 1 1.707524e-02

  7. ## 4 ?56cf5b00a759fdadc44e55cd ? ? 1 4.273013e-05

  8. ## 5 ?55942a89c63a7fe59b4982c6 ? ? 1 1.257880e-04

  9. ## 6 ?55942a86c63a7fe59b498077 ? ? 1 1.078338e-04

  10. ## 7 ?56cf5b00a759fdadc44e56f8 ? ? 1 4.208647e-02

  11. ## 8 ?55942a8bc63a7fe59b4984b5 ? ? 1 8.198155e-05

  12. ## 9 ?55942a6ec63a7fe59b496bf7 ? ? 1 1.042996e-01

  13. ## 10 55942a8ec63a7fe59b4986f6 ? ? 1 5.475847e-05

  14. ## # ... with 256,014 more rows

此處的γ列是每個文檔屬于每個主題的概率。請注意,有些非常低,有些更高。概率如何分布?

  1. ggplot(lda_gamma, aes(gamma, fill = as.factor(topic))) +

  2. geom_histogram(alpha = 0.8, show.legend = FALSE) +

  3. facet_wrap(~topic, ncol = 4) +

  4. scale_y_log10() +

  5. labs(title = "Distribution of Probability for Each Topic",

  6. subtitle = "Topic modeling of NASA metadata description field texts",

  7. caption = "NASA metadata from https://data.nasa.gov/data.json",

  8. y = NULL, x = "gamma") +

  9. theme_minimal(base_family = "Arial", base_size = 13) +

  10. theme(strip.text=element_text(hjust=0)) +

  11. theme(plot.caption=element_text(size=9))

y軸在此處以對數(shù)刻度繪制,因此我們可以看到一些東西。大多數(shù)文檔都被歸類為以下主題之一:許多文檔被歸類為主題2,而文檔被歸類為主題1和5則較不明確。一些主題的文檔較少。對于任何單個文檔,我們都可以找到它具有最高歸屬概率的主題。

將主題建模連接到關(guān)鍵字

讓我們將這些主題模型與關(guān)鍵字聯(lián)系起來,看看會發(fā)生什么。讓我們?將此數(shù)據(jù)框添加到關(guān)鍵字,然后查看哪些關(guān)鍵字與哪個主題相關(guān)聯(lián)。

lda_gamma

  1. ## # A tibble: 1,012,727 x 4

  2. ## ? ? ? ? ? ? ? ? ? ?document topic ? ? ? ?gamma ? ? ? ? ? ? ? ? ? ? keyword

  3. ## ? ? ? ? ? ? ? ? ? ? ? <chr> <int> ? ? ? ?<dbl> ? ? ? ? ? ? ? ? ? ? ? <chr>

  4. ## 1 ?55942a8ec63a7fe59b4986ef ? ? 1 7.315366e-02 ? ? ? ?JOHNSON SPACE CENTER

  5. ## 2 ?55942a8ec63a7fe59b4986ef ? ? 1 7.315366e-02 ? ? ? ? ? ? ? ? ? ? PROJECT

  6. ## 3 ?55942a8ec63a7fe59b4986ef ? ? 1 7.315366e-02 ? ? ? ? ? ? ? ? ? COMPLETED

  7. ## 4 ?56cf5b00a759fdadc44e564a ? ? 1 9.933126e-02 ? ? ? ? ? ? ? ? ? ?DASHLINK

  8. ## 5 ?56cf5b00a759fdadc44e564a ? ? 1 9.933126e-02 ? ? ? ? ? ? ? ? ? ? ? ?AMES

  9. ## 6 ?56cf5b00a759fdadc44e564a ? ? 1 9.933126e-02 ? ? ? ? ? ? ? ? ? ? ? ?NASA

  10. ## 7 ?55942a89c63a7fe59b4982d9 ? ? 1 1.707524e-02 GODDARD SPACE FLIGHT CENTER

  11. ## 8 ?55942a89c63a7fe59b4982d9 ? ? 1 1.707524e-02 ? ? ? ? ? ? ? ? ? ? PROJECT

  12. ## 9 ?55942a89c63a7fe59b4982d9 ? ? 1 1.707524e-02 ? ? ? ? ? ? ? ? ? COMPLETED

  13. ## 10 56cf5b00a759fdadc44e55cd ? ? 1 4.273013e-05 ? ? ? ? ? ? ? ? ? ?DASHLINK

  14. ## # ... with 1,012,717 more rows

讓我們保留屬于某個主題的文檔(概率> 0.9),然后為每個主題找到最重要的關(guān)鍵字。

top_keywords

  1. ## Source: local data frame [1,240 x 3]

  2. ## Groups: topic [8]

  3. ##

  4. ## ? ?topic ? ? ? keyword ? ? n

  5. ## ? ?<int> ? ? ? ? <chr> <int>

  6. ## 1 ? ? ?2 ? OCEAN COLOR ?4480

  7. ## 2 ? ? ?2 ?OCEAN OPTICS ?4480

  8. ## 3 ? ? ?2 ? ? ? ?OCEANS ?4480

  9. ## 4 ? ? ?1 EARTH SCIENCE ?3469

  10. ## 5 ? ? ?5 ? ? ? PROJECT ?3464

  11. ## 6 ? ? ?5 ? ? COMPLETED ?3057

  12. ## 7 ? ? ?8 EARTH SCIENCE ?2229

  13. ## 8 ? ? ?3 ? OCEAN COLOR ?1968

  14. ## 9 ? ? ?3 ?OCEAN OPTICS ?1968

  15. ## 10 ? ? 3 ? ? ? ?OCEANS ?1968

  16. ## # ... with 1,230 more rows

我們也對它們進行可視化。

  1. ggplot(top_keywords, aes(n, keyword, fill = as.factor(topic))) +

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

  3. labs(title = "Top 10 Keywords for Each LDA Topic",

  4. subtitle = "Topic modeling of NASA metadata description field texts",

  5. caption = "NASA metadata from https://data.nasa.gov/data.json",

  6. y = NULL, x = "Number of documents") +

  7. facet_wrap(~topic, ncol = 2, scales = "free") +

  8. theme_tufte(base_family = "Arial", base_size = 13, ticks = FALSE) +

  9. scale_x_continuous(expand=c(0,0)) +

  10. theme(strip.text=element_text(hjust=0)) +

  11. theme(plot.caption=element_text(size=9))


R語言對NASA元數(shù)據(jù)進行文本挖掘的主題建模分析的評論 (共 條)

分享到微博請遵守國家法律
淮阳县| 桓仁| 三原县| 新密市| 西藏| 宝清县| 黄骅市| 佛坪县| 甘南县| 安岳县| 鲜城| 冕宁县| 永登县| 曲麻莱县| 河曲县| 克山县| 惠州市| 湟中县| 印江| 柯坪县| 桃园市| 南宫市| 屯留县| 扎鲁特旗| 怀远县| 岳普湖县| 乡宁县| 新巴尔虎左旗| 三明市| 屏东县| 奉贤区| 正宁县| 那曲县| 都匀市| 灯塔市| 灵寿县| 会泽县| 岳阳县| 营口市| 甘孜| 康乐县|