如何把deep parsing的东西系统地用到对话系统中来?
这个以前多次零星讨论过,再梳理一下。
1. 先说 deep parsing 与 deep learning 的结合
两种结合方式,一种是内在的,一种是外在的。
1.1. 内在的结合
问题可以反过来看,绝大多数对话系统是不用 deep parsing 的,这就是没有代入结构的 baseline。如果不代入结构就已经满足应用的要求,自然没有 deep parsing 什么事儿。但其实是 baseline 有缺陷,不能解决一些问题,譬如 sparse data 的问题。
下一个问题就是,我们知道语言是有结构的,理论上讲代入结构一定对克服 sparse data 的问题有利,但实际上怎么去做,还不清楚。抽象地说,这是一个研究课题,沙龙里面讨论时候也有人提过,迄今为止的浅尝辄止,把结构作为features代入一个ngram为基础的学习模型,没有发现简单的结合办法,可以显著提高质量,这受到到 evidence overlapping 和算法复杂度等挑战。我们以前也做过这种结合的尝试,也是浅尝辄止没有深入,当时的结论是,看到了曙光,但还需要更深入的探索尝试。
迄今整个领域没有深入研究这个问题,不仅仅是研究性的挑战(算法复杂度等),更主要是:很多团队没有靠谱的deep parsing 的条件作为探索的基础,加上整个领域20多年一直陷在浅层里面做 NLP,还没有余力去做这一方面。但现在似乎到了认真做这个的时候了,因为甚至 deep learning 在算法上的突破,迄今也还是没有突破 text 结构的瓶颈,这是下一步比较清楚的方向。
我的设想是,可以重新定义 ngram 作为带入结构的探索。譬如 bigram 以前的定义就是 w(i) w(i+1) 序列,我们可以重新定义为 R(w1,w2)。这个 R 就是结构,譬如 动宾,主谓,定中,状语 等关系,deep parsing 的那些句法关系。其中的 w1 与 w2 也可以做扩展,不再是词(直接量),而是包括直接量的关于那个节点的不同抽象度的 features (最上层是 POS,中间还有带入 ontology 的可能)。当然从直接量提升到不同的 features,很可能造成模型太复杂:怎么控制复杂度,又不局限于直接量,是一个需要拿捏分寸的事儿。但总体思路就是,既要跨越线性距离的局限(通过用 R 代替 linear ngram,这是 arc 的抽象概括能力),又要跨越单词直接量的局限(node 也要具有抽象概括能力),这才有可能在学习的系统中真正有突破性进展。这个探索值得花大力气,因为这是 text NLP 的方法学上的突破,适用的不仅仅是对话系统,而是一切的ngram为基础的NLP。这是从机器学习带入 deep parsing 的角度看探索的方向。
1.2. 外在的结合
如果不从机器学习的角度看,deep parsing 支持对话系统本质上就是一个小数据的精度分析和语义落地的任务,规则本身是有一套自己的方法去做的。这一路做下去的结果是,精度(precision)高,但广度(recall)是挑战,需要靠时间去磨(incremental recall enhancement)。
这种高精度的 deep parsing 作为支持的规则系统,也可以外在地与机器学习的 baseline 系统结合。我们叫做 backoff model:就是让没有结构的机器学习的系统垫底,以弥补 recall 的不足,让 parsing 支持的精度系统作为首选。
这种外在的结合相对容易,因为两套系统是分别开发的,虽然目标是一致的。只不过到调用的时候再把两套系统结合起来。这与前面说的把 parsing 带入机器学习(1.1)不同,因为前面的是你中有我的结合,具有研究性的挑战(overlapping和perplexity等)。
我的看法是,两个路子都值得尝试:前者一旦突破,是研究的成就,有学术的影响。
后者是工程的做法 可以立竿见影。双方最终都要求一个靠谱扎实的 deep parser,对于汉语,迄今很少人做得到。汉语 chunking 倒是有靠谱的 但 deep parsing 未曾见到(不算在下)。
2. 再说说,deep parsing 在小数据系统与大数据系统的应用
对话系统基本是 front-end,面对的是小数据的处理与应对,虽然对于学习系统,在训练的时候,训练集可以是所有收集得到的对话,也有一定的量。
对于大数据挖掘以及用挖掘结果去支持问答系统(也可算是一种“对话”的延伸,譬如类似 IBM 沃森的问答系统),那边有一个 back-end engine,专门处理大数据,以抽取挖掘或在线搜寻 open-ended 的答案。这个大数据架构下,deep parsing 怎样起作用,可以说得更清晰 有把握 因为这些都是做过的工作:been there done that,在大数据挖掘,知识图谱,舆情监控,客户情报,自动民调,问答系统,智能搜索和智能浏览这些方面,deep parsing 是地地道道的核武器。
在小数据应用场合,deep parsing 也应该有很大助益,因为毕竟小数据更加依赖分析的精度。但是小数据的短板是没有大数据的信息冗余作为补偿。
或曰:车轱辘话
答曰:信息冗余是大数据时代的自保策略,否则一切真知灼见都可能烟消云散。
总之是大数据有了deep parsing,柳暗花明;大数据没有它,万古如长夜。但并不是一切的 deep parser 都是核武器,不信你下载一个斯坦福或者SyntaxNet试试就知道了。这些 deep parsers 下载来,你很难做一个像样的应用。主要原因有二:(i)他们基本没有 domain portability,设计者有本事训练出来,你下载以后想如法炮制,在你要应用的领域去重新训练,哪怕你真弄到了训练数据,其成功可能性还是渺茫;(ii) deep parsing 是 NLP 应用的核武器,绝不仅仅是指我们看到的那些句法树,还有句法树上的每个节点的丰富信息,包括 ontology。而下载来的这些 parsers 通常缺乏丰富的节点信息: 光靠单词(直接量)加上句法树结构是做不了大事的。因此核武器能不能发挥威力,很大程度上取决于 made in where and made by which approach.
其实 如果 斯坦福的 parser 或 谷歌的 SyntaxNet 能够发挥威力,迅速横扫深度 NLP 应用和产品 哪里会等到你去做 早有捷足先登的人了。而且果如此,他们大概也不会开源了,自家先发了再说。天上掉不下馅饼 就是这个道理。
Guo 君给我留言说,你整天追在学习后面喊打,人家眼珠子都不动,该干嘛干嘛。他眼珠动还是不动,根本不是我关心的。我是菩萨心肠,为了世界的丰富性和多样性,为了后学,为了NLP的未来世界,心胸早已超越一己之私,一党之争。如果没有人发声,这个世界多么单调寂寞,多少人被误导和洗脑。多少人在结果还没出来的时候,就盲目相信深度神经一定会 work,又有多少人根本就不知道这个世界还有神经以外的理性算法
阿弥陀佛。
【后记】
话多可以洗脑,嗓门高也可以洗脑。乔姆斯基的不同政见,批判美国外交政策和媒体洗脑,几十年来基本没有变动,一直是车轱辘话。他就是反复地不同角度地以不同的案例讲的是同一个见解,与马克思讲《资本论》一个路数。
不止一位朋友反映:你这速度,写的比我读的还快,哪里有那么多时间。我当是 compliments,因为所写虽有冗余,但并非口水,不乏真知灼见。这点儿信心还有。
哪里有那么多时间?鲁迅早就说过的,时间就是海绵。又说,那是把资产阶级喝咖啡的时间也挤出来了。大家都是24小时,彼此彼此,吃喝拉撒睡、上班点卯,样样不能少。
喷涌的时候写,总比枯竭的时候挤牙膏强。兴致来的时候不写,兴尽而归,就了无音息了。了无音信其实也没啥,自己脑袋的知识和见识并没有因此减少,但人活着,也不能只为了自己的脑袋不是。
其实 人一辈子有这个状态也不多。少年求学,青年求偶,中年养家,青年-老年也都还有个梦想 put a ding somewhere,总之人一辈子就是个劳碌命。随心随性的自由不过是劳碌之间的一次休假。要惜福感恩。
【相关】