我可以使用哪些方法来使用神经网络创建一个简单的聊天机器人?

人工智能 神经网络 循环神经网络 参考请求 长短期记忆 聊天机器人
2021-11-02 21:38:29

我想开始尝试神经网络,所以我决定使用它们制作一个聊天机器人(比如 Cleverbot,反正它不是那么聪明)。

我四处寻找一些文档,发现很多关于一般任务的教程,但很少有关于这个特定主题的教程。我发现的那个只是暴露了结果,而没有提供有关实施的见解。那些做的,做得很浅(seq2seq 上的 TensorFlow 文档页面是缺乏的,恕我直言)。

现在,我觉得我可能或多或少地理解了这个原理,但我不确定,我什至不知道如何开始。因此,我将解释我将如何解决这个问题,并且我希望得到关于这个解决方案的反馈,告诉我我错在哪里,并且可能有任何链接到详细的解释和关于这个过程的实践知识。

  1. 我将用于该任务的数据集是我所有 Facebook 和 WhatsApp 聊天记录的转储。我不知道它会有多大,但可能还不够大。目标语言不是英语,因此我不知道在哪里可以快速收集有意义的对话样本。

  2. 我将从每个句子中生成一个思想向量。实际上,仍然不知道如何;我在 deeplearning4j 网站上找到了 word2vec 的一个很好的例子,但没有一个句子。我了解如何构建词向量以及为什么构建词向量,但我找不到句子向量的详尽解释。

  3. 我将使用思想向量作为输入和输出来训练神经网络。我不知道它应该有多少层,哪些必须是 LSTM 层。

  4. 然后应该有另一个神经网络能够将思想向量转换为组成句子的字符序列。我读到我应该使用填充来弥补不同的句子长度,但我想念如何编码字符(代码点是否足够?)。

1个回答

我建议先阅读这篇博文您可能会蚕食代码以创建一个 RNN,该 RNN 接受对话的一个语句,然后继续输出该语句的答案。

那将是您项目的简单版本,完全没有词向量和思想向量。您只是在输入字符,因此您无需担心拼写错误。

下一个更复杂的步骤是输入词向量而不是字符。这将允许您推广到不属于您的训练数据的单词。它可能仍然只是对代码的微小修改。

如果你坚持使用思想向量,你应该开始阅读NN translation并且可能尝试获得一个预训练的编码器网络。或者在您的语言的大型翻译语料库上自行对其进行预训练。

使用您的小型训练集,您可以做的最好的事情可能是大规模过度拟合,直到您的系统逐字重新创建您的训练数据。使用词向量将允许您的系统对“我今天打败猫”给出相同的答案。正如您将训练数据提供给“我昨天踢了狗”一样。

我不确定认为向量会产生很大的不同。如果你让解码器学习。