實習點滴(4)--CRF算法的特徵模板總結

        最近工作中接觸到了CRF算法以及CRF++,於是乎,去了解了關於這些的一系列的東西,打算總結總結CRF算法裏的模板問題。

        我們知道,深度學習(Deeplearning)是不需要特徵模板的,它會自己學習裏邊的規律,而CRF則是需要特徵模板的,所以,選擇什麼樣的特徵模板是至關重要的。

      概念:

        CRF中一共存在兩種模板:U-gramB-gram
        U-gram:也就是Unigram template,它描述了unigram feature。

        一元模板,表示只與當前位置對應的標籤相關的特徵

if (output = B and feature="U02:那") 
    return 1
else 
    return 0

        B-gram:也是Bigram template。

        二元模板,表示前一個位置和當前位置對應的標籤相關的特徵

        當類別數很大的時候,這種類型會產生許多可區分的特徵,這將會導致訓練和測試的效率都很低下。

      實例解釋:

        實例如下:

# Unigram  
U00:%x[-2,0]  
U01:%x[-1,0]  
U02:%x[0,0]  
U03:%x[1,0]  
U04:%x[2,0]  
U05:%x[-2,0]/%x[-1,0]/%x[0,0]  
U06:%x[-1,0]/%x[0,0]/%x[1,0]  
U07:%x[0,0]/%x[1,0]/%x[2,0]  
U08:%x[-1,0]/%x[0,0]  
U09:%x[0,0]/%x[1,0]  
   
# Bigram  
B  
        假如我們訓練的語料句子是:我是中國人(下標:-2,-1,0,1,2),我們考慮的當前位置爲:“中”

        U0--U4特徵模板:表示某個位置與當前位置的信息之間的關係,比如說U00,就是指的“我”和“中”之間的聯繫

        U5--U7特徵模板:表示某三個位置與當前位置的信息之間的關係,比如說U05,就是指的“我”、“是”、“中”和“中”之間的聯繫

        U8--U9特徵模板:表示某兩個位置與當前位置的信息之間的關係,比如說U08,就是指的“是”、“中”和“中”之間的聯繫

        一般使用Unigram就足夠了。若使用Bigram,也使用最簡單的模板。它會帶來效率低下的效果。

        比如我們是做詞性標註工作的時候,我們知道“動詞後邊很容易跟名詞,所以某個位置的詞性與其附近的詞的詞性有很大的關係”,所以說這種情況下,動詞後邊名詞的概率就會變高,指引我們“動詞後邊名詞的概率很大”

        注意:

  1.         其中#開頭的行不起作用,爲註釋;
  2.         行與行之間可以有空行;
  3.         Unigram的特徵前使用字母U,而Bigram的特徵前使用字母B。後面的數字用於區分特徵,當然這些數字不是一定要連續

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