Text mining7. 相關核心技術
● 網路爬蟲 (平行式)
● 語言分詞 (字典豐富度)
● 演算法 (快,又準)
● 文字探勘相關
● 巨量數據存儲 ( Hadoop)
● 分佈式計算 (MR,Spark)
● 視覺化呈現 (互動式報表)
8. 運用文字探勘產生新的價值
• 資料內容再進一步
– 語意分析功能
– 轉成結構化欄位處裡
• 了解趨勢、產業研究
– 產業方向
– 議題探討
– 情感分析
– 聲量分析
網頁爬文
文字探勘
自動分類
相關性分析
大數據處裡
網頁內容
自動爬取
網站
內容分析
熱門議題擷
取追蹤
網頁
內容歸檔
文章推薦
即時爬取即
時分析
資訊檢索
16. 字典豐富度決定了一切
• 如何新增字詞
– ngram 做 TF
– InnerFeature Bi-gram =>
P(A,B) / (P(A) X P(B))
– InnerFeature Trigram =>
min( P(A,B,C) / ( P(A) X P(B,C)),
P(A,B,C) / (P(A,B) X P(C))
– BoundaryFeature =>
min( -logN(LeftBoundary), -logN(RightBoundary))
21. 語言模型
• Unigram
– 床 | 前 | 明 | 月 | 光
– 頭: 2, 床: 1
• Bigram
– 床前 | 前明 | 明月 | 月光
– 明月: 2, 地上: 1
床前明月光,疑是地上霜
舉頭望明月,低頭思故鄉
22. 過程介紹(1)
• 若有個句子有五個字,任意挑選五個字,則表示
這五個字符合語言模型的程度,可用機率表示
(比較有可能出現的句子)
• P(X1=w1, X2=w2, X3=w3, X4=w4, X5=w5)
=P(X1=w1) X P(X2=w2|X1=w1)
X P(X3=w3|X2=w2, X1=w1)
X P(X4=w4|X3=w3, X2=w2, X1=w1)
X P(X5=w5|X4=w4, X3=w3, X2=w2, X1=w1)
23. 過程介紹(2)
• Markov Assumption:
– 每個字出現的機率,只跟前一個字有關
• P(X1=w1, X2=w2, X3=w3, X4=w4, X5=w5)
= P(X1=x1) X P(X2=w2|X1=w1) X
P(X3=w3|X2=w2) X P(X4=w4|X3=w3) X
P(X5=w5|X4=w4)
• 白日依山盡
(X1=白,X2=日,X3=依,X4=山,X5 = 盡)
=P(X1=白) X P(X2=日|X1=白) X P(X3=依|X2=日)
X P(X4=山|X3=依) X P(X5=盡|X4=山)
25. 過程介紹(4)
• 給定句子中的句首 w1, 找出其他四個字 w2, w3,
w4, w5
• 算出使條件機率為最大值的 w2, w3, w4, w5
(參照前面公式)
• 例如: 給定句首為北,產生另外四個字
P(X1=北, X2=w2, X3=w3, X4=w4, X5=w5 | X1=北)
=P(X2=w2|X1=北) X P(X3=w3|X2=w2) X
P(X4=w4 | X3=w3) X P(X5=w5 | X4=w4)
26. 過程介紹(5)
• 若 Bigram 中未出現 w1, w2組合
– P(X1=w1, X2=w2) = 0,這會使整個句子
機率為 0
• 為避免這樣情況發生
– 令 P(X1=w1, X2=w2) = 0.5 / count(all
bigrams)
– 0.5 ??
27. 時間複雜度(1)
• 給定 w1, 求機率最大值 w2, w3, w4, w5
• 若詞庫中有3000個字,則共有 3000^4
組合
• 所以這樣的計算屬於指數時間 O(2^n)
29. Viterbi 演算法 (1)
• Dynamic Program
– Max flow, taboo…
• 不需要把所有的組合都
算出來
• 先算局部最大值,傳遞
下去
• 時間複雜度為O(n^2)
30. A
B
C
A
B
C
A
B
C
A
B
C
w2 w3 w4 w5
Viterbi 演算法 (2)
Max( AA, AB, AC)
Max( BA, BB, BC)
Max( CA, CB, CC)
先計算 第一階段 Max (AA, AB, AC) ,再計算第二階段
時間複雜度: 每個階段都是 V X V X L (階段),故為 O(n^2)
第一階段 第二階段
31. 總結: 藏頭詩產生器
• 以 Ngram 為語言模型,先從兩萬首全唐
詩中算出 Ngram 的統計數值,再用
Viterbi 演算法拼湊出藏頭詩中的每個字,
得出的藏頭詩,看起來很像詩詞但語意
未必通順
32. 安裝
• 採用 WinPython
• 將 AcrosticPoem.zip 解壓縮到 WinPython 下
的 python-2.7.9 目錄內
• 執行指令
– cd AcrosticPoem
– python AcrosticPoem.py
• 在 > 環境下
– 打 –h ,查看系統參數
– 打 北護大數據成功 -l 5 -p 1
(五個字藏頭詩,且出現在第一個字)
33. 後續改良方法
• 句子與句子間的關聯度
• 語句夠不夠通順
• 詞性一起考量進來
• Phrase-based SMT model
• Neural Network
– Neural Probabilistic Language Model
– Multiplicative Recurrent Neural Network
34. 參考 – 馬可夫鏈
• 馬可夫鏈
– 把事件拆成 bigram,透過前一個字來推估下
一個字的機率
參考自然語言處裡網站: http://cpmarkchang.logdown.com
36. 參考 -隱性馬可夫鏈 (HMM)
• 隱性馬可夫鏈 (HMM)
– 隱性馬可夫常用在 Natural language process 當
中的詞性
– 有個研究者, 想根據某地人們生活日記中, 記載每天
吃冰淇淋的數量, 來推斷當時的天氣變化如何
在某個地點有兩種天氣, 分別是 Hot 和 Cold , 而當
地的人們會記錄他們每天吃冰淇淋的數量, 數量分
別為 1 , 2 或 3 ,
則可以把天氣變化的機率, 以及天氣吃冰淇淋數量
的關係, 用 Hidden Markov Model 表示