【用户模拟器】实践篇:用户模拟器在贝壳IM场景中的应用

2020 年 7 月 17 日 AINLP

本文是用户模拟器系列文章的实践篇,主要介绍用户模拟器在贝壳IM场景中的应用。

一、背景和目的

贝壳找房作为房产平台行业公司的领跑者,有完善的在线服务,使经纪人和客户能够高效的进行沟通。为了更好的服务客户和经纪人,公司从18年开始开发智能对话系统——小贝助手。小贝助手一方面帮助经纪人快速准确的回答客户的提问,提高经纪人引导会话的能力,同时也会在真实对话之外,提供模拟客户陪练的训练场,帮助经纪人提升业务能力。目前开发用户模拟器的目的主要有以下几个方面:

1.1 小贝助手的测试环境

小贝助手的动作类型有多种,比如回答详情、推荐房源、询问需求、约带看等,每次修改动作策略之后都需要进行测试,以评估时机或者答案的准确性,这时如果引入模拟用户进行仿真测试,将会非常高效和可信。

1.2 DM强化学习的模拟交互环境

目前小贝助手的对话管理(DM)是通过规则和监督学习来实现的,DM下一阶段的目标是使用强化学习,而强化学习训练需要对话系统和用户进行交互得到对话数据和累积得分来进行。在IM场景中,和真实用户的交互成本昂贵,数据回流周期慢,不足以支持模型的快速迭代,因此必须构建一个用户模拟器作为对话系统的交互环境来进行闭环训练。有了用户模拟器便可以产生任意多的数据,对话系统可以对状态空间和动作空间进行充分地探索以寻找最优策略。

1.3 经纪人训练场的模拟用户

在线下培训经纪人,有时需要模拟实际工作场景,比如与客户的交流,有了用户模拟器,经纪人便可以在模拟环境中与客户进行交互,不断提升自己的专业知识和业务能力。

二、用户模拟器的实现

综合考虑业务需求和模拟器的实现方法,最终确定的模拟器方案如下图所示,其中红色框为模拟器内部结构,绿色框为对话系统即小贝助手内部结构:以下将针对每一个环节进行详细说明。

2.1 用户目标

从前面两篇文章的介绍我们就已经知道,用户模拟器的第一步就是生成一个用户对话的目标,对话系统对此是不可知的,但它需要通过多轮对话交互来帮助用户完成该目标。

不管是基于规则的用户模拟器还是基于模型的用户模拟器,在每次对话开始之前,都会统一的构建出一个显式的用户目标 Goal G=(C,R),G 由约束条件 C 和问询内容 R 组成。

那么如何来生成用户目标呢,针对IM对话场景,我们提出以下方法:

  1. 根据过去一周内每个用户实际发生的会话数作为采样比例进行采样,得到采样人群;
  2. 获取采样人群的实时用户画像;
  3. 将用户画像中的房屋偏好按照置信度进行排序,选取阈值大于某值的槽位作为约束条件C,在剩余的偏好中随机选取n个作为问询内容R,得到每个人的用户目标。

这样生成的用户目标比较符合线上实际的人群分布,同时因为用户是真实存在的,生成的用户目标也很合理,不会发生不符合现实情况的现象(比如海淀区总价100万的别墅)。

生成的一个用户目标如下所示:

{    "Requests":{        "intents":[            "house_floorLevel",            "house_elevatorNum",            "house_elevatorCensusRate"]    },    "Constraints":{        "slots":{            "priceTotal":1200,            "district":"西城区",            "resblock":"展览路",            "decoration":"简装",            "floorLevel":"高楼层"        }    }}

2.2 用户模型

前面两篇文章分别介绍了基于统计模型深度模型实现用户模型的方法,然而,基于深度模型的方法依赖大量标注会话数据集,目前我们正在努力构建IM场景下的会话数据集,所以第一个版本选择了agenda方式来实现。

用户模型中的对话状态表示由四个变量组成:S=<A,S_R,S_C,S_I>,其中S_R,S_C,S_I为二进制向量,各个变量的含义如下所示:

  1. A表示上一轮小贝的动作;
  2. S_R表示问询内容的状态(被告知与否);
  3. S_C表示约束条件的状态(告知与否);
  4. S_I表示与约束条件不一致的状态。

这么设计的好处在于:

  1. 初版可以快速实现可冷启动,可控的Agenda方式,相当于将Agenda编码进状态向量;
  2. 后面使用监督学习模型,不需要改变状态表示,只是将Agenda动作选择的确定性转化为模型决定的个性化动作。

每一轮会话,模型会根据更新后的状态进行动作采样,根据经验,我们设定状态优先级顺序为:A>S_I>S_C>S_R。

具体流程如下图所示:

2.3 自然语言生成

2.1我们得到了用户目标,知道了模拟用户的约束条件和问询内容;2.2我们根据当前对话状态选择出了模拟用户要执行的动作,但是最终需要输出的是人能够看懂的自然语言,那如何将动作映射为自然语言呢?

当前版本我们选择了模板映射的方法,输入为<动作,槽位,槽位值,话术模板>,输出为自然语言。

模板示例如下:

{    "Inform": {        "district": {            "msg": [                "我想找个%(district)s的房子",                "有没有%(district)s的房子"],            "type": "string"        },        "bizcircle": {            "msg": [                "我想找个%(bizcircle)s的房子",                "我想看看%(bizcircle)s的房子"],            "type": "string"        },        "resblock": {            "msg": [                "我想找个%(resblock)s的房子",                "有没有%(resblock)s的房子"],            "type": "string"        },        "bedroom": {            "msg": [                "我想找个%(bedroom)s居室",                "我想买个%(bedroom)s居室"],            "type": "int"        }    },    "Request": {        "house_price": {            "msg": [                "这套房子房屋价格是多少?",                "这套房子价格是多少?"],            "slot": [                "priceTotal"]        },        "macket_shellIndex": {            "msg": [                "这套房子均价是多少?",                "这套房子的均价是多少呢?"],            "slot": [                "priceAverage"]        },        "house_floor": {            "msg": [                "这套房子在几层?",                "这套房子是在第几层?"],            "slot": [                "floorLevelNum"]        }    }}

