内容提要
对话式人工智能是模仿人类交流的虚拟代理和聊天机器人,能够与人类进行对话。开发这些虚拟助手需要解决自然语言理解、对话管理和自然语言生成等关键挑战。解决方法包括生成训练数据、选择适当的模型、改进实体提取、正确分类意图和设计合适的回应。随着对话式人工智能的发展,聊天机器人在处理复杂任务和个性化对话方面变得越来越好。
延伸解读
从零构建聊天机器人的数据困境
文章指出,当开发者从零开始构建聊天机器人时,往往缺乏足够的训练数据,这与替换现有FAQ系统时能获得大量数据的情况不同。此时,开发者需要生成合成训练数据,例如使用基于模板的数据生成器来产生用户查询。此外,在机器人初步完成后,可先向有限用户开放,以收集真实数据并持续升级训练集。这一过程强调了数据积累的渐进性,而非一蹴而就。
多语言与混合语言场景的模型选择
文章提到,开发者通常在特定语言和领域训练聊天机器人,而现有预训练模型也多为单语言或领域特定。但在多语言混杂的地区,用户可能输入混合语言查询。对此,文章建议使用在多语言上训练的模型,如LaBSE,该模型在109种语言上训练,能识别不同语言中的相似词。作者在实际项目中应用后效果良好,这为处理混合语言查询提供了可行方案。
实体提取错误的实用补救策略
实体提取可能因上下文相同但实体不同、低置信度误判、部分提取或单字无上下文而出错。文章提出的解决方案包括:增加训练示例(但存在上限)、为已知值集(如城市、国家)定义正则表达式模式,以及利用模型低置信度触发自定义组件进行校正。例如,当“IIT Delhi”被低置信度预测为城市时,可查询数据库,若城市表中不存在则转向其他表,最终在机构表中找到并纠正。
对话管理与自然语言生成中的用户体验
对话管理需处理用户的后续互动,文章建议不仅设计“ happy path”,还要覆盖“unhappy path”以优雅处理偏离。在自然语言生成方面,回复应匹配助手的人格和语气,避免过于机械或过于熟悉。例如,对于错误输入,不应说“你输入了错误查询”,而应更谦和地表达。这强调了回复设计对用户参与度的重要性,而不仅仅是功能正确。
Q&A
开发对话式AI聊天机器人时,主要面临哪三大技术挑战?
主要挑战分为三个部分:自然语言理解(NLU)、对话管理(Dialogue Manager)和自然语言生成(NLG)。NLU负责理解用户对话,包括意图分类和实体提取;对话管理根据当前和之前的用户输入决定下一步动作;NLG则负责生成书面或口头回复。
从零开始构建聊天机器人时训练数据不足,有哪些解决办法?
可以使用基于模板的数据生成器合成大量用户查询用于训练。等聊天机器人初步完成后,先向少量用户开放,通过真实交互逐步积累和增强训练数据,并定期升级模型。
聊天机器人实体提取不准确,比如把“IIT Delhi”只识别成“IIT”,该如何改进?
可以增加更多训练示例,但要注意数量上限;对于城市、国家等有已知值集的实体,定义正则表达式模式来辅助提取;还可以利用模型给出的低置信度触发自定义组件,通过数据库查询校正实体。
如何避免聊天机器人混淆相似意图,比如“Show me open positions”和“Show me open position candidates”?
有两种方法:一是引入子意图来细分;二是让模型根据识别出的实体来处理查询。此外,应设置回退机制,当意图置信度低于阈值时优雅地处理混淆情况。
对话管理中,如何让聊天机器人更好地处理用户的后续互动和偏离预期的对话?
需要给聊天机器人输入真实对话示例(称为Stories),并且不仅要设计顺利路径(happy path),还要覆盖不顺利路径(unhappy path),确保机器人能优雅地处理各种偏离预期的情况。
自然语言生成时,如何让聊天机器人的回复更自然、更吸引用户?
聊天机器人应具备特定的个性和语气,设计成热情、谦逊的助手形象。避免机械或过于随意的回复,例如对于错误输入,可以说“抱歉,似乎没有相关细节,请重新输入您的查询?”而不是生硬地指出错误。
大型语言模型(LLM)如ChatGPT如何改进传统聊天机器人系统?
LLM能进行开放式的类人对话,并执行文本摘要、段落写作等任务,减少了对每句话进行意图分类的依赖,使无意图聊天系统成为可能。LLM在通用命名实体识别上表现优异,与聊天机器人框架结合可构建更成熟稳健的系统。