文本是一種非結構化的數據信息,是不可以直接被計算的。
文本表示的作用就是將這些非結構化的信息轉化為結構化的信息,這樣就可以針對文本信息做計算,來完成我們日常所能見到的文本分類,情感判斷等任務。
文本表示的方法有很多種,下面只介紹 3 類方式:
獨熱編碼 | one-hot representation
整數編碼
詞嵌入 | word embedding
假如我們要計算的文本中一共出現了4個詞:貓、狗、牛、羊。向量裡每一個位置都代表一個詞。所以用 one-hot 來表示就是:
貓:[1,0,0,0]
狗:[0,1,0,0]
牛:[0,0,1,0]
羊:[0,0,0,1]
但是在實際情況中,文本中很可能出現成千上萬個不同的詞,這時候向量就會非常長。其中99%以上都是 0。
one-hot 的缺點如下:
無法表達詞語之間的關係
這種過於稀疏的向量,導致計算和存儲的效率都不高
整數編碼這種方式也非常好理解,用一種數字來代表一個詞,上面的例子則是:
貓:1
狗:2
牛:3
羊:4
將句子裡的每個詞拼起來就是可以表示一句話的向量。
整數編碼的缺點如下:
無法表達詞語之間的關係
對於模型解釋而言,整數編碼可能具有挑戰性。
什麼是詞嵌入 | word embedding?word embedding 是文本表示的一類方法。跟 one-hot 編碼和整數編碼的目的一樣,不過他有更多的優點。
詞嵌入並不特指某個具體的算法,跟上面2種方式相比,這種方法有幾個明顯的優勢:
他可以將文本通過一個低維向量來表達,不像 one-hot 那麼長。
語意相似的詞在向量空間上也會比較相近。
通用性很強,可以用在不同的任務中。
這是一種基於統計方法來獲得詞向量的方法,他是 2013 年由谷歌的 Mikolov 提出了一套新的詞嵌入方法。
這種算法有2種訓練模式:
通過上下文來預測當前詞
通過當前詞來預測上下文
GloVeGloVe 是對 Word2vec 方法的擴展,它將全局統計和 Word2vec 的基於上下文的學習結合了起來。
想要了解 GloVe 的 三步實現方式、訓練方法、和 w2c 的比較。可以看看這篇文章:《GloVe詳解》
http://www.fanyeong.com/2018/02/19/glove-in-detail/