2.4 与小贝助手的交互展示

当前用户模拟器可接收15类经纪人动作,可发出8类模拟用户动作,具体如下:

经纪人动作 模拟用户动作
开场语、询问整体需求、询问特定条件、推荐房源、询问联系方式、约带看、回答房源信息、平台保障、确认需求、询问买房目的、约时间、约地点、结束语、留下联系方式、询问买方情况 开场语、告知、询问、反馈、约时间、约地点、留下联系方式、结束语。

1个交互示例展示:

simuser:你好simuser:有没有朝阳区的房子xiaobei:您是想看哪个小区的房子呢?simuser:有没有中国铁建花语城的房子?xiaobei:您这边总价预算多少呢?simuser:总价最好在1260万左右xiaobei:您考虑几居室呢?simuser:我想找个三居室xiaobei:您对楼高有什么要求?simuser:都行xiaobei:<房源卡片> (符合约束)simuser:这套房子是日式装修吗?xiaobei:想考虑装修好的吗?simuser:比较喜欢精装的房子simuser:这小区停车方便吗?xiaobei:小区车位比较充足,车位比为1:1.2simuser:好,先这样吧,我有需要再联系你。

三、总结与展望

当前实现的用户模拟器是贝壳IM场景下用户模拟器的初版探索,在缺乏具体业务场景标准数据集的情况下,借鉴和考虑了深度模型的特征表示方法,使用了工业上应用最广泛的agenda方法来实现。该方法具有可冷启动,在缺乏标注对话语料时可以根据经验进行设计;用户行为完全可控,保证了用户动作生成的一致性,一般不会出现异常用户行为等优点。

但该版本用户模拟器还有很大的改善空间,也是我们未来要做的工作:

  1. 与经纪人进行交互。当前用户模拟器接收的输入为小贝助手输出的结构化数据,如果想要与经纪人直接进行互动,用户模拟器还需要加入自然语言理解(NLU)模板,对经纪人的自然语言进行解析,得到经纪人动作和槽位信息等;
  2. 增加动作选择的个性化和多样化。目前在缺乏标注数据集的情况下,使用了基于经验的agenda方法来实现,未来在建立了IM场景下的标准会话数据集之后,可以使用深度模型,基于数据驱动来实现更个性化的动作选择;
  3. 增加语言表达的个性化和多样化。当前用户模拟器的自然语言生成模块采用了简单的模板映射方法,表达方式有限。未来可将<上文,要执行的动作,用户目标>等作为输入,使用生成模型来生成自然语言。

作者介绍

刘娜,2019年6月毕业于北京邮电大学自动化学院,毕业后加入贝壳找房语言智能与搜索部,主要从事对话系统及强化学习相关工作。

廖明月,就读于中国人民大学,2019.11—2020.06于贝壳找房语言智能与搜索部实习。

相关文章

【用户模拟器】原理篇一:统计建模的方法
【用户模拟器】原理篇二:深度建模的方法

推荐阅读

这个NLP工具,玩得根本停不下来

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
2

相关内容

专知会员服务
33+阅读 · 2020年9月25日
个性化推荐系统技术进展
专知会员服务
65+阅读 · 2020年8月15日
【2020新书】高级Python编程,620页pdf
专知会员服务
232+阅读 · 2020年7月31日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
关系图谱在贝壳找房风控体系的应用与实践
DataFunTalk
49+阅读 · 2020年2月12日
【CPS】CPS应用案例集
产业智能官
81+阅读 · 2019年8月9日
用户研究:如何做用户画像分析
产品100干货速递
44+阅读 · 2019年5月9日
NLP实践:对话系统技术原理和应用
AI100
34+阅读 · 2019年3月20日
使用 Canal 实现数据异构
性能与架构
20+阅读 · 2019年3月4日
干货|深度强化学习在面向任务的对话管理中的应用
全球人工智能
13+阅读 · 2017年9月14日
如何在Chatbot中应用深度学习? | 赠书
人工智能头条
5+阅读 · 2017年9月12日
有了场景和画像才懂用户
互联网er的早读课
6+阅读 · 2017年8月26日
Deep Reinforcement Learning: An Overview
Arxiv
17+阅读 · 2018年11月26日
Arxiv
7+阅读 · 2018年1月30日
Arxiv
7+阅读 · 2018年1月21日
VIP会员
相关VIP内容
相关资讯
关系图谱在贝壳找房风控体系的应用与实践
DataFunTalk
49+阅读 · 2020年2月12日
【CPS】CPS应用案例集
产业智能官
81+阅读 · 2019年8月9日
用户研究:如何做用户画像分析
产品100干货速递
44+阅读 · 2019年5月9日
NLP实践:对话系统技术原理和应用
AI100
34+阅读 · 2019年3月20日
使用 Canal 实现数据异构
性能与架构
20+阅读 · 2019年3月4日
干货|深度强化学习在面向任务的对话管理中的应用
全球人工智能
13+阅读 · 2017年9月14日
如何在Chatbot中应用深度学习? | 赠书
人工智能头条
5+阅读 · 2017年9月12日
有了场景和画像才懂用户
互联网er的早读课
6+阅读 · 2017年8月26日
Top
微信扫码咨询专知VIP会员