作家
登录

如何用深度学习训练一个像你一样会聊天的机器人?

作者: 来源: 2017-08-28 08:58:15 阅读 我要评论

获取数据

 

我们须要创建一个大年夜量的对话数据,在我的社交媒体上,我应用了Facebook、Google Hangouts、SMS、Linkedin、Twitter、Tinder和Slack 等着与人们保持接洽。

  • Facebook:这是大年夜部分培训数据的来源。facebook有一个很酷的功能,让你可以下载你所有的Facebook数据。包含所有的信息、照片、汗青信息。
  • Hangouts:您可以根据这个文┞仿的指导来提取聊天数据。
  • SMS:可以快速获得所有之前的聊天记录(sms备份+是一个不错的应用法度榜样),但我很少应用短信。
  • Linkedin:Linkedin确切供给了一种对象,可以在这里获取数据的归档。
  • Twitter:这个中没有足够的私家信息。
  • Tinder:这个中的对话不是数据集。
  • Slack:我的Slack方才开端应用,只有几个私有消息,筹划手动复制。

创建数据集

正如您所看到的,Hangouts数据的格局与facebook数据有一点不合,而linkedin的消息以csv格局进行。我们的目标是应用所有这些数据集来创建一个同一的文件,定名为(FRIENDS_MESSAGE,YOUR_RESPONSE)。

为了做到这一点,我编写了一个python脚本,可以在这里查看。此脚本将创建两个不呵9依υ?件。个一一个是Numpy对象(conversationDictionary.npy)包含所有输入输出对。另一个是一个大年夜的txt文件(conversationData.txt)包含这些输入输出对的句子情势,一个对应一个。平日,我爱好共享数据集,然则对于这个特定的数据集,我会保持私有,因为它有大年夜量的私家对话。这是最后一个数据集的快照。

词向量

您可以向您的聊天机械人发送消息(这种初始行动只是响应它所发送的所有内容)。

LOL,WTF,这些都是在我们的会话数据文件中经常出现的所有单词。固然它们在社交媒体范畴很常见,但它们并不是在很多传统的数据集中。平日情况下,我在接近NLP义务时的第一个直觉是简单地应用预先练习的向量,因为它们能在大年夜型主体长进行大年夜量迭代的练习。然而,因为我们有这么多的单词和缩写,而不是在典范的预先练习的单词向量列表中,是以,生成我们本身的单词向量对于确保单词精确表达是至关重要的。

为了生成单词向量,我们应用了word2vec模型的经典办法。其根本思惟是,经由过程不雅察句子中单词出现的高低文,该模型会创建单词向量。在向量空间中,具有类似高低文的单词将被置于慎密的地位。关于若何创建和练习word2vec模型的更具体的概述,请查看我的一个石友Varma罗汉的博客。

我后来懂得到TensorFlow Seq2Seq函数大年夜零开端对单词embeddings进行练习,是以我不会应用这些单词向量,尽管它们仍然是很好的实践。

大年夜与chatbot的交互中可以看到的改进办法,有很大年夜的改进空间。经由几条信息后,很快就会明白,不仅仅是进行持续的对话就行了。chabtot不克不及够把思惟联系袈溱一路,而一些反竽暌功似乎是随机的、不连贯的。下面是一些可以进步我们聊天机械人道能的办法。

  • 归并其他数据集,以赞助收集大年夜更大年夜的会话语料库中进修。这将清除聊天机械人的“小我特点”,因为它如今已经被严格练习了。然而,我信赖这将有助于产生更实际的对话。
  • 处理编码器消息与解码器消息无关的场景。例如,当一个对话停止时,你第二天就开端一个新的对话。谈话的话题可能完全无关。这可能会影响模型的练习。
  • 应用双向LSTMs,留意机制和套接。
  • 优化超参数,如LSTM单位的数量、LSTM层的数量、优化器的选择、练习迭代次数等。

如今我们创建了数据集并生成了我们的单词向量,我们就可以持续编码Seq2Seq模型了。我在python脚本中创建和练习了模型,我试着对代码进行评论,欲望你能跟着一路。该模型的关键在于TensorFlow的嵌入_RNN_seq2seq()函数。你可以在这里找到文档。

跟踪培训进展

这个项目标一个有趣的处所是,能看到收集练习时,响应是若何产生变更的。练习回路中,我在输入字符串上测试了收集,并输出了所有非pad和非eos口令。

起首,您可以看到,响应主如果空白,因为收集反复输出填充和eos口令。这是正常的,因为填充口令是全部数据集中最常见的口令。然后,您可以看到,收集开端输出“哈哈”的每一个输入字符串。这在直觉上是有事理的,因为“哈哈”经常被应用,它是对任何工作都可以接收的反竽暌功。慢慢地,你开端看到更完全的思惟和语法构造在反竽暌功中出现。如今,如不雅我们有一个经由恰当练习的Seq2Seq模型,那么就可以建立facebook messenger聊天机械人。

若何建立一个简单的fb messenger聊天机械人

这个过程并不是太难,因为我花了不到30分钟的时光来完成所有步调。根本的设法主意是,我们应用简单的express应用法度榜样建立了一个办事器,在Heroku上安装它,然后设置一个facebook页面连接。但最终,你应当有一个类似如许的 Facebook 聊天应用法度榜样。


  推荐阅读

  如何开始使用Java机器学习

Neuroph开端Java机械进修的最好对象是什么?你可以测验测验Neuroph的在线演示,看看它是怎么运行的。提示:界面看起来很旧且过时,但你可以用它来创建好梦的器械。它还得过2013的 Duke&rsq>>>详细阅读


本文标题:如何用深度学习训练一个像你一样会聊天的机器人?

地址:http://www.17bianji.com/lsqh/36945.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)