最近有朋友问到word2vec是怎么一回事,于是我又复习了一遍相关知识,记录下自己的一些思考,防止遗忘~
word2vec是获取词向量的手段,它是在NNLM基础上改进的。
训练模型本质上是只具有一个隐含层的神经元网络。
它有两种形式 ① skip-gram:从两边预测中间 ② C-BOW:从中间预测两边;
注意,这两种形式只是代表两种不同的训练方式,最终都是取输入层->隐藏层的权重,作为词向量。
训练时,以CBOW为例,假设语料库是“今天的天气真好”;模型的输入是 "今 天 的 天 真 好"六个单词的one-hot vector,输出是一堆概率,我们希望“气”出现的概率最大。
写代码的时候,通常是调用gensim库,传入语料库就可以训练出词向量了。
一些训练时的小trick:Negative Sampling,哈夫曼树
参考:[NLP] 秒懂词向量Word2vec的本质,总结word2vec(实验室师兄写的博客)