Gensim - 主題建模



本章討論關於 Gensim 的主題建模。

為了標註我們的資料並理解句子結構,最好的方法之一是使用計算語言學演算法。毫無疑問,藉助這些計算語言學演算法,我們可以瞭解資料的更多細節,但是,

  • 我們能否知道哪些詞在我們的語料庫中出現得比其他詞更頻繁?

  • 我們能否對我們的資料進行分組?

  • 我們能否找到我們資料中的潛在主題?

藉助主題建模,我們可以實現所有這些目標。所以讓我們深入瞭解主題模型的概念。

什麼是主題模型?

主題模型可以定義為包含文字中主題資訊的機率模型。但是,這裡出現兩個重要的問題:

首先,什麼是主題?

顧名思義,主題是我們文字中體現的潛在思想或主題。舉個例子,包含報紙文章的語料庫將包含與金融、天氣、政治、體育、各州新聞等相關的主題。

其次,主題模型在文字處理中的重要性是什麼?

我們知道,為了識別文字中的相似性,我們可以使用詞語進行資訊檢索和搜尋技術。但是,藉助主題模型,我們現在可以使用主題而不是詞語來搜尋和整理我們的文字檔案。

從這個意義上說,我們可以說主題是詞語的機率分佈。因此,透過使用主題模型,我們可以將我們的文件描述為主題的機率分佈。

主題模型的目標

如上所述,主題建模的重點是潛在的思想和主題。其主要目標如下:

  • 主題模型可用於文字摘要。

  • 它們可用於組織文件。例如,我們可以使用主題建模將新聞文章分組到一個組織的/相互關聯的部分中,例如組織所有與板球相關的新聞文章。

  • 它們可以改進搜尋結果。如何?對於搜尋查詢,我們可以使用主題模型來揭示包含不同關鍵詞混合但具有相同思想的文件。

  • 推薦的概念對於營銷非常有用。它被各種線上購物網站、新聞網站等等使用。主題模型有助於推薦購買什麼、接下來閱讀什麼等等。它們透過在列表中查詢具有共同主題的材料來做到這一點。

Gensim 中的主題建模演算法

毫無疑問,Gensim 是最流行的主題建模工具包。它的免費可用性和 Python 的特性使其更受歡迎。在本節中,我們將討論一些最流行的主題建模演算法。這裡,我們將關注“是什麼”而不是“如何”,因為 Gensim 為我們很好地抽象了它們。

潛在狄利克雷分配 (LDA)

潛在狄利克雷分配 (LDA) 是目前最常用和最流行的主題建模技術。它是 Facebook 研究人員在其 2013 年發表的研究論文中使用的一種技術。它最初由 David Blei、Andrew Ng 和 Michael Jordan 於 2003 年提出。他們在題為潛在狄利克雷分配的論文中提出了 LDA。

LDA 的特點

讓我們透過其特點來了解這項精彩技術的更多資訊:

機率主題建模技術

LDA 是一種機率主題建模技術。如上所述,在主題建模中,我們假設在任何相互關聯的文件集合(可以是學術論文、報紙文章、Facebook 帖子、推文、電子郵件等等)中,每個文件都包含一些主題組合。

機率主題建模的主要目標是發現相互關聯的文件集合的隱藏主題結構。主題結構通常包括以下三點:

  • 主題

  • 文件中主題的統計分佈

  • 包含主題的文件中的詞語

以無監督的方式工作

LDA 以無監督的方式工作。這是因為 LDA 使用條件機率來發現隱藏的主題結構。它假設主題在相互關聯的文件集合中分佈不均。

在 Gensim 中建立它非常容易

在 Gensim 中,建立 LDA 模型非常容易。我們只需要指定語料庫、字典對映以及我們希望在模型中使用的主題數量。

Model=models.LdaModel(corpus, id2word=dictionary, num_topics=100)

可能會面臨計算上棘手的問題

計算每種可能的主題結構的機率是 LDA 面臨的計算挑戰。之所以具有挑戰性,是因為它需要計算每種可能的主題結構下每個觀察到的詞語的機率。如果我們有大量的主題和詞語,LDA 可能會面臨計算上棘手的問題。

潛在語義索引 (LSI)

第一個在 Gensim 中實現的主題建模演算法是潛在狄利克雷分配 (LDA),它是潛在語義索引 (LSI)。它也稱為潛在語義分析 (LSA)

它於 1988 年由 Scott Deerwester、Susan Dumais、George Furnas、Richard Harshman、Thomas Landaur、Karen Lochbaum 和 Lynn Streeter 獲得專利。在本節中,我們將設定我們的 LSI 模型。這可以像設定 LDA 模型一樣完成。我們需要從gensim.models匯入 LSI 模型。

LSI 的作用

實際上,LSI 是一種 NLP 技術,尤其是在分散式語義中。它分析文件集與其包含的術語之間的關係。如果我們談論它的工作原理,那麼它會構建一個矩陣,其中包含來自大段文字的每個文件的詞語計數。

構建完成後,為了減少行數,LSI 模型使用一種稱為奇異值分解 (SVD) 的數學技術。除了減少行數外,它還保留列之間的相似性結構。在矩陣中,行表示唯一的詞語,列表示每個文件。它基於分佈假設,即它假設含義相近的詞語會出現在同類型的文字中。

Model=models.LsiModel(corpus, id2word=dictionary, num_topics=100)

分層狄利克雷過程 (HDP)

LDA 和 LSI 等主題模型有助於總結和組織大型文字檔案,這些檔案無法人工分析。除了 LDA 和 LSI 之外,Gensim 中另一個強大的主題模型是 HDP(分層狄利克雷過程)。它基本上是一個混合成員模型,用於對分組資料進行無監督分析。與 LDA(其有限對應物)不同,HDP 從資料中推斷主題數量。

Model=models.HdpModel(corpus, id2word=dictionary
廣告