# 7.11.4
## one-hot表示句子中的詞
英語中有170000個詞,如果以one-hot向量表示,每個詞將會是一個170000維的向量,且只有一個元素為1,其他都為0。這不但造成空間浪費,還無法表達詞與詞之間的相關性。
## Word2Vec模型
Word2Vec模型基於類似自編碼器的兩層神經網路,可以將詞從詞表的高維向量空間,映射到低維詞向量空間,並且詞向量包含了詞與詞之間的相關性。Word2Vec主要有兩種方法,CBOW和skip-gram。
### CBOW
透過將句子中的一個單字w(t)的上下文出現的詞(one-hot向量)輸入類似編碼器的神經網路得到降維的詞向量,再透過解碼器預測w(t)是各種單字的機率$[p_1 p_2 ... p_V]$。
神經網路的訓練方法:從句子資料集中,選取其中一個詞作為目標詞,並將上下幾個詞作為輸入得出預測詞,再以預測詞和目標詞的交叉商損失,對網路進行訓練。
### skip-gram
也類似,只是反過來用一個詞,預測它上下文的詞。

以上圖為例,(played,piano), (the,piano), (beautifully,piano), (at, piano)是CBOW的訓練集,而(played, piano), (the, piano), (beautifully, piano), (at, piano)是skip-gram的訓練集。
而一個句字可以產生許多訓練資料(如下圖),一個大型資料庫又有大量的句子可供訓練(如[wiki資料庫](https://zh.wikipedia.org/wiki/Wikipedia:%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8B%E8%BD%BD))。

### 訓練方法
可以使用gensim函式庫進行訓練,可以加快訓練速度。在處理中文時,可搭配使用jieba函式庫進行斷詞。
問題:CBOW和skip-gram的優缺點?