在Keras实现word2vec

And*_*rás 10 nlp theano word2vec deep-learning keras

我想在keras中实现word2vec算法,这可能吗?我该如何适应模型?我应该使用自定义丢失功能吗?

Max*_*xim 5

这可能吗?

您已经自己回答了:是的。除了word2veckeras使用的之外gensim,这是另一个没有额外依赖项的CBOW实现(以防万一,我不隶属于此仓库)。您可以使用它们作为示例。

我如何拟合模型?

由于训练数据是庞大的句子语料库,所以最方便的方法是model.fit_generator,它“使模型适合Python生成器逐批生成的数据”。生成器无限期地运行,生成(word, context, target)CBOW(或SG)元组,但是您可以手动指定sample_per_epochnb_epoch限制训练。这样,您就可以使句子分析(标记化,单词索引表,滑动窗口等)和实际的keras模型脱钩,同时节省大量资源

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

CBOW最小化了中心词的预测分布与真实分布之间的距离,因此以最简单的形式即可categorical_crossentropy做到。如果您实施负采样(这比较复杂,但效率更高),则损失函数将变为binary_crossentropy。自定义丢失功能是不必要的。

对于任何对数学和概率模型的细节感兴趣的人,我强烈推荐斯坦福大学的CS224D类。这是有关word2vec,CBOW和Skip-Gram 的讲义

另一个有用的参考:pure 和中的word2vec实现numpyc