—— 周小多
对话系统分类 chat-oriented systems Dialogue System task-oriented systems 聊天型:小冰 Dialogue System task-oriented systems 任务型的对话系统主要是为完成特定任务而定制的比如 找产品、定机票电影票之类 任务型:淘宝客服小蜜
对话系统存在的挑战 对于一个新的领域没有大量对话数据可用来训练模型 中文语义多样性导致自然语言理解模块准确度低 评测难,没有一个较好的标准
本文主要贡献 创建了一个针对海量数据(11M个产品,1080大类)的电商平台导购对话机器人 将任务型对话与闲聊对话系统结合在一起 独特的框架能灵活切换推荐、比较、问答等功能 对运营一段时间的人机对话日志进行分析得到一些发现 传统的基于结构化本体形式的对话系统 在新的领域需要专家来定义有哪些槽和可能的槽值。在电商这种产品种类非常丰富产品数极大的平台中很难实现(冰箱-》体积 手机-》屏幕尺寸) 传统的填槽方式需要用人与人的对话数据,再通过有监督的方式去训练模型来填槽,本文通过无监督的方式来填槽,解决了无对话数据时冷启动问题 应该是应用在淘宝中了
系统总框架 DS = {QU, ST ,DM,PKB} QU(query understanding) 输入为 表示 时刻用户的utterance , 输出为 表示该句的语义 ST (state tracking) 输入句意 和上一刻系统状态 输出为 当前系统状态 DM(dialogue management) 输入当前系统状态 系统输出自然语言回应 ,该模块根据系统状态选择系统行为并将其转化为自然语言的形式 PKB( product knowledge base ) 以三元组的形式存储产品 ,p 表示产品名,n表示属性名,v表示属性值,例如 <Huawei P9, DisplaySize, 5.2 inches > 主要由4部分组成
QU(query understanding) 该模块输入 输出 其中 I 表示句子的意图(如右图) C 表示句子中识别出来的产品的类别 A 表示产品属性,通常用一个集合表示<属性名,属性值> Eg. recommend me a Huawei phone with 5.2 inch screen 这句话可得 M.I = Recommendation , M.C = Cellphone , M.A.Brand = Huawei and M.A.DisplaySize = 5.2 inches
Query Intent Detection 1、 从社区网站(百度知道)上搜集问题组成问题集,搜集的问题至少要包含1个产品名一个品牌名或在知识库中的产品属性名 2、分词 3、使用LDA(Latent Dirichlet Allocation)做主题聚类 4、由众包根据聚类的主题找出与购买相关的主题组成意图集合 5、对于每一个意图,由众包选出意图词 6、返回标好意图词的意图集合 整个数据是在百度知道上爬取的,经过筛选Q问题集中还剩300多万个问题,经过上述处理后仅剩1000多条意图短语
Query Intent Detection Session-aware 意图(这些句子很少出现在单轮问答中,需要联系上下文才能明确用户意图): Add Filter Condition (增加过滤条件) “太贵”、“小点的” See-More (基于当前的过滤条件看更多商品) “其它的”、“换一个”、“下一个” Negation (否定当前推荐商品) “不好”、“我不喜欢”
Product Category Detection Classification task. the total number of products is very large < 11M > based on a CNN-based approach each Chinese word as a count vector of characters concatenating the character vectors of each word , which is set to 3.
Product Attribute Extraction attribute names and values :
Product Attribute Extraction For attribute values that are product names 1、对于属性值是产品名的 q为淘宝中输入的词 URLp为用户点击的产品名p的链接 Link(p|q)为 产品名p和用户输入的词q之间的可替换度 P(p|q)为用户输入的词q中出现产品词条p的概率 2、对于其他 For all the other attribute values and names 通过网络锚文本、知识库别名等资源利用开放的信息检索方法Hearst patterns 得到.
Product Attribute Extraction 通过动态规划的方式检测出 一句话中所有的 属性名和属性值 ,通过计算取最大概率的一项。
State Tracking 系统维护一个对话状态 ,状态转化的工作机制如下: 系统维护一个对话状态 ,状态转化的工作机制如下: 如果 ,且不是session-aware 意图,那就保持 不变 如果 ,是 session-aware 意图, 其它情况则设置 为 Chit-chat 如果当前句子中产品的种类与状态 中的种类一样,则 继承 中所有信息。否则状态 由 更新,包括产品种类( )、意图( )、属性( ) 只要检测到 为 Chit-chat 则不更新状态即 Notice :当Chit-chat句子的数目超过一个阈值时,用来表征任务的对话状态 将会被清空,即为失忆(闲聊太多忘掉主题了)
Dialogue Management State Tracking 已经更新完最新的状态了, DM的任务就是根据系统对话状态( )做出反馈,主要是针对以下几类反馈: Recommendation:如果 是Recommendation,系统将根据存储在 中的产品类别和属性在数据库中进行检索。 Comparison:如果 是Comparison ,系统将根据存储在 中的多个产品类别和属性调用比较程序进行反馈 。(待开发) Opinion Summary:如果 是Ask Opinion ,系统将根据 中的产品/品牌 反馈所有可选项。 Question Answering:如果 中检测到产品名和产品属性名,但相关的属性值未检测到那将根据产品知识库查找返回未填的属性值,一般把这个当做一个单轮的KB-QA问题
Dialogue Management Proactive Questioning:此功能在满足以下几个条件后就会触发 检测到意图为recommendation 检测到类别名 没有其它限制条件 what kind of do you want to buy? Chit-chat : 当检测到非购买意图时此功能被触发,聊天功能是基于信息检索的 ,在数据库中存储一些闲聊的问答对,计算问题与数据库中问答对的问题的相似度 返回最相似问题的回复。
End-to-End Analysis 平均25.3轮(一问一答算一轮) 80%的句子为聊天问题。一个有趣的发现,闲聊功能能减少用户对对话质量的不满 49.9%的句子依赖前面的句子 意图分布列表如下: (Proportion为意图占比,Precision为该意图的检测精度) 在系统运营一段时间后查看系统的对话日志得到如下结论 意图检测中第二项 增加过滤条件 意图的准确率只有百分之50. 主要原因如下: 海量数据下的产品属性检测还是非常困难 多轮对话下增加了检测难度
Evaluation on Product Category Detection Evaluation on Utterance Type Classification
Q&A