序列標註 | (7) 融入字典知識的神經中文分詞

融入字典知識的神經中文分詞

一、背景

當前基於深度神經網絡的中文分詞方法直接從標註樣本/句子中學習相關信息,缺乏處理稀有詞以及和訓練集來自不同領域的數據的能力。OOV(Out-of-vocabulary)問題是監督學習最主要的問題。

例如,中文句子“人工智能最近很火”,它的正確分割是“人工智能/最近/很火”。然而,如果“人工智能”沒有出現在標註數據中或僅僅出現了幾次,那麼將有很大的概率該句子會被分割爲“人工/智能/最近/很火”,因爲“人工”和“智能”在標註數據中出現的頻率很高。

對於稀有樣例處理和領域偏移問題,人類知識可以提供有價值的信息。字典中既含有常見的詞語,也含有不經常出現的詞語, 所以將字典融入到神經網絡模型中,可以使得模型能夠更好地處理常見詞、稀有詞和領域專有詞等。
在這裏插入圖片描述

二、 主要方法

1)《Neural Networks Incorporating Dictionaries for Chinese Word Segmentation》 AAAI 2018

本文提出了兩個模型結構:
Model I:
在這裏插入圖片描述
首先,將輸入句子中的每個字符xix_i轉換爲向量表示exie_{x_i},輸入到一個Bi-LSTM中提取特徵;同時爲每個字構造對應的特徵向量tit_i,輸入到另一個Bi-LSTM中提取特徵。然後將兩部分特徵拼接在一起,再接一個CRF層進行解碼。

特徵向量構造方法:
tit_i是輸入句子中第 i 個字符xix_i對應的特徵向量。對xix_i構造以下8個特徵模版:
在這裏插入圖片描述
對於輸入句子中的每個字符,按照上述模版提取對應的子序列,如果提取的子序列出現在了給定的詞典中,該子序列對應的位置標爲1,否則標爲0,最後爲每個字符生成一個8維的特徵向量。如下例所示(對於“委”這個字符):
在這裏插入圖片描述
Model II:
特徵向量tit_i表示不同的邊界候選。在不同邊界候選下,建模字符xix_i的權重應該是不同的,而傳統的LSTM,對於輸入句子中的不同字符/不同時刻,權重是共享的。因此,本文提出了Model II。
在這裏插入圖片描述
如上圖所示,底部的Bi-LSTM,用於爲頂部的Bi-LSTM對應位置生成一個權重,從而使頂部Bi-LSTM對於輸入句子中的不同字符,權重是不同的。

底部Bi-LSTM的輸入是每個字符對應的特徵向量,計算過程如下(下式中的g表示頂部LSTM單元中各個門,g{i,f,o,c~}g\in \{i,f,o,\widetilde{c}\}):
在這裏插入圖片描述
上式中藍框中的部分是頂部Bi-LSTM原始的計算過程,其中參數Wg,UgW_g,U_g對於各個字符是權重共享的;紅框中的部分是由對應位置的底部Bi-LSTM生成的權重,對於每個字符生成的權重是不同的,讓生成的權重對共享權重進行修改,從而使頂部Bi-LSTM對於輸入句子中的不同字符,權重是不同的。

2)《Neural Chinese word segmentation with dictionary 》Neurocomputing 2019

前一篇工作需要手工設計特徵模版,而且多引入了一個BiLSTM,增加了模型參數,使模型訓練更困難。本篇工作做了一些改進,提出了一種end2end的融入字典信息的神經中文分詞方法,不需要任何特徵工程。

提出了兩種融入字典信息的方法,一種是僞標註數據生成;另一種是構造額外的單詞分類任務,進行多任務學習。最後本文把兩種方法組合在一起,模型性能取得了進一步提高。

基本結構:
和之前工作不同的是,本篇工作指出局部上下文信息對於中文分詞很重要,因此採用CNN對輸入句子中的每個字符學習上下文表示。基本模型結構如下所示:
在這裏插入圖片描述
其中,wRk×Dw\in R^{k\times D}是卷積核,D是字符嵌入向量的大小,k是卷積核的大小。每個字符的隱藏狀態hiRFh_i\in R^F,F是卷積核的數量。然後將hih_i輸入到CRF層進行標籤推理。

