<知識庫的構建> 3-1 被命名的實體識別分類 NERC
引自Fabian Suchanek的講義。
總結:主要講了NERC的四種方式, NERC Feature,NERC rules, NERC ML和statistical NERC。NERC Feature主要講在一個窗口中,其他token可以根據三種不同的features定下自己是什麽分類,從而定義主token是什麽分類。NERC rules主要講述一種建立rules來判斷token分類的方法,若某個句子或某個部分中的詞滿足該rule中的特征,那麽就可以知道主token是哪一類,當然在面對非常大型的語料庫也應該有自動建立rules的算法,本文中也有提到;NERC ML講述的是使用機器學習做NERC,主要講述了KNN對NERC的應用,即找到該token附近的token的分類,定義好K的值,看K個最近鄰居主要在哪一類則該token就在哪一類;statistical NERC主要要知道如何找到使語料庫權重最大的Y向量,若面對大型語料庫時,我們無法手動定義權重,則需要有算法去計算權重,主要講述了兩個步驟,如何根據給定的語料庫向量X和分類向量Y來計算W,計算了W的概率分布,用到了梯度上升,即計算使該概率分布最大的W,然後根據W的值在去判斷新的語料庫的標簽,也是機器學習的過程,學習+測試。
NERC:找到語料庫中entity名字並把它們分類
例如:在tsv中,41,tower,Other
41是句子號碼,tower是單詞,Other是類
做NERC遇到的困難:
- 同一個詞有不同的意思
n 例如:MTV可以使音樂電視,也可以是大屏幕
- 二義性
文章中講了四種NERC的方式:
1 - NERC Feature
代幣Token:一系列字母組成的一個個體
窗口Window:寬度為a,代表在此窗口裏,主代幣前有a個單詞,後面有a個單詞,則整個窗口寬度2*a+1
例如:主token的前一個單詞位置為-1
NERC特征NERC Feature:一個代幣的屬性可以指出窗口內主token的類
主要有這麽幾種Feature:
- 句法特征Syntactic Feature:例如大小寫,數字,空格,正則
- 字典特征Dictionary Feature:例如城市,國家
- 形態特征Morphological Features:例如:-ist,-isme,……
n POS:part of speech,代表有相同語法角色的詞
2 - NERC by rules
規定Rules:f1……fn=>c , f是指定特征designated feature
若一個window中的token們可以滿足rule裏的feature,那麽主token就會被分到c類
小練習:自己建立rules來找到文章中的planet
Lamuella is the nice planet where Arthur Dent lives. Santraginus V is a planet with marble-sanded beaches. Magrathea is an ancient planet in Nebula. The fifty-armed Jatravartids live on Viltvodle VI.
[CapWord] is the nice planet
[CapWord] is a planet
[[CapWord]] is an ancient planet
The fifty-armed Jatravartids live on [CapWord RomanNumeral]
若兩個rule都找到了對應的字符串,該如何選擇:
- 使用較長匹配的規則
- 手動定義順序
如何寫NERC rules:
- 比較難編程的rules
- 用正則
NERC rules一般是手動定義,但是也是可以學習的
- 有一個已被註釋的訓練語料庫
- 對於裏面的每一個註釋都建立一個rule
- 把rules合並,用一個更泛化的特征來代替
n 例如: [Author]… [Ford]… => [Capword]…
- 把rules合並並刪掉一個feature
n 例如:[Capword] says Hello ; [Capword] says bye
n => [Capword] says
- 刪掉重復的rules
- 重復這個過程
NERC rules要實現起來還是很困難的,因為句子成分很復雜
NERC rules的目標:
- 學習所有已註釋的規則
- 忽略未註釋的規則
- 不需要太多rules,因為並不需要一個註釋一個rules
3 - NERC by ML
NERC可以被機器學習實現:
- 給出訓練實例,即一個已經被備註好的語料庫
- 給語料庫中未註釋的單詞預測tag
KNN:根據該詞的最近鄰居決定該詞屬於哪一類
K是被固定的,為了減小噪聲;一般為奇數odd
原始距離函數Na?ve distance function:說明第i個feature應用於第j個位置上的與住token相關的token
例如: = upper case
Everyone loves <per> Fenchurch </per> because
= 1; = 0
附近K個鄰居屬於哪一類那此token屬於哪一類
使用歐幾裏得距離Euclidien distance
4 - NERC by statistical methods
統計NERC語料庫NERC by statistical corpus:是一個token構成向量,輸出是一個class向量,分別對應之前向量中的tokens
特征Feature:是一個函數,長這樣:f(X,i ,y)
X是token向量,i是在向量中的位置,y為class向量
例如:f1(X,i,y) := 1if xi?1 is title∧y=“pers”
f1(<Mr., Arthur>,1,pers) = 0 f1(<Mr., Arthur>,2,pers) = 1 f1(<Mr., Arthur>,1,loc) = 0
統計NERC的目標是根據給出的tokens向量X,給出的Features向量,權重向量,來計算分類向量Y=[y1,y2,…],盡可能使,即對於每個位置i,每個feature j,我們計算權重乘以1/0.
小練習1:計算每個Y向量所能得到的權重
X = <Dr. Dent>
F1(X,i,y) = 1 if xi = upcased word and y = loc w1 = 2
F2(X,i,y) = 1 if xi-1 is title and y = pers w2 = 5
Y1 = [oth, loc] 2 * 0 + 5 * 0 (Dr.) + 2 * 1 + 5 * 0 (Dent) = 0
Y2 = [oth, pers] 2 * 0 + 5 * 0 (Dr.) + 2 * 0 + 5 * 1 (Dent) = 5
所以Y2更好
小練習2:計算出大於權重3的Y
X = <in London>
F1(X,i,y) = 1 if xi = upcased and y = pers w1 = 2
F2(X,i,y) = 1 if xi-1 = “in”and y = loc w2 = 5
F3(X,i,y) = 1 if y = oth w3 = 1
Y1 = [oth, pers] 2 * 0 + 5 * 0 + 1 * 1 + 2 * 1 + 5 * 0 + 1 * 0 = 3
Y2 = [oth, loc] 2 * 0 + 5 * 0 + 1 * 1 + 2 * 0 + 5 * 1 + 1 * 0 = 5
Etc……
我們現在的算法是,根據給定的corpus向量X,每個單詞在向量中的位置i,和權重向量W來計算分類向量Y,當需要計算的分了向量Y比較復雜時我們該如何做?每條rule的權重該如何得到?
建立NERC模型:
1 - 定義Features向量F = <f1,……,fn>
2 - 生成訓練集,由corpus向量X和分類向量Y構成
X = <x1,……,xm>, Y = <y1,…… ,ym>
3 - 根據X,Y,找到每條rule的權重w,使X和Y能夠很好的對應
例如好的Features權重高,不好的權重低
根據計算出的w,我們可以算關於w的概率分布,公式如下:
所以Pr的上方是計算每個位置上的feature的權重之和,為了使概率分布在[0,1],下方是除以其他所有註釋Y,即在上方裏沒有用到的Y向量的可能世界。
我們最大化這個概率分布Pr:
因為ln是單調函數,所以我們可以直接在左右兩邊都套上ln:
所以我們可以看出在這個式子中,除了w,其余都為constant。所以我們使用梯度上升法使該等式最大化,算法為:
1 - 隨機定義一個W
2 - 計算該式子關於W的偏導
3 - 使W在導數方向進行梯度上升,即
4 - 直至該式子達到最大
所以關於statistical NERC,我們給出的變量有:corpus向量X,位置i,用於訓練的分類向量Y,特征向量F,我們首先要得到能使概率分布最大的權重向量w (學習):
之後我們給出新的語料庫,我們根據計算出的W,來計算它的分類向量Y:
<知識庫的構建> 3-1 被命名的實體識別分類 NERC