資料探勘乾貨總結(二)--NLP進階-詳解Jieba分詞工具
NLP進階-詳解Jieba分詞工具
一、Jieba分詞工具
1. 三種模式
• 精確模式:將句子最精確的分開,適合文字分析
• 全模式:句子中所有可以成詞的詞語都掃描出來,速度快,不能解決歧義
• 搜尋引擎模式:在精確模式基礎上,對長詞再次切分,提高召回
2.實現的演算法
• 基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況的有向無環圖(DAG)
• 採用了動態規劃查詢最大概率路徑, 找出基於詞頻的最大切分組合
• 對於未登入詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法
3.實現流程
二、HMM隱馬爾科夫模型
1.
本質:一個序列中每個狀態只依賴之前有限個狀態
– N階馬爾科夫:依賴之前n個狀態
– 1階馬爾科夫:僅僅依賴前一個狀態(即上篇文章介紹的二元模型)
p(w1,w2,w3,……wn) = p(w1)p(w2|w1)p(w3|w2)……p(wn|wn-1)
應用場景:
• 概率預測
• 天氣預測
三個引數:
– 狀態:由數字表示,假設共有M個
– 初始概率: πk=P(S1=k) = k作為序列開始的次數/觀測序列總數
– 狀態轉移概率:ak,l=P(St+1=l|St=k) = l緊跟k出現的次數/k出現的總次數
2. 隱馬爾科夫模型(Hiden Markov Model)
本質:對兩個序列建模
應用場景:
• 機器翻譯:源語言序列 <-> 目標語言序列
• 語音識別:語音訊號序列 <-> 文字序列
• 詞性標註:文字序列 <-> 詞性序列
五個引數:
– 狀態:由數字表示,假設共有M個
– 觀測:由數字表示,假設共有N個
– 初始概率: πk=P(S1=k) = k作為序列開始的次數/觀測序列總數
– 狀態轉移概率:ak,l=P(St+1=l|St=k) = l緊跟k出現的次數/k出現的總次數
– 發射概率:bk(u)
那麼總的概率如下:
待解決問題:
問題1. 給定訓練語料庫D,求模型中的引數πk、ak,l、bk(u)
問題2. 給定θ,計算一個觀測序列的概率Pθ(O)
問題3. 給定θ和觀測序列O,找到最優的隱藏狀態序列S
問題1解決:
1)若資料完全,即S、O都已知(例如詞性、分詞都明確),則可以直接統計
2)若資料不完全,即O已知,S未知或部分未知(例如未登入詞),則應該採用EM演算法(前向後向演算法)計算出未登入詞的相關資訊(如詞性和轉換概率):
前者判斷詞性,後者即為狀態轉移概率ak,l,為了得到這兩個資訊,引出了前向概率和後向概率的兩個概念:
這兩個概率也需要使用動態規劃來求解:
可以得到:
問題2解決: 利用上題中的引數,可以直接求得
問題3解決: viterbi演算法
此處若採用窮舉法,時間複雜度太高,
因此可考慮動態規劃--維特比演算法:
至此,三大問題完美解決,撒花~
以上.
聽說,愛點讚的人運氣都不會太差哦
如果有任何意見和建議,也歡迎在下方留言~
由於部分圖片的顯示問題
還是建議大家關注這個公眾號檢視原文
關注這個公眾號,定期會有大資料學習的乾貨推送給你哦~
點選這裡檢視往期精彩內容: