R語言中的LDA模型:對(duì)文本數(shù)據(jù)進(jìn)行主題模型topic modeling分析|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=4333
?
最近我們被客戶要求撰寫關(guān)于LDA模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
主題建模
在文本挖掘中,我們經(jīng)常收集一些文檔集合,例如博客文章或新聞文章,我們希望將其分成組,以便我們可以分別理解它們。主題建模是對(duì)這些文檔進(jìn)行無監(jiān)督分類的一種方法,類似于對(duì)數(shù)字?jǐn)?shù)據(jù)進(jìn)行聚類,即使我們不確定要查找什么,也可以找到分組。
潛在狄利克雷分配(LDA)是擬合主題模型特別流行的方法。它將每個(gè)文檔視為主題的混合體,并將每個(gè)主題看作是單詞的混合體。這允許文檔在內(nèi)容方面相互“重疊”,而不是分離成離散的組,以反映自然語言的典型用法。

結(jié)合主題建模的文本分析流程圖。topicmodels包采用Document-Term Matrix作為輸入,并生成一個(gè)可以通過tidytext進(jìn)行處理的模型,以便可以使用dplyr和ggplot2對(duì)其進(jìn)行處理和可視化。
?潛在狄利克雷分配
潛在Dirichlet分配是主題建模中最常用的算法之一。沒有深入模型背后的數(shù)學(xué),我們可以理解它是由兩個(gè)原則指導(dǎo)的。
每個(gè)文檔都是主題的混合體。我們?cè)O(shè)想每個(gè)文檔可能包含來自幾個(gè)主題的文字,并有一定的比例。例如,在雙主題模型中,我們可以說“文檔1是90%的主題A和10%的主題B,而文檔2是30%的主題A和70%的主題B.”
每個(gè)主題都是詞匯的混合。例如,我們可以想象一個(gè)新聞的兩個(gè)主題模型,一個(gè)話題是“體育”,一個(gè)是“娛樂”。體育話題中最常見的詞語可能是“籃球”,“足球”和“游泳“,而娛樂主題可以由諸如”電影“,”電視“和”演員“之類的詞組成。重要的是,話題可以在話題之間共享;?像“奧運(yùn)冠軍”這樣的詞可能同時(shí)出現(xiàn)在兩者中。
LDA是一種同時(shí)估計(jì)這兩種情況的數(shù)學(xué)方法:查找與每個(gè)主題相關(guān)的單詞集合,同時(shí)確定描述每個(gè)文檔的主題分組。這個(gè)算法有很多現(xiàn)有的實(shí)現(xiàn),我們將深入探討其中的一個(gè)。
library(topicmodels)data("AssociatedPress")AssociatedPress? : term frequency (tf)
我們可以使用LDA()topicmodels包中的函數(shù)設(shè)置k = 2來創(chuàng)建兩個(gè)主題的LDA模型。
實(shí)際上幾乎所有的主題模型都會(huì)使用更大的模型k,但我們很快就會(huì)看到,這種分析方法可以擴(kuò)展到更多的主題。
此函數(shù)返回一個(gè)包含模型擬合完整細(xì)節(jié)的對(duì)象,例如單詞如何與主題關(guān)聯(lián)以及主題如何與文檔關(guān)聯(lián)。
# # 設(shè)置隨機(jī)種子,使模型的輸出是可重復(fù)的ap_lda <- LDA(AssociatedPress,k =2,control =list(seed =1234))ap_lda
?
擬合模型是“簡(jiǎn)單部分”:分析的其余部分將涉及使用tidytext軟件包中的函數(shù)來探索和解釋模型。
單詞主題概率
tidytext包提供了這種方法來提取每個(gè)主題的每個(gè)詞的概率,稱為β。
## # 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
?
?


每個(gè)主題中最常見的詞
這種可視化讓我們了解從文章中提取的兩個(gè)主題。話題1中最常見的詞語包括“百分比”,“百萬”,“十億”和“公司”,這表明它可能代表商業(yè)或財(cái)務(wù)新聞。話題2中最常見的包括“總統(tǒng)”,“政府”,表示這個(gè)話題代表政治新聞。關(guān)于每個(gè)主題中的單詞的一個(gè)重要觀察是,在這兩個(gè)主題中,諸如“新”和“人”等一些詞語是常見的。與“硬聚類”方法相反,這是話題建模的優(yōu)勢(shì):自然語言中使用的話題可能存在一些重疊。
我們可以認(rèn)為最大的區(qū)別是兩個(gè)主題之間β差異最大的詞。
## # 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
?
圖顯示了這兩個(gè)主題之間差異最大的詞。


我們可以看到,話題2中更常見的詞包括“民主”和“共和黨”等政黨等政治家的名字。主題1的特點(diǎn)是“日元”和“美元”等貨幣以及“指數(shù)”,“價(jià)格”和“利率”等金融術(shù)語。這有助于確認(rèn)算法確定的兩個(gè)主題是政治和財(cái)務(wù)新聞。
文檔 - 主題概率
除了將每個(gè)主題評(píng)估為單詞集合之外,LDA還將每個(gè)文檔建模為混合主題。我們可以檢查每個(gè)文檔的每個(gè)主題概率,稱為γ(“伽瑪”) 。
## # A tibble: 4,492 x 3## ? ?document topic ? ?gamma## ? ? ? <int> <int> ? ?<dbl>## ?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
?
這些值中的每一個(gè)都是該文檔中從該主題生成的單詞的估計(jì)比例。例如,該模型估計(jì)文檔1中單詞的大約24.8%是從主題1生成的。
我們可以看到,這些文檔中的許多文檔都是從兩個(gè)主題中抽取出來的,但文檔6幾乎完全是從主題2中得出的,其中有一個(gè)主題1γ接近零。為了檢查這個(gè)答案,我們可以檢查該文檔中最常見的詞。
#> # A tibble: 287 x 3#> ? ?document term ? ? ? ? ? count#> ? ? ? <int> <chr> ? ? ? ? ?<dbl>#> ?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
?
根據(jù)最常見的詞匯,可以看出該算法將其分組到主題2(作為政治/國(guó)家新聞)是正確的。
?

最受歡迎的見解
1.探析大數(shù)據(jù)期刊文章研究熱點(diǎn)
2.618網(wǎng)購(gòu)數(shù)據(jù)盤點(diǎn)-剁手族在關(guān)注什么
3.r語言文本挖掘tf-idf主題建模,情感分析n-gram建模研究
4.python主題建模可視化lda和t-sne交互式可視化
5.r語言文本挖掘nasa數(shù)據(jù)網(wǎng)絡(luò)分析,tf-idf和主題建模
6.python主題lda建模和t-sne可視化
7.r語言中對(duì)文本數(shù)據(jù)進(jìn)行主題模型topic-modeling分析
8.r語言對(duì)nasa元數(shù)據(jù)進(jìn)行文本挖掘的主題建模分析
9.python爬蟲進(jìn)行web抓取lda主題語義數(shù)據(jù)分析