导读
这几年BOT的应用越来越普遍,前阵子打移动和平安的客服电话,已经能支持语音对话。李飞飞教授在Google Cloud Next 18上发布了Contract Center AI,根据现场的视频演示,在接到 eBay 买家的来电后,Contact Center AI 会调取订单并理解用户意图,就买家因鞋码不合适要办理退货事宜进行顺畅的沟通,并在信息逐一得到确认后表示会将处理结果以 email 的形式发送至用户邮箱。还有大家熟知的微软小冰、小娜,苹果的siri等等。
国内也有很多团队做的很不错,比如阿里的小蜜,以前和他们交流过,技术上做的比较前沿,估计是最有可能在整个业界做出有效创新的国内团队了。还有一些创业公司,比如追一科技的Yibot,滴滴应该和他们合作了很久。
BOT的技术价值是显而易见的,从应用场景上又分为三个方向:
1. QA bot:即大家比较容易理解的智能客服,日常也能接触到,比如阿里的小蜜,中国移动、平安等提供的智能语音客服。
2. Task bot:智能助手类,典型的即苹果Siri,微软的小娜,经常用辅助订机票这个一个烂大街的例子来演示能力。
3. chat bot:闲聊机器人,典型的如微软小冰。
简单提下Automatic Speech Recognition,语音转文本,人类的语言输入分语音和文本,大部分系统在接收大语音后,会先转成文本。这部分工作,有些公司已经做得很好了,比如讯飞,一般大家都是直接用他们的。
铺垫了这么多,其实要完成一个基本可用的QA bot并不是很难,蘑菇街在去年上线了一个QA bot,用于处理线上客服问题,方案简单粗暴,但实际反馈还不错。大概的使用场景是这样的:

感谢组里小伙伴多比的贡献,本文将尝试去概述下该领域内的经典技术和论文,由于工作和chat bot比较远,该部分内容不涉及。
QA bot
QA bot从技术上可以分为三种领域:
1. Information Retrieval
2. Knowledge graph
3. Machine Compression
让我们来理下QA bot的常见场景,当用户使用客服系统时,大概率是遇到问题了,而且这个问题很有可能是普遍存在的,即80%的咨询量集中在20%的问题上,符合二八原则,也是只能客服系统能work的核心逻辑。以拨打中国移到的客服系统为例,你可能是想查个话费,由于这个需求是普遍存在的,所以移动会事先提供好这个问题的答案。同理,必然存在很多这种普遍的需求,公司可以事先准备好很多标准答案,剩下来就是需要识别用户的需求是哪一类问题。
Information Retrieval
最粗暴的方案,即基于规则,用户需要输入自己的问题是哪一个,比如移动、银行常用的自动客服系统。其次是用搜索的思路做,很多做过搜索的同学,第一反应就是将用户的输入当做query,切好词后做召回,做点TFIDF,再做个ranking就可以了。再然后是基于机器学习的,传统的比如SVM,将用户的输入,分类到某一个事先定义好的问题分类,即建模成一个多分类问题。
在深度学习火起来后,word Embedding、seq2seq,天然使用bot的场景。其中比较典型的是textcnn这篇论文,可以说,现在主流的QA bot基础模型就是它。
论文:Convolutional Neural Networks for Sentence Classification[10]
来源:纽约大学
点评:CNN文本分类,结构简单,效果不错
结构:

解析:注意为了保持语义,卷积的宽度是embedding的size,并且max pooling针对的是整个句子。
Knowledge Graph
知识图谱一直是nlp一个非常重要的应用领域,特别是在工业界,很有良好的用户体验要靠知识图谱解决,而知识图谱构建的高成本,可以建立技术壁垒。
KG应用到QA bot中,还需要结合实体识别,也是nlp的经典应用,举例来讲,识别用户输入中的实体,结合知识图谱的model去给出答案。
Relation Classification via Convolutional Deep Neural Network,知识图谱边的构建,简单效果好,应用价值高;Significantly outperforms the state-of-the-art methods.
Entity Linking with a Knowledge Base: Issues, Techniques, and Solutions。Entity linking综述,入门良品
S-MART: Novel Tree-based Structured Learning Algorithms Applied to Tweet Entity Linking。效果较好的entity linking论文,需要较多的背景知识,资料较少,但值得一看;带来的效果让我们重新审视tree-based models,outperforms state-of-the-art tweet entity linking systems
Semantic Parsing via Staged Query Graph Generation: Question Answering with Knowledge Base:主流方法有三种:语义解析、信息提取、向量建模;属于语义解析论文,Outstanding paper, KB-QA效果最好的paper之一
Machine compression
阿里小蜜利用机器阅读理解解决活动相关问题,在10%+的回答率情况下,准确率90%+
论文:R-Net: Machine Reading Comprehension with Self-Matching Networks。ACL2017,谷歌工程师Sachin Joglekar:“人工智能的阅读能力在某些方面已经超越了人类,微软的R-Net就是达到了这一里程碑的人工智能之一。
Task Bot
QA bot还是相对简单一些,而task bot的应用场景更让人心动。下面这张图,概括了改领域涉及到的一些技术领域。

