哈爾濱工業大學計算機學院-天然語言處理-課程總結

1. 前言

  • 天然語言處理是關毅老師的研究生課程。
  • 本博客僅對噪聲信道模型、n元文法(N-gram語言模型)、維特比算法詳細介紹。
  • 其餘的重點知識還包括機率上文無關文法(PCFG)、HMM形式化定義、詞網格分詞等等,比較簡單,不作贅述。

2. 噪聲信道模型

2.1 噪聲信道模型原理

  • 噪聲信道模型的示意圖以下所示:
  • 該模型的目標是經過有噪聲的輸出信號試圖恢復輸入信號,依據貝葉斯公式,其計算公式以下所示:
    \[I = \arg \max _ { I } P ( I | O ) = \arg \max _ { I } \frac { P ( O | I ) P ( I ) } { P ( O ) } = \arg \max _ { I } P ( O | I ) P ( I )\]
    • \(I\)指輸入信號,\(O\)指輸出信號。
  • 噪聲模型的優勢是具備普適性,經過修改噪聲信道的定義,能夠將不少常見的應用歸入到這一模型的框架之中,相關介紹見2.1。

2.2 噪聲信道模型的應用

2.2.1 語音識別

  • 語音識別的目的是經過聲學信號,找到與其對應的置信度最大的語言文本。
  • 計算公式與上文相同,此時的\(I\)爲語言文本,\(O\)爲聲學信號。
  • 代碼實現過程當中,有一個信息源以機率\(P(I)\)生成語言文本,噪聲信道以機率分佈\(P(O|I)\)將語言文本轉換爲聲學信號。
  • 模型經過貝葉斯公式對後驗機率\(P(I|O)\)進行計算。

2.2.2 其餘應用

  • 手寫漢字識別
    • 文本 -> 書寫 -> 圖像
  • 文本校錯
    • 文本 -> 輸入編輯 -> 帶有錯誤的文本
  • 音字轉換
    • 文本 -> 字音轉換 -> 拼音編碼
  • 詞性標註
    • 詞性標註序列 -> 詞性詞串替換 -> 詞串

3. N-gram語言模型

3.1 N-gram語言模型原理

  • N-gram語言模型基於馬爾可夫假設,即下一個詞的出現僅僅依賴於他前面的N個詞,公式以下:
    \[P ( S ) = P \left( w _ { 1 } w _ { 2 } \dots w _ { n } \right) = p \left( w _ { 1 } \right) p \left( w _ { 2 } | w _ { 1 } \right) p \left( w _ { 3 } | w _ { 1 } w _ { 2 } \right) \ldots p \left( w _ { n } | w _ { 1 } w _ { 2 } \dots w _ { n - 1 } \right)\]
  • 實踐中,每每採用最大似然估計的方式進行計算:
    \[P \left( w _ { n } | w _ { 1 } w _ { 2 } \dots w _ { n - 1 } \right) = \frac { C \left( w _ { 1 } w _ { 2 } \ldots w _ { n } \right) } { C \left( w _ { 1 } w _ { 2 } \dots w _ { n - 1 } \right) }\]
    • 在訓練語料庫中統計得到字串的頻度信息。
  • n越大: 對下一個詞出現的約束性信息更多,更大的辨別力
  • n越小: 在訓練語料庫中出現的次數更多,更可靠的統計結果,更高的可靠性

3.2 平滑處理

  • 若是不進行平滑處理,會面臨數據稀疏的問題,這會使聯合機率的其中一項值爲0,從而致使句子的總體機率值爲0。算法

    3.2.1 加一平滑法(拉普拉斯定律)

  • 公式以下:
    \[P _ { L a p } \left( w _ { 1 } w _ { 2 } , \ldots w _ { n } \right) = \frac { C \left( w _ { 1 } w _ { 2 } \dots w _ { n } \right) + 1 } { N + B } , \left( B = | V | ^ { n } \right)\]
    • 實際運算時,\(N\)爲條件機率中先驗字串的頻度。

3.2.2 其餘平滑方法

  • Lidstone定律
  • Good-Turing估計
  • Back-off平滑

4. 維特比算法

