word2vec

将词表征为实数值向量的高效工具,采用的模型有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语料,没有全局

你可能感兴趣的:(word2vec)