Quantcast
Channel: 知乎日报
Viewing all articles
Browse latest Browse all 20608

为什么 Siri 听懂了我的话,还是不能做出有效的回答或准确的操作?

$
0
0

日报标题:听到「我把拿着望远镜的她锯得弯下了腰」, Siri 懵了

张少典,不想创业的计算机科学家不是好医生

Siri 其实说白了是两个子部分构成,一个就是语音识别,另一个就是识别后的自动问答。而自动问答最主要依赖的技术就是自然语言处理(NLP)。自然语言处理说白了就是让机器跟人一样读懂语言,并且依据此生成必要的输出。楼主说的两个问题其实都是机器在自然语言理解上出了问题。

自然语言处理所有的困难,归根结底就是一个问题:二义性(ambiguity)。

这种二义性,体现在语法、句法、语义的各个方面。

举个最经典的栗子,也是英文 NLP 算是最常被引用的一个二义性例子:

I saw her duck with a telescope

请大家先努力的读三遍这个句子,确保明白了它的含义。

然后我们开始讲故事。

按照天朝人民的平均英语能力,大多会自然的理解成:

I saw her duck with a telescope

我用望远镜看到了她的鸭子

也就是介个样子:

英语稍微好一点的童鞋,会知道 saw 还有“锯”的意思,于是这个句子就变成了类似这样的意思:

不过,和这个图不同的地方在于,锯鸭子用的不是锯子,而是一把望远镜。

I saw her duck with a telescope

我用望远镜锯她的鸭子。

到这里内心已经能感受到一丝丝凌乱和狰狞。

想象力再丰富一点的童鞋,可能还会畅想一种伟大的场景同样也符合这个句子的描述。那就是这个鸭子是个神鸭子,是个会拿望远镜的鸭子。于是就衍生出了 NLP 界最著名的句法二义性问题 pp attachment 问题,也就是介词性短语(with a telescope)到底修饰的是谓语 saw 还是宾语 duck。如果修饰的是 duck,那么上述的两种情形就会变成:

I saw her duck with a telescope

我看到她的鸭子拿着一个望远镜。

以及

I saw her duck with a telescope

我锯了她的一只拿着望远镜的鸭子。

脊背发凉啊我勒个去

不过这还远远没有完……

考过 GRE 的童鞋会跳出来指出,其实就连 duck 在这里都可以还有另一个合理的意思,来来来一起查词典:

也即是“弯腰”的意思。

这下好,上面已经提到的四种意思,一下子又能各自出现一个变种。其中前两个还算正常:

I saw her duck with a telescope

我用望远镜看到她弯下了腰

I saw her duck with a telescope

我看到她拿着一个望远镜弯下了腰

然后就越来越丧心病狂:

I saw her duck with a telescope

我用望远镜把她锯得弯下了腰。

I saw her duck with a telescope

我把拿着望远镜的她锯得弯下了腰。

尼玛,人家姑娘只不过拿了个望远镜,招你惹你了。

各位可以发现,每一个二义性,都会使得句子的可能意义的数量指数级上升。虽然其中大多数意义极少被使用,但对于机器来说,是很难做出有效判断的。就上述例子而言,我用望远镜看到她弯下了腰我用望远镜看到了她的鸭子,都是英文文本中非常可能出现的意义。而这种二义性只有通过上下文才能够消解。而人类是因为拥有一些常识(所谓 priori 或者 common sense),所以能排除掉那些明显不合理的可能。

同理,如果我们搞的再复杂一点:

I saw her duck with a telescope in the garden.

二义性会指数级的爆炸。因为 in the garden 可能修饰的是 I,可能是 her,可能是 duck,可能是 telescope。最荒谬的意义可能就是:我把拿着花园里的望远镜的她锯得弯下了腰。

到这里大家应该可以看到,pp attachment 问题是英文二义性问题的重要来源。从 NLP 的角度来说,很多时候就会导致所谓 non-projective dependency 的场景(请自行参阅相关论文)。在中文中,由于介词短语通常都会紧紧的 attach 在被修饰对象之前,因此这个问题可以说几乎不存在。所以在中文 NLP 中,更多的还是词性和词义本身的二义性造成的。

比如题主所举的两个例子,一个是词性理解差错(以为回家是名词;如果不是没理解什么是滴滴打车的话),一个是语义理解差错(以为出租车是一个日程安排)。在缺乏上下文,只有一个单独的问题,又缺乏相应使用历史的时候,这种二义性是极其难以被消解的。

所以大家真的不要为难 siri 了,她是真的不了解你啊。

最后说说我所从事的医疗 NLP。我们天天打交道的,就是大家一直觉得跟天书一样的病历:

……

其实,手写病历的识别是个计算机视觉问题,并不属于自然语言处理范畴。医院的电子化,给我们这些 NLP 狗带来了重大利好。终于有美丽整齐的文本可以处理啦:

看到这里,NLP 汪们深深的松了一口气。

可惜,想象和现实总是有差距的。医生不会因为放下笔头、拿起电脑,就变成圣人。该 NLP 买单的,还是得买。

唇稍绀”是什么鬼?

臂丛 + 腰硬”是什么黑科技?

还有离谱的

主诉:尿尿尿不出尿来 3 天

动不动还能搞出这种:

全身浅表淋巴结未触及肿大,头颅无,五官端正

头都没了你还治个什么鬼?

一般而言,病历 NLP 是不需要做句法分析的,因为医生的用语往往都简单异常,掐头去尾,用大量的并列短语来简介的概括一段事实。没有必要识别什么主谓宾定状补。

于是 NLP 汪们兴高采烈:不用做 parsing 啦!

直到有一天遇到这么个病历:

主任冒着漫天大雪,一步一步的走入病房,紧紧的握住病人的双手,亲切的问道:好点了没?

#教你如何用尽量长的句子表达尽可能少的意思#

NLP 汪们也经常会说,病历语义明确,不需要做共指代消歧义!(共指代消歧义就是说在类似“奥巴马上了车,他头很痛”这样的句子中,识别出“他”指代的对象是奥巴马)

直到有一天遇到这么个病历:

今查房,症状同前,体查同前,治疗同前

好啦,话归正题,其实医学 NLP 和前面说的普通 NLP 一样,最主要要解决的就是二义性问题。比如,呼吸音粗和小腿变粗,虽然都是粗,但是临床意义是完全不同的。

另一种二义性的反向体现,就是一个意义有无数种表达,比如巴宾斯基症这么一个体征,我们可爱的医生们就能写出五百种写法:

巴林斯基征、巴氏征、巴宾斯基征、巴宾斯基、babinski 征、巴彬斯基征、babinskisign…

#我知道你们忙,但你们能不能稍微认真点。。#

事实上,我们医学 NLP 汪,就是想帮中国的医生们,一方面不用再忍受写病历的折磨。你们随心所欲,我们来收拾烂摊!另一方面,你们写了这么多病历,总要产生点价值吧?有了 NLP,你们埋藏在病历中的知识宝藏(希望不是糟粕……),就都能被挖出来咯!


Viewing all articles
Browse latest Browse all 20608

Trending Articles