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

2021-08-03 18:53:03 字數 1229 閱讀 1528

看了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是標籤個數(乙個標籤有乙個狀態函式)

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

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

簡單理解函式宣告 以signal函式為例

signal 幾乎所有c語言程式的實現過程中都要用到signal函式,作為捕獲不同步的一種方式。我們使用者要呼叫signal函式,可以這樣使用,首先在標頭檔案中加入 include,然後我們可以這樣呼叫signal函式 signal signal type,sighandler t hander 這...

轉置卷積個人理解(以pytorch為例)

直觀理解就是卷積的反向操作,比如4 4的用3 3的卷積核卷積,s 1,p 0,得到2 2的大小,反卷積就是要使輸入2 2的輸出為4 4的。在pytorch使用 class torch.nn.convtranspose2d in channels,out channels,kernel size,st...

BTARN 接收訊息流以3A7為例

rnmimedecoder mime 預處理器 解碼器 對rnif2.0e服務內容及附件 如有 進行解密。對於rnif1.1,對負載末尾的八字節和分離的簽名頭進行處理。rndasm 拆裝器,基於xmldesimber 1 如果某個傳入文件含有 doctype 頭,則本元件根據該頭生成乙個命名空間,然...