1、以前怎么计算两句话的相似度呢?就是词袋模型
我很帅 》[1(我),1(帅),1(很),0(不)]
我不帅 》[1,1,0,1]
2、现在怎么计算呢?就是把每个字转换成一个向量(也可以把一句话变成一个向量)下面是两种经典模型
CBOW简单说一下:一共N个字,上下文各两个字,每个字是一个1*N向量,对应位置是1,其余全为0.然后呢乘以一个N*K的矩阵,K就是词向量的维度,再叠加,再乘以一个K*N的矩阵再softmax,得到一个1*N的向量,与这个字做比较,计算损失就行了,bp算法,最后得到N*K的矩阵用来计算每个字的词向量。
这样是不是就完美了?但是这样一个字一个字来很慢啊,效率很重要呀,
解决方案:Hierarchical Softmax和Negative Sampling两种方法
我之前上传的资料里面有一个讲Word2vec数学原理的