多轮对话中答案导向问题(1)

Reading time ~6 minute

在多轮对话中,有这样一种场景,当机器人抛出一个问题时,例如“这件衣服有红色,绿色,蓝色和黑色,你想挑选哪一件?”机器人需要根据用户的回答,给出用户所需要的链接引导或答案,以便进行下一步的对话交流。

例如,用户回答为“我比较喜欢绿色”,那么机器人首先应该从用户的回答中判断出,用户是想要绿色的衣服,然后给出绿色衣服的图片或链接,并继续问一些关于衣服的其他问题,比如你穿多大尺码的衣服呢?S、M、L还是XL呢?我们将这种场景称为“答案导向问题”。

在多轮对话中,有这样一种场景,当机器人抛出一个问题时,例如“这件衣服有红色,绿色,蓝色和黑色,你想挑选哪一件?”机器人需要根据用户的回答,给出用户所需要的链接引导或答案,以便进行下一步的对话交流。例如,用户回答为“我比较喜欢绿色”,那么机器人首先应该从用户的回答中判断出,用户是想要绿色的衣服,然后给出绿色衣服的图片或链接,并继续问一些关于衣服的其他问题,比如你穿多大尺码的衣服呢?S、M、L还是XL呢?我们将这种场景称为“答案导向问题”。顾名思义就是根据用户所给的答案选择出对应的选项,以便给出后续的引导。

以上文为例,可以将“这件衣服有红色,绿色,蓝色和黑色,你想挑选哪一件”这个问题看成一道选择题,有4个选项,分别是红色,绿色,蓝色和黑色;最终根据用户的回答“我比较喜欢绿色的。”确认选出绿色的选项。

目前解决的问题,主流方法有两种,一种是基于相似度的计算,另外一种是基于模板抽取的方法具体方法如下。

一、基于相似度的方法

这种方法主要是将问题的每一个选项的句向量与用户回答的句向量进行相似度计算,通过阈值筛选,最终判断用户答案对应哪几个选项。一般句向量的计算是句子中每个词的词向量加权求和得到的,虽然该方法比较简单,但存在一些无法忽视的缺点。

首先在阈值的选择上十分困难,不同的阈值可能选择出来的选项就是不同的,而且依赖人工选取阈值可能存在个体差异,不同人选取阈值可能不同。其次如果用户回答存在否定形式,可能仅靠词量的加权的句向量难以区分,比如用户回答我不喜欢绿色而计算相似度时,往往都是绿色选项较高。最后如果用户的回答比较复杂,包括语义的转换,仅靠词向量加权的句向量是更是难以置信,比如用户回答我不喜欢黑色橡胶,红色与绿色而言蓝色可能更好一些,这样简单靠去向量是无法区分的,还要依赖外界的其他手段去判断具体属于哪个选项。

二、基于模板抽取的方法

这种方法主要是将用户的回答进行模板抽取,判断抽取的内容属于哪一选项。比如用户回答“我不喜欢红色,我喜欢蓝色”,通过模板“否定词+选1项,肯定词+加选项2”来抽取,得到蓝色选项是用户的答案。这种方法虽然可以解决一些包含否定或者存在语义转换的问题,但也存在一些无法忽视的缺点。

首先,用户回答可能不包含整个选项词语,例如“我想要绿色的”,往往需要做一些词语关联等操作,但这是一项永无止境的工作,需要大量人力投入,还不一定可以完全取得关联。其次,用户回答一般不是标准的书面表达,模板很难去创造,而且容易出现模板打架的情况,导致不相信哪一个模板给出的结果。

基于以上两种方法存在的缺点,我们使用NLI的方法解决“答案导向问题”,我们将用户的回答作为前体句,将问句的选项作为假设句求解出根据前提句可以推断出哪几个假设句,最终得到该问题中符合用户意向的所有选项,以便给出后续的引导。

由于NLI任务模型的特性,在推断过程中不仅考虑词的重要性,而是将两个句子进行了交互,从中解读出真正的语义信息,相似度方法和模板抽取方法的缺点就迎刃而解了。

答案导向任务数据格式如下:

问题 用户回答 选项 答案
在钻石、黄金、白金、白银中,哪一种更值钱呢? 物以稀为贵,钻石的产量最少 钻石|黄金|白金|白银|无法确定 钻石
在钻石、黄金、白金、白银中,哪一种更值钱呢? 不是黄金白银,而是是钻石和白金 钻石|黄金|白金|白银|无法确定 钻石|白金
在钻石、黄金、白金、白银中,哪一种更值钱呢? 钻石或者黄金吧 钻石|黄金|白金|白银|无法确定 砖石|黄金

Ref: «会话式AI 自然语言处理与人机交互»

Query Rewrite重写技术

Query rewriting 是将 queries 和系统中存储的文档的语义空间进行对齐(aligning the semantics of queries and documents)的关键技术。 Continue reading

GraphRAG介绍

Published on July 02, 2024

RAG系统优化

Published on June 26, 2024