计算机学院自然语言处理专业,哈尔滨工业大学计算机学院-自然语言处理-课程总结...
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.50.5=0.25?$$ $$\delta _ { 1 } ( 1 ) = 0.50.3=0.15?$$ $$\delta _ { 1 } ( 2 ) = 0*0.2=0?$$
第二次迭代(此時的輸出字符為B): $$\delta _ { 2 } ( 0 ) = max(0.250.30.3, 0, 0)=0.0225$$ $$\delta _ { 2 } ( 1 ) =max(0.250.20.4, 0.150.40.4, 0)=0.024$$ $$\delta _ { 2 } ( 2 ) = max(0.250.50.3, 0.150.60.3, 0)=0.0375$$
第三次迭代(此時的輸出字符為C): $$\delta _ { 3 } ( 0 ) = max(0.02250.30.2, 0, 0)=0.00135$$ $$\delta _ { 3 } ( 1 ) =max(0.02250.20.3, 0.0240.40.3, 0)=0.00288 $$ $$\delta _ { 3 } ( 2 ) =max(0.02250.50.5, 0.0240.60.5, 0)=0.0072$$
最終答案:
選擇最優路徑的時候從后往前選,選擇最后一列最大的概率值為最終結果。
即$0.0072$)。
接著尋找上一步中生成該概率值($0.0072$)的數作為前一步結果。
即$0.024$,因為$0.0240.60.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$的發射概率
總結
以上是生活随笔為你收集整理的计算机学院自然语言处理专业,哈尔滨工业大学计算机学院-自然语言处理-课程总结...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css lt;igt;,Tailwind
- 下一篇: 高校计算机教研室工作计划,高校教研室工作