圓州率
🌐

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) 是每個文本的基本單位,將單字依照 $\{\conti{V}\}$ 編號,每個字視為一個 $\mathbb R^V$ 向量,對第 $v$ 個單字定義 $w^v = 1$ 且 $w^n = 0$ 對 $n \ne v$
  2. 文本 (documents) 是由 $N$ 個單字組成,寫作 $\bs w = (\contia{w}{N})$,其中 $w_n$ 是文本中的第 $n$ 個單字
  3. 語料庫 (corpus) 是由 $M$ 個文本組成,寫作 $D = \{ \contia{\bs w}{M} \}$,用集合表達,即文本的先後順序不影響機率分佈

Latent Semantic Analysis (LSA)

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

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

原始版本中的 $W_{ij}$ 定義為第 $i$ 個文本中,第 $j$ 個單字出現的次數,然而原始的 $W$ 沒有考慮文件中每個單字的重要性,即

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

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

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

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

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

其中的 $S_t$ 是只有前 $t$ 項有數值的對角矩陣;$U$ 表示為每個文本在 $t$ 個主題中的向量;$V$ 表示為每個單字在 $t$ 個主題中的向量。

Probabilistic Latent Semantic Analysis (pLSA)

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

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

聯合機率分佈為

$$ \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)$ 直接作為語料庫中抽到文本 $d$ 的機率,即 $1 / M$;$P (z | d)$ 與 $P (w | z)$ 用 Multinomial 建構。

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

降維比較

參見整合文章 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