1. 程式人生 > >實習點滴(3)--以“詞性標註”為例理解CRF演算法

實習點滴(3)--以“詞性標註”為例理解CRF演算法

        看了CRF相關的東西好幾天了,現在也過來總結總結。我本人喜歡以講故事的方式闡述一些東西,純理論總是很抽象,而且很容易讓人失去耐心。那就以“詞性標註”為切入點,去理解一下CRF(Conditional Random Field)條件隨機場的演算法原理(難免有不對或者不全的地方,持續更新)。

      相關定義:

        CRF(Conditional Random Field)條件隨機場模型是一種典型的判別式模型,它在觀測序列的基礎上對目標序列進行建模,重點解決“序列化標註問題”。言下之意,就是給定的輸出識別序列Y和觀測序列X,通過定義條件概率P(Y|X)來描述模型

      特點長處:

        條件隨機場模型既具有判別式模型的優點,又具有產生式模型考慮到的上下文標記間的轉移概率。以序列化形式進行全域性引數優化和解碼的特點,解決了其他判別式模型難以避免的標記偏執問題

      應用場景:

        可以用於“序列標記”、“資料分割”、“組塊分析”等自然語言處理任務。在“中文分詞”、“中文人名識別”、“歧義消除”等任務中表現很好。

      演算法流程:

        首先,需要將分詞語料的標註符號轉化為用於命名實體序列標註的標記。

        其次,確定特徵模板,一般採用當前位置的前後n個位置的字及其標記表示,即以當前位置的前後n個位置範圍內的子串及其標記作為觀察視窗(一般n取2~3)

        然後,得到相應的特徵函式

        最後,剩下的工作就是訓練CRF模型的引數λ0

      例項:詞性標註

        詞性標註,顧名思義,就是說一句話中預測出各個片語的詞性(比如:動詞、名詞、形容詞、介詞等等)。

        以一句話:“我們是中國人”為例,通過片語分割後的結果就是:“我們(n)/是(v)/中國人(n)”(這裡相當於是訓練資料,這樣的訓練資料假設我們有1000條

        假設我們的label有5個:{名詞,動詞,形容詞,介詞,副詞}(當然還有很多,這裡點到為止)

        現在給出一個特徵模板:以當前位置為起始,向後,以n=2為滑動視窗,即:當前詞和接下來的一個詞為一個特徵模板(假設我們類似的特徵模板有7個

        準備好了嗎?要開始解釋公式部分了,該部分請對照CRF的公式。

                                    

        其中,函式t()代表轉移函式,而函式s()代表狀態函式;j是模板序列號(一種模板有一種轉移特徵函式),k是標籤個數(一個標籤有一個狀態函式)

        以上邊那個模板為例,我們會得到一個5*5的轉移矩陣(5代表我們的label個數),矩陣中每個數代表label-->label的個數(比如:當前詞為名詞,下一個詞為動詞的次數)

        來說說什麼是“狀態函式”吧,狀態函式則表示在標註序列中第i個位置標記((以模板序列為段)某個label的概率。(第i個位置就有5個引數)

        再來說說什麼是“轉移函式”吧,就是在標註序列中第i個位置是某個label到另一個label的概率,這些概率都是基於統計頻數計算的。(第i個位置就有5*5個引數)