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

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

我有一个模型(假设它是机器人的记忆),并且不同的词语与模型中的不同对象相关联。与机器人对话就像使用数据库执行 SQL 查询。语言是一种非常难以形式化的协议。我们不能仅仅编写数百万行代码来实现某种真正的语言。但我相信实现某种自学习机制是绝对有可能的。如何实现它?是否有可能实现“从零开始”或“从少量基本词汇开始”的学习?只是想听听你们的想法。

实际上,英语是一种非常严格的语言,并且它是最容易进行人工智能实验的语言之一。许多其他语言允许您更改单词的顺序(例如)。在某些情况下,改变顺序会改变整个含义,或者只是增加一些语调。我真的不知道如何教机器人理解这些东西。


回答:

第一步,要将这个游戏提升到一个新的水平,就是…

…对现有技术有一个非常清晰的认识!

(请原谅我说,这个问题并没有表明你对这个问题有如此广泛的了解[而且你并不孤单,算我一个;-)])

即使,也许特别是在你打算应用全新的技术和模型的情况下,审查当前和过去实践的文献似乎很重要。除了可能识别出可以在新实现中改编或重用的元素之外,对该领域的调查将提供对问题本质的深刻理解。

个人尝试过——在各种场合和多次!——要么用朴素的方法,要么用肤浅的方法来解决广泛定义的问题。 使用朴素的方法,人们对问题的真实性质和范围只有非常轻微的了解。 而肤浅的方法使我们更好地掌握了领域知识以及相关的工具,但这也可能具有误导性,因为如果没有更深入的理解,我们倾向于误读/误解提供给我们的新材料,并且还会滥用某些工具(有点像“擅长用锤子”的人,对他来说很多东西看起来都像钉子…)

在 NLP 领域,尤其容易犯这些错误。 那是因为

  • 常识似乎是必需的:毕竟,一个母语是英语的孩子理解诸如
       “他并非真正地是一个专家”
       “他真的不是一个专家”
    (对楼主提到的英语单词顺序问题眨一下眼)之类的微妙之处
  • 我们生活在一个如此激动人心的时代,技术和知识方面:处理能力、编程语言和工具、数学技术、可负担的语料库的可用性…… 仅举几例使此时此刻如此特别的事情。

我绝没有阻止你进行聊天机器人尝试的想法,我只是希望这个漫长而通用的阐述能够鼓励你在跳跃之前先看看,因为从长远来看,这确实会为你节省时间,我想体现在两个方面:

  • 为你提供一些参考框架(再次,即使你的目的是“跳出这些框架”)
  • 也许可以引诱你重新定义问题,例如将其限制在特定的对话领域(体育、健康或特定大学校园的生活……)或通过关注问题的特定方面(语义意识、流畅、听起来自然的语法、使用口语形式……)

祝你好运;-)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注