Nlp 在Keras中实现word2vec

Nlp 在Keras中实现word2vec,nlp,deep-learning,keras,theano,word2vec,Nlp,Deep Learning,Keras,Theano,Word2vec,我想在keras中实现word2vec算法,这可能吗? 我怎样才能适合这个型号?我应该使用自定义损耗功能吗 这可能吗 你自己已经回答过了:是的。除了使用了gensim,这里还有一个没有额外依赖关系(以防万一,我不属于这个回购协议)。你可以用它们作为例子 我怎样才能适合这个型号 由于训练数据是大型的句子语料库,最方便的方法是“根据Python生成器批量生成的数据拟合模型”。生成器无限期运行,生成(单词、上下文、目标)CBOW(或SG)元组,但您可以手动指定sample\u per\u epoch和

我想在keras中实现word2vec算法,这可能吗? 我怎样才能适合这个型号?我应该使用自定义损耗功能吗

这可能吗

你自己已经回答过了:是的。除了使用了
gensim
,这里还有一个没有额外依赖关系(以防万一,我不属于这个回购协议)。你可以用它们作为例子

我怎样才能适合这个型号

由于训练数据是大型的句子语料库,最方便的方法是“根据Python生成器批量生成的数据拟合模型”。生成器无限期运行,生成
(单词、上下文、目标)
CBOW(或SG)元组,但您可以手动指定
sample\u per\u epoch
nb\u epoch
,以限制训练。通过这种方式,您可以将句子分析(标记化、单词索引表、滑动窗口等)与实际的keras模型解耦

我应该使用自定义损耗功能吗

CBOW使中心词的预测分布和真实分布之间的距离最小化,因此以最简单的形式
分类法\u crossentropy
就可以做到这一点。 如果您实现了更复杂但效率更高的功能,则损失函数将更改为。自定义丢失功能是不必要的

对于任何对数学和概率模型的细节感兴趣的人,我强烈推荐斯坦福大学的CS224D课程。关于word2vec、CBOW和Skip Gram


另一个有用的参考资料:在pure
numpy
c

中,我在问之前找到了这个,但它太旧了,太乱了。这里有一个更新的实现:这是一个老问题,但感谢您的详细回答!