Word2vec
在之前的学习中提到过one-hot向量表示方式,虽然它们构造起来很容易,但通常并不是一个好选择。一个主要的原因是,one-hot 词向量无法准确表达不同词之间的相似度,如我们常常使用的余弦相似度。 例如 beautiful和lovely是两个表示含义相近的词,他们应该在向量空间上有一定的相似度,而相对的,ugly这样的词距离他们就应该很远,Word2Vec 词嵌入工具的提出正是为了解决上面这个问题,它将每个词表示成一个定长的向量,并通过在语料库上的预训练使得这些向量能较好地表达不同词之间的相似和类比关系,以引入一定的语义信息。基于两种概率模型的假设,我们可以定义两种 Word2Vec 模型 Skip-Gram 跳字模型 假设背景词由中心词生成,即建模 P(wo∣wc),其中 wc 为中心词,wo 为任一背景词; CBOW (continuous bag-of-words) 连续词袋模型 假设中心词由背景词生成,即建模 P(wc∣Wo),其中 Wo 为背景词的集合。 在这里我们主要介绍 Skip-Gram 模型的实现,CBOW 实现与其类似,读者可之后自己尝试实现。后续的内容将大致从以下四个部分展开: PTB 数据集 Skip-Gram 跳字模型 负采样近似 训练模型 PTB数据集 为了训练 Word2Vec 模型,我们就需要一个自然语言语料库,模型将从中学习各个单词间的关系