与开发聊天机器人的传统编程相比,机器学习有哪些优势?

人工智能 机器学习 自然语言处理 比较 聊天机器人 问答
2021-10-24 20:08:33

我目前正在构建一个聊天机器人。到目前为止,我所做的是收集可能的问题/训练数据/文件,并使用 Apache OpenNLP 从中创建模型;该模型能够预测训练数据中的所有问题,并且无法预测新问题。

我可以编写一个程序,将问题/单词与训练数据相匹配并预测答案,而不是执行上述所有操作——使用机器学习算法有什么优势?

我对此进行了广泛的搜索,我得到的只是,在机器学习中,不需要更改算法,唯一的变化是训练数据,但编程也是如此:变化将在训练数据中.

2个回答

在我看来,机器学习在对话式 AI 系统中效果不佳。意图识别通常没问题,因此如果用户提出问题(“我想预订航班?”、“伦敦的天气如何?”),就可以得到用户想要的东西,但之后的任何事情都会很快变得难以处理,尤其是超越简单问答对的多步骤对话。

我的建议是将可能的对话计划为流程图(更像树/图表,因为在任何点都可以有多个分支),然后编写一个程序,根据用户输入解释图表并给出适当的回复。您还需要一些会话记忆来跟踪用户提到的任何信息。这在 ML 系统中也很难做到。

对于一个非常简单的框架开始,看看ELIZA它已有半个世纪的历史,但您仍然可以将其作为起点。

(免责声明:我在一家制造对话式人工智能系统的公司工作)

Sebastian Thrun 在他的一次在线采访中曾表示,他认为会话解决方案是大规模机器学习和基于规则的编程的结合。

聊天的问题是我们的期望非常高,这注定了早期解决方案的失败。对于 ML 方面,我们需要大量数据,虽然可能有大量数据可用,但它们存在高度偏差和不平衡;他们大多专注于一个领域(专业上下文)并一遍又一遍地重复使用相同的句子公式,因此学习找到了一个舒适的极端案例解决方案并拒绝学习其他任何东西。人们是如此可预测,所以他们是一个无用的原始数据来源。

一种方法可能是使用精心构建的规则来生成 ML 可以从中学习的数据,这些规则可以保证广泛的上下文适用性和句子结构的变化。