淺談文字詞向量轉換的機制embedding

李博Garvin發表於2018-03-12

首先感謝大家對上一篇文章的關注吧,建議看這篇文章前先看下上一篇我推送的《20行程式碼實現電影評論情感分析》,上篇文章其實留了個坑,不過不一定坑到大家,因為可能90%的同學可能不會去認真讀一遍程式碼,或者去跑一下程式。上文說道關於文字詞向量轉換的embedding相關的內容,其實是沒有詳細說明的,那這一篇我嘗試著去解釋一些,說的不對的還望各位大神指正,我也是自學的,沒人一起討論,可能有理解不到位的地方。


其實機器學習演算法,無非是矩陣的加減乘除,對於文字string型的資料,必然需要把這類資料轉成數值型的向量,才能方便計算。文字轉詞向量就是起到這樣的作用,當然,方法有很多,這裡我們提到的機制有點類似於演算法word2vector,它會把文字轉成帶有語意的向量。


什麼是帶有語意的向量?就拿上一篇推送裡出現的tflearn.embedding它起到的作用說起。它其實是通過大量的語句分析挖掘出詞語之間的相似度,舉個簡單的例子,假設有大量的語句中都出現“美女喜歡帥哥”、“美女喜歡好看的男人”,那麼演算法會挖掘出“帥哥”和“好看的男人”可能是相似的語意,於是可以通過向量表示,以下向量純屬yy,為了舉例:

美女=[3,5,7]

帥哥=[5,3,9]

好看的男人=[5.1,2.9,9]


“帥哥”和“好看的男人”會被用距離更近的向量表示起來。另外,向量間的距離也可能會建立聯絡,比方說“北京”是“中國”的首都,“巴黎”是“法國”的首都,那麼向量:|中國|-|北京|=|法國|-|巴黎|


通過embedding函式把所有詞向量距離計算出來後,其實每句話就可以通過詞向量組裝成矩陣,簡單的方式是第一行是第一個詞向量,第二行是第二個。那麼兩句話的語意相似度就可以通過簡單的矩陣減法計算啦,感謝收看。


上一篇《20行程式碼實現電影評論情感分析》程式碼地址,我只放了一點點測試資料,完整的資料大家自己去IMDB下吧:https://github.com/jimenbian/sentiment-analysis

相關文章