主題模型初學者指南 Python

2021-08-15 09:51:14 字數 2822 閱讀 1839

近年來湧現出越來越多的非結構化資料,我們很難直接利用傳統的分析方法從這些資料中獲得資訊。但是新技術的出現使得我們可以從這些輕易地解析非結構化資料,並提取出重要資訊。

主題模型是處理非結構化資料的一種常用方法,從名字中就可以看出,該模型的主要功能就是從文字資料中提取潛在的主題資訊。主題模型不同於其他的基於規則或字典的搜尋方法,它是一種無監督學習的方法。

主題可以由語料庫中的共現詞項所定義,乙個好的主題模型的擬合結果應該如下所示——「health」、「doctor」、「patient」、「hospital」構成醫療保健主題,而「farm」、「crops」、「wheat」則構成農業主題。

如果你不熟悉主題模型的話,那麼本文將告訴你主題模型的原理以及如何利用python來構建主題模型。

python 實現過程

建議

特徵選擇

我們可以用多種方法來處理文字資料,比如 tf 和 idf 方法。lda模型是最流行的主題模型,我們接下來將詳細介紹 lda 模型。

lda 模型假設文件是由一系列主題構成的,然後再從這些主題中依據相應的概率分布生成詞語。給定乙個文件資料集,lda 模型主要用於識別文件中的主題分布情況。

lda 模型是一種矩陣分解技術,在向量空間模型中,任何語料都能被表示成乙個文件詞頻矩陣。如下所示,矩陣中包含 n 篇文件,m 個詞語,矩陣中的數值表示詞語在文件中出現的頻率。

lda 模型將上述的文件詞頻矩陣轉換成兩個低維的矩陣—— m1 和 m2。其中 m1 表示文件主題矩陣,m2 表示主題詞語矩陣,它們的維度分別是 n*k 和 k*m,k 表示文件中主題的個數,m 表示詞語的數量。

需要注意的是,上述兩個矩陣提供了文件主題和主題詞語的初始分布情況,lda 模型通過抽樣的方法來更新這兩個矩陣。該模型通過更新文件中每個詞語的主題歸屬情況來調整模型的引數值 p1 和 p2,其中 $p_1 = p(\frac)$,$p_2 = p(\frac)$。經過一系列的迭代計算後,lda 模型達到收斂狀態,此時我們即可得到一組最佳引數值。

超引數 alpha 和 beta —— alpha 表示文件—主題密度,beta 則表示主題—詞語密度,其中 alpha 值越大表示文件中包含更多的主題,而更大的 beta 值則表示主題中包含更多的詞語。

主題個數——我們可以利用 kl 散度得分來計算最佳的主題個數,由於這部分內容過於學術,我將不詳細介紹這些內容,有興趣的讀者可以參閱相關文獻(

主題中的詞數——這個引數取決於你的真實需求,如果你的目標是提取主題資訊,那麼你最好選擇較多的詞語。如果你的目標是提取特徵,那麼你應該選擇較少的詞項。

迭代次數—— lda 演算法的迭代次數

以下是一些示例資料:

資料清洗是文字建模分析過程中的乙個重要環節,在這個過程中我們將移除標點符號、停止詞並規整資料集:

主題模型的擬合結果完全取決於語料庫中的特徵項,而語料是由乙個稀疏的文件詞頻矩陣所構成的。降低該矩陣的維度可以提公升主題模型的擬合結果,根據我的個人經驗,主要有以下幾個降維方法:

我們可以按照詞語的頻數進行排序,然後保留頻數較高的詞語並將頻數較低的詞語剔除掉。此外我們還可以借助探索性分析的方法來決定如何設定閾值。

通常情況下,標記過濾法的效果優於頻數過濾法。主題模型通過詞語的共現情況來反映主題資訊,然而在每個主題中並不是所有的詞語都是同等重要的。我們可以將這些無關緊要的詞語剔除掉,提公升模型的擬合效果。

為了提取出文件中最重要的主題資訊,我們可以將語料庫分割成一系列固定大小的子集。然後我們可以對每個子集資料構建多個 lda 模型,出現次數最多的主題就是該文件中最重要的主題資訊。

有些時候,我們還可以利用 lda 模型來選擇特徵。以文字分類問題為例,如果訓練集中包含多個類別的文件,我們可以首先構建 lda 模型,然後剔除掉不同類別文件中共同出現的主題資訊,剩餘的特徵即為有助於提公升文字分類模型的準確率。

到此為止,我們已經介紹完主題模型了,我希望本文能夠幫你了解如何處理文字資料。如果你想加深對主題模型的理解,那麼我建議你最好親自練習下本文的**並檢查模型的擬合結果。

如果你覺得本文對你有幫助的話,你可以將此文分享給你的朋友。

company

譯者:fibears

初學者mysql MySQL初學者使用指南

有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...

DLL初學者指南

這裡有兩個方法來載入乙個dll 乙個方法是捷徑另乙個則相比要複雜些。捷徑是只鏈結到你.lib 檔案並將.dll檔案置入你的新專案的路徑中去。因此,建立乙個新的空的win32控制台專案並新增乙個原始檔。將你做的dll放入你的新專案相同的目錄下。include include declspec dlli...

DLL初學者指南

dll初學者指南 dll project的源 及測試專案 原文出處 codeguru 我正在學習dlls,談不上對其有什麼高屋建瓴的見解 本文只是 通過 編碼讓你看到並想知道 是如何執行的。在本文中,我假定你知道如何使用你的編譯器特性,比如設定目錄路徑等等。ifndef dll tutorial h...