
1.4 交互式应用程序——聊天机器人与语音助手
NLP应用可以被大致分为两类:一类为交互式应用程序,其重点关注的是人机对话;另一类为非交互式应用程序,其重点关注的是一个文档或一组文档。
在交互式应用程序中,用户与系统能够实时交谈或互发信息。常见的交互式应用程序包括聊天机器人和语音助手,如智能音箱和客户服务应用程序等。这些应用程序的交互性要求系统要做出快速、几乎即时的响应,因为用户正在等待系统的响应。根据交谈习惯,用户通常不会容忍延迟超过几秒钟的回复。这些应用的另一个特点是用户输入通常很短,在口语交互情景下,用户的语音输入可能只有几个词或只持续几秒钟。这意味着依赖于大量可用文本的分析方法将无法很好地适用于这些应用程序。
除了NLU本身之外,实现一个交互式应用程序很可能还需要图1.2中的一个或多个其他模块。显然,具有语音输入的应用程序将需要语音识别模块,而对用户以语音或文本做出响应的应用程序则需要自然语言生成模块和文本到语音转换模块(如果系统的响应是语音)。任何需要完成多轮对话的应用程序还需要某种形式的对话管理,用于跟踪用户之前在对话中说了什么,并在后续组织系统响应时将这些信息考虑在内。
意图识别是交互式自然语言应用程序的一个重要方面,这将在第9章和第14章中进行详细讨论。意图本质上是用户在发表言论时的目标或目的。显然,了解用户的意图是为用户提供正确信息的核心。除了意图之外,交互式应用程序通常还需要识别用户输入中的实体词或实体,其中实体是系统为了解决用户意图而需要的附加信息。例如,如果一个用户说:“我想预订一张从波士顿到费城的机票。”意图将是“预订机票”,相关的实体是出发地和目的地。由于预订航班还需要旅行日期,因此日期也是实体。因为用户在这句话中没有提到旅行日期,所以系统接下来应该询问用户日期问题,这个过程叫作槽填充(slot filling),将在第8章中进行讨论。实体、意图和用户所提问题之间的关系如图1.3所示。

图1.3 用户所提旅行问题中的意图和实体
请注意,意图代表一句话的整体含义,但实体只代表这句话中特定部分的含义。这个区别很重要,因为这涉及选择什么样的机器学习模型来处理这些信息。第9章将更详细地讨论这个话题。