在Keras实现word2vec

问题描述 投票:10回答:1

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

nlp deep-learning keras theano word2vec
1个回答
5
投票

这可能吗?

你已经自己回答了:是的。除了word2veckeras,它使用gensim,这里是另一个没有额外依赖的CBOW implementation(以防万一,我不隶属于这个回购)。您可以将它们用作示例。

我该如何适应模型?

由于训练数据是大型句子语料库,最方便的方法是model.fit_generator,它“使模型适合由Python生成器逐批生成的数据”。生成器无限期地运行,产生(word, context, target) CBOW(或SG)元组,但是您手动指定sample_per_epochnb_epoch来限制训练。这样你就可以解析句子分析(标记化,单词索引表,滑动窗口等)和实际的keras模型,再加上save a lot of resources

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

CBOW最小化中心词的预测和真实分布之间的距离,因此最简单的形式categorical_crossentropy将这样做。如果你实现negative sampling,它更复杂,但效率更高,则损失函数会更改为binary_crossentropy。不需要自定义丢失功能。

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

另一个有用的参考:word2vec implementation在纯numpyc

© www.soinside.com 2019 - 2024. All rights reserved.