该文给出了针对用于线上购物的面向任务的对话系统的一个一般的解决方案, 目标是协助用户完成多样化的购买相关任务, 比如搜索商品和回答问题, 如同正常人之间的对话. 作为一个创始工作, 我们会展现NLP的技术, 数据源以及可以利用的众包来建立这样一个关于电子商务的面向任务的对话系统. 为了示范它的效果, 我们将我们的系统集成到一个移动端在线购物应用, 据我们所知道的最好的消息, 这个系统实际用于百万级别的用户群体, 我们的实验部分将会展现有趣的和有深刻见解的观察, 基于人机对话日志的分析, 同时也给出了未来的一些挑战.
一般来说, 对话系统分为面向任务的以及非面向任务的系统, 而本文中的线上购物的对话系统既需要面向任务, 同时也需要具备普通交流的功能, 但是以前我们利用特定领域的知识来对语义槽进行设计和填充, 不过这种方法在整个系统冷启动的条件下很难进行应用, 我们需要大量的人和人的语料, 可是这确是难以获得的.
为了解决这些问题, 我们的工作专注于三种类型的数据(对于电子商务web服务是共通的, 同时是易于爬取获得的):
我们应用的bot可以和用户进行交流, 同时尝试去帮助用户比较相同类型的商品, 或者是和用户闲聊, 通过对 聊天日志的分析, 可以找出用户的兴趣点.
我们提出的方法和之前的方法主要有两个不同:
一般地, 一个面向任务的对话系统包含一下几个组成部分:
为问题理解, 输入是
, 输出是
,
代表着用户在时间
的话语,
代表
的形式化的意思表示.
为状态跟踪, 输入是
和
, 输出是
,
代表着时间
的对话状态, 通过时间逐渐累积的意味表达.
为对话管理, 输入是
, 输出是自然语言回应
, 内部函数即是基于当前对话状态
来选择一个更为合适的action伴随着自然语言表示来回应用户.
为产品知识库, 也就是由一堆三元组
组成的集合,
是产品集合,
是属性集合,
是属性值.
给定话语
, 自然语言理解模块就是生成它的表示
, 特别地对于线上购物场景:
其中
就是通过用户话语表达出来的意图
, 用于确定action(推荐或者是QA)
是
所涉及的产品种类, 用于确定可能的产品以供DM来进行分析.
是二元组
的集合,
代表属性名字,
代表对应的值,
同一产品的话语提及可能是完全不同的, 系统需要基于用户意图来确定如何进行动作, 文中提及了一个意图分析的例子, 利用几个简单的模板来套用就可以得到相应的意图, 但是意图检测仍然是一个比较大的问题.
有很多地方人们会表露出购买的意图, 包括搜索引擎, 社交站点, 社交网络等, 我们提出关于购物意图分析挖掘的算法, 这个算法在社交网站上的问题进行信息挖掘, 这些问题都是能表现出明显的购物意图,
意图分析挖掘算法: 1. 收集和过滤社交网站中提交的问题, 成为一个问题集合
, 这些问题至少包含产品名称, 牌子名称, 或者种类名称中的一个(基于产品知识库) 2. 在
上运行ParseSegmentation来分割每一个
到一个短语序列
** 3. 在已经分割好的
上运行ParseLDA来得到主题聚类 ** **4. 购物相关意图的集合通过众包来定义, 基于基于主题的短语聚类 ** 5. 对于每一个意图, 通过众包选取短语的一个集合 6. 返回一个购买意图集合
, 以及带有标记的意图短语
特别地, 三种状态相关的意图也被考虑进来:
对于每一个意图
, 我们从
中收集了2000个问题, 每一个都至少包括一个
的意图短语, 我们也收集了2000个没有购买意向的问题, 所有这些有标记的问题都被用来训练成一个多类别的分类器, 进而确定用户言语表现的意图, 或者只是闲聊.
在这个环节中, 我们将产品类别检测看作是一个多分类的问题, 给定一个带有购买意图的用户言语, 产品类别检测的目的就是预测出用户说的东西的类别, 这东西的用处在于缩小预测的范围, 利用预先检测出来的类别来从浩瀚的产品库中选取一部分子集, 再在其中进行一定的搜索匹配.
为了解决这个分类任务, 使用了基于CNN的方法.
输入层: 传统地, 每一个词利用one-hot编码成一个向量, 维度取决单词的种类, 然而如果是中文, 那么维度是一个问题, 对于学习出模型的参数的代价相当昂贵, 为了缓解这个问题, 我们将中文字符表示成特性的计数向量, 我们对于话语
使用
个n元词法模型, 主要是将每个词连接起来, 类似于
其中
为第t个词的表示, 并且
为上下文窗口大小, 我们设置成3
卷积层: 卷积层实现基于窗口滑动的特征抽取, 进而对于每个n元文法单词向量表示
投影到上下文特征向量
:
其中
是卷积矩阵
池化层: 池化层聚集通过卷积层抽取的局部特征, 进而构建固定大小的和输入语句长度无关的语句水平的全局特征. Max pooling被用来推动网络进而通过
保持最有用的局部特征, 其中
语义层: 对于
的全局表示
, 一个非线性转换被这样应用:
其中
是语义投影矩阵,
是最后的语义向量表示.
给定一个用户话语
, 和排行的产品类型列表, 我们首先使用CNN来计算出
的语义向量并且所有的产品类型 接着, 我们计算出
和每一个产品类型
的相似度, 相似度的计算使用语义向量的余弦相似度
给定用户话语的一个产品类型的后验概率, 通过一个softmax函数, 基于相似性分数来进行计算, 模型用来最大化正确匹配话语和产品类型的似然性, 这里使用随机梯度下降
给定用户话语
, 产品属性抽取的目的就是通过属性名和值
去标注
,
其中
是n元词法,
是
涉及的属性名(或者属性值),
是
能够被
标记的概率
对于一个不能被标记属性或者值的单词, 我们将其标注为[word], 同时具有一个小的值代表概率
而如何获得这个概率呢, 这就需要一个释义挖掘任务
对, 其中
是一个搜索引擎的query,
是通过
搜索到的, 然后点进去名字是
的页面.
q是产品
的一个可选表达
为query q下点击进入产品名是p页面的次数, 基于
, 我们可以进一步计算出分布
其中,
实际上为query q在产品相关集合上的分布, 注意到, 用户也会使用品牌名, 产品类别, 或者它们的结合来进行搜索, 因此, 对于每一个三元组<p, q, P(q|p)>, 当
超过预定义的阈值的时候, 我们只对产品属性抽取的使用而保留,
我们使用一个基于动态规划的算法来获取
Input: Q Output:
其中
储存
的所有可能的标记结果,
类似
, 其中
给出GlobalSearch的具体算法
GlobalSearch Input:
if
then
end else
for
for each
do
if
then
end
end
end end
询问理解在许多AI相关的主题中扮演重要的角色. 基于规则的方法需要标记以及具有不可伸缩性质, 数据驱动的方法使用大量的方法解决了这个问题, 比如HMM/CFG, CRF, SVM, RNN等等, 但是这些都依赖于有标记的数据, 而这些数据通常对于特定领域的不适用, 我开发了一种利用已存在的目标领域的资源的其他方法, 利用下个步骤进行进一步的优化.
状态跟踪模块
, 保持对话状态
, 对话状态也即是直到时间
的对话时段表示,
按如下进行作用:
更新意图状态
, 基于以下规则来更新
的意图
, 不是Session-Aware的意图, 则保持
不改变
, 是Session-Aware的意图, 并且
, 设置
为
为
, 则没有更新,
的产品类别, 则
会继承
的所有信息, 否则,
的内容将会完全基于
来进行更新, 包括
, 也就是意图, 产品类别和属性-值的集合
注意到, 如果chit-chat话语的连续长度超过某一个预定义的阈值, 或者在时间t时两个连续的话语的时间间隔超过某个预定义长度, 则
会被清除, 作为一种遗忘的方法.
对话状态的跟踪是保证多轮对话中用户体验的关键, 本文中由于为了规避冷启动的问题, 使用了Session水平的标记数据来提高置信状态跟踪.
对话管理模块
利用当前对话状态
作为输入, 基于该状态进行不同的动作, 并且输出相应的结果. 这里给出在线购物场景的各种动作:
是
的时候将会触发, 它将会利用产品类别和属性值在产品库当中进行检索, 最后储存到
中
被检测出来 将会对它们的优缺点都进行比较
是
的时候将会触发, 将会总结存储在
中的目标产品和牌子, 基于电子商务伙伴提供的产品review数据
中被检测到的时候触发, 同时对应的属性值没有检测到, 将会通过产品数据库来返回没有提及的属性值, 我们将其视作单轮的KB-QA(知识库-问题回答)任务, 通过Yih的方法解决
Yih, W.-t.; Chang, M.-W.; He, X.; and Gao, J. 2015. Semantic parsing via staged query graph generation: Question answering with knowledge base. In Proceedings of Annual Meeting of the Association for Computational Linguistics (ACL).
中也没有
注意到, 这样形式的问题通常会是众包的数据中会含有的
下, 生成一个回应:
其中
为从web上收集来的(问题-回答)的数据,
是用户的问题, 而
是其他用户对这个问题的回答,
是第
个特征, 用于度量utterance和query的相似性,
为
的特征权重, 该模块的目的为:
相似的
的回答
, 作为
的回答
Ji, Z.; Lu, Z.; and Li, H. 2014. An information retrieval approach to short text conversation. arXiv preprint arXiv:1408.6988.