python做什么模型_主题模型初学者指南[Python]
引言
近年來涌現(xiàn)出越來越多的非結(jié)構(gòu)化數(shù)據(jù),我們很難直接利用傳統(tǒng)的分析方法從這些數(shù)據(jù)中獲得信息。但是新技術(shù)的出現(xiàn)使得我們可以從這些輕易地解析非結(jié)構(gòu)化數(shù)據(jù),并提取出重要信息。
主題模型是處理非結(jié)構(gòu)化數(shù)據(jù)的一種常用方法,從名字中就可以看出,該模型的主要功能就是從文本數(shù)據(jù)中提取潛在的主題信息。主題模型不同于其他的基于規(guī)則或字典的搜索方法,它是一種無監(jiān)督學(xué)習的方法。
主題可以由語料庫中的共現(xiàn)詞項所定義,一個好的主題模型的擬合結(jié)果應(yīng)該如下所示——“health”、“doctor”、“patient”、“hospital”構(gòu)成醫(yī)療保健主題,而“farm”、“crops”、“wheat”則構(gòu)成農(nóng)業(yè)主題。
主題模型的適用領(lǐng)域有:文檔聚類、信息提取和特征選擇。比如,紐約時報利用主題模型的結(jié)果來提升文章推薦引擎的功能。許多專家將主題模型應(yīng)用到招聘領(lǐng)域中,利用主題模型來提取工作要求中的潛在信息,并用模型的擬合結(jié)果來匹配候選人。此外,主題模型還被用于處理大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù),如郵件、顧客評論和用戶社交數(shù)據(jù)。
如果你不熟悉主題模型的話,那么本文將告訴你主題模型的原理以及如何利用Python來構(gòu)建主題模型。
目錄LDA(Latent Dirichlet Allocation) 模型LDA 模型的參數(shù)
Python 實現(xiàn)過程數(shù)據(jù)準備
數(shù)據(jù)清洗與預(yù)處理
計算文檔詞頻矩陣
構(gòu)建 LDA 模型
擬合結(jié)果
建議頻數(shù)過濾法
標記過濾法
Batch Wise LDA
特征選擇
LDA 模型
我們可以用多種方法來處理文本數(shù)據(jù),比如 TF 和 IDF 方法。LDA模型是最流行的主題模型,我們接下來將詳細介紹 LDA 模型。
LDA 模型假設(shè)文檔是由一系列主題構(gòu)成的,然后再從這些主題中依據(jù)相應(yīng)的概率分布生成詞語。給定一個文檔數(shù)據(jù)集,LDA 模型主要用于識別文檔中的主題分布情況。
LDA 模型是一種矩陣分解技術(shù),在向量空間模型中,任何語料都能被表示成一個文檔詞頻矩陣。如下所示,矩陣中包含 N 篇文檔,M 個詞語,矩陣中的數(shù)值表示詞語在文檔中出現(xiàn)的頻率。
LDA 模型將上述的文檔詞頻矩陣轉(zhuǎn)換成兩個低維的矩陣—— M1 和 M2。其中 M1 表示文檔主題矩陣,M2 表示主題詞語矩陣,它們的維度分別是 N*K 和 K*M,K 表示文檔中主題的個數(shù),M 表示詞語的數(shù)量。
需要注意的是,上述兩個矩陣提供了文檔主題和主題詞語的初始分布情況,LDA 模型通過抽樣的方法來更新這兩個矩陣。該模型通過更新文檔中每個詞語的主題歸屬情況來調(diào)整模型的參數(shù)值 p1 和 p2,其中 $p1 = p(\frac{topict}{documentd})$,$p2 = p(\frac{wordw}{topict})$。經(jīng)過一系列的迭代計算后,LDA 模型達到收斂狀態(tài),此時我們即可得到一組最佳參數(shù)值。
LDA 模型的參數(shù)
超參數(shù) alpha 和 beta —— alpha 表示文檔—主題密度,beta 則表示主題—詞語密度,其中 alpha 值越大表示文檔中包含更多的主題,而更大的 beta 值則表示主題中包含更多的詞語。
主題中的詞數(shù)——這個參數(shù)取決于你的真實需求,如果你的目標是提取主題信息,那么你最好選擇較多的詞語。如果你的目標是提取特征,那么你應(yīng)該選擇較少的詞項。
迭代次數(shù)—— LDA 算法的迭代次數(shù)
Python 實現(xiàn)
數(shù)據(jù)準備
以下是一些示例數(shù)據(jù):
數(shù)據(jù)清洗與預(yù)處理
數(shù)據(jù)清洗是文本建模分析過程中的一個重要環(huán)節(jié),在這個過程中我們將移除標點符號、停止詞并規(guī)整數(shù)據(jù)集:
計算文檔詞頻矩陣
構(gòu)建 LDA 模型
擬合結(jié)果
建議
主題模型的擬合結(jié)果完全取決于語料庫中的特征項,而語料是由一個稀疏的文檔詞頻矩陣所構(gòu)成的。降低該矩陣的維度可以提升主題模型的擬合結(jié)果,根據(jù)我的個人經(jīng)驗,主要有以下幾個降維方法:
頻數(shù)過濾法
我們可以按照詞語的頻數(shù)進行排序,然后保留頻數(shù)較高的詞語并將頻數(shù)較低的詞語剔除掉。此外我們還可以借助探索性分析的方法來決定如何設(shè)置閾值。
標記過濾法
通常情況下,標記過濾法的效果優(yōu)于頻數(shù)過濾法。主題模型通過詞語的共現(xiàn)情況來反映主題信息,然而在每個主題中并不是所有的詞語都是同等重要的。我們可以將這些無關(guān)緊要的詞語剔除掉,提升模型的擬合效果。
Batch Wise LDA
為了提取出文檔中最重要的主題信息,我們可以將語料庫分割成一系列固定大小的子集。然后我們可以對每個子集數(shù)據(jù)構(gòu)建多個 LDA 模型,出現(xiàn)次數(shù)最多的主題就是該文檔中最重要的主題信息。
特征選擇
有些時候,我們還可以利用 LDA 模型來選擇特征。以文本分類問題為例,如果訓(xùn)練集中包含多個類別的文檔,我們可以首先構(gòu)建 LDA 模型,然后剔除掉不同類別文檔中共同出現(xiàn)的主題信息,剩余的特征即為有助于提升文本分類模型的準確率。
結(jié)語
到此為止,我們已經(jīng)介紹完主題模型了,我希望本文能夠幫你了解如何處理文本數(shù)據(jù)。如果你想加深對主題模型的理解,那么我建議你最好親自練習下本文的代碼并檢查模型的擬合結(jié)果。
如果你覺得本文對你有幫助的話,你可以將此文分享給你的朋友。
***
原文作者:Shivam Bansal
譯者:Fibears
總結(jié)
以上是生活随笔為你收集整理的python做什么模型_主题模型初学者指南[Python]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝手机号被占用怎么办
- 下一篇: python三角函数拟合_使用pytho