个人计算机的发展史要追溯到上个世纪90年代末,人们用键盘和鼠标向购物网站发送请求,购买心仪的商品,随后的十多年间,互联网飞速发展,智能手机应运而生,人们开始习惯用触摸的方式更加灵活地操纵手机、Pad等设备,可与之进行交互的产品也稳步落地在数以百万计APP中,这些产品都是基于GUI (Graphical User Interface)设计的。

  鉴于人类向外界发送指令的方式除了用手做(以键盘鼠标、触摸为代表),还可以用嘴说,因此语音控制设备进行人机交互也开始进入人类探索的领域。

  然而,让机器听懂人类的语言是一件十分困难的事,近几年随着深度学习的崛起,语音识别和自然语言理解的快速发展,为这一交互模式的流行创造了可能,相信不久的将来,人类会逐步迈入CUI (Conversational User Interface)时代。

  在我们的生活中,智能对话被广泛应用在客服、营销等重复性对话频繁发生的场景,或者作为GUI的补充,为用户提供高效、个性化的体验,甚至是直接集成到智能音箱、智能家居、智能导航等硬件设备中,独立承载人机交互的重担。

  按照对话的智能程度,我们可以把智能问答分为5个阶段:单轮问答、多轮会话、意图推理、个性化以及情感互动。

  KBQA:基于知识图谱的问答,所有的知识被组织成三元组的形式,比如姚明、妻子、叶莉这个三元组是知识图谱里的一条知识,当用户询问“姚明的妻子是谁”的时候,问答模型会将答案定位到“叶莉”;

  TableQA:知识是用表格的形式组织的,商家的产品信息用表格的形式存储,当用户询问关于某个产品的具体属性时,问答模型可以把用户的自然语言转化成SQL查询语句,直接从数据库里定位答案;

  PassageQA:阅读理解,它是基于文档的问答,我们的问答模型会基于用户的问题,将答案定位在文档的某个段落、某句话甚至是某个短语;

  VQA:基于图像或视频的问答,以上图为例,用户问“这个女孩儿的脸被什么挡住了”,问答模型会告诉我们答案是“香蕉”;

  Community QA:从命名上来看,它是基于社区知识的问答,比如一个读书论坛,底下有人在交流值得一读的人工智能书籍,在母婴论坛有人在讨论宝宝发烧了怎么办?需要吃药吗?那么这些对话内容都可以沉淀为知识,我们定义的Community QA就来源于这些场景,在不同的领域,我们通过挖掘、或者收集、标注的方式沉淀了一批知识,用问答对的形式把它们组织起来,在这批知识集合下,用户提问一个领域相关的问题,问答模型会告诉我们答案到底是什么。

  面对智能问答的广泛应用,本篇文章以如何搭建一套智能问答系统为切入点,深入浅出介绍一下在Community QA上所做的尝试。

  第一类是常见的客服场景,询问产品、询问业务、询问经验,这类场景比较泛,他会衍生在生活中的各个方面,客服机器人相比传统的客服,他永不打烊,回答永远标准,而且面对各种刁钻甚至不友好的问题,新宝GG创造奇迹都会永远积极正面地给出响应。

  同时,该类问答机器人进一步深化拓宽到领域,会孵化出某些领域通用的机器人,比如HR领域,相信不同公司的HR,很大程度上面临的问题集合都是固定的,也就是说,垂直领域的问答机器人是可以有效渗透并横向复制给不同企业使用的。

  在英语学习相关产品上,我们想给小孩报名英文课,但是不清楚课程内容和价格,那我们会问相关的问题。对于商家来讲,我们不仅是提问的人,还是潜在的商机,可能我们仅仅只想问一个问题,但是商家却希望能获得我们更多的信息,电话、小孩年纪、上课意向等,进而让我们留存下来最后能成功消费,类似的场景还有很多,我们把这一类应用场景叫营销机器人,它是商务团队的好帮手,能在多个平台自由切换,回答问题标准且及时,最终往往能通过更小的人力投入,获取更多的有效线. 问答建模

  基于前面的例子,我们对问答场景有了更具体的画像,需要做什么已经很清晰了,那么怎么做呢,我们开始尝试对该问题进行建模。

  第一次迭代我们只引入了词袋(Bag of Words)模型,5维代表特征。

  Edit-Distance:最小编辑距离,q和p的最小编辑距离除以q、p长度的平均值;

  TM:共现特征,基于bigram/trigram词典,计算q、p共现词平均score、共现词最高score的平均值、共现词去除相同词后最高score的平均值共3维特征;

  上述特征集合,均由大数据文本的统计特征衍生而来,对句子的语义表示能力较弱。

  第二次迭代我们给模型引入了一定的语义表示能力,对于了解深度学习、自然语言处理的同学来讲,word2vec在很多任务上都有着非常杰出的贡献,这一模型从不同角度刻画了周围词和当前词的关系。经过训练后,我们能得到一份词汇的向量表示。

  图10 the Word Mover’s Distance (WMD)

  前两次迭代都没有考虑知识库内的数据,比较适用于无语料或者语料较少的知识库,当知识库具有一定的规模后,正如前面提到的,同一个知识点下的相似问,将是很好的训练数据。

  前面我们利用一个知识库的相似问语义相近作为监督信号,从中抽取出了一个知识点的语义信息,但我们最终的目标是判断用户输入和相似问之间的相关性,这里我们使用一个深度学习的模型ESIM (Enhanced LSTM for Natural Language Inference),利用要比较的两句话的监督信号来训练模型,观察句对的交互对模型的影响。

  上图是ESIM的网络结构,它在众多短文本分类任务中都有不错的表现,主要在于输入2句话分别接embedding+BiLSTM, 利用BiLSTM学习一句话中的word和它上下文的关系后,在进行inference之前,会利用attention操作计算2个句子word之间的相似度来更新embedding,也就是说比较的两句话在模型训练中产生了交互,相比其它的类似网络只在最后一层求距离来讲,这种交互的影响能学到更全局的信息。

  当然,学术界是在不断变化的,对于效果较好的模型,我们也需要进行尝试,寻找适合在工业界落地的条件和场景。

  效果变好了,有多好?肉眼可见显然不能作为一个反馈的指标,所以我们需要去科学地评估这些改进,评估这一环节我们选了6个不同领域,每个领域50个知识点,每个知识点12个相似问作训练,3个作评估测试,示例数据见图15,在此数据集基础上去评估准召和F1。具体结果见图16,大家可以看到在不卡阈值的情况下,准确率从0.8提升到了0.968。

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,集媒体、培训、社群为一体,全方位服务产品人和运营人,成立9年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一起成长。