僞標註數據生成:
給定一個包含一系列中文單詞的字典,隨機採樣U個單詞,組成一個僞句子。例如,隨機採樣三個單詞“很火”,“最近”和“人工智能”,然後組成僞句子“􏰐􏰑􏰌􏰏􏰅􏰉􏰊􏰋 很火最近人工智能”。由於這些單詞的邊界是已知的,所以僞句子的標籤可以直接推斷出來“BEBEBMME”。重複上述採樣過程直到得到NpN_p個僞句子。把僞句子添加到標註數據集中來提升神經中文分詞的表現。由於僞句子和人工標註句子有不同的信息,因此訓練時,給兩種不同類型的訓練數據的損失設置不同的權重:
在這裏插入圖片描述
多任務學習:
文本設計了一個附加的單詞分類任務,用於判斷一箇中文字符序列是否是一箇中文詞。例如,字符序列“人工智能”是一箇中文詞,而字符序列“人重智新”就不是一箇中文詞。該分類任務的正樣本直接從給定的中文字典中採樣;負樣本也是從字典中隨機採樣一個詞,該詞中的每個字符以概率p被替換爲一個隨機選擇的字符。重複上述過程多次,直到得到指定數量的樣本。該單詞分類任務和中文分詞任務,共享底層的嵌入層和CNN特徵提取層,CNN後面接max-pooling層和sigmoid輸出層進行二分類。模型結構圖如下:
在這裏插入圖片描述
單詞分類任務的損失函數如下:
在這裏插入圖片描述
其中,NwN_w是單詞分類任務訓練樣本的數量,sis_i是第i個樣本的預測分數,yiy_i是第i個樣本的分類標籤(1 or -1)。
聯合訓練中文分詞模型和單詞分類模型,通過聯合訓練,共享層可以捕獲中文字典中的單詞信息,從而提高中文分詞的性能。最終的總損失函數如下,對每個任務的損失設置不同的權重:
在這裏插入圖片描述
組成上述兩種融入字典信息的方法:
僞標註數據生成和多任務學習以不同的方式利用字典信息,可以將他們組合起來,更好的利用字典知識。組合後最終的損失函數如下:
在這裏插入圖片描述

3)《Subword Encoding in Lattice LSTM for Chinese Word Segmentation 》 NAACL 2019

基本思想:
在中文分詞中引入子詞(subword)信息,首次證明了神經分詞中子詞的有效性。
首先通過BPE(byte pair encoding)算法從原始數據中構建子詞列表,然後使用Lattice LSTM結構將子詞信息融入到character-level LSTM表示中。
在這裏插入圖片描述
子詞信息可以用來消除字符歧義,如上圖所示,子詞 “學院”可以推出字符“學”應該是一個名詞,而不是一個動詞。

模型結構:
模型以character-level的BiLSTM-CRF爲基礎(黑色部分),lattice結構(紅色部分)用來融入子詞信息。
在這裏插入圖片描述
對於一個包含m個字符的輸入句子s=c1,c2,...,cms=c_1,c_2,...,c_m, cic_i表示第 i個字符。 對於每個輸入字符cic_i,將其對應的unigram字符表示ecie_{c_i}和bigram字符表示ecici+1e_{c_ic_{i+1}}進行拼接作爲Bi-LSTM的輸入:
在這裏插入圖片描述
使用BPE算法基於原始數據生成子詞列表,保留子詞列表中在給定字典中出現的子詞(即保留一些合理的子詞)。
lattice LSTM的輸入有兩部分,一個是子詞wb,ew_{b,e}的嵌入表示,其中b表示子詞的起始字符,e表示子詞的終止字符;另一個是起始字符的隱藏狀態hbh_b:
在這裏插入圖片描述
LSTMCell是LSTM單元的一個簡化版本,只計算記憶向量cwb,ec_{w_{b,e}}cwb,ec_{w_{b,e}}鏈接到終止字符用於計算終止字符的隱藏狀態。
如果某個字符有多個記憶cell輸入,如上圖中的“院”,他有兩個子詞記憶向量“學院”,”科學院“作爲輸入,此時爲每個子詞輸入設計一個門,來控制它的貢獻。
最後將隱藏狀態輸入到CRF層進行標籤推理。

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