5.4.1 CRF-Bagging
CRF-Bagging 的步驟參考了由 Ho, Tin Kam[14]所提出的 Random Forest,其特點 為透過隨機選取部分資料以及特徵,配合平行處理的技術減少訓練所需要的時 Output:CRF-Bagging 斷句模型G(x)
function random_CRF(X, Y, F)
𝑓𝑓 ← a subset of FXf ← 𝑋𝑋 𝑢𝑢𝑢𝑢𝑢𝑢 𝑓𝑓𝑢𝑢𝑓𝑓𝑡𝑡𝑢𝑢𝑓𝑓𝑢𝑢 in f 𝑔𝑔(𝑥𝑥) ← 𝐶𝐶𝐶𝐶𝐶𝐶. 𝑡𝑡𝑓𝑓𝑓𝑓𝑡𝑡𝑡𝑡(𝑋𝑋𝑓𝑓, 𝑌𝑌)
return
𝑔𝑔(𝑥𝑥)end function
for
t ← 1,2,3 … , Tgt(𝑥𝑥) ← random_CRF(X, Y, Feature)
end for
return
G(x) ← ∑𝑇𝑇𝑡𝑡=1𝑔𝑔𝑡𝑡(𝑥𝑥)圖 5.5 CRF-Bagging 演算法
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
5.4.2 CRF-Boosting
CRF-Boosting 的步驟參考由 R. Rojas[17]所寫的 AdaBoost 演算法,其原理是增 加前一個分類器分類錯誤的資料權重,並以此訓練下一個分類器。演算法使用 的變數以及步驟如圖 5.6 及表 5-1 所示,以下說明變數以及函式的意義。u(1) 代表在初始時間t = 1的時候將各個文字特徵的權重進行初始化。函式
weight_CRF_model將X與Y根據權重增加或減少其資料數量,並以調整過後的資
料Xweight與Yweight進行訓練,其中調整資料數量的計算方法 un(t)∙ N ∙ c 在初始
的權重 un(1)是1
N,因此相乘的結果會是c,也就是在Xweight中的xn在開始時會被 重複放入c次。這樣的設定目的是讓未來un(t)小於1
N時,xn較不會一次都沒有被放 入,導致在訓練 CRF 模型的步驟中因為訓練資料太少導致模型無法充分發揮效 果。ϵt是時間為t時訓練出的模型gt(x)的錯誤率,其中分子∑NN=1un(t)[yn ≠
gt(xn)]代表正確答案與預測結果不相符時權重的總和,而分母∑NN=1un(t)代表所 有權重的總和。∇t代表調整下一輪權重的幅度,其計算公式�1−ϵϵ t
t 在ϵt小於 0.5 時,也就是分類器的判斷準確率超過五成的時候其值會大於 1。如此一來在標 記類別判斷錯誤的情況下,時將原本的權重un(t)乘上∇t增加其權重產生下一次訓 練所使用的權重un(t+1),反之亦同。G(x)將每輪訓練出來的模型gt(x)根據αt加權 所產生的整合模型,如此一來完成整合學習的步驟。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
表 5-1 CRF-Boosting 參數
N 訓練資料中的文字特徵數量 X 訓練資料中的文字特徵序列
xn X中第n個文字特徵,也就是文字中抽取的特徵資訊 Y 訓練資料中的文字標記
yn Y中第n個文字的標記類別 u(t) X在第t次訓練中的權重序列
un(t) u(t)中第n個文字特徵的權重
Xweight 增加X中權重高的資料、減少權重小的資料的結果
Yweight 增加Y中權重高的資料、減少權重小的資料的結果
c 被重複放入的次數,使用者可以調整c進行縮放調整 gt(x) 完成訓練的 CRF 模型
ϵt 訓練結果的錯誤率,是分類錯誤的資料權重除以總權重的結果
∇t 增加、減少下一輪權重的幅度 αt 第t次訓練所產生的模型權重
G(x) 由多組gt(x)配合其權重αt產生的整合學習模型
‧
Output: CRF-Boosting 斷句模型G(x)N ← length(X)
u(1) ← [N1,N1,N1, . . . ,N1] ( initialize the weight of xn in X, n ← 1,2,3, … , N )
function
weight_CRF_model(X, Y, u(t))Xweight ← {xn, xn, … , xn
end function
for
t ← 1,2, … , T‧
合。本研究透過 threshold 與輸出分數的最大最小值進行調整,使最後的結果範 圍在 0~1 之間,並且 threshold 的值最後落在 0.5、最大值在 1.0、最小值則是 0.0,方法如圖 5.7 所示。Initial
Input: 整合學習預測分數 score_list 以及 threshold Output: 範圍在 0~1 且 threshold 在 0.5 的預測分數 max_score ← max( score_list )
min_score ← min( score_list ) output_list ← [ ] (empty list)
for score in score_list
if(score >= threshold){
output ← 0.5 + (score - threshold)*0.5 / (max_score - threshold) }
else{
output ← 0.5 - (threshold - score)*0.5 / (threshold – min_score) }
output_list.append(output)
end for
return output_list
圖 5.7 CRF 整合學習的機率方法 Precision,反之可以增加 Recall,由於使用者對 Precision 及 Recall 有各自的偏 好,因此本研究所設計的斷句系統門檻值能夠讓使用者根據自身偏好調整。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
5.4.5 CRF 的參數優化
sklearn-crfsuite6的兩個參數 C1、C2 分別是 L1、L2 regularization 使用的參數,
而 L1、L2 regularization 是兩種不同的預測結果誤差計算方法。參數優化的方 式使用 3 fold random search cross validation,在每一次的 cross validation 隨機從 抽取 50 次參數並選取訓練結果 F1 score 分數最高的一次。表 5-2 是 C1、C2 在 不同情況下產生的效果。
表 5-2 sklearn-crfsuite 參數說明
C1>0
L1 regularization 的參數,演算法為 Orthant-Wise Limited-memory Quasi-Newton (OWL-QN)
C1=0 使用 lbfgs 演算法
C2>=0 L2 regularization 的參數,支援的演算法為 l2sgd,lbfgs