我知道这仍然是一个悬而未决的问题,所以我并不期望在这里看到完整的答案。我只是想找到一些方法来解决以下问题:
我有一个模型(假设它是机器人的记忆),并且不同的词语与模型中的不同对象相关联。与机器人对话就像使用数据库执行 SQL 查询。语言是一种非常难以形式化的协议。我们不能仅仅编写数百万行代码来实现某种真正的语言。但我相信实现某种自学习机制是绝对有可能的。如何实现它?是否有可能实现“从零开始”或“从少量基本词汇开始”的学习?只是想听听你们的想法。
实际上,英语是一种非常严格的语言,并且它是最容易进行人工智能实验的语言之一。许多其他语言允许您更改单词的顺序(例如)。在某些情况下,改变顺序会改变整个含义,或者只是增加一些语调。我真的不知道如何教机器人理解这些东西。
回答:
第一步,要将这个游戏提升到一个新的水平,就是…
…对现有技术有一个非常清晰的认识!
(请原谅我说,这个问题并没有表明你对这个问题有如此广泛的了解[而且你并不孤单,算我一个;-)])
即使,也许特别是在你打算应用全新的技术和模型的情况下,审查当前和过去实践的文献似乎很重要。除了可能识别出可以在新实现中改编或重用的元素之外,对该领域的调查将提供对问题本质的深刻理解。
我个人尝试过——在各种场合和多次!——要么用朴素的方法,要么用肤浅的方法来解决广泛定义的问题。 使用朴素的方法,人们对问题的真实性质和范围只有非常轻微的了解。 而肤浅的方法使我们更好地掌握了领域知识以及相关的工具,但这也可能具有误导性,因为如果没有更深入的理解,我们倾向于误读/误解提供给我们的新材料,并且还会滥用某些工具(有点像“擅长用锤子”的人,对他来说很多东西看起来都像钉子…)
在 NLP 领域,尤其容易犯这些错误。 那是因为
- 常识似乎是必需的:毕竟,一个母语是英语的孩子理解诸如
“他并非真正地是一个专家”
“他真的不是一个专家”
(对楼主提到的英语单词顺序问题眨一下眼)之类的微妙之处 - 我们生活在一个如此激动人心的时代,技术和知识方面:处理能力、编程语言和工具、数学技术、可负担的语料库的可用性…… 仅举几例使此时此刻如此特别的事情。
我绝没有阻止你进行聊天机器人尝试的想法,我只是希望这个漫长而通用的阐述能够鼓励你在跳跃之前先看看,因为从长远来看,这确实会为你节省时间,我想体现在两个方面:
- 为你提供一些参考框架(再次,即使你的目的是“跳出这些框架”)
- 也许可以引诱你重新定义问题,例如将其限制在特定的对话领域(体育、健康或特定大学校园的生活……)或通过关注问题的特定方面(语义意识、流畅、听起来自然的语法、使用口语形式……)
祝你好运;-)