在Keras实现word2vec

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Keras实现word2vec相关的知识,希望对你有一定的参考价值。

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

答案

这可能吗?

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

以上是关于在Keras实现word2vec的主要内容,如果未能解决你的问题,请参考以下文章

在 keras 中使用预训练的 gensim Word2vec 嵌入

如何在 Gensim 的 Word2Vec 中正确使用 get_keras_embedding()?

keras使用word2vec pretrained vector注意事项

从零开始学自然语言处理——手把手带你用代码实现word2vec

word2vec 的 RNN 模型 (GRU) 到回归不学习

在Keras中进行文本分类时出错