圓州率
🌐

Feature Image

Latent Semantic Analysis

數學, 資料科學, 機器學習, 文字探勘, 非監督式學習
透過層次結構來執行自然語言處理 (Natural Language Processing),介紹 LSA 與 pLSA。
   最後更新:

介紹

封面是用 Bing 繪製的 text mining

在自然語言處理問題中,我們可以透過文本 (documents) - 單字 (words) 的層級結構來分析文本,根據文本特徵執行主題分類 (topic modeling)。此時我們假設

  1. 每個文本 (document) 由主題 (topics) 組成
  2. 每個主題 (topic) 由單字 (words) 組成

也就是將「文本 - 單字」關係拓展成「文本 - 主題 - 單字」,但其中的主題是隱藏的 (latent),主題建模的目標就在於找出其中的主題 (隱藏變數)。能應用於搜尋引擎,將文本轉換至主題層級,也將用戶搜尋的單字轉換至主題層級,以此搜尋「相同的主題」的資訊。

這邊會介紹到 3 種常用的模型

  • LSA: 將「文本 - 單字」矩陣分解 (SVD) 成「文本 - 主題」和「主題 - 單字」矩陣
  • pLSA: 在 LSA 上引入 Multinomial distribution
    • 將「文本 - 主題」視為一個 Multinomial distribution
    • 將「主題 - 單字」視為另一個 Multinomial distribution
  • LDA: 在 pLSA 上引入 Dirichlet distribution
    • 將文本視為主題的混合機率分佈 Dirichlet distribution
    • 對每個字視為是一個 pLSA 過程

符號

  1. 單字 (words) 是每個文本的基本單位,將單字依照 {1,2,,V}\{\conti{V}\} 編號,每個字視為一個 RV\mathbb R^V 向量,對第 vv 個單字定義 wv=1w^v = 1wn=0w^n = 0nvn \ne v
  2. 文本 (documents) 是由 NN 個單字組成,寫作 w=(w1,w2,,wN)\bs w = (\contia{w}{N}),其中 wnw_n 是文本中的第 nn 個單字
  3. 語料庫 (corpus) 是由 MM 個文本組成,寫作 D={w1,w2,,wM}D = \{ \contia{\bs w}{M} \},用集合表達,即文本的先後順序不影響機率分佈

Latent Semantic Analysis (LSA)

LSA 的目標是將「文本 - 單字」WW 矩陣拆分成「文本 - 主題」UU 和「主題 - 單字」VV 矩陣兩個矩陣。擁有中間層的主題做為媒介,就能計算出

  1. 文本間的相似度
  2. 單字間的相似度

原始版本中的 WijW_{ij} 定義為第 ii 個文本中,第 jj 個單字出現的次數,然而原始的 WW 沒有考慮文件中每個單字的重要性,即

  • Term frequency (tf, 詞頻): 評估單字在當前文本的重要性,若單字在當前文檔出現越多次,TF 越高 TFij=第 i 個文本中,第 j 個單字出現的次數第 i 個文本中的總字數 \begin{align*} \text{TF}_{ij} = \frac{\text{第 ii 個文本中,第 jj 個單字出現的次數}}{\text{第 ii 個文本中的總字數}} \end{align*}
  • Inverse document frequency (idf, 逆文件頻率): 評估單字在全部文本的重要性,若單字在越多文檔中都出現,IDF 越低;若單字在越少文檔中都出現,IDF 越高 IDFij=ln(N包含單字 j 的文檔數 + 1) \begin{align*} \text{IDF}_{ij} = \ln \left( \frac{N}{\text{包含單字 jj 的文檔數 + 1}} \right) \end{align*}

因此常用 term frequency-inverse document frequency (TF-IDF) 取代原始的「文本 - 單字」矩陣

Aij=TF_ijIDF_ij \begin{align*} A_{ij} = \text{TF}\_{ij} \text{IDF}\_{ij} \end{align*}

AA 矩陣在多數情況都是非常稀疏的,因此會透過 truncated singular value decomposition (truncated SDV),指定保留前 tt 個最大的特徵值,使得

AUtStVtT \begin{align*} A \approx U_t S_t V_t^T \end{align*}

其中的 StS_t 是只有前 tt 項有數值的對角矩陣;UU 表示為每個文本在 tt 個主題中的向量;VV 表示為每個單字在 tt 個主題中的向量。

Probabilistic Latent Semantic Analysis (pLSA)

pLSA 使用機率模型取代 SDV,以此解釋每個主題中,文字出現的機率。而 pLSA 將原始假設做了以下描述

  1. 每個文本由主題組成:給定文本 dd,主題 zz 在此文本中出現的機率為 P(zd)P (z | d)
  2. 每個主題由單字組成:給定主題 zz,文字 ww 在該主題中出現的機率為 P(wz)P (w | z)

聯合機率分佈為

P(d,w)=P(d)zP(zd)P(wz)=zP(z)P(dz)P(wz) \begin{align*} P (d, w) & = P (d) \sum_{z} P (z | d) P (w | z) \newline & = \sum_{z} P(z) P (d | z) P (w | z) \end{align*}

其中的 P(d)P (d) 直接作為語料庫中抽到文本 dd 的機率,即 1/M1 / MP(zd)P (z | d)P(wz)P (w | z) 用 Multinomial 建構。

  1. 第一式視為:從文本出發,某文本出現機率有多高,然後根據該文本的主題分佈,在該文本中找到某個單字的機率有多大。
  2. 第二式式為:從主題出發,然後獨立生成文本 dd 與單字 ww

降維比較

參見整合文章 Latent Dirichlet Allocation (LDA) 應用

參考資料

  1. Latent Dirichlet Allocation, David M. Blei, Andrew Y. Ng, Michael I. Jordan
  2. Topic Modeling with LSA, PLSA, LDA & lda2Vec