从api.ai工作原理来看构建简单场景chatbot的一般方法

物联网

  这里用户输入是book a ticket to Los Angeles alt="物联网" width="550" height="189" />

  定义好subject entity之后,我给出了几个examples,同时也包括其synonyms,keywords entity类似。

  step 2 自定义Intents,这里我定义了两个Intents,分别是update和search。下图是update的examples,是我自定义的几个例子。api.ai会根据我定义好的entity进行自动标注,比如cs.CL,today是系统默认的entity所以也进行了自动标注。自动标注是为了后台的机器学习算法对标注好的examples进行学习,以提高chatbot的NLU准确率。

物联网

  接下来,我需要定义下Actions,如下图:

物联网

  Action被称为update,必须包含的参数是subject,也就是我们上面讲到的一个entity,date参数并不是必须的。所以,这里如果用户的input被识别出是update intents的话,就必须包括subject参数,否则chatbot会trigger一个response,类似“请用户输入subject”这样的话。

  step 3 简单测试,在界面的右侧有一个console,用来测试当前chatbot的效果,我输入update cs.CL,得到下面的效果:

物联网

  chatbot识别出Intent是Update,Action是update,Parameter是date和subject,并且subject的值是cs.CL,下面的Show JSON是api.ai为developer生成的,用来与developer自己的web service进行数据交换。

  step 4 训练。训练包括两个部分,一是训练NER,二是训练Intent Classification。训练器是api.ai提供的,但是标注数据是developer自己提供的,当然训练数据越多,标注越准,分类器的准确率就越高,chatbot的NLU准确率越高。至于训练方法,docs中没有细说,我简单猜测一下,NER可以当做Sequence Labeling任务,和Intent Recognition类似,都可以看作是多分类问题,不管是传统的分类方法还是当下流行的deep learning方法都能得到不错的准确率。随着user logs的增多,训练数据会越来越多,chatbot通过学习就会变得越来越“聪明”。但这里有个问题,training data越多,需要标注或者修改标注的数据就会越多,也是一个麻烦事儿。

  step 5 整合、发布。api.ai支持的平台非常多,包括当下流行的message平台,还有各种操作系统平台。在message平台上提供了一键整合的功能,在操作系统上提供了SDK。这里我用了slack平台,api.ai打通了和slack的接口,也提供了webhook,连接了我之前写好的web service,只需要按照它给定的消息接口进行定义即可。

  demo

  目前RSarXiv只提供两个简单的功能,一个是update今天最新的arxiv paper,你可以通过show me new papers in cs.CL等类似的话来获取cs.CL这个领域中最新的paper;一个是search功能,你可以通过search LSTM等类似的话来获取包括LSTM这个关键词的paper。由于是一个测试用的demo,就没做什么复杂的功能。

物联网

  大家如果感兴趣的话,可以留言给我或者发邮件给我([email protected][email protected]),我邀请大家到这个slack team中。

  简单场景chatbot构建方法

  介绍了下api.ai提供的服务,下面简单地提炼一下。

  chatbot = NLU + NLG

  api.ai解决的重点问题是NLU的问题,NLU也是Dialogue State Tracker(DST)的核心和基础,而DST是chatbot的核心。这里的NLU包括两个问题:

  1、从user inputs中识别出user intent和对应的action。

  2、从user inputs中抽取出预先设定好的entity value,作为action的parameter。

  NLG在api.ai这里基本上通过developer在Intent中设定response,当识别出是哪个intent之后,response自然就有了,最多空一些slot,用结果进行填充。如果developer选择了webhook,即需要从自定义的web service中给定response。如下图:

物联网