在Keras中实现word2vec

安德鲁

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

格言

这可能吗?

您已经自己回答了:是的。除了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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章