交互搜索
交互搜索是一种新的产品形态,可以和用户对话,记住用户的购物需求和偏好,提供购物知识和建议。在搜索页面下拉就可以进入了,类似于微信的小程序的进入方式。
自然语言理解
对话和搜索的最大区别就是对话是多轮的,而搜索是单轮的。另外对话中,特别是语音输入中,会有更多的自然语言,而搜索中更多的是商品语言。因此,对话中的核心技术就是自然语言理解(NLU),在交互过程中,理解用户的购物需求和意图。
上面是用户多轮对话购物的一个例子,在用户每次输入后,Query理解模块(QU)都会识别他本次对话的意图、类目和属性,对话状态管理模块(DST)都会更新当前最终的意图、类目和属性。
意图(intent):
- 购物:我想买连衣裙
- 知识问答:高端手机品牌有哪些,怎么除甲醛
- 购物攻略:怎么挑连衣裙
- 搭配:红色连衣裙搭配什么鞋子
- 促销活动:iphone8活动
- 产品比较:iphone8 mate10 哪个好
- 类目(category):商品的类目或者品类。
- 属性(attribute):类目或品类下,商品的属性(CPV)。
NLU技术点
自然语言理解的模块如下:
意图识别 很多时候,用户的意图是不明确的,比如搜“手机”,可能既想买手机,也不知道怎么挑。但是从概率上来说,“手机”这个query的主要意图还是购物。而“怎么挑手机”,则主要是找购物攻略。因此,我们可以从querylog中找出用户在输入某些短语(如“怎么挑”)的时候,是想找购物攻略的。意图识别就是把这些短语挖掘出来,对query的意图分类。
Session切分 在用户的一次购物过程中,可能会买多种类目(品类)的商品,同一个类目的商品属于一个购物需求或者一个session。因此,每次用户输入后,都要识别用户是继续说的,还是新的需求。有的时候,这种session切换会包含歧义,如先搜“手机”,再搜"苹果",这时可能是“苹果手机”,或者是“苹果水果”,这时需要根据概率出默认的语义(苹果手机),并且给用户其他的选项(苹果水果)。
类目预测 如果session切分是正确的,类目预测就会比较容易了。不过,多轮的时候,用户的需求更复杂,对类目预测的要求也更高。当然,如果session切分错了,类目预测也会出错。由于session切分和类目预测都是对类目需求的理解,这两个任务之间有很多共同点,所以我们也在考虑一起优化。
属性填充Slot filling 不同的叶子类目有不同的属性集合,淘宝的上万个叶子类目中,也有上万个属性(Slot)。高频的属性值可以通过知识图谱中的CPV来直接匹配,但中低频的属性值则需要用到更多的信息。很多属性值有不同的说法,比如:iphone8plus、iphone8p、8plus、8p,这4个词都是指"型号:iphone8plus"。还有很多属性值并不在CPV中,比如“3到4岁”的奶粉。这些都需要识别到某一个CPV属性,或者一个文本属性,或者是没有意义的词。
对话状态管理State Tracking 这里主要是进行属性值的追加或者替换,比如先搜“only连衣裙”,再搜“zara”,这时的状态是“zara连衣裙”。更复杂的是文本属性的替换,比如先搜“便宜的手机”,再搜“贵的”,这时的状态是“贵的手机”。
State Tracking之后,用户对话的语义理解就完成了,会输出表示当前搜索语义的“标准Query”和tagging的结果,给后续的对话策略、排序等模块使用。
后记
交互搜索中的自然语言理解就给大家简单介绍到这里,真正想要理解自然语言的语义,任重而道远。举几个语音搜索中的例子,作为未来的目标,“1.5米宽儿童上下床带衣柜”,“我要夜萝莉精灵梦中的萝莉公主最好便宜的”,“必背小孩子玩的玩具”。