1. 什么是自然语言理解

大家最常听到的是 NLP,而 自然语言理解(NLU) 则是 NLP 的一部分:

二、自然语言理解 - 图1

自然语言理解就是希望机器像人一样,具备正常人的语言理解能力,由于自然语言在理解上有很多难点(下面详细说明),所以 NLU 是至今还远不如人类的表现。

二、自然语言理解 - 图2

下面用一个具体的案例来深度说明一下自然语言理解(NLU): 对话系统这个事情在2015年开始突然火起来了,主要是因为一个技术的普及:机器学习特别是深度学习带来的语音识别和NLU(自然语言理解)——主要解决的是识别人讲的话。 这个技术的普及让很多团队都掌握了一组关键技能:意图识别和实体提取 这意味着什么?我们来看一个例子。 在生活中,如果想要订机票,人们会有很多种自然的表达:

二、自然语言理解 - 图3

可以说“自然的表达” 有无穷多的组合(自然语言)都是在代表 “订机票” 这个意图的。而听到这些表达的人,可以准确理解这些表达指的是“订机票”这件事。 而要理解这么多种不同的表达,对机器是个挑战。在过去,机器只能处理“结构化的数据”(比如关键词),也就是说如果要听懂人在讲什么,必须要用户输入精确的指令。所以,无论你说“我要出差”还是“帮我看看去北京的航班”,只要这些字里面没有包含提前设定好的关键词“订机票”,系统都无法处理。而且,只要出现了关键词,比如“我要退订机票”里也有这三个字,也会被处理成用户想要订机票。

二、自然语言理解 - 图4

自然语言理解这个技能出现后,可以让机器从各种自然语言的表达中,区分出来,哪些话归属于这个意图;而那些表达不是归于这一类的,而不再依赖那么死板的关键词。比如经过训练后,机器能够识别“帮我推荐一家附近的餐厅”,就不属于“订机票”这个意图的表达。并且,通过训练,机器还能够在句子当中自动提取出来“上海”,这两个字指的是目的地这个概念(即实体);“下周二”指的是出发时间。这样一来,看上去“机器就能听懂人话啦!”。

二、自然语言理解 - 图5

2. 自然语言理解的应用

几乎所有跟文字语言和语音相关的应用都会用到 NLU,下面举一些具体的例子。

二、自然语言理解 - 图6

2.1 机器翻译

基于规则的翻译效果经常不太好,所以如果想提升翻译的效果,必须建立在对内容的理解之上。 如果是不理解上下文,就会出现下面的笑话:

二、自然语言理解 - 图7

2.2 机器客服

如果想实现问答,就要建立在多轮对话的理解基础之上,自然语言理解是必备的能力。 下面的例子对于机器来说就很难理解:

二、自然语言理解 - 图8

机器很容易理解为:那个态度恶劣/的/哥谭/市民/就冲我发火

2.3 智能音箱

智能音箱中,NLU 也是重要的一个环节。很多语音交互都是很短的短语,音箱不但需要能否识别用户在说什么话,更要理解用户的意图。

二、自然语言理解 - 图9

用户并没有提到空调,但是机器需要知道用户的意图——空调有点冷,需要把温度调高。

3. 自然语言理解的难点

下面先列举一些机器不容易理解的案例:
  1. 校长说衣服上除了校徽别别别的
  2. 过几天天天天气不好
  3. 看见西门吹雪点上了灯,叶孤城冷笑着说:“我也想吹吹吹雪吹过的灯”,然后就吹灭了灯。
  4. 今天多得谢逊出手相救,在这里我想真心感谢“谢谢谢逊大侠出手”

二、自然语言理解 - 图10

那么对于机器来说,NLU 难点大致可以归为5类。