如何创建一个智能聊天机器人?

35

我知道这仍然是一个未解决的问题,所以我不指望在这里看到完整的答案。我只是想找一些解决下一个问题的方法:

我有一个模型(假设它是机器人的记忆),不同的单词与模型中的不同对象相关联。与机器人交谈就像执行带有数据库的sql查询。语言是一个非常难以形式化的协议。我们无法只写一百万行代码来实现某种真实语言。但我相信绝对可以实现一些自我学习机制。如何实现呢?是否可以从零开始或从几个基本单词开始学习?只是想听听你的想法。

实际上,英语是一种非常严格的语言,并且是用于AI实验的最简单的语言之一。许多其他语言允许您更改单词的顺序(例如)。在某些情况下,修改的顺序可能会改变整个含义或仅添加一些语调。我真的没有任何想法如何教导机器人这些事情。


1
我建议您使用http://rebot.me网站创建自己的个人聊天机器人。这个服务可以创建一个名为“SimSimi”的示例聊天机器人,网址是http://rebot.me/simsimi。注意:我是该项目的创始人/开发者。 - Farid Movsumov
这里有一个想法。如果你能收集大量的训练数据(例如来自亚马逊机械土耳其人),那么你可以使用循环神经网络(例如LSTM)将自然语言问题映射到SQL查询。我在https://mybot.be中采用了类似的方法,其中我使用LSTM将自然语言问题映射到“问题类”,然后从同一桶中提供自然语言答案。 你仍然需要解决“上下文”问题(如如何处理后续问题,例如“为什么?”)。我自己还没有解决这个问题。 - Ruben
在Python中,您可以借助ChatterBot创建自己的聊天机器人,通过提问和交流来训练它自己,并且我们还可以通过.txt文件对其进行训练。 - Rishabh Jhalani
6个回答

24

第一步,将此游戏推向更高级别,是...

...要有清晰的先前技术知识视角!

(请原谅我这样说,问题并未表明您对此事具有如此广泛的见解[您并不孤单,我也是;-)])

即使您的意图是运用全新的技术和模型,审查当前和过去的实践文献似乎很重要。除了可能识别可在新实现中适应或重新使用的元素外,对该领域进行调查还将深入理解问题的本质

个人尝试过在多种情况下采用天真的方法或二年级的方法来解决广义的问题。通过天真的方法,我们只能对问题的真正本质和范围有一些轻微的想法。而二年级则可以使我们更好地掌握领域知识和相关工具,但这也可能会误导我们,因为没有更深入的理解,我们往往会错误地阅读/理解向我们提供的新材料,并误用某些工具(有点像“擅长用锤子”的那个家伙,对他来说很多东西看起来都像钉子...)

在自然语言处理领域特别容易犯这些错误。那是因为

  • 似乎只需要常识:毕竟,一个以英语为母语的孩子可以理解微妙之处,例如
       "He's not really an expert"
       "He's really not an expert"
    (向原帖作者提到英语语言中单词顺序的一点小提示)
  • 我们生活在如此令人兴奋的时代,技术和知识方面:处理能力、编程语言和工具、数学技术、可负担得起的语料库的可用性...这里只是其中一些使这个时刻如此特殊的事情。

我并不想打击你的聊天机器人计划,但我希望这篇长而通用的阐述能够让你三思而后行,因为这真的会在长期节省你时间,我认为有两个方面:

  • 提供一些参考框架(即使你的意图是“跳出这些框框”)
  • 也许可以鼓励你重新定义问题,例如通过将其限制在特定的对话领域(体育、健康或某个大学校园内的生活...)或者专注于问题的某个方面(语义意识、流畅、自然的语法、使用口语化形式...)

祝你好运;-)


9

请查看MegaHAL实现的一些想法。我们在我们的IRC频道中使用了这个机器人的变体已经很长时间了,他有时似乎是我们许多主导人格的智能混合。


6
你需要“训练”机器人——每次机器人回答问题后,你或测试者需要对答案进行评分——如果答案好/合理,给予高分;如果答案不好,则给予低/负面评分。将来可以使用这些评分来选择答案,这就是机器人学习的方式...

3
这太简单了。正确的答案取决于对话的背景,而不仅仅是最后一个回答。让机器人给出合理的答案(例如与其进行有意义的对话)仍然是一个基本未解决的问题。你似乎在说这是解决所有问题的方法。 - Toad
2
这只是一个学习技巧,远非开始。获取“好成绩”的算法才是关键所在。没有好的人工智能算法,这个技巧无法让你得到一台会说话的机器... - Dani
这是一种更好的方法。 - Rishabh Jhalani

4

《人工智能编程范例》中有一份精彩的Eliza描述。只需几天时间,您就可以实现一个简单的Eliza机器人。

虽然这不是一个学习算法,但令人惊讶的是,从如此简单的东西中得到的答案可以如此逼真。


-1

你可以在BOT libre上创建自己的聊天机器人,http://www.botlibre.com

这些机器人可以学习、训练、编写脚本,你也可以为它们编程或让它们自己编程。

该网站支持将你的机器人嵌入到自己的网站中,具有REST API访问、Android、IRC、Twitter等功能。即使是商业机器人也可以免费托管。


-3

AIML来自AliceBot项目,可能会对您有所帮助。它是一个完整的XML模式(如果这不让您望而却步),用于与AI相关的分支。

维基百科上的一个例子:

<category>
  <pattern>WHAT IS YOUR NAME</pattern>
  <template>My name is <bot name="name"/>.</template>
</category>

RebbeccaAIML 是一个非常好的文档化实现。


Rebecca文档页面全部为空白。 - num3ri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接