??
夏琦,達觀數(shù)據(jù)NLP組實習生,就讀于東南大學和 Monash University,自然語言處理方向二年級研究生,師從知識圖譜專家漆桂林教授。曾獲第五屆“藍橋杯”江蘇省一等獎、國家二等獎。
本篇博文將詳細講解LDA主題模型,從最底層數(shù)學推導的角度來詳細講解,只想了解LDA的讀者,可以只看第一小節(jié)簡介即可。PLSA和LDA非常相似,PLSA也是主題模型方面非常重要的一個模型,本篇也會有的放矢的講解此模型。如果讀者閱讀起來比較吃力,可以定義一個菲波那切數(shù)列,第 f(n) = f(n-1) + f(n-2) 天再閱讀一次,直到這個知識點收斂。如果讀者發(fā)現(xiàn)文章中的錯誤或者有改進之處,歡迎交流。
1.簡介
在機器學習領(lǐng)域,LDA是兩個常用模型的簡稱:Linear Discriminant Analysis 和 Latent Dirichlet Allocation。本文的LDA僅指代Latent Dirichlet Allocation.?LDA 在主題模型中占有非常重要的地位,常用來文本分類。
LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用來推測文檔的主題分布。它可以將文檔集中每篇文檔的主題以概率分布的形式給出,從而通過分析一些文檔抽取出它們的主題分布后,便可以根據(jù)主題分布進行主題聚類或文本分類。
2.先驗知識
LDA 模型涉及很多數(shù)學知識,這也許是LDA晦澀難懂的主要原因。這一部分主要介紹LDA中涉及的數(shù)學知識。數(shù)學功底比較好的讀者可以直接跳過本小節(jié)。
LDA涉及到的先驗知識有:二項分布、Gamma函數(shù)、Beta分布、多項分布、Dirichlet分布、馬爾科夫鏈、MCMC、Gibbs Sampling、EM算法等。限于篇幅,本文僅會有的放矢的介紹部分概念,不會每個概念都仔細介紹,亦不會涉及到每個概念的數(shù)學公式推導。如果每個概念都詳細介紹,估計都可以寫一本百頁的書了。如果你對LDA的理解能達到如數(shù)家珍、信手拈來的程度,那么恭喜你已經(jīng)掌握了從事機器學習方面的扎實數(shù)學基礎(chǔ)。想進一步了解底層的數(shù)學公式推導過程,可以參考《數(shù)學全書》等資料。
2.1
詞袋模型
LDA 采用詞袋模型。所謂詞袋模型,是將一篇文檔,我們僅考慮一個詞匯是否出現(xiàn),而不考慮其出現(xiàn)的順序。在詞袋模型中,“我喜歡你”和“你喜歡我”是等價的。與詞袋模型相反的一個模型是n-gram,n-gram考慮了詞匯出現(xiàn)的先后順序。有興趣的讀者可以參考其他書籍。
2.2
二項分布
二項分布是N重伯努利分布,即為X ~ B(n, p). 概率密度公式為:?
2.3
多項分布
多項分布,是二項分布擴展到多維的情況. 多項分布是指單次試驗中的隨機變量的取值不再是0-1的,而是有多種離散值可能(1,2,3…,k).概率密度函數(shù)為:
2.4
Gamma函數(shù)
Gamma函數(shù)的定義:
分部積分后,可以發(fā)現(xiàn)Gamma函數(shù)如有這樣的性質(zhì):
Gamma函數(shù)可以看成是階乘在實數(shù)集上的延拓,具有如下性質(zhì):
2.5
Beta分布
Beta分布的定義:對于參數(shù),取值范圍為[0, 1]的隨機變量x的概率密度函數(shù)為:
其中,
2.6
共軛先驗發(fā)布
在貝葉斯概率理論中,如果后驗概率和先驗概率
滿足同樣的分布律,那么,先驗分布和后驗分布被叫做共軛分布,同時,先驗分布叫做似然函數(shù)的共軛先驗分布。
Beta分布是二項式分布的共軛先驗分布,而狄利克雷(Dirichlet)分布是多項式分布的共軛分布。
共軛的意思是,以Beta分布和二項式分布為例,數(shù)據(jù)符合二項分布的時候,參數(shù)的先驗分布和后驗分布都能保持Beta分布的形式,這種形式不變的好處是,我們能夠在先驗分布中賦予參數(shù)很明確的物理意義,這個物理意義可以延續(xù)到后續(xù)分布中進行解釋,同時從先驗變換到后驗過程中從數(shù)據(jù)中補充的知識也容易有物理解釋。
2.7
Dirichlet分布
Dirichlet的概率密度函數(shù)為:
其中,
根據(jù)Beta分布、二項分布、Dirichlet分布、多項式分布的公式,我們可以驗證上一小節(jié)中的結(jié)論 – Beta分布是二項式分布的共軛先驗分布,而狄利克雷(Dirichlet)分布是多項式分布的共軛分布。
2.8
Beta/Dirichlet分布的一個性質(zhì)
如果?,則
上式右邊的積分對應(yīng)到概率分布,對于這個分布,有
把上式帶入E(p)的計算式,得到
這說明,對于Beta分布的隨機變量,其均值可以來估計。Dirichlet分布也有類似的結(jié)論,如果,同樣可以證明:
這兩個結(jié)論非常重要,后面的LDA數(shù)學推導過程會使用這個結(jié)論。
2.9
MCMC和Gibbs Sampling
在現(xiàn)實應(yīng)用中,我們很多時候很難精確求出精確的概率分布,常常采用近似推斷方法。近似推斷方法大致可分為兩大類:第一類是采樣(Sampling), 通過使用隨機化方法完成近似;第二類是使用確定性近似完成近似推斷,典型代表為變分推斷(variational inference)。
在很多任務(wù)中,我們關(guān)心某些概率分布并非因為對這些概率分布本身感興趣,而是要基于他們計算某些期望,并且還可能進一步基于這些期望做出決策。采樣法正式基于這個思路。具體來說,假定我們的目標是計算函數(shù)f(x)在概率密度函數(shù)p(x)下的期望
則可根據(jù)p(x)抽取一組樣本,然后計算f(x)在這些樣本上的均值
以此來近似目標期望E[f]。若樣本獨立,基于大數(shù)定律,這種通過大量采樣的辦法就能獲得較高的近似精度。可是,問題的關(guān)鍵是如何采樣?對概率圖模型來說,就是如何高效地基于圖模型所描述的概率分布來獲取樣本。概率圖模型中最常用的采樣技術(shù)是馬爾可夫鏈臉蒙特卡羅(Markov chain Monte Carlo, MCMC)。給定連續(xù)變量
的概率密度函數(shù)p(x), x在區(qū)間A中的概率可計算為
若有函數(shù),則可計算f(x)的期望
若x不是單變量而是一個高維多元變量x, 且服從一個非常復雜的分布,則對上式求積分通常很困難。為此,MCMC先構(gòu)造出服從p分布的獨立同分布隨機變量再得到上式的無偏估計
然而,若概率密度函數(shù)p(x)很復雜,則構(gòu)造服從p分布的獨立同分布樣本也很困難。MCMC方法的關(guān)鍵在于通過構(gòu)造“平穩(wěn)分布為p的馬爾可夫鏈”來產(chǎn)生樣本:若馬爾科夫鏈運行時間足夠長,即收斂到平穩(wěn)狀態(tài),則此時產(chǎn)出的樣本X近似服從分布p.如何判斷馬爾科夫鏈到達平穩(wěn)狀態(tài)呢?假定平穩(wěn)馬爾科夫鏈T的狀態(tài)轉(zhuǎn)移概率(即從狀態(tài)X轉(zhuǎn)移到狀態(tài)的概率)為
,t時刻狀態(tài)的分布為p(x^t), 則若在某個時刻馬爾科夫鏈滿足平穩(wěn)條件
?
則p(x是馬爾科夫鏈的平穩(wěn)分布,且馬爾科夫鏈在滿足該條件時已收斂到平穩(wěn)條件。也就是說,MCMC方法先設(shè)法構(gòu)造一條馬爾科夫鏈,使其收斂至平穩(wěn)分布恰為待估計參數(shù)的后驗分布,然后通過這條馬爾科夫鏈來產(chǎn)生符合后驗分布的樣本,并基于這些樣本來進行估計。這里馬爾科夫鏈轉(zhuǎn)移概率的構(gòu)造至關(guān)重要,不同的構(gòu)造方法將產(chǎn)生不同的MCMC算法。?
Metropolis-Hastings(簡稱MH)算法是MCMC的重要代表。它基于“拒絕采樣”(reject sampling)來逼近平穩(wěn)分布p。算法如下:
- 輸入:先驗概率
- 過程:
- 1. 初始化x^0;
- 2. for t = 1, 2, … do
- 3. 根據(jù)
采樣出候選樣本
- 4. 根據(jù)均勻分布從(0, 1)范圍內(nèi)采樣出閾值u;
- 5. if?
- 6.?
- 7. else
- 8.
- 9. end if
- 10. enf for
- 11. return?
- 輸出:采樣出的一個樣本序列
于是, 為了達到平穩(wěn)狀態(tài),只需將接受率設(shè)置為
吉布斯采樣(Gibbs sampling)有時被視為MH算法的特例,它也使用馬爾科夫鏈讀取樣本,而該馬爾科夫鏈的平穩(wěn)分布也是采用采樣的目標分布p(x).具體來說,假定,目標分布為p(x), 在初始化x的取值后,通過循環(huán)執(zhí)行以下步驟來完成采樣:
- 1. 隨機或以某個次序選取某變量
;
- 2. 根據(jù)x中除
外的變量的現(xiàn)有取值,計算條件概率
,其中
;
- 3. 根據(jù)
對變量
采樣,用采樣值代替原值。
3.文本建模
一篇文檔,可以看成是一組有序的詞的序列,從統(tǒng)計學角度來看,文檔的生成可以看成是上帝拋擲骰子生成的結(jié)果,每一次拋擲骰子都生成一個詞匯,拋擲N詞生成一篇文檔。在統(tǒng)計文本建模中,我們希望猜測出上帝是如何玩這個游戲的,這會涉及到兩個最核心的問題:
-
上帝都有什么樣的骰子;
- 上帝是如何拋擲這些骰子的;
?
第一個問題就是表示模型中都有哪些參數(shù),骰子的每一個面的概率都對應(yīng)于模型中的參數(shù);第二個問題就表示游戲規(guī)則是什么,上帝可能有各種不同類型的骰子,上帝可以按照一定的規(guī)則拋擲這些骰子從而產(chǎn)生詞序列。
3.1
Unigram Model
在Unigram Model中,我們采用詞袋模型,假設(shè)了文檔之間相互獨立,文檔中的詞匯之間相互獨立。假設(shè)我們的詞典中一共有 V 個詞,那么最簡單的 Unigram Model 就是認為上帝是按照如下的游戲規(guī)則產(chǎn)生文本的。
- 1. 上帝只有一個骰子,這個骰子有V面,每個面對應(yīng)一個詞,各個面的概率不一;
- 2. 每拋擲一次骰子,拋出的面就對應(yīng)的產(chǎn)生一個詞;如果一篇文檔中N個詞,就獨立的拋擲n次骰子產(chǎn)生n個詞;
?
3.1.1 頻率派視角
?
對于一個骰子,記各個面的概率為,每生成一個詞匯都可以看做一次多項式分布,記為
。一篇文檔
,其生成概率是
文檔之間,我們認為是獨立的,對于一個語料庫,其概率為:
。
假設(shè)語料中總的詞頻是N,記每個詞的頻率為
,那么
,
服從多項式分布
整個語料庫的概率為
此時,我們需要估計模型中的參數(shù),也就是詞匯骰子中每個面的概率是多大,按照頻率派的觀點,使用極大似然估計最大化p(W), 于是參數(shù)
的估計值為
3.1.2 貝葉斯派視角
對于以上模型,貝葉斯統(tǒng)計學派的統(tǒng)計學家會有不同意見,他們會很挑剔的批評只假設(shè)上帝擁有唯一一個固定的骰子是不合理的。在貝葉斯學派看來,一切參數(shù)都是隨機變量,以上模型中的骰子不是唯一固定的,它也是一個隨機變量。所以按照貝葉斯學派的觀點,上帝是按照以下的過程在玩游戲的:
?
- 1. 現(xiàn)有一個裝有無窮多個骰子的壇子,里面裝有各式各樣的骰子,每個骰子有V個面;
- 2. 現(xiàn)從壇子中抽取一個骰子出來,然后使用這個骰子不斷拋擲,直到產(chǎn)生語料庫中的所有詞匯
壇子中的骰子無限多,有些類型的骰子數(shù)量多,有些少。從概率分布角度看,壇子里面的骰子服從一個概率分布
,這個分布稱為參數(shù)
的先驗分布。在此視角下,我們并不知道到底用了哪個骰子
,每個骰子都可能被使用,其概率由先驗分布
來決定。對每個具體的骰子,由該骰子產(chǎn)生語料庫的概率為
,故產(chǎn)生語料庫的概率就是對每一個骰子
上產(chǎn)生語料庫進行積分求和
先驗概率有很多選擇,但我們注意到。我們知道多項式分布和狄利克雷分布是共軛分布,因此一個比較好的選擇是采用狄利克雷分布
此處,就是歸一化因子
,即
由多項式分布和狄利克雷分布是共軛分布,可得:
此時,我們?nèi)绾喂烙媴?shù)呢?根據(jù)上式,我們已經(jīng)知道了其后驗分布,所以合理的方式是使用后驗分布的極大值點,或者是參數(shù)在后驗分布下的平均值。這里,我們?nèi)∑骄底鳛閰?shù)的估計值。根據(jù)第二小節(jié)Dirichlet分布中的內(nèi)容,可以得到:
對于每一個,我們使用下面的式子進行估計
在 Dirichlet 分布中的物理意義是事件的先驗的偽計數(shù),上式表達的是:每個參數(shù)的估計值是其對應(yīng)事件的先驗的偽計數(shù)和數(shù)據(jù)中的計數(shù)的和在整體計數(shù)中的比例。由此,我們可以計算出產(chǎn)生語料庫的概率為:
3.2
PLSA模型
Unigram Model模型中,沒有考慮主題詞這個概念。我們?nèi)藢懳恼聲r,寫的文章都是關(guān)于某一個主題的,不是滿天胡亂的寫,比如一個財經(jīng)記者寫一篇報道,那么這篇文章大部分都是關(guān)于財經(jīng)主題的,當然,也有很少一部分詞匯會涉及到其他主題。所以,PLSA認為生成一篇文檔的生成過程如下:
- 1. 現(xiàn)有兩種類型的骰子,一種是doc-topic骰子,每個doc-topic骰子有K個面,每個面一個topic的編號;一種是topic-word骰子,每個topic-word骰子有V個面,每個面對應(yīng)一個詞;
- 2. 現(xiàn)有K個topic-word骰子,每個骰子有一個編號,編號從1到K;
- 3. 生成每篇文檔之前,先為這篇文章制造一個特定的doc-topic骰子,重復如下過程生成文檔中的詞:3.1 投擲這個doc-topic骰子,得到一個topic編號z;3.2 選擇K個topic-word骰子中編號為z的那個,投擲這個骰子,得到一個詞;
PLSA中,也是采用詞袋模型,文檔和文檔之間是獨立可交換的,同一個文檔內(nèi)的詞也是獨立可交換的。K 個topic-word 骰子,記為;對于包含M篇文檔的語料
中的每篇文檔
,都會有一個特定的doc-topic骰子
,所有對應(yīng)的骰子記為
,為了方便,我們假設(shè)每個詞
都有一個編號,對應(yīng)到topic-word 骰子的面。于是在 PLSA 這個模型中,第m篇文檔
中的每個詞的生成概率為
?
?
一篇文檔的生成概率為:
由于文檔之間相互獨立,很容易寫出整個語料的生成概率。求解PLSA 可以使用著名的 EM 算法進行求得局部最優(yōu)解,有興趣的讀者參考 Hoffman 的原始論文,或者李航的《統(tǒng)計學習方法》,此處略去不講。
3.3
LDA模型
?
3.3.1 PLSA 和 LDA 的區(qū)別
?
首先,我們來看看PLSA和LDA生成文檔的方式。在PLSA中,生成文檔的方式如下:
-
1.?按照先驗概率
選擇一篇文檔
-
2.從Dirichlet分布
中取樣生成文檔
的主題分布
,主題分布
由超參數(shù)為
的Dirichlet分布生成
-
3.從主題的多項式分布
中取樣生成文檔
第 j 個詞的主題
-
4.從Dirichlet分布
中取樣生成主題
對應(yīng)的詞語分布
,詞語分布
由參數(shù)為
的Dirichlet分布生成
- 5.從詞語的多項式分布
中采樣最終生成詞語
可以看出,LDA 在 PLSA 的基礎(chǔ)上,為主題分布和詞分布分別加了兩個 Dirichlet 先驗。
我們來看一個例子,如圖所示:
上圖中有三個主題,在PLSA中,我們會以固定的概率來抽取一個主題詞,比如0.5的概率抽取教育這個主題詞,然后根據(jù)抽取出來的主題詞,找其對應(yīng)的詞分布,再根據(jù)詞分布,抽取一個詞匯。由此,可以看出PLSA中,主題分布和詞分布都是唯一確定的。但是,在LDA中,主題分布和詞分布是不確定的,LDA的作者們采用的是貝葉斯派的思想,認為它們應(yīng)該服從一個分布,主題分布和詞分布都是多項式分布,因為多項式分布和狄利克雷分布是共軛結(jié)構(gòu),在LDA中主題分布和詞分布使用了Dirichlet分布作為它們的共軛先驗分布。所以,也就有了一句廣為流傳的話 – LDA 就是 PLSA 的貝葉斯化版本。下面兩張圖片很好的體現(xiàn)了兩者的區(qū)別:
?
在PLSA和LDA的兩篇論文中,使用了下面的圖片來解釋模型,它們也很好的對比了PLSA和LDA的不同之處。
3.3.2 LDA 解析一
?
現(xiàn)在我們來詳細講解論文中的LDA模型,即上圖。
,這個過程表示在生成第m篇文檔的時候,先從抽取了一個doc-topic骰子
,然后投擲這個骰子生成了文檔中第n個詞的topic編號
;
,這個過程表示,從K個topic-word骰子
中,挑選編號為
的骰子進行投擲,然后生成詞匯
;
在LDA中,也是采用詞袋模型,M篇文檔會對應(yīng)M個獨立Dirichlet-Multinomial共軛結(jié)構(gòu);K個topic會對應(yīng)K個獨立的Dirichlet-Multinomial共軛結(jié)構(gòu)。
?
3.3.3 LDA 解析二
?
上面的LDA的處理過程是一篇文檔一篇文檔的過程來處理,并不是實際的處理過程。文檔中每個詞的生成都要拋兩次骰子,第一次拋一個doc-topic骰子得到 topic, 第二次拋一個topic-word骰子得到 word,每次生成每篇文檔中的一個詞的時候這兩次拋骰子的動作是緊鄰輪換進行的。如果語料中一共有 N 個詞,則上帝一共要拋 2N次骰子,輪換的拋doc-topic骰子和 topic-word骰子。但實際上有一些拋骰子的順序是可以交換的,我們可以等價的調(diào)整2N次拋骰子的次序:前N次只拋doc-topic骰子得到語料中所有詞的 topics,然后基于得到的每個詞的 topic 編號,后N次只拋topic-word骰子生成 N 個word。此時,可以得到:
3.3.4 使用Gibbs Sampling進行采樣
?
根據(jù)上一小節(jié)中的聯(lián)合概率分布,我們可以使用Gibbs Sampling對其進行采樣。
?
根據(jù)上一小節(jié)中的聯(lián)合概率分布,我們可以使用Gibbs Sampling對其進行采樣。
語料庫?中的第i個詞我們記為
,其中i=(m,n)是一個二維下標,對應(yīng)于第m篇文檔的第n個詞,用?i?表示去除下標為i的詞。根據(jù)第二小節(jié)中的Gibbs Sampling 算法,我們需要求任一個坐標軸 i 對應(yīng)的條件分布
。假設(shè)已經(jīng)觀測到的詞?
,則由貝葉斯法則,我們?nèi)菀椎玫?
由于只涉及到第 m 篇文檔和第k個 topic,所以上式的條件概率計算中, 實際上也只會涉及到與之相關(guān)的兩個Dirichlet-Multinomial 共軛結(jié)構(gòu),其它的 M+K?2 個 Dirichlet-Multinomial 共軛結(jié)構(gòu)和
是獨立的。去掉一個詞匯,并不會改變M + K 個Dirichlet-Multinomial共軛結(jié)構(gòu),只是某些地方的計數(shù)減少而已。于是有:
?
?
下面進行本篇文章最終的核心數(shù)學公式推導:
?
?
最終得到的就是對應(yīng)的兩個 Dirichlet 后驗分布在貝葉斯框架下的參數(shù)估計。借助于前面介紹的Dirichlet 參數(shù)估計的公式 ,有:
最終,我們得到LDA 模型的 Gibbs Sampling 公式為:?
3.3.5 LDA Training
?
根據(jù)上一小節(jié)中的公式,我們的目標有兩個:
- 1. 估計模型中的參數(shù)
和
;
- 2.對于新來的一篇文檔,我們能夠計算這篇文檔的 topic 分布
。
訓練的過程:
- 1. 對語料庫中的每篇文檔中的每個詞匯
,隨機的賦予一個topic編號z
- 2. 重新掃描語料庫,對每個詞
,使用Gibbs Sampling公式對其采樣,求出它的topic,在語料中更新
- 3. 重復步驟2,直到Gibbs Sampling收斂
- 4. 統(tǒng)計語料庫的topic-word共現(xiàn)頻率矩陣,該矩陣就是LDA的模型;
?
根據(jù)這個topic-word頻率矩陣,我們可以計算每一個概率,從而算出模型參數(shù)
,這就是那 K 個 topic-word 骰子。而語料庫中的文檔對應(yīng)的骰子參數(shù)
在以上訓練過程中也是可以計算出來的,只要在 Gibbs Sampling 收斂之后,統(tǒng)計每篇文檔中的 topic 的頻率分布,我們就可以計算每一個
概率,于是就可以計算出每一個
。由于參數(shù)
是和訓練語料中的每篇文檔相關(guān)的,對于我們理解新的文檔并無用處,所以工程上最終存儲 LDA 模型時候一般沒有必要保留。通常,在 LDA 模型訓練的過程中,我們是取 Gibbs Sampling 收斂之后的 n 個迭代的結(jié)果進行平均來做參數(shù)估計,這樣模型質(zhì)量更高。
?
3.3.6 LDA Inference
?
有了 LDA 的模型,對于新來的文檔 doc, 我們只要認為 Gibbs Sampling 公式中的部分是穩(wěn)定不變的,是由訓練語料得到的模型提供的,所以采樣過程中我們只要估計該文檔的 topic 分布
就好了。具體算法如下:
- 1. 對當前文檔中的每個單詞
隨機初始化一個topic編號z;
- 2. 使用Gibbs Sampling公式,對每個詞
重新采樣其topic;
- 3. 重復以上過程,知道Gibbs Sampling收斂;
- 4. 統(tǒng)計文檔中的topic分布,該分布就是
4.Tips?
懂 LDA 的面試官通常會詢問求職者,LDA 中主題數(shù)目如何確定?
在 LDA 中,主題的數(shù)目沒有一個固定的最優(yōu)解。模型訓練時,需要事先設(shè)置主題數(shù),訓練人員需要根據(jù)訓練出來的結(jié)果,手動調(diào)參,優(yōu)化主題數(shù)目,進而優(yōu)化文本分類結(jié)果。
LDA 在提出后,之后產(chǎn)生了很多基于 LDA 的改進模型,基本都是概率圖模型加 LDA 的組合方式。但 LDA 也有缺點,LDA對短文本的效果不好,而且計算量比較大,訓練時間比較長。
5.后記
LDA 有非常廣泛的應(yīng)用,深層次的懂 LDA 對模型的調(diào)優(yōu),乃至提出新的模型以及AI技能的進階有巨大幫助。只是了解 LDA 能用來干什么,只能忽悠小白。
百度開源了其 LDA 模型,有興趣的讀者可以閱讀:https://github.com/baidu/Familia/wiki
References
[1]: Blei, D. M., Ng, A. Y., & Jordan, M. I. (2003). Latent dirichlet allocation. Journal of machine Learning research, 3(Jan), 993-1022.
[2]: Hofmann, T. (1999). Probabilistic latent semantic indexing. In Proceedings of the 22nd annual international ACM SIGIR conference on Research and development in information retrieval (pp. 50-57). ACM.
[3]: Li, F., Huang, M., & Zhu, X. (2010). Sentiment Analysis with Global Topics and Local Dependency. In AAAI (Vol. 10, pp. 1371-1376).
[4]: Medhat, W., Hassan, A., & Korashy, H. (2014). Sentiment analysis algorithms and applications: A survey. Ain Shams Engineering Journal, 5(4), 1093-1113.
[5]: Rick, Jin. (2014). Retrieved from?http://www.flickering.cn/數(shù)學之美/2014/06/【lda數(shù)學八卦】神奇的gamma函數(shù)/.
[6]: 通俗理解LDA主題模型. (2014). Retrieved from?http://blog.csdn.net/v_july_v/article/details/41209515.
[7]: 志華, 周. (2017). 機器學習. 北京, 北京: 清華大學出版社.
[8]: Goodfellow, I., Bengio, Y., & Courville, A. (2017). Deep learning. Cambridge, MA: The MIT Press.
[9]: 航, 李. (2016). 統(tǒng)計學習方法. 北京, 北京: 清華大學出版社.