crf中有兩類特徵函式,分別是狀態特徵和轉移特徵,狀態特徵用當前節點(某個輸出位置可能的狀態中的某個狀態稱為乙個節點)的狀態分數表示,轉移特徵用上乙個節點到當前節點的轉移分數表示。其損失函式定義如下:
crf損失函式的計算,需要用到真實路徑分數(包括狀態分數和轉移分數),其他所有可能的路徑的分數(包括狀態分數和轉移分數)。這裡的路徑用詞性來舉例就是一句話對應的詞性序列,真實路徑表示真實的詞性序列,其他可能的路徑表示其他的詞性序列。
這裡的分數就是指softmax之前的概率,或稱為未規範化的概率。softmax的作用就是將一組數值轉換成一組0-1之間的數值,這些數值的和為1,這樣就可以表示概率了。
對於詞性標註來說,給定一句話和其對應的詞性序列,那麼其似然性的計算公式(crf的引數化公式)如下:
在只有crf的情況下,上面說的2類特徵函式都是人工設定好的。通俗的說就是人工設定了觀測序列的特徵。
人為設定狀態特徵模板,比如設定「某個詞是名詞」等。
人為設定轉移特徵模板,比如設定「某個詞是名詞時,上乙個詞是形容詞」等。
給定一句話的時候,就根據上面設定的特徵模板來計算這句話的特徵分數,計算的時候,如果這句話符合特徵模板中的特徵規則,則那個特徵規則的值就為1,否則就為0。
實體識別的表現取決於2種特徵模板設定的好壞。
所以如果我們能使用深度神經網路的方式,特徵就可以由模型自己學習得到,這就是使用bert+crf的原因。
由bert學習序列的狀態特徵,從而得到乙個狀態分數,該分數直接輸入到crf層,省去了人工設定狀態特徵模板。
這裡的狀態特徵是說序列某個位置可能對應的狀態(命名實體識別中是指實體標註),
狀態分數是每個可能的狀態的softmax前的概率(又稱非規範化概率,或者直接稱作分數),
實體標註通常用bio標註,b表示詞的開始,i表示詞的延續,o表示非實體詞,比如下面的句子和其對應的實體標註(假設我們要識別的是人名和地點):
小 明 愛 北 京 的 天 安 門 。
b-person i-person o b-location i-location o b-location i-location i-location o
也就是說bert層學到了句子中每個字元最可能對應的實體標註是什麼,這個過程是考慮到了每個字元左邊和右邊的上下文資訊的,但是輸出的最大分數對應的實體標註依然可能有誤,不會100%正確的,出現b後面直接跟著b,後者標註以i開頭了,都是有可能的,而降低這些明顯不符規則的問題的情況的發生概率,就可以進一步提高bert模型**的準確性。此時就有人想到用crf來解決這個問題。
crf演算法中涉及到2種特徵函式,乙個是狀態特徵函式,計算狀態分數,乙個是轉移特徵函式,計算轉移分數。前者只針對當前位置的字元可以被轉換成哪些實體標註,後者關注的是當前位置和其相鄰位置的字元可以有哪些實體標註的組合。bert層已經將狀態分數輸出到crf層了,所以crf層還需要學習乙個轉移分數矩陣,該矩陣表示了所有標註狀態之間的組合,比如我們這裡有b-person i-person b-location i-location o 共5種狀態,有時候還會在句子的開始和結束各加乙個start 和 end標註,表示乙個句子的開始和結束,那麼此時就是7種狀態了,那麼2個狀態(包括自己和自己)之間的組合就有7*7=49種,上面說的轉移分數矩陣中的元素就是這49種組合的分數(或稱作非規範化概率),表示了各個組合的可能性。這個矩陣一開始是隨機初始化的,通過訓練後慢慢會知道哪些組合更符合規則,哪些更不符合規則。從而為模型的**帶來類似如下的約束:
矩陣示意如下:
為什麼不能通過人工來判斷標註規則並編寫好修正邏輯呢?
因為人工雖然能判斷出**的標註前後關係是否符合規則,但是無法知道如何對不符合規則的**進行調整,比如我們知道句子的開頭應該是「b-」或「o」,而不是「i-」,但是究竟是b-還是o呢?而且對於標註狀態非常多的場景下,人工編寫的工作量和邏輯是非常大且複雜的。
crf損失函式的計算,需要用到真實路徑分數(包括狀態分數和轉移分數),其他所有可能的路徑的分數(包括狀態分數和轉移分數)。其中真實路徑的狀態分數是根據訓練得到的bert模型的輸出計算出來的,轉移分數是從crf層提供的轉移分數矩陣得到的。其他路徑的狀態分數和轉移分數其實也是這樣計算的。
其中的真實路徑的計算原理,其實是使用了維特比演算法,關於維特比演算法,會在後續的文章中介紹。
命名實體識別中,bert負責學習輸入句子中每個字和符號到對應的實體標籤的規律,而crf負責學習相鄰實體標籤之間的轉移規則。
ok,本篇就這麼多內容啦~,感謝閱讀o(∩_∩)o。
ai命名實體識別模型 不同命名實體識別模型效果對比
本篇用乙個demo,對比各個ner模型的效果。本demo只識別公司實體 company 和職位實體 company 篩選含有公司和職位的資料,作為訓練和驗證資料。訓練資料 4089條。驗證資料 546條。本demo無單個字的實體情況,採用bio標籤體系,本demo共有5個標籤,o,b com,i c...
命名實體 中文命名實體識別簡介
一切具有特定屬性集合的物體都可以稱為實體。一般包括三大類 實體類 時間類 數字類 七小類 人名 機構名 地名 時間 日期 貨幣和百分比 1 確定實體的邊界,即確定哪些詞屬於實體。2 確定實體的類別,即確定實體屬於人名或者機構名等。1 各類命名實體沒有嚴格的命名規範 2 中文命名實體沒有類似英文明確的...
命名實體識別
簡單的分詞器 如二元分詞器 無法識別oov,所以需要運用一些規定的規則來輔助識別 如 在識別音譯人名時,可以設定規則 一旦發現某詞是人名,而該詞後面跟隨人名詞時,將他們合併 針對不同情況,需要設計相應的標註集 拿人名識別舉例 輸入資料集進行訓練後,會將人名拆分為碎片,模擬人名的錯誤切分.接著,檢查拆...