如何同时使用 word2vec 和 RNN?

Posted

技术标签:

【中文标题】如何同时使用 word2vec 和 RNN?【英文标题】:How to use word2vec and RNN together? 【发布时间】:2016-06-26 21:45:53 【问题描述】:

所以,我在 Java 中使用 word2vec,并尝试以某种方式对其进行训练,以便它为我提供单词和句子的向量表示。

我可以使用它来将输入输入神经网络,以根据 word2vec 数据获得响应吗?我打算在这个的帮助下制作一个聊天机器人。

【问题讨论】:

所以您想使用 word2vec 获得一个单词的向量表示,然后将该向量用作 RNN 的输入?在某种程度上,word2vec 就像 RNN 的嵌入函数,但单独训练它?还是联合? 我认为将其用作 RNN 的输入会更有益。我想一起训练他们。你怎么看?什么是更好的方法? @galloguille 如果你能帮我解决这个问题,那就太好了。 嗯,我对 NLP 了解不多,但我想你可以使用预训练的 word2vec 来生成词嵌入,然后使用该嵌入作为 RNN 的输入,所以你不会需要自己训练word2vec。 但即使是从单词中获取嵌入作为向量,我也需要训练我的 word2vec,然后将其用作 RNN 的输入进行训练。不是吗? 嗯,ypu 可以使用预训练的 word2vec,因此您只需要使用向量作为输入来训练 RNN。 【参考方案1】:

除了@galloguille 的 cmets,您还可以使用预训练的 word2vec 的词向量来初始化您的 RNN。 RNN 可以从单词序列中学习来预测下一个单词。一个很好的示例代码,你可以在这里找到 - https://github.com/larspars/word-rnn。

这里有很好的聊天机器人当前状态的集合 - https://stanfy.com/blog/the-rise-of-chat-bots-useful-links-articles-libraries-and-platforms/

据我了解,大多数有效的聊天机器人(目前)并不直接使用 RNN 来回答问题,而是在第一步中尝试(从一组固定的意图)预测问题的意图。根据每个意图,他们计算出一些可行的见解和对问题的合乎逻辑的回答。

【讨论】:

那么最好的方法是什么?而不是 RNN? 如果您想通过深度学习来玩转文本生成,RNN 是一个不错的方法。但是,如果您希望在现实世界的应用程序中部署聊天机器人,那么深度学习还没有出现。您必须硬编码用户的可能意图(基于用例)并将每个问题与意图相匹配,然后再次对特定问题的一组固定响应进行硬编码。

以上是关于如何同时使用 word2vec 和 RNN?的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow实现RNN及Word2Vec

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

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

使用带有 LSTM 的预训练 word2vec 进行单词生成

6-1RNN循环神经网络

语音识别食用指南