本文是一篇2013年的bot文章,题目是A Dataset for Research on Short-Text Conversation,作者来自中科大和华为诺亚方舟实验室。
本文最大的贡献在于release出一个大型短文本对话语料,并且提出了一种基于检索的对话生成模型。到底是否是第一个用检索的方式来解决bot问题我不得而知,可以确定的一点是很多现在活跃在市面上的“逗逼”bot都是基于这个模型做的。
语料的数据来自于新浪微博,大概的收集过程如下图:
首先选择10个NLP领域比较活跃的用户,然后依次作为种子用户,进行爬取,直到获得3200与NLP和ML相关的用户,然后抓取每个用户的微博和下面的评论,时间跨度为2个月。这样定向爬取的好处是选择的用户和所发表的微博涉及的领域比较窄,而不至于天马行空什么都有。
数据准备好了之后,就是模型部分。模型一共分为两步,第一步是选择出评论候选列表,第二步是在候选列表中进行排序。候选列表选择一共分为三个baseline模型,如下:
1、Post-Response Semantic Matching
根据微博和评论之间的语义匹配程度选择出10个候选评论。
2、Post-Response Similarity
根据微博和评论之间的相似度选择出10个候选评论。
3、Post-Post Similarity
根据微博和微博之间的相似度选择出10个候选评论,即用相似微博的评论作为候选评论。
给定一条微博之后,模型会通过三个baseline各选择10条评论,构成一个<=30的评论候选列表,然后进行标注。标注工作是将评论分为两类,即suitable和unsuitable,即正样和负样。判断一个评论是否是suitable一共有三个准则:(1)semantic relevance,这个准则是判断微博和评论是否语义相关;(2)logic consistency,这个准则是判断微博和评论是否在逻辑上是一致的;(3)speech act alignment,这个准则是判断微博和评论在act方面是否是对齐的。
接下来就是通过标注数据进行排序,排序学习的目标是让正例的score比负例的score更大。
基于检索的bot解决方案是一种常见的方案,这种方案的重点在于知识库的质量,也就是那个database,一个query对应多个reply。如果只是简单的对话,效果会不错,而且如果知识库很有特点的话,reply经常会有一些意想不到的好玩的话,小黄鸡当年在人人网上火了好一阵子。但稍微复杂的问题,知识库的应变能力差的缺点就暴露出来了,比如query中有named entity,并且这个entity在知识库中没有出现过,这时reply就会出现牛头不对马嘴的情况,解决单轮对话都存在很大的缺陷,那么解决多轮对话就会更困难。虽然说,可以通过做query和reply、query和query之间语义层面相似度的计算,比如用一些成熟的deep learning技术来做。但根本上并没有解决这种方法的弊端,倒是非常垂直的闭域bot可以考虑用这个方案加上一些策略来解决,比如企业客服bot,因为知识库规模小,根据企业的资料和一些过往的用户对话数据可以建设一个质量不错的知识库,从而得到质量不错的bot。
来源:paperweekly
原文链接
相关资源:七夕情人节表白HTML源码(两款)