(No.30)Enriching Word Vectors with Subword Information

最近中了Tomas Mikolov大神的邪...

寫在前面:

「我橫豎睡不著,仔細看了半夜,才從字縫裡看出字來,滿本都寫著兩個字是「吃人」!」

---《狂人日記》

而本文全篇都在表達一個事skip-gram + n-grams。

簡述:

很多的詞向量表達都是將詞作為單一體來看待的,沒有考慮參數的共享。從感知角度來說,就是失去了原有的內部結構。作者提出了考慮subword信息的continue skip-gram model。

Introduce中介紹當前Morphological word representations 和 Character level features for NLP的一些做法和重點論文,以及general model(就是word2vec中的skip-gram,softmax,以及log-likehood),這並非本文重點。

Subword model:

由於skip-gram中沒有考慮文本序的信息,向其中加入n-grams信息。整個文本用所涉及gram向量和來表示。舉例(n<4):word =「我/睡/不/著/仔細/看/了/半夜」,unigram有8個,bigram有7個,trigram有6個。這21個gram向量獨立表示,然後用這21個向量和來表示這個word。

這樣"睡"既要單獨學習,也要在"我睡"、"睡不"、"我睡不"、"睡不著"當中表示,邏輯上有參數共享的功用,從而更好的學習表示。

Dictionary of n-grams:

當然隨著n-gram的引入,dict的容量也是成級數上漲,要利用hash去除一些頻次較低的項,文中建議的是保留200w。

(我的感覺:中文語境下,日常用的unigram差不多20w足夠了,加上n-gram,200w也差不多夠用了。)

Experiments:

不贅述,給出點用的結論:

  1. 在越大的數據集上,embedding的維度可以適當放大。
  2. 加入n-grams真的很有用,特別是數據小時,相較word2vec優勢更加明顯。
  3. 在不同語言下都比較好用,特別是那些rich language。
  4. 在句法形態評估任務上效果較為顯著。

推薦閱讀:

機器學習、深度學習與自然語言處理領域推薦的書籍列表
基於雙語主題模型的跨語言層次分類體系匹配 | 直播預告·PhD Talk #16
教機器學習閱讀
用深度學習(CNN RNN Attention)解決大規模文本分類問題 - 綜述和實踐
自然語言處理基礎技術之分詞、向量化、詞性標註

TAG:自然语言处理 | 文本分析 | word2vec |