人们可以用语言来进行交流,表达自己的意愿,传递各种各样的信息。每个人对相同的词的理解都是不尽相同的,你所能做的就是尽可能猜测你的话语是如何影响人们,你才有机会让别人感受到你想让他们感受到的东西。
我们表达一个词的意思,可以用一句话,一个相近的词,符号等等。
传统NLP是将词当作一个离散的符号,是一种局部表示方法。词可以用单热向量表示(one-hot vector)motel=[0 0 0 0 0 0 0 1 0 0 0]hotel=[0 0 0 0 1 0 0 0 0 0 0]
(只是大概表示)向量维度可以很大,可达上几十万维。这也是传统词表示方法的缺陷,难以发现词之间的关系,以及难以捕捉句法(结构)和语义(意思)之间的关系。
现在用词向量表示(word vector)也叫词嵌入(word embeding)基本思想是把每个词表征为K维的实数向量(每个实数都对应着一个特征,可以是和其他单词之间的联系),将相似的单词分组映射到向量空间的不同部分。也就是Word2Vec能在没有人为干涉下学习到单词之间的关系。如:king- man + woman = queen.
bank=(0.286,0.972,−0.177,−0.107,0.109,−0.542,0.349,0.271)T
正因为用不同的实数表示,而不是像one-hot vector那样只用0,1表示,词向量在交流中可以使用50维度来表示,计算机可以使用300维度,要是为了实现最大性能,可以提高到上千维。即使是上千维也比one-hot vector几十万维小太多。
计算一句话当中每个词出现的概率:


目标方程:对每一个位置t=1,...,T时刻,预测一个固定窗口大小为m的词,给定中心词Wj.
Likelihood=L(θ)=t=1∏T−m≤j≤mj≤0∏P(Wt+i∣Wt;θ)
其中θ是将要被优化的所有变量
J(θ)为损失函数:
J(θ)=−T1logL(θ)=−T1t=1∑T−m≤j≤mj=0∑logP(wt+1∣wt;θ)
最小化目标函数等价于最大化预测精度。