将词表征为实数值向量的高效工具,采用的模型有CBOW(Continues bag-of-words连续词袋模型)和Skip-Gram两种。
word2vec通过训练,可以把对文本内容的处理简化为K维向量空间中的向量运算
词向量:把一个词表示成一个向量
One-hot Representation
维度是词典的大小
Distributed Representation
维度以50,100比较常见
CBOW:用上下文预测目标值
skip-gram:用一个词来预测一段目标上下文
word2vec就是一个3层的神经网络,输入层,隐藏层,输出层
把训练数据拆成(A,B)这种元组,cbow和skipgram两种
用onehot方式分别代表A或B,A为x,B为y。
输入模型进行训练
https://towardsdatascience.com/learn-word2vec-by-implementing-it-in-tensorflow-45641adaf2ac
https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/
案例:
Hey, this is sample corpus using only one context word
一个词预测windows窗口的上下n个词
this这个词是 [1,v] 矩阵,两个W,input-Hidden矩阵[v,n], hidden-Output矩阵[n,v],targe的矩阵是[1,v]
所以上面的图,this这一个[1,v]矩阵乘以[v,n]的矩阵,得到[1,n]的隐藏层
如上图,隐藏层乘以hidden-Output矩阵,[1,n]*[n,v] 得到target的[1,v]
这个target进行softmax,与真实的target计算loss
这是前向传播,通过loss,进行bp,更新两个w,最终用第一个w[v,n],作为每个词的词向量
word2vec的缺点:
一个词只有一个向量,但苹果这个词,在我们语义中可以代表两个意思。
实用的是滑动的windows,受限于local语料,没有全局