我刚开始从Dan Jurafsky 的视频讲座中学习自然语言处理。在该视频的 4:56 分钟,他说对话是自然语言处理 (NLP) 中的一个难题。为什么?
为什么对话是自然语言处理中的一个难题?
对话是一个难题,因为它需要相当高级的认知功能。撇开所有较低级别的语言分析(如果处理语音、形态和句法,语音学),您很快就会遇到需要大量世界知识的解释问题。
简单的问答就可以了,受限域也更容易一些。一旦你进入正常的对话,你就会回顾你之前说过的事情,所以 NLP 系统必须识别出这一点并相应地解决参考。通常在对话中你会使用不同的参考术语:你第一次提到一个对象时,你可能会完整地描述它,但随后你会使用更短的术语来指代它。
对话也有结构。这通常被建模为会话动作,并且通常动作会有相应的响应动作。例如,一个常见的序列是问候 - 问候。然后你可能会有问题 - 响应 - 反馈。这听起来很容易,但是一旦你尝试用这样的动作来注释对话,你会发现它相当困难。据我所知,没有“语法”相当于描述对话的结构。
通常,语用意义会干扰话语的“表面”意义。一个语句实际上可以用作一个问题,或者一个问题可以是一个命令(或一个语句)。话语的语用取决于语境,也取决于对话者之间的关系。如果我与我的经理交谈,我会使用与我与孩子交谈时不同的语言。
对话/对话很难分析。因此,描述性框架仍然相当有限。您需要跟踪之前所说的内容,因为这可能会改变必须解释话语的方式。语法分析是一个相当解决的问题,词义消歧也是如此。但是语用学和会话结构仍然处于语言研究的前沿。至少几年前我还在大学教授话语分析时是这样的。
出于这个原因,聊天机器人通常不是很好。有时他们可以欺骗人们相信他们是人类说话者,但这通常是通过诡计(“smoke and mirrors”)而不是有效地处理对话结构来完成的。这一切都在nbro的答案中标有“DM”的小盒子里......
首先,我对 NLP 和 NLU 系统和概念的细节不是很熟悉,所以我将根据该主题研究员David DeVaul题为“对话系统中的自然语言理解”(2013)的幻灯片提供答案。
对话系统由不同的部分或模块组成。这是对话系统示例的图表。
这些模块中的每一个都可以引入错误,然后将其传播到管道的其余部分。当然,这是这样一个对话系统的第一个明确问题。其他问题或挑战包括
自然语言的歧义(并且有不同类型的歧义,即参见幻灯片编号 5),
同义词(即对话系统需要处理具有相同含义的不同单词或表达方式),
上下文敏感性(即相同的单词或表达在不同的上下文中可能意味着不同的东西)
语义表示(即如何表示语义)
自发讲话(即如何处理“嗯”、停顿等内容)