4.1 維特比算法原理

  • 維特比算法用於解決HMM三大問題中的解碼問題,即給定一個輸出字符序列和HMM模型參數,如何肯定模型產生這一序列機率最大的狀態序列。
    \[\arg \max _ { X } P ( X | O ) = \arg \max _ { X } \frac { P ( X , O ) } { P ( O ) } = \arg \max _ { X } P ( X , O )\]
    • \(O\)是輸出字符序列,\(X\)是狀態序列。
  • 維特比算法迭代過程以下:
    • 初始化
      \[\begin{array} { l } { \delta _ { 1 } ( i ) = \pi _ { i } b _ { i } \left( o _ { 1 } \right) } \\ { \psi _ { 1 } ( i ) = 0 } \end{array}\]
    • 遞歸
      \[\begin{array} { c } { \delta _ { t + 1 } ( j ) = \underset { 1 \leq i \leq N } \max \delta _ { t } ( i ) a _ { i j } b _ { j } \left( o _ { t + 1 } \right) } \\ { \psi _ { t + 1 } ( j ) = \underset { 1 \leq i \leq N } { \arg \max } \delta _ { t } ( i ) a _ { i j } b _ { j } \left( o _ { t + 1 } \right) } \end{array}\]
    • 結束
      \[\begin{array} { c } { P ^ { * } = \max _ { 1 \leq i \leq N } \delta _ { T } ( i ) } \\ { q _ { T } ^ { * } = \underset { 1 \leq i \leq N } { \arg \max } \delta _ { T } ( i ) } \end{array}\]
    • 最優路徑(狀態序列)
      \[q _ { t } ^ { * } = \psi _ { t + 1 } \left( q _ { t + 1 } ^ { * } \right) , \quad t = T - 1 , \ldots , 1\]
  • 上述迭代過程,\(a\)狀態轉移矩陣,\(b\)是狀態-輸出發射矩陣。

4.2 維特比算法例子

  • 例子:
    框架

  • 計算過程:
    • 第一次迭代(此時的輸出字符爲A):
      \[\delta _ { 1 } ( 0 ) = 0.5*0.5=0.25​\]
      \[\delta _ { 1 } ( 1 ) = 0.5*0.3=0.15​\]
      \[\delta _ { 1 } ( 2 ) = 0*0.2=0​\]編碼

    • 第二次迭代(此時的輸出字符爲B):
      \[\delta _ { 2 } ( 0 ) = max(0.25*0.3*0.3, 0, 0)=0.0225\]
      \[\delta _ { 2 } ( 1 ) =max(0.25*0.2*0.4, 0.15*0.4*0.4, 0)=0.024\]
      \[\delta _ { 2 } ( 2 ) = max(0.25*0.5*0.3, 0.15*0.6*0.3, 0)=0.0375\]spa

    • 第三次迭代(此時的輸出字符爲C):
      \[\delta _ { 3 } ( 0 ) = max(0.0225*0.3*0.2, 0, 0)=0.00135\]
      \[\delta _ { 3 } ( 1 ) =max(0.0225*0.2*0.3, 0.024*0.4*0.3, 0)=0.00288 \]
      \[\delta _ { 3 } ( 2 ) =max(0.0225*0.5*0.5, 0.024*0.6*0.5, 0)=0.0072\]blog

  • 最終答案:
    遞歸

    • 選擇最優路徑的時候從後往前選,選擇最後一列最大的機率值爲最終結果。
      • \(0.0072\))。
    • 接着尋找上一步中生成該機率值(\(0.0072\))的數做爲前一步結果。
      • \(0.024\),由於\(0.024*0.6*0.5=0.0072\)
    • 以此類推。

4.3 維特比算法應用

4.3.1 基於HMM的詞性標註

  • HMM的狀態集合:詞性標記集合
    • \(t_i\)爲爲詞性標記集合中的第\(i\)個詞性標記。
  • HMM的輸出字符集合:詞聚集合
  • \(\pi _ { \mathrm { i } }\):詞性標記\(t_i\)初始機率
  • \(a_{ij}\):從詞性標記\(t_i\)\(t_j\)的狀態轉移機率
  • \(b_{jk}\):詞性標記\(t_j\)對應的詞\(w_k\)的發射機率
相關文章
相關標籤/搜索