NLU
Domain Identification和User Intent Detection都可以转化成分类问题,这里重点聊下Slot Filling(槽位填充)。举个定机票的例子,如下图,我们对show flights from Boston to New York today整句进行序列标注,对其中的实体词设置槽位。在定机票的领域,槽位基本上是出发地、目的地、时间、乘客信息等。

转化成一个序列标注问题。
NLU推荐论文如下:
Using Recurrent Neural Networks for Slot Filling in Spoken Language Understanding,经典网络,早于attention,效果比RCRF差;解决ASR Error问题的思路。
A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding,是个joint model,性能良好,相对简单;为什么joint,因为其一在SLU两个任务通常都是必须的,其二两个任务的信息可以相互提升。
Joint syntactic and semantic analysis with a multitask Deep Learning Framework for Spoken Language Understanding
Domain Adaptation of Recurrent Neural Networks for Natural Language Understanding
Exploring the limits of language modeling
Character-Aware Neural Language Models
Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
Dialog Management
Dialog Management,会话管理,这块更偏工程了。
Dialog State Tracking
想做多轮会话,这块功能必不可少,但业界其实做的一般,自己也懂得不多,推荐一些论文吧。
Machine Learning for Dialog State Tracking: A Review,DST综述文章,指出判别式机器学习方法比生成式和规则式要好;简单说了基于规则和基于生成的方法以后重点介绍了基于判别方法
Deep Neural Network Approach for the Dialog State Tracking Challenge, 解决slot value不固定的问题
Multi-domain Dialog State Tracking using Recurrent Neural Networks,主要贡献在于multi-domain在DST问题上的可行性验证
Dialog Policy
会话策略(Action、State、Reward),懂得不多,略过了。
NLG
task bot里面,很多是可以用模板去替代生成,因此不是核心模块,略过。
近期的趋势
Transfer Learning
主要集中在domain间的迁移,因为语法、结构、词性等语言共性的存在,使得迁移学习成为可能
End to End
A Network-based End-to-End Trainable Task-oriented Dialogue System,端到端的,减少很多工作量,并且去掉了强化学习,在小数据量上就达到了极具竞争力的效果
E2E Joint NLU and DM (Yang et al., 2017)
E2E Supervised Dialogue System (Wen et al., 2016)
E2E MemNN for Dialogues (Bordes et al., 2016)
E2E RL-Based Info-Bot (Dhingra et al., 2016)
E2E RL-Based System (Zhao and Eskenazi, 2016)
E2E LSTM-Based Dialogue Control (Williams and Zweig, 2016)
E2E Task-Completion Bot (TC-Bot) (Li et al., 2017)
参考文献:
【2】 One Day For Bot
【3】 阿里小蜜机器阅读理解技术大揭秘
【4】 阿里小蜜论文
【5】 Relation Classification via Convolutional Deep Neural Network
【6】 Semantic Parsing via Staged Query Graph Generation: Question Answering with Knowledge Base
【7】 AliMe Chat: A Sequence to Sequence and Rerank based Chatbot Engine
【8】 S-MART: Novel Tree-based Structured Learning Algorithms Applied to Tweet Entity Linking
【9】 Entity Linking with a Knowledge Base: Issues, Techniques, and Solutions
【10】 Convolutional Neural Networks for Sentence Classification
【11】 R-Net: Machine Reading Comprehension with Self-Matching Networks
【12】 Using Recurrent Neural Networks for Slot Filling in Spoken Language Understanding
【13】 A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding
【15】 Domain Adaptation of Recurrent Neural Networks for Natural Language Understanding
【16】 Exploring the limits of language modeling
【17】 Character-Aware Neural Language Models
【18】 Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
【19】 Machine Learning for Dialog State Tracking: A Review
【20】 Deep Neural Network Approach for the Dialog State Tracking Challenge
【21】 Multi-domain Dialog State Tracking using Recurrent Neural Networks
【22】 A Network-based End-to-End Trainable Task-oriented Dialogue System