问答系统设计的一些思考
问答系统通常分为任务型机器人、闲聊机器人和解决型机器人(客服机器人),三者的设计分别针对不同的应用场景。A):任务型机器人主要用于完成用户的某些特定任务,比如:买机票、话费充值或者天气咨询。B):闲聊机器人主要用于深入的和用户进行无目的交流;C):解决型机器人(客服机器人)用于解决用户的问题,比如:商品购买咨询、商品退货咨询等。这里通过一些案例分析来介绍不同情况的算法选型:
任务型问题,1):“成都今天天气怎么样”;2):“明天呢";3):“后天呢”。

首先,“成都今天天气怎么样”属于天气类问题(其中包含实体“地点”、“时间”),已经能够完成应答;然后,“明天呢”该句话仅包含实体信息(”时间“),并未包含地点信息,如果直接采用意图分类,不能完成此次应答;最后,”后天呢“同样是只包含实体信息(”时间“)。针对此类的多轮对话场景,可采用slot filling的方式进行应答(slot filling是多个槽值组成,例如:天气场景需要实体槽值“地点”和“时间”)。”明天呢“和”后天呢“只包含”时间“实体,但是上文”成都今天天气怎么样“则包含了”地点“实体,只需要将下文的实体(“时间”)替换上文的实体(“时间“)即可。
解决型问题,1):”iphone X多少钱“;2):”邮费是多少呢”;3):“可以无理由退货么?”。

针对此处的多轮对话,涉及到商品的购买、售前运费和退换货政策三个意图,并且后面的意图分析需要前文的会话意图,就是一个典型的多轮对话过程。首先,“iphone X多少钱”可以通过单句的意图分类即可完成应答;而“运费是多少呢”则需要判断用户咨询的属于售前运费还是售后运费,此时可通过结合上文问题的方式进行意图分析(1:抽取上文的意图特征加入当前问题可解决部分上下文场景问题;2:结合上文和当前问题采用深度学习的算法进行上下文的意图分析)。最后,“可以无理由退货么”需要知道商品的信息才可以回答用户的问题,因此需要上文商品“iphone X”(可以将对话中实体、商品信息保存用于下文应答)。
解决型问题,1):”https://item.jd.com/6577511.html?jd_pop=67fb9e1c-df43-4cf9-9509-37998e9c983a&abt=0“;2):”多少“;3):”钱?“

此时多轮对话过程中,涉及到用户输入过程中单句输入不完整。slot filling和简单抽取上文特征的方式并不适合,而组合多句输入则可以完成此处的应答(具体方式见此处)。
闲聊型问题

针对闲聊型问题,由于用户并无明确的意图,因此不适合做意图分类,这里我们可以采用生成式模型,根据大量用户历史的闲聊语料生成相应的答案(生成式模型得到的答案可能存在语法、连贯性问题,但是闲聊场景的对话对语句语法和连贯性要求不高,相对随意)。

总结:我们在分析一个人的时候通常涉及IQ和EQ两个方面,IQ在于解决问题的能力,而EQ在于解决问题的方式。在实现一个机器人问答系统的时候,我们也应该考虑IQ和EQ两个方面。这里只是针对问答系统中的一些特殊案例进行分析,一个完整的问答系统仍需要大量其他方面的工作,比如:让问答系统的回答更加拟人化(用户情感分析)。