《Contextual String Embeddings for Sequence Labeling》

原文鏈接:https://www.aclweb.org/anthology/C18-1139

今天看的論文是COLING 2018的一篇論文,介紹了一種新的粒度的語言模型,基於 character級別的語言模型。作者實驗發現character-level的語言模型在sequence labeling任務,比如命名實體識別、詞性標註等任務上表現較好,在CoNLL2013命名實體識別任務上打到了state-of-the-art性能F1值93.09,超過了BERT的性能。

首先介紹一下目前主流的幾種詞向量類型:

  1. 傳統的詞向量。在大規模的語料上進行訓練,以獲得句法和語義相似度。例如Glove[1]、Word2Vec等。
  2. character-level特徵。該詞向量是未經過預訓練,而是在特定任務上訓練,以獲得任務相關的subword特徵。
  3. 上下文相關的詞向量,比如Elmo[2]。該詞向量能夠根據上下文的不同而獲得不同的詞向量表示。

作者使用的模型很簡單,但是卻很有效,模型結構圖如下圖所示。主要有幾個關鍵的地方:

  1. 在無標籤的數據上對characer級別輸入進行語言模型預訓練。(正是因爲是在無標籤的數據上,所以數據量大效果會比較好)
  2. 把每個token中的最後一個character的由前向LSTM(Long Short Term Memory Network)和後向LSTM的隱狀態拼接動態得到該token的表示,既可以解決一詞多義問題,又可以解決OOV(out of vocabulary)問題。

採用LSTM對句子進行編碼。在預訓練語言模型時,作者採用把character序列作爲句子輸入,在character-level去預測下一個character。
P(x0:T)=t=0TP(xtx0:t1) P(x_{0:T}) = \quad \prod_{t=0}^T P(x_t|x_{0:t-1})
在LSTM中,tt時刻的隱狀態hth_t作爲序列x0:t1x_{0:t-1}的表示,因此上式等價於:
P(x0:T)t=0TP(xtht;θ) P(x_{0:T}) \approx \quad \prod_{t=0}^T P(x_t|h_{t};\theta)
其中θ\theta爲LSTM的參數。

模型結構圖
文章還做了一些消融實驗,比如再加上Glove詞向量或者character-level的特徵,得到結果如下圖。證明加上character-level的特徵是沒有必要了,作者認爲他的character-level語言模型已經能夠獲取到char的表示了。
結果
作者針對這個語言模型基於pytorch發佈了一個工具flair,加入了各種別的詞向量表示、語言模型等特徵,而且提高了如何加入自己的模塊、如何訓練等。地址如下:https://github.com/zalandoresearch/flair。帶有教程,使用比較方便。後面打算基於此在語義相似度數據上去做一個實驗。

[1]《Glove: Global vectors for word representation》
[2]《Deep contextualized word representations》

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