實習點滴(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個參數)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章