您好,登錄后才能下訂單哦!
這篇文章給大家介紹基于CRF的命名實體識別系統原理及實例剖析是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
經常聽到一些朋友說用CRF(conditional random field algorithm)做命名實體識別,但絕大多數都是調用CRF++包,然后自己只是構造一些特征,然后就是幾個命令行執行下而已,最近又有朋友經常問CRF是如何命名實體識別的,今天我就結合實例把CRF預測的過程來進行下解釋,有不對的地方歡迎拍磚,算是拋磚引玉吧。
本專題是建立在CRF模型已經訓練的基礎上的,如果有需要下個專題可以介紹下訓練的原理及過程。
通常CRF的命名實體序列標注任務中標簽有B、E、M、S四種,本專題模板采用的是 : U0:%x[-1,0] U1:%x[0,0] U2:%x[1,0] U3:%x[-1,0]%x[0,0]
U4:%x[0,0]%x[1,0] U5:%x[-1,0]%x[1,0]
使用案例是“維斯塔斯風車著火了”
首先對“維”進行特征函數計算:
可以看出當前token是“維”,通過模板特征函數得到該矩陣,然后對該矩陣的各個列進行求和結果如下:
其他字符的特征計算過程都是一樣的,在此就忽略過程,矩陣DotMatrix結果如下(其中由于“維”字是開始字符所以不可能是E和M標注,顧認為設置為最小權重):
根據CRF計算過程,以上矩陣為點函數得分矩陣,我們還需要一個訓練時得到的標注轉移矩陣TransMatrix即:
通過DotMatrix和TransMatrix的結合可以推導出前后字符之間在各個標注之前的最大轉移概率,公式如下:
其中score值的計算既是字符之間轉移概率的計算過程,from矩陣記錄的則是當前節點標注最大概率時前一個字符的標注,可以認為是最優路徑的記錄矩陣,而net矩陣則是通過轉移計算過程得到的每個字符在BEMS標注的概率值,如下:
from矩陣結果為:
我們此時是需要回溯出一條最優路徑的,定位“了”字符,作為結尾字符,只可能是E或者S,我們看net[火][E]和net[火][S]的值,可以看出S標注結果更大,因此“了”標注為S,看from矩陣,from[了][S]=1,及“火”標注為E,以此類推得到結果如下:
關于基于CRF的命名實體識別系統原理及實例剖析是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。