上篇讲到,一般的one-hot编码,在一定程度上是没有考虑语义的。这样就无法求得语义相似度。所以我们采用分布式词向量来表示单词。
但是这个分布式词向量我们怎么得到呢?
一般通过一些深度学习的模型来训练得到。
比如Skip-gram,glove,gensim,cbow等。
计算词向量之间的相似度。
我们: [0.1, 0.2, 0.4, 0.2]
爬山: [0.2, 0.3, 0.7, 0.1]
运动: [0.2, 0.3, 0.6, 0.2]
昨天: [0.5, 0.9, 0.1, 0.3]
每个向量我们可以认为是代表的是单词的意思。
也可以通过词向量来计算相似词。
如
man------>woman
那么boy---->girl。
意思相近的词,或者词性相近的词,距离会缩短,而词性或者意思不相近的词,之间的距离会比较大。
这一定程度上代表了词意。
以上是词向量的表示,那么我们在已知词向量的情况下,怎么表达句子的向量呢?
最简单的就是平均法。
我们[0.1,0.2,0.1,0.3]
去[0.3,0.2,0.15,0.2]
运动[0.2,0.15,0.4,0.7]
最简单的就是平均法则,就是求句子中所有词向量的平均值。
我们 去 运动 的句子向量为:[0.1+0.3+0.2,0.2+0.2+0.15 ,0.1+0.15+0.4 ,0.3+0.2+0.7]/3
= [0.2,0.18,0.22,0.4]
除了average方法外,我们还可以用lstm/rnn解决。