帮我看看下个星期五去北京,下午3点多,从虹桥出发,国航的航班。“——这一类的表达方式在几乎从来没有出现过。哪怕是在用户最熟悉的场景,也很难确保一个句子的表达里包含了所有必须的检索条件。而且,用户还会不停的补充更多的个性化需求。
对于用户自己比较了解的场景,如:订机票需要提供到达地,用户提出的大多数需求,在最初都是非常简单,然后逐渐开始细化的。所以需要当用户提出不完整需求的时候,根据其意图,结合之前已经给过的条件,通过对话,向用户提出问题,再获得答案来补全剩下还需要的条件,最后再完成服务。
对于用户自己不熟悉的场景,用户根本就不知道自己该提出哪些方面的需求。如:不懂酒的用户,想买一瓶合适的威士忌。他就根本很难提出除了价格以外的需求,比如产地,年份,酿造原料,水源等等。因此,Agent得以合适的方式来提问,引导用户给出偏好,并且用对话提出推荐。
而且对于agent而言,很难判断哪些用户对服务的认知有多深。如果不做识别,就容易问”老手“一些”新手问题“,继而让老手觉得我还不如自己下单;而给新手又留下”你在说什么我都不懂“的印象,也是不聪明。
所以要有好的体验,这是非常困难的。而基于上下文的对话,只是最基础的用户需求之一。
2、理解口语中的逻辑 (logic understanding)
在我们的实践中,我们发现对”逻辑“的理解直观重要。原因也是因为用户的正常对话,大部分都不是开发者预设那样的。
再做一个简单的测试,比如找餐厅,试试:帮我推荐一个附近的餐厅,不要日本菜。
这是一个简单逻辑,但是你看所有的服务,这次包括刚刚那个国内创业公司C一样,都会是一个结果:全部推荐日本菜。
也让朋友测试了亚马逊echo的alexa,结果也无法识别”不要“这个最简单的逻辑
这次其实比刚刚好多了,至少4家里面除了google allo,都识别出来我的意图是找餐厅——但是,当我明确提出不要日本菜的时候,给出结果的三家全部都是日本菜......也就是说“不要” 两个字被完全忽略了。
观察大量的用户案例表明,当用户越是个性化需求强烈的时候,对话中出现逻辑和指代关系的频次越高。
“有没有更便宜的?”
“除了大床房以外的房间有么?”
“后天会比今天更冷么?”
“就要刚刚的那个2千多的吧。”
“除了廉价航空,其他的航班都可以。”
以上这些需求是提需求的时候,在对话中经常出现的表达方式,而且看似简单,但是目前没有任何一个NLU的系统或产品能够正确的理解。主要的阻碍就是对逻辑的理解,还有在基于上下文对话中的指代关系的理解失败。
3、NLP不是全部,还要有能力履行(API困境)
NLU并不是智能助理发展的瓶颈,供给端的数据才是。
我们假设如果有一个黑科技出现,使得NLP有了极大的进步,以至于两个条件:1)基于上下文场景的对话;2)口语逻辑,都能被理解了,甚至还能基于场景和上下文用NLG来生成各类问题——它能理解我们所有讲出来的需求。
在用户熟悉的范围内,它能结合所有的过去的对话,历史记录等等内部外部条件,帮助用户尽可能的实现“不用开口,就知道我在这个的需求”。比如当用户提出“推荐餐厅的需求”:
用户:“女朋友周日过生日,推荐一个餐厅,找有江景的,最好桌子旁边有一个大落地窗户,能看到外面的夜景。吃的不要太贵,环境好点,有现场音乐的最好是爵士,不要太吵的。” (btw,这是一个真实需求)
Agent:“菜系有偏好么?”