【李白董冯吕64:NLPers 谈 NLP 渊源及其落地】

董:
冯老师,姜博士,李维,白硕,宋柔老师,这个系统正式上线前,想先请各位看看,横挑鼻子竖挑眼。这个系统是去年6月开始开发的。时间短。最近几个月更是忙得厉害

李:
刚发朋友圈了。“中国nlp老前辈董老师的知网支持的平台 值得关注 推荐。世界上自然语言理解的深度 董老师是最深的了。逻辑语义的开创者。三十多年的智慧和知识积累 董振东老师是 让我辈高山仰止的语义巨人(见 科学网《语义三巨人)。【语知科技】多语种NLP平台正式上线。  demo.keenage.com

冯:
董老师,语义理解,还是要依靠规则。深度学习不行!

李:

Manning 教授昨天座谈时说 最近三年是他一辈子做nlp感觉进步最大的三年 他主要指的是深度学习。曼宁是一位一直强调语言结构和理解的老教授 NLP最知名的权威了。他的感受应该是真切的 不过来不及细问他 这种感受多大程度上是基于深度学习在语音处理以及mt方面的突破性进展,文本方面其实目前很难说深度学习引发了革命。不过 word embedding 还有什么 adversary 学习方面 开始在词汇语义级发力 有些结果令人印象深刻。parsing 要等到深度学习能把 parsing 落地为应用 才值得侧目以待 目前不行。曼宁教授还是很学究 甚至有些腼腆的气质 现在火得不得了 也是时势使然。ai 一热 nlp 就热。病急多投医,nlp各路 也跟着提升了在ai中的地位,I guess。

董:
@李,你说的让我脸红了。我在研究上是个工匠,做学问认死理。我研究语义,是叫当年的机器翻译研究逼出来的。什么是理解?什么是常识?什么是知识库?人的知识是如何建构的?我后来的感觉人是用“少”,而非用“多”来计算语义的。你常说起的Cyc,是“多”的典型。语义的关键是“关系”,而分类只是语义关系的一种。近年我们开发了基于知网的翻译,最近一年开发了中文分析,从学术的观点看,是为了考验知网,是为了给自己30年前的设想做个交代。这个交代既是给自己的,也是给别人的。告诉人们哪些努力是值得的,哪些努力是仍然无法圆满成功的。

李:
董老师退而不休 能够完成心愿 给我们留下的这笔知识财富 我们需要时间咀嚼 消化 但我坚信这种影响是深远的。潮起潮落 有些东西是不变的。语义及其语义研究的一些方法 具有相对恒定的价值 好比金子 总会发光 这个没有疑问。ai 中真正懂 nlp 特别是 nlu 的人不多,好多声称nlp的专家 只是做过自然语言的某个端对端的应用 专家做 text NLP与他做Visual 做 audio 做生物DNA 是一样的路数和算法,不过是数据不同而已。没有啥语言学。

白:
佩服董老师的执着和务实。如果说哪里还差点什么,就是对于“多个爹”的刻画机制问题。

董:
白硕说的对。“多个爹”是我们想做的新的探讨。两个问题我们遇到的:一是“是不是个“爹””,如何在文句中正确的确定那个“爹”。

冯:
有的作自然语言理解的人不关心语言学。词向量效果不错,理论机制不清楚。

李:
戏不够 词来凑。语言的分析理解主要有两个支柱,一个是词汇 吕先生称为珍珠;一个是结构 称为串子。传统说法是没有串子 做不了语言理解的项链。

白:
@冯志伟 词向量是保运算的降维,数学上是清楚的,但是跟理解搭不上钩。

李:
所以我们这些擅长 deep parsing 的人就开始看不起只看到珍珠的人,但是 其实二者的 overlapping,从完成nlp任务的角度 作为两种证据源 其实是相当地大。因此善于把 词模型 词向量模型用到极致的人,有时候的确产生了让我们意想不到的结果。

冯:
珍珠和串子是缺一不可的!

白:
如果每颗珍珠都有插销插座,确实可以不用串子。或者说,寓串子于珍珠之中。

李:
我的意思是 我们多少有些老古董了。虽然可以继续执着下去 也的确可看到一些我们擅长的nlu工作 词模型似乎根本就没有可能赶上来。但还是应该保持一种 open 心态。

白:
开开脑洞还是必要的。
词负载结构是好东西。

冯:
我们要关注词向量的成果,更要问一个为什么?

李:
对 应该探究这种表达的背后。

白:
设想回到老乔刚冒泡的年代,那时的语言学家怎么看老乔?

李:
其实我最早读乔姆斯基的转换生成语法的介绍的时候,非常看不起,觉得就是儿戏。那还是在 1982 年备考语言研究所刘老师的机器翻译研究生的时候不得不临时抱佛脚,了解一些计算语言学的基本概念。此前我做过英语教学多年(包括插队做民办教师),从中学做学生的时代就教别人的英语句法分析,主动语态被动语态等转换烂熟于心。觉得老乔演示的那些转换生成案例,太低级 太常识 太机械 乏味,太不具有神秘感。直到后来学形式语言理论 才生出崇拜感。

白:
说实话,如果知识结构跟不上老乔,恐怕根本没有跟老乔PK过招的可能。

李:
人岁数大以后的一个好处是,可以直抒己见,没有啥顾忌。我其实在读博士做汉语形式研究的时候,就对乔老爷的句法独立句法自足论极为不满,就在 seminar 指出乔老爷错了,离开语义,汉语句法形式分析搞不定。被我的导师劈头盖脸一顿轻蔑,大意是:你不知道天高地厚,一边去。被哑口很多年过去,我还是发扬光大了当年的批判。

冯:
我在57年读到乔的三个模型就开始崇拜他了!

李:
是啊,一个理论把自然语言与电脑语言形式上统一起来,使得电脑语言编译越来越像语言学,这种抽象让人震撼。震撼过后的很多年 就是对乔老爷的不断扬弃和批判,批判的主要点还是源于他的抽象:是赞也抽象,批也抽象。的确 他把电脑语言带进了语言学,居功至伟 。同时他也把自然语言带进了坑里面,误导了太多的人 整整一代人。(详见:《立委:乔姆斯基批判》 )。

白:
@wei 你那不算是语言学的批判,只是工程视角的批判。他是语言学家,但从未承诺过NLP什么。NLP掉坑里也是自作多情

李:
我们下意识还是 认定他应该引领nlp 和 cl,结果是他越走越远 越走越邪门,nlp 已然与他无关了。

白:
他不管工程,不管技术,只管数学。

李:
结构分析中的叠床架屋 使得过程中夹杂了太多的 assumptions,看上去高度抽象 追求共性 实际上是越来越像空中楼阁。当然 我肯定戴了有色眼镜,做了一辈子nlp 对纯语言学很难批评得中肯 只是一种感觉而已。老乔的语言学 对于绝大多数NLP践行者包括在下,都是供在菩萨庙里面的 只膜拜 不 follow。

白:
如果从工程角度批判,估计人家看都不看—-关我什么事。

李:
老乔的思维高度自然不看 也不用看 这种批判。但是老乔下面的语言学家我认识很多,我就是这堆人里面混出来的,从他们身上我能感觉到他误导的后果。这些人很多时候就是在老乔的框架里面 自己跟自己玩游戏 没有理论创新 只好在语言数据上玩游戏,而且是一点都不感觉高明的游戏。说的是一批 或一大批语言学家。(也有一些绝顶聪明的纯语言学家让我叹服的,为数极少。)

洪:
做计算机编译的,没人认为老乔误导 Knuth和老乔貌是惺惺相惜。

吕:
赞@wei , 很多看法深有同感

李:
编译的理论基础 编译的祖师爷,电脑界理应崇拜 给10个图灵奖也不过分。当然 乔老爷哪里在意什么图灵奖。@吕正东 有机会咱俩坐下来谈。你最近的大作(见 独家|专访深度好奇创始人吕正东:通向理解之路)中我最不满意的就是一句话:说什么 符号逻辑规则路线没有成功的(大意,查原文是:“这三点都导致至今没有成功的规则系统”)。我得让你见识一下符号系统,没有深度学习的任何一家目前可以做到这个NLU的,无论深度 广度 速度 鲁棒 迁移度 可行性 还是其他指标 (It is untrue that Google SyntaxNet is the “world’s most accurate parser)。

吕:
@wei 惭愧,改日一定当面请教。

白:
说这些其实是在以史为镜。今天语言学界看DL、看词向量的心态,跟当初老语言学界看老乔的心态,有没有几分相似?

吕:
我的意思是说规则系统很难做到我所期望的NLU,不是说现在最好的规则系统弱于DL的系统。当然我对规则系统确实了解不够(现在正在补课),不免贻笑方家。

李:
不知道你去期望是什么。如果期望是现实的,很可能已经接近你的期望,如果期望是科幻,不谈。开玩笑了。王婆卖瓜而已。

吕:
我那篇访谈其实更多的是反对generic DL system 搞定一切的天真想法…

董:
@吕正东 你所期望的NLU,能否举个例子。

白:
里面有些模块可以是神经的,这有啥。

李:
所以我说我其实只有一点不满。你的访谈很好,

吕:
当然是现实的… 我们有现实的语义理解的项目

李:
@白硕 前乔姆斯基时代的老语言学界,陷入了田野工作的泥坑,是老乔把他们带出来的,革命了这个领域。纯粹的田野工作的确也是没大意思 比码农好不到哪里去。

吕:
@董振东 董老师,比如从一个偏口语的对事件的描述中得到对该事件的(“法律相关”)事实的表示…. , 当然这个定义是不那么严谨的

白:
其中一些方法,包括《降临》主角跟外星人沟通并试图破译其语言的一些方法,其实和主动机器学习很像了。

李:
一辈子也常陷入事务主义 没完没了地田野作业 自得其乐,但好在自我感觉好像心里还有某种哲学的俯视。有如神授:在田野工作的间歇 在某个高远的所在 有指引着道路。我是 语言工程师 knowledge engineer 的一员 毫无疑问。而且90%的时间都是。但是一辈子感觉这些田野作业的乐趣的本源却不在田野,而是在于架构。所以自我定义为架构师是最感觉自豪和 job satisfaction 的所在,否则与一头驴有啥区别。

白:
就是说,理想的田野工作一定是遵循某种算法的。而且算法不仅包括学习,还包括主动采样。

李:
所以在自我兜售的时候,强调 hands on 的田野作业,只是不想让人觉得飘在上面。但实际上卖的还是哲学。

Nick:
@wei 你就是自作多情

李:
我就自作多情 怎么着,你一边去 给冰冰多情去。@Nick  还想垄断哲学,搞什么哲学评书,不许我们搞哲学。王老五的桌子里面还有哲学呢,何况我辈语言学家。

董:
《福州晚报》7月15日报道,针对日前在日本横滨被证实遭杀害的福建姐妹一事,记者了解到,两姐妹均为福清江镜镇文房村人。
该报记者采访了该对姐妹花的父亲陈先生,陈先生回顾了得知姐妹被杀害的过程,并称女儿对父亲说的最后一句话是“谢谢爸爸”。

这一段事件,nlu 是什么呢?

吕:
@董振东 好难… , 实际上我们关注的是更加“冷冰冰”的事实,但即使这样也很难

白:
这里最大的问题,就是产品经理。

李:
同意,应用场景和应用角度 做技术的人很难看准。

白:
nlu是一层,但不构成核心服务。核心服务是另外的东西,让你贴近客户的东西。
相对称呼对身份一致性形成干扰,但相对称呼的谜一解开,倒也不是很难。姐妹花、姐妹,语境里的意思都是互为姐妹。

董:
我一直困惑:什么叫“我懂了”,“我明白了”。我觉得是高度抽象的关系。

李:
董老师30年前的论文(董振东:逻辑语义及其在机译中的应用)不是一再强调,所谓我懂了这句,核心就是懂了这句的逻辑语义吗?董老师的这个“理解”的教导,是一辈子遵循的指针。

白:
这得举例子吧……几何题的证明思路也可以“我懂了”“我明白了”,确定那也跟nlu相关?

董:
“姐妹花”,做为一个词语,可能合适。因为它就是“姐妹”,而且不见能产,如“母女花”

白:
“母女花”输入法里都有

李:
婆媳花 可能不在,但可以想见。

白:
我刚才意思是说,懂,明白,具有比nlu更宽泛的外延,nlu里面说的懂、明白,要窄、狭义。

董:
这样就可以依靠大数据了。对吧?
比“懂”、“明白”,要窄、狭义,那是什么呢?我如何在系统里体现呢?

白:
我们先说逻辑语义包括什么。我的观点:一包括symbol grounding,二包括role assignment。这两个搞定了,就是nlu的u。最狭窄了。茅塞顿开什么的,那种“懂”,跟nlu毛关系没有。可以说不在讨论范围内。在系统里体现,如果是role assignment,其实很好办,就是知网啊。如果是symbol grounding,那就要看系统的对接能力了。对接电话本、位置、天气、颜色、声音、实体知识库,都属于symbol grounding。

吕:
怒赞白老师1024次

白:
对接网页,往好里说属于兜底,往坏里说属于耍赖。一看见对接网页,我基本上可以判断系统黔驴技穷了。这都是在系统里能体现的,不知道入不入董老师法眼。

董:
是的,说得明白。我们的中文分析归根结底追求的就是你说的这两件东西。用逻辑语义和深层逻辑语义(多个爹),表示你说的role assignment,用ID No来落实实体知识库的symbol,即概念。所以判别歧义是不得不做的事情。

白:
我现在的方法处理“多个爹”已经成体系了。直接在句法分析阶段就能拿到“多个爹”的结构。

李:
Node to concept,Arc to logic semantics。很多时候 词到概念可以不做,wsd 绕过去,到了应用场景 再定 哪些词需要落地 其实多数根本就不用落地。

白:
这是parser提供商的思路。但是这思路在商业上有问题。不现实。比如,阿里的parser,为啥给京东用来落地?

李:
商业上就是 落地也做 当成 Professional services,量身定制,利用 parsing 的结构优势。 parser 不卖,内部消化。

白:
内部消化的本质还是深耕行业,而不是什么通用性。当你定位为深耕行业者,恭喜你做对了,但是牺牲通用性是板上钉钉的。

李:
卖components或平台基本没有做大的,还不如卖服务 做承包商。

白:
卖服务我判断也是不成立的。场景不长在你手里,实体数据库落不下来,图啥?跟通用系统如董老师的系统,根本不存在可比性。

李:
其实 目前为止 卖工具 卖服务 都没戏。实际上nlp还是寄生在产品应用。技术人的命运掌握在产品老总手里。赶巧遇到好产品 就一起飞。其次不死不活 这算好的。更多是陪葬。

白:
这不叫寄生,应该叫赋能 enabling

李:
一个牛的技术 可以降低陪葬 增加不死不活的可能  譬如我过去的二十年,但是无法让产品飞起来。

白:
除了产品经理,还有nlp之外的其他技术,也不是吃素的。到底谁贡献最关键,有得扯

李:
就是啊 使不上力 只好拼运气 看根誰搭档了。

白:
深耕行业定位下的nlper要时刻警觉的三点:1、你已有局限,不要和学术界比通用;2、你只是一个方面的enabler,服从、配合产品designer是天职;3、从产品全面看,其他方面的enabler或许贡献更大,nlp不见得一定是这个场景下最具杀手性质的技术成分,心理该平衡还是要平衡。

李:
让不让人活啊。
白老师所说极是。

吕:
谨记白老师教诲

刘:
赞 @白硕 @wei @吕正东 白老师关于nlp应用要语义落地的说法我深以为然。现在我的一些工作的motivation就是把基于NN的一些NLP的工作跟落地的语义结合起来,我希望能在这方面做一些通用性的工作,而不是仅仅局限于具体的应用。这应该是一条很长的路,有很多事情可做。

梁:
@wei nlp 不是“寄生”于产品,是“add value”, 正面去说。在最终产品的增值链上,nlp 只是其中一环。Me too. 谨记白老师教诲。

李:
寄生是负面说法 赋能是正面激励。

张:
主动学习、主动适应、主动釆样~~~白硕老师的“主动学说”给当年在MT创业的我极大启示@白硕

董:
关于研究与产品、通用与专用、寄生与赋能,我的想法和做法是:这些是对立且统一的。研究要通用些,要深,而应用要专门,要浅。研究可以关起门,应用就必须是开门的。这就是“深研究,浅应用”。就像一个老师,备课不怕深、广,但讲课要深入浅出。我经历过多次处理研究与应用间的关系的机会。

白:
@董振东 董强这次展示的系统,感觉还是学术性质的。@董振东 “备课”工作的一部分,确实可以用大数据、机器学习来做,全都人来做,周期太长,对灵魂人物的要求太高。

董:
@白硕 欢迎多多指教。我们希望有人帮助我们走向非学术性的。

白:
伟哥说大树吃小树,这话对的,不过涉及到时空的错乱。是吃了小树的树自然而然地成为了大树。

洪:
应该这样“全国猪人工智能受精关键技术研讨会”

吕:
猪AI会议可以撸出小猪来,不少国内的人AI会议,只能撸出更多的傻叉和骗子…..

冯:
近年来计算语言学的发展迅速,越来越工程化,文科背景的师生有的难以适应,海涛和他团队明察秋毫,迅速由计算语言学转入计量语言学,用计量方法来研究语言本体,这是聪明的做法。希望他们在这个研究方向上作出更多的成绩。海涛是我的博士生,浙大外国语学院教授。他是院士,世界语研究院院士。我仍然坚守在计算语言学的阵地上,没有转入计量语言学。我老了,不中用了!

李:
白老师说的大树吃小树 背景在这里:《科研笔记:NLP “毛毛虫” 笔记,从一维到二维

冯:
学习了。毛毛虫有道理。

李:
@冯志伟 洗脚池转文总是漏掉后面的 相关文章 现补上白老师这篇奇文:【白硕 – 穿越乔家大院寻找“毛毛虫”

 

【相关】

董振东:逻辑语义及其在机译中的应用

立委:乔姆斯基批判

独家|专访深度好奇创始人吕正东:通向理解之路

科学网《语义三巨人

尼克:哲学评书

科研笔记:NLP “毛毛虫” 笔记,从一维到二维

白硕 – 穿越乔家大院寻找“毛毛虫”

It is untrue that Google SyntaxNet is the “world’s most accurate parser

【语义计算:李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之58:爬楼NLU】

爬楼NLU(Natural Language Understanding): 二楼句法结构三楼语义落地

李:
问各位一个 lexical feature 的转移问题及其解决途径,譬如 “所吃”。在小词 “所” 与 vt 结合成合成词以后,该词的语义等价于vt 标配宾语的语义。换句话说 “吃” 的动作性 语义本体标注 [consume] ,应该被置换成名词性标注 [food]。这个 feature 更新如何实现比较合适?到 HowNet 里面去挖出来? 如果 feature 不更新,那些细线条的指望语义 features 查询条件的规则就会失效。“所” 是一例,“的字结构” 是类似的例子。无论小词负载结构 还是小词参与合成词模式 都躲不过这个 feature 大转移的语义坎儿。当然可以为每一种主要关系(譬如 动宾)从 HowNet 抽取出一个语义词表,等到需要更新的时候,就让系统根据关系的规定来查表解决。不知道有人在 parsing 中做了这个工作没有? 估计很少,多数系统还没有细线条到这个地步。

白:
所,是N/S。的,是N+/X。所吃,是 N/S 与S/*N*,结合以后变成N/**,这是句法层面。subcat层面,它继承S的逻辑宾语坑的subcat。的,就没这么精准了。X里面谁空着就提取谁的subcat。“这本书我送的是他。”间接宾语也能提取。*N*是分母的一般形式,吃还是S/2N,所吃,是N/N,被谁所吃不知道。我所吃,N与N/N正好得出N。

李:
这里的继承有文章。“所吃” 继承的subcat 有:(1)“吃”的本体标配宾语,(2)subcat 剩余坑,也就是主语坑 /N == [animate]。这两项继承 一个是本体自己的 type 一个是坑的 type,都不是简单的事儿。因为承载本体的语词“吃” 由于小词“所”的作用 ,已经与本体概念 来了个乾坤大转移。

白:
[animate],[food]; 继承后者,即food。“这碗饭的所吃”不可以,

李:
N/**,这个句法符号里面有很多本体名堂。当然,这些本体关系信息都是现成的 ,Hownet 里面就有类似的知识表达:吃: s=[animate] o=[food]。

白:
“考”有点特殊。我们不知道“考”句法上应该是几个标配坑,但“所考”的subcat可以是人、学校、科目、某种证书。也就是说,不排除标配坑与subcat的对应有多元化的可能性。简单说逻辑宾语是不足以刻画这里面的复杂性的。不过,“所考”不可以继承分数【score】, 似乎所有事前不能有所控制的,都不能用“所”。“所梦”VS“所梦想”

李:
甲: 吃了吗
乙: 吃了
甲: 所食何物?
乙: 所食非物。
甲: 莫非秀色?
乙: 非也。 所食不过食堂耳。
甲:我的所吃更惨 非食堂 非馆子 更非秀色。所吃乃瘪、苦头、抑或 一鼻子灰。

白:
嗯,句法层能说“吃食堂”,“所吃”就可以是“食堂”。就是说,“吃”的逻辑宾语,是一堆而不是一个subcat。

李:
我要说的是 本体标配受事,还有一个上位概念,这个上位概念倚靠的是句法,表达的是逻辑谓宾的语义相谐。它不是本体那样纯粹 那样独立于具体语言,但又离不开本体的大框架。我一直把这种上位逻辑语义叫做逻辑宾语、逻辑主语,有意借用句法术语,加上前缀“逻辑”。所以逻辑宾语 可以是 【受事】、【对象】。【地点】等,以及其他种种说不清的搭配,逻辑主语 可以是 【施事】、【工具】、【地点】等。

白:
语义相谐不局限于受事,而是“可宾”的subcat。所砍,不能是工具。所去,可以是处所。所卖,可以是买主。所送,可以是对手方。

李:
这个 logical S 和 logical O 其实是很关键的概念。

白:
但是标逻辑主宾语给谁看给谁用?
语义落地,还是本体的坑好用,除非像“所X”这种含混的。

李:
主要是为了概括句型:svoc,就三个args。arg0 逻辑主语,arg1 逻辑宾语,arg2 逻辑补足语,更加杂乱一些,包括谓词结构嵌套也在内。但不管这三个 args 的内部逻辑语义细节多丰富,这三个坑从语言句型结构上定下了框架,万变不离其宗。

白:
好像不需要这一层,大面上也都可以语义落地。从“跟谁有关系”到“是什么关系”。
当“是什么关系”有多选时,就对应subcat集合,当然可以有个概率分布之类。按老乔的理论,你这是移位前的“logical form”,本质上还是句法。

李:
对 是句法。句法才是纯粹的语言学,到了语义就开始变味了。

白:
但是这标签贴了又不是最终落地用的,感觉不爽。要贴标签的话,还是只贴一次为好。句法不贴又何妨。

李:
在我这儿 语义落地靠的就是 svoc 句型,有了svoc 的框架,落地的句型 就一目了然了。 具体工作不过是给句型做细节条件的微调,然后就落地为具体场景的角色了。譬如 o 落地为 【发布的产品】,s 落地为 【发布产品的公司】:Apple launched iPhone 7 yesterday

白:
在我这儿,“可宾”包括的subcat范围,一是可以学出来的,二是仅仅跟少量词语的语义落地有关,没有大动干戈的必要。大多数落地(role assignment)的场景都不需要这个中介。

李:
把 s 标签 map 到 【发布产品的公司】这类工作,简直就是玩儿。 是典型的以不变应万变。不管产品和客户需求有多少变化 本质上 语义落地玩的就是换名的游戏。比起 parsing 这一层工作的繁难,信息抽取层面的这些工作太简明了。 虽然需要落地的谓词 都是少量的,但所有的谓词都逃不过句法的逻辑句型。 因此针对所有谓词建立句型模式 就形成了一种以不变应万变的结构准备,接下去爱怎么落地 都是一览众山小了 跑不过如来佛的手掌 。所以 这一层本身虽然不是客户的需求 而只是内部的桥梁,但我还是很推崇它作为语义落地骨架或桥梁的地位。

白:
如来佛手掌可以有多种造型

李:
那是。跳过它落地 完全可以想象。也许是偏好 总之玩一个主人三个仆从的游戏觉得很好把握,组合一下 也是非常有限的边界。不会做着做着 觉得进入迷宫 或搞不清漏掉多少。说着说着 觉得自己一方面批判乔老爷(参见【乔姆斯基批判- 李维), 一方面可能中了他老人家句法中心论、句法自足论的流毒太深 而不自知。

白:
从“有关系”到“是受事”,中间再经历一个环节好,还是直达好?我的选择是“直达”。至于“受事”是“发布的产品”,这只是一个alias。没有什么技术含量的

李:
对呀。正因为没有含量 所以就更像是游戏。真正有技术含量都在前期的 deep parsing 里面了,那才是自然语言理解的核武器。换句话说 svoc deep parsing 已经把句法做到通用领域的极致了,以至于落地到领域几乎就是一个换名的游戏,换一个领域容易接受、客户听起来舒适的情报标签。

白:
回到前面“吃食堂”,“食堂”可直接匹配“处所”,我说它是O不是O,有何意义?

李:
关键的 argument 还是:落地是千变万化的领域 和 各种不同客户的需求,但 svoc 永存 永远不变。只要领域用的是语言数据 这就是恒定的,就如二元关系的永恒一样。

白:
这里焦点不是有没有,是可不可以不用,不用是否一定差。语言学有很强的构造性,你构造他就有。角色本地名称是第一性的,通用名称是第二性的。对机器来说本地名称可以是不要名称,只有编号:第一个语义坑、第二个语义坑……,给个本地别名,就是公司、产品,给个通用名,就是施事受事。

李:
关于直达还是通过语义中间表达的桥梁,我也问过类似的问题。我诘问的对象是费尔默理论。在信息抽取的落地框架前, 有没有必要先经过一下他老人家的 FrameNet 的框架?我的答案是否定的:多此一举 没有必要。这就基本否定了 FrameNet 的实用意义。没有必要的理由是 FrameNet 理论上缩短了语义落地的距离,实践中增加了落地的麻烦。一个 svoc 的简单通用句型 分化到成百上千的 frames 去 还没有最终到达目标地。

白:
svoc也没有达到目的地,“有填坑关系”不是更干脆么,中间的过程,无论借助subcat锁定还是借助语序,都是自动化的。

李:
svoc 可控、intuitive,而且语言学家如数家珍。其实,说了半天,从落地对策的大类上,我和白老师是一伙的。标不标 svo 只是细节的差异,虽然从我的架构看,这个差异还是蛮重要的。

白:
语言学家如果是我培养出来的,用我这一套也可以如数家珍。

李:
但如果落地从领域落地泛化到通用的应用,譬如搜索,搜索没有预先定义的事件。svo 的搜索比较容易训练给大众,这与多数人的基本语感相吻合 who did what.  这类重要应用增加了 svo 的独立价值。你要搜索产品发布事件?好 那你就搜索:“发布” 其宾语是 【产品】。至于这个宾语在语言中有多少变体的句式 那都不是大众需要关心的,deep parsing 早就 normalize 了。

白:
这只是一个动词被“实例化”的wizard

李:
如果不标svo, 搜索的时候可以这么说,搜索 “发布” 其二元关系词是 【产品】,也可以达到类似的结构搜索的效果,返回精准的产品发布事件的清单来。比纯关键词词搜索精细高明多了。可是如果客户想 搜索所有受雇的人 ,在 svo 系统中 就搜索:“雇佣” 检索出其【宾语】出来。在不标 so 的二元关系系统中,雇主和雇员就混在一起了。

白:
1、你无法排除取消发布、拒绝发布、打算发布、能够发布……这些用模态词沾染过的发布;2、发布的如果不是产品而是新闻怎么办。svoc自身无法区分哪些是产品哪些是新闻。

李:
这些都不是问题。或者说不是因为增加 svoc 而新出的问题。svoc 反而为在何处解决那个问题提供了蓝图和便利。这都是另外层面的问题,譬如节点的条件、数据的来源、李ta data 等。与评价 svo 本身的利弊没有关系。

白:
我的问题是,如果这些区分导致svoc这一层反正信息不足,反正还需要借助另一层的信息,那么直达那一层有何不妥

李:
但信息不足是有不同层面的。任何图谱(graph),是 arcs 信息不足,还是 nodes 信息不足?还是超越句内结构的discourse不足,还是 meta data 不足?不能混谈,虽然这些不同层面的信息有相互弥补的作用:戏(arcs)不够可以词(nodes)来凑。

白:
标签不足。

李:
arcs 不标标签 是一个极端。arcs 标了 soc 是多了一些句法结构的关键信息,soc 再细化为董老师的90多种逻辑语义,就又更多了信息。nodes 呢, 啥也不标 是一个极端, 标了 pos 有了一些信息分类,再标 subcats,进而做NE实体标注(包括产品),直到引进 常识本体乃至领域本体(ontologies), 信息就越来越丰富。自然也越来越难维护和掌控。

白:
反正要上三楼,就是二楼的高矮问题。

李:
对。

白:
如果为了上一个高的二楼,导致付出的代价接近上三楼,二楼就取消算了。三楼的细活儿做得越好,二楼矮点儿就越没关系。

李:
为搭建二楼 svoc 所需要的信息及其技术手段,基本全部可以继承下来为三楼服务。所以 为什么说 parsing 不仅仅是所看到的树结构,也不要指望一个 offshelf parser 就很容易语义落地为产品了。parser 要成为语义落地直通车, 需要借用 parsing 本身所带来的资源积累。结构图只是这些资源的一个最容易彰显的部分 但绝不是全部。

白:
自带插销插座,到三楼装配起来就easy多了。

李:
完全同意 同感。但 “二楼就取消算了”,不愿苟同。问题是三楼是 moving 的,业务场景变化 客户需求变化 产品角度变化 ……  都使得三楼细活显得琐碎而不容易概括。

白:
不会
那都是贴牌问题,瓤不是moving的。

李:
二楼是清晰定义的目标。在我看来,二楼的 svoc 正是不变之瓤。

白:
我的二楼是让有关系的都勾搭上。是什么关系你们到三楼谈。但是自带了三楼才会用到的插销插座的,不妨提前锁定。到了三楼,就只剩贴牌了。但是也有需要必须在三楼才能锁定的,二楼无须代劳和强制。

李:
理论上 必须在三楼做的 只是领域知识。这些知识在二楼是避开的。

白:
另外贴牌是很外在的东东,没必要单独一层,只相当于在三楼化个妆。只需要示例就可以让领域的人干,都不用跟语言学家打照面。

李:
然,贴牌很多时候不过是 config,可以让用户或产品经理根据喜好而定,随时更换。

白:
跨领域的实体数据库,这个环节可以众包。领域知识说起来是无底洞,但是做法不同收效相差很远。根本分歧是,知识的使用是“推演”的套路还是“联想”的套路。“推演”的套路精准但笨重,只能借助人工而无法借助大数据。“联想”的套路模糊而轻盈,不过多依赖人工而寻求借助大数据讨巧。只要模糊给出的效果是应用可容忍的,“联想”的套路就会胜出。所以,哈工大做的“事理图谱”如果沿着联想的路往前走,我很看好。有理由相信,语言处理需要的知识,不是“精准”而是“轻盈”。对话场合大不了还可以追问。文本场合虽然不能受理追问,但受众有相对充分的时间调动“精准”的手段。二楼的高和矮,如果涉及到二楼的业绩,确实另当别论。如果二楼三楼的发明人都是公司的大老板,或许另样格局。这两碗水怎么端都是平的。

 

 

【相关】

【语义计算:李白对话录系列】

乔姆斯基批判- 李维

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之39:探究自然语言的毛毛虫机制】

白:
定义subcat很有讲究的,后面有强大的数学。什么类型填什么类型的坑,结果是什么类型,数学早给我们准备好工具了。不知道这种数学,只能“自发”地做。知道了,就有条件“自觉”地做。type theory,带类型的lambda演算,早就给我们准备好了工具。为什么说小词也可以负载结构,原理是同样的。不是心血来潮,不是头疼医头,不是工程上的取巧,是有数学支持的。

李:
以前流行的那些 unification grammars or constraint based grammars 都是建立在 typed feature structures 之上的: CFG GPSG HPSG.  对于 type hierarchy and it’s inheritance, 对于 attribute value 的 type appropriateness 都有说法, Typed feature structure 是这些文法的形式化基础。不知道这是不是就是所指的背后的数学或逻辑。

白:
type化最彻底的就是categoral grammar,但是CG最大的问题就是不实用。我已经把CG改造成了非常实用的程度,但是底子还是CG的底子。十多年前,我的学生@赵章界 (也在本群)的博士论文已经对中心词的继承特性在CG当中的形式化机制做了刻画。我最近的工作,进一步把这种继承性和修饰关系做了无缝对接。

李:
CG 没钻研过。其他那些文法的 typed feature structure 主要就是一种表达语言信息的数据结构,与软件工程里面 object-oriented class hierarchy 有很多相通之处。涉及到“演算”的似乎主要在表达语义的那部分feature structure (SEM)。自然语言的语义有一个总的原则是composionality, 就是用有限的语言材料(词,成语)组合成无限的句义。于是当一个单位与另一个单位在parsing中结合的时候,就有个怎样从简单的词义一步步“演算”成短语和句子语义来的课题。但这个演算过程,也带有浓厚的自己跟自己玩逻辑的成分。那些精心构造出来的句子的“语义”表达,显得繁琐、繁复,逻辑上好看,但实际语义落地其实并不一定需要这种。

白:
一眼看现状不中用就扔掉是一种策略。把它改造成中用是另一种策略。

李:
在feature structure unification based的系统中,这种演算就是通过structure sharing 让信息在feature结构中跳来跳去。跟玩游戏似的。如果某个语义在SEM整体的表达中没安排妥帖,或者缺乏合适的地方去表示,就挖尽心思改造那个 SEM structure,结果弄得越来越烦琐哲学。眉毛胡子一把抓,为语义而语义,忘记了语义落地的初衷。玩过一遍这类游戏以后,就开始删繁就简。

白:
化腐朽为神奇,有窍门的。单子化(singleton)是关键。废弃多层结构,把萝卜和坑摆到同一个桌面上。世界顿时清明。这里面藏着一个大秘密。

李:
你这也是删繁就简。那些复杂feature结构,都是那么的侯门深似海。错综复杂,各种嵌套,逻辑上能讲出很多道道来。

白:
但是singleton这是一个最有意思的子集。逻辑上一样有道理。只不过躲开了复杂结构而已。但那些复杂结构本来就是添乱的。本质上有用的,singleton足够了。

李:
同意应躲过复杂结构。我的系统是基于 atomic features 的。

白:
毛毛虫假设下,singleton is enough,所以,叠床架屋的结构已经事实上废掉,但数学上仍是严谨的。去掉其他冗余,只剩下唯一一种可以还原为singleton的结构。这是毛毛虫的最大贡献。所以我面对的不是通用的CG,不是通用的复杂特征集,而是专为毛毛虫准备的singleton类型演算。好像人类的语言从遗传上就是只为singleton准备的。换了任意定义的一个CFG,还不一定能占到这个便宜呢。

singleton就是萝卜和坑只有一层,不嵌套。所有嵌套都可以简化为修饰和合并。修饰是继承的简化形式,合并是括号下分配律的简化形式。还原了都是填坑。本质上只有填坑一种运算。但是通过用修饰和合并来重写(rewrite)某些填坑,整个体系就完全扁平化了。这个工作,写论文也是拿得出手的,不过我目前还真顾不上。

李:
白老师有时间举几个例子就好了,说明怎么扁平化。

白:

李:
怎么讲?

白:
左面是CG,右面是我的简化

李:
上面是:形+名。逻辑上,形是谓词,名填坑:beautiful(girl)。结构上,形在前,修饰名。形被名吃掉:[(beautiful) girl]。

白:
在CG,是 名 被 形 吃掉,再吐出一个 名。在坑论,是 名 吸收掉 形。
关键是输出的路径,一个在形,一个在名。

李:
名是head。逻辑上,名被形吃掉没有问题。但是结构上的head怎么办呢?吐出一个名不能解决head的问题,因为head涉及的不仅仅是POS,而是一套 head features(包括本体及其taxonomy)以及head token,包括词形。

beautiful girl == girl  (who is) beautiful

白:
当初为了解决这个矛盾,设计了CG输入输出之间的绑定机制,但是仍然不够直接。

李:
修饰与填坑的关系不是在一个平面。

白:
现在的表示最直接:修饰是填坑+绑定的简化。简化以后,就都变成singleton了,俗称“捋直了”,

李:
修饰是句法关系(是反映结构上的主与次),而填坑是逻辑关系,反映的是谓词与arg?左边CG的表达,没看明白。右边倒是显得简单了:作为 singleton , N+ 就是一个 atomic POS,等价于JJ,他右边遇到N(就是POS NN),就被吃掉。JJ被NN吃掉,算是绑定?那NN填JJ的坑,表现在哪里呢?

白:
已经重定向了。JJ可以认为没有坑了。

李:
这种逻辑关系与结构关系在语义表达上的纠缠,在ING词表现更明显:
ING做修饰语的时候,譬如 running dog,一方面是一个被吃掉的可有可无的修饰语,另一方面 running 作为逻辑谓词,需要一个逻辑主语来填坑。结构上的 head 这时候屈尊成了填坑的萝卜(arg)。

白:
了,也是一样。逻辑上,了 是(S/N)/(S/N),但我们把它简化成+S

李:
+S 就是吃一个S 吐一个S?
吃一个 Aspect unspecified S,吐一个 Aspect=Perfect的S。

白:
@wei 然

刚才ing,如图:两个S消掉了,剩下两个N。在汉语里,如同“这本书的出版”。

李:
ing怎么就成了 N/S
可以把词尾看成小词,所谓小词负载结构。

白硕:
上图是CG:吃一个S,吐一个N。我现在的做法见下图:

+N结构强制分子上的S到N,分母上的N不变。填动词的坑变为填名词的坑了,因为被修饰语被修饰语强制了。

李:
N/N不就是 N+吗?N+ == JJ

白:
不是。二者不等价。这是一个真的坑,没有绑定机制。
这本书的出版,输出的是出版,不是这本书

李:
这本书 结构上是可有可无的修饰语,“的”来引导,逻辑上是arg,这双重身份(mod and arg),赶巧挂靠的都是相同的老子。“出版”的arg(宾语)是“这本书”;“出版”的mod也是“这本书”。比较:“这本书的出版” vs “出版的这本书”。

白:
我在说英语的ing,谈到“的”只是类比。英语的ing,从右侧修饰动词原形,把动词强制为名词,把动词带的坑也强制转为名词带的坑:their publishing the book

李:
这个CG好玩,吃啊吐啊的,当年怎么没注意它。

白:
没有绑定机制的CG,语言学意义是有限的,更像是数学而不像语言学。我的学生@赵章界 引入绑定机制后,才像语言学了。但是赵的工作许多人没有注意到它的核心价值。

李:
当年看过一点那啥 蒙氏文法,形式语义,这个演算那个演算的,被绕糊涂了。没看懂。

白:
Montago

李:
对,里面有Lambda演算啥的,对我太抽象了。记得Montago看不懂,就找中文的来看。原文看不懂的,中文就更看不懂了。就拉倒了。

什么叫绑定机制?

白:
就是吃的和吐的,具有同一性。如果将来吐的参与任何操作,都要把吃的带上。吃的所携带的任何语义特征,也都被传导给吐的。绑定机制基本就是这个意思。

李:
这个听上去就是HFP(Head Feature Principle)。大白话就是一个短语,头词是其代表,头词决定一切。坚持党的一元化领导不动摇。真正实现的时候,根本就不需要像HPSG那种,把 features 定义到嵌套的HEAD结构去,然后上下传来传去的。麻烦。还是我导师刘老师简单直接,head就是直接把修饰语吃掉,是真地吃掉了,看不见了。这么一来信息,就无需传送了。

白:
但是用原教旨的CG,即使引进了绑定机制,仍然是叠床架屋。我现在的方案就极为简单了,就是吃掉。但是理论上它是CG的简化形式。CG的所有严谨性都包含在里面。但是省去了传递。

李:
那些叠床架屋,主要是为了鸡零狗碎的一些边边角角的所谓 non-head features,为此不得不把 HEAD features 嵌套起来。真是为了芝麻,挤压了西瓜。

白:
叠床架屋的缺点去掉,优点保留。毛毛虫的毛刺。很多可以通过中间件摆平,就不需要这些边边角角了。

李:
这个中间件相谐,的确是个好东西。动态隐含地引进了常识,却没有了常识管理的负担。这是亮点和创新。以前的优选语义学(Preference Semantics)一直就困扰在尺寸无法掌握,现在用大数据解决了这个困扰。

白:
而且中间件只管二元关系,不需要涉及复杂结构。所有复杂结构都被singleton填坑化解了。只剩下扁平的二元关系。

李:
常识的基础形式就是二元的,即便牵连到多元,也可以用多个二元来近似:【animate】吃【food】,这个三元常识,不就是两个二元关系吗。

白:
用我的话说,就是“吃”挖了两个坑。两个坑和萝卜摆在一个货架上。这就是singleton。

李:
蛮好。
当然二元近似可能不完全等同它,但实践中的些微偏差,从效果上看,已经可忽略不计了。

白:
所以,我的方法,贯穿着CG的原理,但外部表现很像DG。在对小词的处理上比DG更为彻底,所有小词都纳入二元关系。而二元关系的背后有类型演算的数学作为基础。绝不是随意的或者为了工程而武断设定的。

李:
其实我们的做法和策略,有很多殊途同归的地方。不是高攀。都是各自思索多年,不约而同的决定舍弃什么,采纳什么。我现在缺的是大数据中间件,你那边还是单层,当然,你在单层里面加了优先啥的,近似了多层。

白:
有算符优先,单层也相当于多层

李:
但我还是觉得单层伸展不开,有点凑合事儿的味道。多层符合软件工程的标准做法,模块化。真正是把语言学当工程去做。

白:
但是如果引入kick of,单层+优先更轻便。

李:
对于复杂结构的舍弃或扬弃,我们思路是一致的:atomic features or singlton
当然严格说,singlton的subcat标注,比起复杂特征的SUBCAT 的精细描述以及里面体现的句法语义一体化,也显得有些伸展不开。但问题不大了,得大于失。

白:
语义那边自有知识图谱来承担更加复杂结构的表示。对接的途径都在,不会跑到途径外面去。句法的目标极为有限。伸展得开与否,要相对于这个有限目标来评估。不存在绝对的标准。这无非是二楼和三楼的分工问题。

李:
还有一点风格上的差异或美感因素在。
据说写 Unix 的人与写 Windows 的人,是两种人。互相看不上。后者嫌前者小家子气,前者不能忍受后者的挥霍。

白:
都很伟大。

 

【相关】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

【语义计算:李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【李白之37:分层与一锅煮的parsing机制探讨】

白:
话说,分层针对的是token间的二元关系,而token本身是不长眼睛的。所以一个token理论上可以喂给多层,此其一。随着各层的动态演化,可能会临时生出之前扫描不到的新的高优先级关系,甚至这种关系会把之前已经填好坑的萝卜再连根拔起。此其二。这样,虽然还可保持“线速”,但极端场景可能就是2N,而不是N。kick off的机制是一定要的。数理不一定等距,反而可以更细微地反映不等距。

李:
白老师今天的话起了个头,可以展开看看。其一其二说了分层面对的问题。但不足以否定分层。另外,2N有啥关系?可忽略不计吧。

分层多层是法宝。法宝到我其实不应该去宣扬,更不要去argue,自个儿得了好处一边偷着乐不好吗。粗话说,属于嘴欠。唯一的 catch 是,并不是承认或向往多层好处的人,都可以几刀就切干净。这时候语言学经验开始发力。

kick off机制点解?

白:
所谓kick off,可参见一排单摆,最后一个进来,第一个出去,其他纹丝不动。
“他死去多年的战友”“他死去多年的消息”前者启动kick off,后者不启动。“他不务正业、整天游手好闲的发小”;“他生前被人深深误解、死后被人广为称道的施政方针”。根本就不用勉强一定要看多远,远到不能错。先将错就错,占住坑再说,对的来了把我踢走就是了。可万一没错呢?再厉害的播音员也有buffer overflow的时候。“他不务正业、整天游手好闲的毛病”;“他生前被人深深误解、死后被人广为称道的传奇故事”。有kick off兜底,再长也不怕了。短的如“王冕死了父亲”也照用不误。当然,稍微加点条件就少一次折腾。lookahead什么的。

李:
嗯。
听上去就是休眠唤醒之一种。

白:
不是词法级,而是句法级。不预设无限大窗口,当前有限窗口里优先级最高的先处理掉。等到动态过程中优先级更高的来到,已处理的结果可以废掉。废掉是一对一的,不是全局性的redo。被set free的成分重新等待新的结合机会。具体到一个一个pair ,语言学知识的重要性毋庸置疑。但是local犯错误必须global来纠正的情况永远是存在的。这个时候,仍然寄希望于语言学知识来纠正,一定会按下葫芦起来瓢,而某种语言学无关的算法上的安排才是真正的出路。

李:
感觉主要还是语言学,不过是远距离的结构起作用罢了。句法级的休眠唤醒说到底就是修正local的关系(注意,local指的是短距离,不等于浅层关系,它可以在浅层,也可以在深层,可以是结构图的任意局部),对应的自然是局部修正 哪里化脓哪里上紫药水。所谓“推倒重来”就是除旧布新,最多是个 subtree,不会是全局革命。 全局推倒重来不 make sense,多层分层的路线决定了每一层绝大多数的关系是对的 要远距离唤醒和改正的必定是少数。如果不是大多数是对的 这只能说明层次的刀切错了 是语言学模块化的失败。模块化照顾的是步步为营多数受益的依存关系。在多层看来是一致的。

白:
语言学对与错都是数据的问题,不需要涉及算法。远距离唤醒需要的是算法而不是数据。算法不接受多数暴政。如果不想错得太难看,即使是小概率也要兜底。

李:
所谓远距离不过是顶层或接近顶层而已。到了接近顶层,再远距离 都变成 local tree.  天涯若比邻。

白:
分层和单向是两个概念,单向是不许后悔。分层不排斥后悔。

李:
对呀。
很多问题源自单层算法。多层以后 问题就没了。每一层的算法不必变,最多是增加一些 config而已 允许以可控的不同方式去处置。那是文法的running,不是文法的编译问题。

白:
如果在被语言学知识选中的pair之间加一些虚拟运算符,这个问题就像乘法比加法优先一样自然。

李:
哈。
怎么玩都可以。

白:
分层和算符优先是多么等价啊……

李:
分层更厉害。厉害就鲁莽。好在可以悔棋。因此多层与休眠唤醒是天然合作的。维持了线性,也维持了模块化和可维护。

白:
固定长度滑动窗口的算符优先,也需要悔棋配合。这是同样道理。而悔棋是一个算法问题,独立于具体的语言学知识。语言学知识都体现在算符里了。优先窗口计算算术表达式,也是会错的。窗口之外,是加号还是乘号,结果完全不同。有限窗口,加法乘法乘幂,这是领域知识。确定了谁比谁优先,这就是一个算法问题。限定了窗口有限,改错同样是一个算法问题。不是领域知识问题。不同点是,算术表达式中的算符是输入的一部分,而作为分析器输入的token序列中,没有算符。算符是local进行前后条件匹配后动态虚拟插入的。所以,对输入的扫描遍数不一样,极端情况下就是“两遍”。昨天说的2N就是这么来的。把语言学知识隐藏在算符后面,算法就可以一锅煮了。

李:
嘿嘿
算法机制化。不是要在算法上动手术 ,而是在算法的操作层面研究灵活性。

白:
所以,分层和算符优先真的是互通表里的。一锅煮不是错,一锅煮背后没有优先机制才是错。

李:
一锅煮要是等于单层 就难以恭维。

白:
优先机制中体现领域知识也是应有之义。有优先级的一锅煮等于变相分层。

李:
还是放不开,不够伸展。

白:
规则都没有了怎么会放不开

李:
而且优先级弄多了也麻烦,跟密电码似的,加强了规则之间的纠缠。

白:
跟层一样多就够了,又不是人去读

李:
规则与规则适度分开 是很讲分寸的

白:
不在一个优先级的pair不会纠缠。我们只看见pair,看不见规则。

李:
不是人去读?总得人调试呀。没有可读性 无法调试和维护。除非是神经。

白:
人调试,只需要调试一个优先级总表。语言学家完全看得懂,完全是数据。不是程序也不是算法,把算符搬来搬去而已。算符可以理解为特定类别的pair标签,比如<N+, N>这种pair,可能有几种,分别是什么标签,什么优先级,如此而已。单音节形容词修饰的定中结构、区别词修饰的定中结构、多音节形容词修饰的定中结构、的字结构修饰的定中结构、数量短语修饰的定中结构、核心角色介词(把、被、拿、将)构成的介词短语等等。它们的优先级不尽相同。有了这些做后盾,根本就不怕一锅煮。该先做的不会后做,因为窗口所限先做做错了的,随着窗口的滑动还会被踢掉,而且踢是点对点的,不会伤及无辜。语言学家完全不用关注kick off的实现,如果发生了kick off,语言学家是完全看得懂的。

总结一下观点:1、语言学知识用在局部;2、语言学知识转化为pair优先级、可作为虚拟算符纳入算符优先机制一锅煮;3、在窗口受限场景,可以引入kick off机制,支持句法级的休眠唤醒;4、因为输入token序列并不包含虚拟算符,虚拟算符的插入在极端情况下需要多浪费一遍扫描。

李:
虚拟算符是什么东东?

白:
可以理解为给一个二元关系在语言学上定性的标签。二元关系的两端token即使一样,语言学标签仍然可能不同,需要根据优先级区分和前后条件判据的需要加以细分。

李:
句法关系细类。

白:
我的大类只有填坑、合并、修饰、升格、降格,细分是必须的。但句法层面仅限于“控制优先顺序所必须”,绝不扩大化。五大类中,二元关系只有前三类,后两类只涉及自己,
一元。

所谓“绝不扩大化”,比如逻辑主谓,是不需要分的。但是萝卜来自坑的左方还是右方,这个区分可以有。因为,右方萝卜填谓词的坑,优先级高于左方。

白:
一个算术表达式,有加减,有乘除,有乘幂,还有括号。我们怎么确定对表达式的解析是一锅煮的还是分层的?在设定优先级的时候,事实上已经分层了,叫不叫分层纯属个人爱好。

李:
这个比喻贴切。

 

【相关】

【语义计算:李白对话录系列】

【立委科普:结构歧义的休眠唤醒演义】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【立委科普:NLP 联络图 】

“NLP 不是魔术,但是,其结果有时几乎就是魔术一般神奇。”

引自:http://www.confidencenow.com/nlp-seduction.htm

【立委按】说明一点 写这篇nlp联络图科普的时候 深度学习还没火。 ai 还没有摇身一变 ,被 dl 所窃取。当时的机器学习界 还在鄙视 取笑 并与 ai 保持距离。没想到现如今 ai 居然被看成了 dl 的同义词 突然成了香饽饽。言必称神经,连 NLP也被窃取了,也与dl划了等号。符号逻辑派的AI与规则系统的NLP,做了一辈子,到头来连“家”都没了。一切皆是学习,一切都要神经。但我相信天变了,道却不变,因此下面的联络图或可超越神经一统天下的狭隘思维。拨乱反正,谈何容易。还是一家之言,愿者上钩吧。

 
 (NLP Word Cloud, courtesy of ourselves who built the NLP engine to parse social media to generate this graph )

【立委原按】样板戏《智取威虎山》里面,杨子荣怀揣一张秘密联络图而成为土匪头子座山雕的座上客,因为在山头林立的江湖,谁掌握了联络图,谁就可以一统天下。马克思好像说过人是社会关系的总和,专业领域又何尝不是如此。在关系中定义和把握 NLP,可以说是了解一门学问及其技术的钟南山捷径。老马识途,责无旁贷,遂精雕细刻,作联络图四幅与同仁及网友分享。此联络图系列可比林彪元帅手中的红宝书,急用先学,有立竿见影之奇效。重要的是,学问虽然日新月异,永无止境,然而天下大势,在冥冥中自有其不变之理。四图在手,了然于心,可以不变应万变,无论研究还是开发,必不致迷失革命大方向。

一个活跃的领域会不断产生新的概念,新的术语,没有一个合适的参照图,新人特别容易湮没其中。新术语起初常常不规范,同一个概念不同的人可能使用不同的术语,而同一个术语不同的人也可能有不同的解读。常常要经过一个混沌期,研究共同体才逐渐达成规范化的共识。无论是否已经达成共识,关键是要理解术语的背后含义 (包括广义、窄义、传统定义,以及可能的歧义)。加强对于术语的敏感性,不断探究以求准确定位新概念/新术语在现有体系的位置,是为专业人员的基本功。本文将

围绕这四幅自制联络图,

NLP 相关的术语做一次地毯式梳理和解说。本文提到的所有术语在第一次出现时,中文一律加下划线,英文斜体(Italics),大多有中英文对照,有的术语还给出超链,以便读者进一步阅读探索。
在我们进入NLP 系列联络图内部探究其奥秘之前,有必要澄清自然语言处理NLP)的一般概念及其上位概念,以及与 NLP 平起平坐或可以相互替换的一些术语。
NLP  这个术语是根据“自然语言”这个问题领域而命名的宽泛概念。顾名思义,自然语言处理就是以自然语言为对象的计算机处理。无论为了什么目标,无论分析深浅,只要涉及电脑处理自然语言,都在 NLP 之列。所谓自然语言Natural language)指的即是我们日常使用的语言,英语、俄语、日语、汉语等,它与人类语言Human language)是同义词,主要为区别形式语言Formal language),包括计算机语言Computer language)。自然语言是人类交流最自然最常见的形式,不仅仅是口语,书面语也在海量增长,尤其是移动互联网及其社交网络普及的今天。比较形式语言,自然语言复杂得多,常有省略和歧义,具有相当的处理难度(hence 成就了 NLP 这个专业及其我们的饭碗)。顺便一提,在自然语言灰色地带的还有那些人造语Artificial language)方案,特别是广为流传的世界语Esperanto),它们的形式与自然语言无异,也是为人类交流而设计,不过是起源上不太“自然”而已,其分析处理当然也属 NLP。(笔者N多年前的机器翻译专业的硕士课题就是一个把世界语全自动翻译成英语和汉语的系统,也算填补了一项空白。)
NLP  经常等价使用的术语是计算语言学Computational Linguistics, or, CL)。顾名思义,计算语言学 是 计算机科学Computer Science)与语言学Linguistics)之间的交叉学科。事实上,NLP  和 CL 是同一个行当的两面,NLP  注重的是实践,CL 则是一门学问(理论)。可以说,CLNLP 的科学基础,NLPCL 的应用过程。由于 CL 与数理等基础学科不同,属于面相应用的学问,所以 CL NLP 二者差不多是同一回事儿。其从业人员也可以从这两个侧面描述自己,譬如,笔者在业界可称为NLP工程师(NLP engineer),在学界则是计算语言学家Computational linguist)。当然,在大学和研究所的计算语言学家,虽然也要做 NLP 系统和实验,但学问重点是以实验来支持理论和算法的研究。在工业界的 NLP 工程师们,则注重 real life 系统的实现和相关产品的开发,奉行的多是白猫黑猫论,较少理论的束缚。
另外一个经常与 NLP 平行使用的术语是 机器学习Machine Learning, or, ML)。严格说起来,机器学习与 NLP 是完全不同层次的概念,前者是方法,后者是问题领域。然而,由于机器学习的万金油性质(谁说机器学习不万能,统计学家跟你急),加之 ML 已经成为 NLP 领域(尤其在学界)的主流方法,很多人除了机器学习(如今时兴的是深度学习,或曰深度神经网络),忘记或者忽视了 NLP 还有语言规则的方法,因此在他们眼中,NLP  就是机器学习。其实,机器学习并不局限于 NLP 领域,那些用于语言处理的机器学习算法也大多可以用来做很多其他人工智能Artificial Intelligence, or AI)的事儿,如股市预测Stock market analysis)、信用卡欺诈监测Detecting credit card fraud)、机器视觉Computer vision)、DNA测序分类Classifying DNA sequences),甚至医疗诊断Medical diagnosis)。
NLP 领域,与机器学习平行的传统方法还有语言学家(linguist)或知识工程师(knowledge engineer)手工编制的语言规则Linguistic rules, or hand-crafted rules),这些规则的集合称计算文法Computational grammar),由计算文法支持(or 编译)的系统叫做规则系统Rule system)。
机器学习和规则系统这两种方法各有利弊,可以取长补短。统而言之,机器学习擅长文档分类Document classification),从宏观上粗线条(course-grained)把握语言现象,计算文法则擅长细致深入的语言学分析,从细节上捕捉语言现象。如果把语言看成森林,语句看成林中形态各异的树木,总体而言,机器学习是见林不见木,计算文法则见木不见林(本来这是很自然的互补关系,但双方都有不为少数的“原教旨主义极端派”不愿承认对方的长处,呵呵)。从效果上看,机器学习常常以覆盖面胜出,业内的术语叫高查全率High recall),而计算文法则长于分析的精度,即高查准率High precision)。由于自然语言任务比较 复杂,一个实用系统(Real-life system)常常需要在在粗线条和细线条(fine-grained)以及查全与查准之间取得某种平衡,因此结合两种方法的 NLP 混合式系统Hybrid system)往往更加实惠好用。一个简单有效的结合方式是把系统建立成一个后备式模型back-off model),对每个主要任务,先让计算文法做高精度低覆盖面的处理,再行机器学习出来的统计模型Statistical model),以便粗线条覆盖遗留问题。
值得一提的是,传统 AI 也倚重手工编制的规则系统,称作符号逻辑派,但是它与语言学家的计算文法有一个根本的区别:AI 规则系统远远不如计算文法现实可行。AI 的规则系统不仅包括比较容易把握(tractable)和形式化(formalized)的语言(学)规则,它们还试图涵盖包罗万象的常识(至少是其中的核心部分)以及其他知识,并通过精巧设计的逻辑推理系统把这些知识整合起来。可以说,AI 旨在从本质上模拟人的智能过程,因雄心太大而受挫,以致多年来进展甚微。过去的辉煌也只表现在极端狭窄的领域的玩具系统(后来也发展了一支比较实用的专家系统),当时统计模型还是没有睡醒的雄狮。以 ML 为核心以大数据(Big data)为支撑的统计方法的兴起,让这种 AI 相形见绌。有意思的是,虽然人工智能(台湾同胞称人工智慧)听上去很响亮,可以唤起普罗大众心中的某种科学幻想奇迹(因此常常为电子产品的包装推销商所青睐),在科学共同体中却相当落寞:有不少统计学家甚至把 AI 看成一个过气的笑话。虽然这里难免有王婆卖瓜的偏见,但 传统 AI 的方法论及其好高骛远不现实也是一个因素。也许在未来会有符号逻辑派 AI 的复兴,但是在可预见的将来,把人类智能当作联接输入输出的黑匣子的机器学习方法,显然已经占了上风。
 
由此看来,ML AI 的关系,颇似 NLP CL 的关系,外延几乎重合,ML 重在 AI 的应用(包括 NLP),而传统 AI 理应为 ML 的理论指导。可是,由于方法学上的南辕北辙,以知识表达Knowledge representation)和逻辑推理Logical reasoning)为基础的传统 AI 越来越难担当实用智能系统Intelligent systems)的理论指导,智能系统的地盘逐渐为以统计学和信息论为基础的机器学习所占领。国宝熊猫般珍稀的坚持传统AI的逻辑学家(如 cyc 发明人 Douglas Lenat 老先生)与擅长 ML 的统计学家(多如恐龙)虽然问题领域几乎完全重合,解决方案却形如陌路,渐行渐远。
还有一个几乎与自然语言处理等价的术语,叫自然语言理解Natural Language Understanding, or NLU)。从字面上,这个义为“机器理解语言”的术语 NLU 带有浓厚的人工智能的烂漫主义意味,不象“机器处理语言”那样直白而现实主义,但实际上,使用 NLP 还是 NLU, 正如使用 NLP 还是 CL 一样, 往往是不同圈子人的不同习惯,所指基本相同。说基本相同,是因为 NLP 也可以专指浅层的语言处理(譬如后文会提到的浅层分析 Shallow parsing),而深度分析(Deep parsing)却是 NLU 的题中应有之义,浅尝辄止的不能登 NLU/AI 的大雅之堂。不妨这样看,带上AI的眼镜看,此物为NLU;而以 ML 而观之,则此物只能是 NLP
此外,自然语言技术或语言技术(Natural language technology)也是 NLP 的通俗化表达。
既然 NLP 的等价物 CL 有两个parents,计算机科学语言学NLP 的上位概念也自然可以有两位:NLP 既可以看作是计算机科学的一个应用分支,也可以看作是语言学的一个应用分支。事实上,广义的应用语言学Applied linguistics)是包含计算语言学和 NLP 的,不过由于计算语言学作为一个独立学科已经站住脚跟半个多世纪了(其主要学刊是《Computational Linguistics》,学会是 ACL,顶级国际会议包括 ACL 年会和 COLING 等),(窄义的)应用语言学现在更多用来表示语言教学和翻译这样的实用领域,不再下辖计算语言学这个分支。
从功能上看,NLPML 一样,同属于人工智能的范畴,特别是自然语言理解以及NLP的种种应用,如机器翻译。所以,广义的人工智能既是机器学习的上位概念,也是自然语言处理的上位概念。然而,如上所说,窄义或传统的人工智能强调知识处理包括常识推理common-sense reasoning),与现行的 ML NLP  数据制导data-driven)现状颇有距离,因此有 NLP 学者刻意保持与传统AI的距离以示不屑为伍。
千头万绪,纲举目张,下文分四个层次、用四幅联络图来讲解 NLP per se。四个层次分别是:
1. 语言层(linguistic level);
2. 抽取层(extraction level);
3. 挖掘层(mining level);
4. 应用层(app level)。
这四个层次的关系,基本就是自底而上的支持关系:1 ==》2 ==》 3 ==》4。显然,NLP 的核心句法分析器(Parser)处于第一层, 而《自动民调》、《问答系统》、《机器翻译》这样的系统则是第四层应用的例子。
需要说明的是,NLP 的对象自然语言有两种形式,语音Speech)和文本Text),因此NLP自然涵盖语音方面的两个重要方向:1. 教授电脑听懂人话的语音识别Speech recognition);2. 教授电脑说人话的语音合成Speech synthesis)。由于笔者对语音处理Speech processing)比较外行,本系列专谈针对文本的NLP,视语音识别和语音合成为文本处理(Text processing)的 前奏和后续。事实上,在实际的语言系统中,语音处理和文本处理的分工正是如此,譬如 NLP 在手机上最新应用如苹果的 Siri 就是先行语音识别,输出文本结果,再行文本分析,然后根据分析理解的结果采取行动(根据主人指令去查天气预报、股票、播放某支音乐等等)。

净手焚香阅好图

我把 NLP 系统从核心引擎直到应用,分为四个阶段,对应四张框架图。
最底层最核心的是 deep parsing,就是对自然语言的自底而上层层推进的自动分析器,这个工作最繁难,但是它是绝大多数NLP系统的我称之为带有核武器性质的基础技术,因为自然语言作为非结构数据因此而被结构化了。面对千变万化的语言表达,只有结构化了,patterns 才容易抓住,信息才好抽取,语义才好求解。这个道理早在乔姆斯基1957年语言学革命后提出表层结构到深层结构转换的时候,就开始成为(计算)语言学的共识了。结构树不仅是表达句法关系的枝干(arcs),还包括负载了各种信息的单词或短语的叶子(nodes)。结构树虽然重要,但一般不能直接支持产品,它只是系统的内部表达,作为语言分析理解的载体和语义落地为应用的核心支持。

接下来的一层是抽取层 (extraction),如上图所示。它的输入是结构树,输出是填写了内容的 templates,类似于填表:就是对于应用所需要的情报,预先定义一个表格出来,让抽取系统去填空,把语句中相关的词或短语抓出来送进表中事先定义好的栏目(fields)去。这一层已经从原先的领域独立的 parser 进入面对领域、针对应用和产品需求的任务了。

值得强调的是,抽取层是面向领域的语义聚焦的,而前面的分析层则是领域独立的。因此,一个好的架构是把分析做得很深入很逻辑,以便减轻抽取的负担。在深度分析的逻辑语义结构上做抽取,一条抽取规则等价于语言表层的千百条规则。这就为领域转移创造了条件。

有两大类抽取,一类是传统的信息抽取(IE),抽取的是事实或客观情报:实体、实体之间的关系、涉及不同实体的事件等,可以回答 who did what when and where (谁在何时何地做了什么)之类的问题。这个客观情报的抽取就是如今火得不能再火的知识图谱(knowledge graph)的核心技术和基础,IE 完了以后再加上下一层挖掘里面的整合(IF:information fusion),就可以构建知识图谱。另一类抽取是关于主观情报,舆情挖掘就是基于这一种抽取。我过去五年着重做的也是这块,细线条的舆情抽取(不仅仅是褒贬分类,还要挖掘舆情背后的理由来为决策提供依据)。这是 NLP 中最难的任务之一,比客观情报的 IE 要难得多。抽取出来的信息通常是存到某种数据库去。这就为下面的挖掘层提供了碎片情报。

很多人混淆了抽取(information extraction) 和下一步的挖掘(text mining),但实际上这是两个层面的任务。抽取面对的是一颗颗语言的树,从一个个句子里面去找所要的情报。而挖掘面对的是一个 corpus,或数据源的整体,是从语言森林里面挖掘有统计价值的情报。在信息时代,我们面对的最大挑战就是信息过载,我们没有办法穷尽信息海洋,因此,必须借助电脑来从信息海洋中挖掘出关键的情报来满足不同的应用。因此挖掘天然地依赖统计,没有统计,抽取出来的信息仍然是杂乱无章的碎片,有很大的冗余,挖掘可以整合它们。

很多系统没有深入做挖掘,只是简单地把表达信息需求的 query 作为入口,实时(real time)去从抽取出来的相关的碎片化信息的数据库里,把 top n 结果简单合并,然后提供给产品和用户。这实际上也是挖掘,不过是用检索的方式实现了简单的挖掘就直接支持应用了。

实际上,要想做好挖掘,这里有很多的工作可做,不仅可以整合提高已有情报的质量。而且,做得深入的话,还可以挖掘出隐藏的情报,即不是元数据里显式表达出来的情报,譬如发现情报之间的因果关系,或其他的统计性趋势。这种挖掘最早在传统的数据挖掘(data mining)里做,因为传统的挖掘针对的是交易记录这样的结构数据,容易挖掘出那些隐含的关联(如,买尿片的人常常也买啤酒,原来是新为人父的人的惯常行为,这类情报挖掘出来可以帮助优化商品摆放和销售)。如今,自然语言也结构化为抽取的碎片情报在数据库了,当然也就可以做隐含关联的情报挖掘来提升情报的价值。

第四张架构图是NLP应用(apps)层。在这一层,分析、抽取、挖掘出来的种种情报可以支持不同NLP产品和服务。从问答系统到知识图谱的动态浏览(谷歌搜索中搜索明星已经可以看到这个应用),从自动民调到客户情报,从智能助理到自动文摘等等。

这算是我对NLP基本架构的一个总体解说。根据的是20多年在工业界做NLP产品的经验。18年前,我就是用一张NLP架构图忽悠来的第一笔风投,投资人自己跟我们说,这是一张 million dollar slide。如今的解说就是从那张图延伸拓展而来。

天变还是不变,道是不变的。

【语义计算:绕开句法做语义不合适】

Jiang:
请教一下各位老师,“咱为什么不用接龙报名来招机器人班?”是否合乎语法规范?如果不合乎语法规范,为什么大家理解起来还没有问题?这个现象说明了什么?说明语法是人为的,不能用来约束鲜活的语言发展事实么?

Bai:
@姜博士 合语法呀,没看出什么问题

Jiang:
@白 嗯!我担心“招”和“班”从语法上来看搭配不妥。有您印证,我就大胆地这么说了。

Bai:
“班”是“招”的逻辑主语。

Me:
嗯!
“逻辑主语”概念挺好,和“主语”有何区别?

Bai:
就是以这个动词组成典型的、正常的、统计上占优的主谓句的话,应该在其中当主语的那个角色。

Me:
严格说来 最底层还不是逻辑主语

Jiang:
喔?

Me:
[human] [为…班级] 招 [human],“班” 是目的。第一个human是逻辑主语,第二个human是逻辑宾语。

Jiang:
您的意思“招”的宾语还是“human”!

Me:
对。”班” 是 “招” 的结果或目的,宾语表示结果在汉语不鲜见。

Jiang:
“招生”可以说,也易于理解。但“招班”虽然可以说,但理解起来要拐个弯,理解成“为班招人”!

Me:
招生成班。挖土 挖坑 挖土成坑,同理。

Jiang:
感觉引入“主谓宾定补状”等语法成分有用,可以用来分析描述语言现象。但如果为之所累,或者非要顾及合乎语法与否,会影响语言学的深入发展。

Me:
没有不合语法呀。
“挖坑” 一直存在, 没有语法规定宾语一定要是逻辑宾语。再如:吃饭 吃食堂 吃亏 …… 宾语不是逻辑宾语很常见的。

Bai:
也许是“招人成班”,一个“经办人员”为“学校”招“人”成“班”。但是,经办人员不过是学校意志的代言人,学校是班的上位整体。这个办事人不需要强调的时候就融化在学校里 甚至可以说是学校的“工具”。招这个动作,真正的决策主体是“学校”。反而,办事人员如果大言不惭地说“我招了谁谁谁”,颇有贪天之功的嫌疑了。所以,学校是大主语,班是小主语,学生是宾语,办事人员是工具。工具偶尔升格为主语,但真正主语到来时必须让位。学校在出现显性介词(如“为”)时降格为介宾,与介词一起做状语。学校与班的关系,是整体与部分的关系。

Jiangg:
嗯!这么说来,这里边的关系挺不简单的。感觉“主语”这个语法概念和“工具”这个语义项概念粒度不一样。为了说清楚其语义,可以不借助语法概念。语法概念的引入把事情弄复杂了。

Bai:
语法自己还有打不清的架,又跟语义有说不清的纠缠,所以不能驾驭的建议干脆绕道,能驾驭的,从简为妙。

Jiang:
感觉语法体系是人凭感觉硬造的,在实际的语义分析中,不应过分依赖它或在意它。

Bai:
会用的可以借力。不会用的硬要用只会添麻烦。

Gong:
我在淘宝的经验是处理语法或语义不用照搬理论,解决实际问题即可。例如了点,我会认为是一个程度副词。

Bai:
不管语法语义,要回答的就两个问题:1、谁跟谁有关系;2、是什么关系。这两个问题回答清楚了就上了三楼。至于一楼二楼怎么分,最终应用不care。但是一楼二楼分好了,上三楼就可以有“利器”。

Me:
句法存在有几个理由:

1 句法的确有一定的概括性 只是汉语句法的概括性不如欧洲语言而已。

2 概括性的表现之一就是句法角色对逻辑语义的标配(default)映射,譬如 句法主语的标配映射是施事(逻辑主语),其次是逻辑宾语,第三位的映射是工具。标配以外的所有映射 都需要特别的条件。

3 句法关系比较简单:逻辑语义非专家不能 而且不容易达成一致。简单的直接体现就是数目,句法关系不过十个;逻辑语义可以到百。差了将近一个数量级,掌控起来 难度不同。如果做语言教学,“主谓宾定状补” 的说法 虽然仍难免捉襟见肘 但的确容易解说一些, 也大体抓住了关系的概貌。

4 其实更本质的理由还是语言共性的作用:无论汉语还是欧洲语言 语言学中的 subcat patterns 中的 args 不过三,这就为句法主宾补(补足语包括间接宾语,不仅仅是所谓【补语】),做了背书。至于这些主 宾,在深层不一定标配映射到语义的逻辑主语或逻辑宾语,那是另一层面的问题 是句法语义的接口问题 不宜混为一谈。所以白老师说句法做好 可以借力。欧洲语言的句法借力是很显然的 其实汉语中也有很多借力的地方。不过确实需要一点高度 才好玩这个句法语义接口的游戏。做直升飞机上三楼 固然是好 只怕更难。

以上几点是相互联系的 是不同角度的视点和论证。我的主张是 汉语研究不宜跳过句法 但汉语句法需要更大的张力和灵活变通才好。句法的框架设计 在解决“谁与谁发生关系”中 至关重要, 在解决“发生什么关系”上, 起了一个标配和桥梁的作用。

跳过句法可行否? 这个问题可以这样理解: 如果针对特定领域 特别是特定应用, 别说跳过句法, 就是跳过语义, 都是可能的。所谓端对端就是跳过了显性的语言学。但是对于 open domain 的语言分析应用的通用引擎 哪个环节都不宜跳过。跳过了 就难以深入和坚固。
自然语言(尤其汉语)是如此复杂 。语言学的几大部分已经是最起码的分野和分工了 还想要跳过,不对路呀。模块化多层处理是深度自然语言分析和理解的正道。

语言学的几大块是语言学多年研究传承的结晶 不宜轻言跳跃或抛弃,包括
Lexicon / Morphology  / Syntax  / Semantics / Discourse / Pragmatics,这几大块处于语言研究的不同层面。不能因为它们的接口复杂(尤其是汉语的词典与句法接口,句法和语义的接口),就否定或忽略了它们的层面不同。不少人希望破除繁琐哲学 要一锅烩,深度神经的端对端算是一个成功案例,但局限似乎在对带标大数据的要求上 还有就是连带的领域移植性问题。对于通用的语言分析理解 迄今没见成功案例 也不大可能。董老师说法 上帝不可欺。

Dong:
当年在农村插队落户,老农的一句话,我记了一辈子:种庄稼,你糊弄它一时,它糊弄你一年。科学研究,你糊弄它一时,它可就糊弄你一辈子。李维说的对,别以为有了语义,就可以绕过句法。语义离了句法,还如何处理语言呢?

Guo:
@wei 跟你抬个杠。

今天,深度神经不一定是端到端,机器学习不一定要带标大数据,语言处理多不是领域专用。

今天已知的“神经翻译”,第一步是word2vec,就是把“word”(不拘泥于词典词)转换成“vector”。这一步大家常用unsupervised方法独立做,没什么“端到端”,“带标大数据”,“领域专用”。

“神经翻译”常见的第二步,是seq2vec,就是把一个源语言”sentence”从一个“sequence of word vectors”转换成单一vector。这一步,也可以单独做,不用端到端带标大数据。

“神经翻译”常见的第三步,是vec2seq。这里需要端到端带标数据,但比想象中的“大”要小很多。

上面这两个vectors,如果要说成是对词和句的“深度理解”,免不了无尽的争执。但在神经计算的圈子里,他们的“通用性”性是显而易见的。同样一个句子的vector,人们不仅用它来生成不同语言的翻译或者产生对话,还有人用它来生成一幅画或者一段音乐。那个word vector,就更是无所不在了。

Me:
好问。

第一步 第二步 是一种 representation 的转换, 还是一个相对独立的知识训练?第一步对应的是什么知识?第二步又是什么知识?如果是对应某种知识, 那么 unsupervised 的训练如何反映这种知识或目标?

貌似第一步是 lexical semantics and ontology, 这个容易达成共识,无监督学习应该是可行的。第二步是 句法的模拟或逼近,理论上讲是难以无监督学会的。

Guo:
第三步vec2seq其实也是可以独立的。这就是为什么翻译出来的句子总是很顺的原因。

Me:
很顺的另一个说法是狗胆包天。哈
上次把肯定翻译成否定, 人是万万不敢的 除非自找炒鱿鱼。很顺的秘诀来源于大数据的特性,用词不当和语法错,连带棱角和独特性的语言表达,都被过滤掉了, 飘在上面的语言表达比人类表达的平均水平要 “高”。

Dong:
@Guo 学了不少东西。我一直纳闷的是,NMT有时会漏译、过度翻译等,那是怎样造成的呢?研发者知道原因,并知道如何去改进它吗?举个例子:

(英文)There was a very serious accident on the Beijing-Tangjin highway on Tuesday morning, resulting in a brutal jam. Victims say the traffic started to slow down around 4 o’clock Monday morning.

(谷歌):北京 – 唐津高速公路上星期二上午发生了严重事故,造成了残酷的果酱。受害人说,交通开始在周一上午4点左右减速。
(百度):在北京唐津高速公路上星期二上午非常严重的事故,造成一个残酷的果酱。受害者说星期一早上四点左右交通开始减速。

他们研发者发现后知道将来应该如何修改、提高呢?

Guo:
@董 翻译中的遗漏或者添油加醋,都是已知的问题,主要就是因为,那个中间的vector表达,没有在任何地方有显式的成分表达。

简单讲,这有点像口译,你先说一句话,别人听懂了,然后他把那句话用她自己的理解转述出来。如果不做笔记,口译的人是很难保证不增加或者减少内容的。但是他一定能说得很顺。

现在已提出些补救的办法。例如在谷歌的神经翻译中,就有一个所谓的,关注模型,希望输入的句子对输出的句子,能有一些比较直接的影响。但很显然,这个效果还是没能让人满意。

Dong:
没有在任何地方有显式的成分表达。”显式”是什么样的?那么为何不让它具有这个“显式”表达呢?是疏忽,环视技术上有障碍?@Guo 这是不是跟口译的情形还有点不同。口译是理解原文意思后的翻译复述,有着难免的变通。而NMT实际上是完全不是自觉的。大概有点像图像识别、语音识别,它在技术上完成了比较后,挑选了最“像”的结果。

Guo:
@董 现在常见的深度神经,无论是机器翻译,图像识别,语音识别,还是其他的应用,基本上都是先将输入转化为一个相对通用的一个中间表达(一般就是4096个数值),然后用这个中间表达,来完成具体的不同的任务。

这个中间表达,对不少深度神经的从业者而言,就是对原文的“深度理解”。当然,机器到底“理解”了什么,我们还说不清楚,但也不是一无所知。

 

【相关】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

【语义计算:领域专家是 AI 的未来】

Feng:
近来一些语言学泰斗提出汉语没有主谓结构的观点,轰动一时,我等做nlp的人怎么办?

Bai:
有无主谓无所谓,有坑就灵。名分的事,NLP不介入也不会损失什么。

Wang:
支持白老师的观点

Bai:
“这本书我只读了第一章。”
反正首先要回答“我、这本书、第一章、读”之间谁跟谁有关系(可以先不问是什么关系)。能答对的理论就比不能答对的理论强。我、这本书、第一章,都跟读有关系。这本书和第一章有关系。怎么起名,其实无所谓。

Dong:
“汉语没有主谓结构”,其实本来应该由nlp学者提出的。其实nlp界早有人对词类、词性标注、树库提出过挑战。然而,人微言轻,更何况语言学界的那种学术民主、平等观念的淡薄,阻碍了学术的发展。

Feng:
振东意见高明。

Feng:
语言学家不关心nlp的研究,但是又想指导nlp的研究。这是很遗憾的?

Liang:
NLP 由数学家研究比较好,也许。思路不一样。语言学家描述,language-as-we-know-it. 老乔的思路其实挺好的,什么样的机制能够生成语言。语言是怎样 emerge 出来的。白老师的“萝卜-坑理论”挺好的,挺简单,动词、形容词、一价二价名词是坑,专有名词都是萝卜。

Me:
语言学家不是不关心 是没法关心。不懂怎么关心?只好无视。各种跨学科的事儿 有很多,但像 nlp 这样的跨学科还是比较特别。特别就特别在 两边大都不懂,互相不认账 互相无视。 就是这样。

Bai:
小心有人躺枪~

Feng:
nlp是在深层次上跨学科,需要进行更新知识的再学习。

Me:
就是。即便做nlp的 互相不懂也不为少数。更不要指望纯粹的语言学家(人称文傻)去懂了,也不要指望精算师(统计学家、数学家,人称理呆)去懂语言学了。隔行如隔山,同行也隔山。没办法,术业有专攻。

Jiang:
太互相不懂了!

Liang:
这很正常。思路不一样。

Jiang:
嗯!亲身工作体验很重要。

Me:
冤家,属于人类学者的 spectrum 中的两极,两种不同的材料制造出来的人。不懂居多是常态;两边都懂属少数。两边懂得又深又透的,可尊为国宝,比大熊猫还稀罕。

Liang:
快灭绝了?

Me:
所处的层面不一样。

肯定有躺枪了。至少显得后继无人 不信问白老师。好在白老师桃李满天下,保不定出息几个出来。但大环境在那儿。大环境不利于跨学科相互了解和融入。

Bai:
我觉得微观上从语言学获得了许多营养,宏观上欠语言学一个理论创新。

Me:
我们这种半瓶水只能羡慕嫉妒了。燕雀仰慕鸿鹄之志。

有意思的是,nlp 回归语言学 是大势所趋。其实 整个 ai 都有回归的趋势。未来的 ai 是领域专家的天下。

Bai:
烈火过后看出来什么是真金

Me:
现在做nlp平台的少数贵族,做 ai 平台的极少数大神,都已经看到了,平台出来是给领域专家施展的,而不是给精算师的。高明的平台创造种种条件,让领域专家有最大的决策和施展的空间。

精算师将来只有两条路,要不升格为贵族,要不降格为机器人。想做领域专家也是一条路 可底子不行 又放不下身段 基本走不通。

Bai:
nlp称不上平台,引擎差不多

Me:
nlp 有平台的一面。当然 可以说 ai 平台涵盖了 nlp 平台,不过毛毛虫机制(formalism)的探索,现有的ai平台貌似不能完全涵盖。

我们所处的时代恰好是领域专家被歧视的时代。主流把领域专家看成资料员,或负担,不是一日两日了,是整整一代,有一代的断层。但大趋势是,领域专家在下一个时代会成为香饽饽,他们是 ai 的主力和实施的关键,质量的保证。对于可能降格为机器人的平台维护人员,领域专家是他们的客户,他们的上帝。一切为领域专家服务。

这不是乌托邦的图景,是有相当明显迹象的趋势。其实在小范围内,这也是一种已经实现过的模式。过去18年在我建立的环境中,基本就是采这种模式。语言学家团队属于领域专家,一直被伺候着。一个很深的体会是,领域专家中有两类,一类是可以培训出来,具有某种 engineering sense,因此可以适应这种 AI 模式。也有领域专家就是不入,虽然领域素养很深厚,但就是与 AI 无缘。

 

【相关】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

【NLP主流的傲慢与偏见】 

【NLP主流的反思:Church – 钟摆摆得太远(1)】

【Church – 钟摆摆得太远(5):现状与结论】 

【李白对话录系列】

中文处理

Parsing

【置顶:立委NLP博文一览】

《朝华午拾》总目录

 

【自然语言系统架构简说】

对于自然语言处理(NLP)及其应用,系统架构是核心问题,我在博文【立委科普:NLP 联络图 】里面给了四个NLP系统的体系结构的框架图,现在就一个一个做个简要的解说。

我把 NLP 系统从核心引擎直到应用,分为四个阶段,对应四张框架图。最底层最核心的是 deep parsing,就是对自然语言的自底而上层层推进的自动分析器,这个工作最繁难,但是它是绝大多数NLP系统基础技术。

parsing 的目的是把非结构的语言结构化。面对千变万化的语言表达,只有结构化了,patterns 才容易抓住,信息才好抽取,语义才好求解。这个道理早在乔姆斯基1957年语言学革命后提出表层结构到深层结构转换的时候,就开始成为(计算)语言学的共识了。结构树不仅是表达句法关系的枝干(arcs),还包括负载了各种信息的单词或短语的叶子(nodes)。结构树虽然重要,但一般不能直接支持产品,它只是系统的内部表达,作为语言分析理解的载体和语义落地为应用的核心支持。

接下来的一层是抽取层 (extraction),如上图所示。它的输入是结构树,输出是填写了内容的 templates,类似于填表:就是对于应用所需要的情报,预先定义一个表格出来,让抽取系统去填空,把语句中相关的词或短语抓出来送进表中事先定义好的栏目(fields)去。这一层已经从原先的领域独立的 parser 进入面对领域、针对应用和产品需求的任务了。

值得强调的是,抽取层是面向领域的语义聚焦的,而前面的分析层则是领域独立的。因此,一个好的架构是把分析做得很深入很逻辑,以便减轻抽取的负担。在深度分析的逻辑语义结构上做抽取,一条抽取规则等价于语言表层的千百条规则。这就为领域转移创造了条件。

有两大类抽取,一类是传统的信息抽取(IE),抽取的是事实或客观情报:实体、实体之间的关系、涉及不同实体的事件等,可以回答 who dis what when and where (谁在何时何地做了什么)之类的问题。这个客观情报的抽取就是如今火得不能再火的知识图谱(knowledge graph)的核心技术和基础,IE 完了以后再加上下一层挖掘里面的整合(IF:information fusion),就可以构建知识图谱。另一类抽取是关于主观情报,舆情挖掘就是基于这一种抽取。我过去五年着重做的也是这块,细线条的舆情抽取(不仅仅是褒贬分类,还要挖掘舆情背后的理由来为决策提供依据)。这是 NLP 中最难的任务之一,比客观情报的 IE 要难得多。抽取出来的信息通常是存到某种数据库去。这就为下面的挖掘层提供了碎片情报。

很多人混淆了抽取(information extraction) 和下一步的挖掘(text mining),但实际上这是两个层面的任务。抽取面对的是一颗颗语言的树,从一个个句子里面去找所要的情报。而挖掘面对的是一个 corpus,或数据源的整体,是从语言森林里面挖掘有统计价值的情报。在信息时代,我们面对的最大挑战就是信息过载,我们没有办法穷尽信息海洋,因此,必须借助电脑来从信息海洋中挖掘出关键的情报来满足不同的应用。因此挖掘天然地依赖统计,没有统计,抽取出来的信息仍然是杂乱无章的碎片,有很大的冗余,挖掘可以整合它们。

很多系统没有深入做挖掘,只是简单地把表达信息需求的 query 作为入口,实时(real time)去从抽取出来的相关的碎片化信息的数据库里,把 top n 结果简单合并,然后提供给产品和用户。这实际上也是挖掘,不过是用检索的方式实现了简单的挖掘就直接支持应用了。

实际上,要想做好挖掘,这里有很多的工作可做,不仅可以整合提高已有情报的质量。而且,做得深入的话,还可以挖掘出隐藏的情报,即不是元数据里显式表达出来的情报,譬如发现情报之间的因果关系,或其他的统计性趋势。这种挖掘最早在传统的数据挖掘(data mining)里做,因为传统的挖掘针对的是交易记录这样的结构数据,容易挖掘出那些隐含的关联(如,买尿片的人常常也买啤酒,原来是新为人父的人的惯常行为,这类情报挖掘出来可以帮助优化商品摆放和销售)。如今,自然语言也结构化为抽取的碎片情报在数据库了,当然也就可以做隐含关联的情报挖掘来提升情报的价值。

第四张架构图是NLP应用(apps)层。在这一层,分析、抽取、挖掘出来的种种情报可以支持不同NLP产品和服务。从问答系统到知识图谱的动态浏览(谷歌搜索中搜索明星已经可以看到这个应用),从自动民调到客户情报,从智能助理到自动文摘等等。

这算是我对NLP基本架构的一个总体解说。根据的是近20年在工业界做NLP产品的经验。18年前,我就是用一张NLP架构图忽悠来的第一笔风投,投资人自己跟我们说,这是 million dollar slide。如今的解说就是从那张图延伸拓展而来。

天不变道亦不变。

以前在哪里提过这个 million-dollar slide 的故事。说的是克林顿当政时期的 2000 前,美国来了一场互联网科技大跃进,史称  .com bubble,一时间热钱滚滚,各种互联网创业公司如雨后春笋。就在这样的形势下,老板决定趁热去找风险投资,嘱我对我们实现的语言系统原型做一个介绍。我于是画了下面这么一张三层的NLP体系架构图,最底层是parser,由浅入深,中层是建立在parsing基础上的信息抽取,最顶层是几类主要的应用,包括问答系统。连接应用与下面两层语言处理的是数据库,用来存放信息抽取的结果,这些结果可以随时为应用提供情报。这个体系架构自从我15年前提出以后,就一直没有大的变动,虽然细节和图示都已经改写了不下100遍了,本文的架构图示大约是前20版中的一版,此版只关核心引擎(后台),没有包括应用(前台)。话说架构图一大早由我老板寄送给华尔街的天使投资人,到了中午就得到他的回复,表示很感兴趣。不到两周,我们就得到了第一笔100万美金的天使投资支票。投资人说,这张图太妙了,this is a million dollar slide,它既展示了技术的门槛,又显示了该技术的巨大潜力。


from 科学网—前知识图谱钩沉: 信息抽取引擎的架构

【相关】

Introduction to NLP Architecture

【立委科普:NLP 联络图 】

前知识图谱钩沉: 信息抽取引擎的架构

【立委科普:自然语言parsers是揭示语言奥秘的LIGO式探测仪】 

【征文参赛:美梦成真】

《OVERVIEW OF NATURAL LANGUAGE PROCESSING》 

《NLP White Paper: Overview of Our NLP Core Engine》

White Paper of NLP Engine

【置顶:立委NLP博文】

Introduction to NLP Architecture

(translated by Google Translate, post-edited by myself)

For the natural language processing (NLP) and its applications, the system architecture is the core issue.  In my blog (  OVERVIEW OF NATURAL LANGUAGE PROCESSING), I sketched four NLP system architecture diagrams, now to be presented one by one .

In my design philosophy, an NLP process is divided into four stages, from the core engine up to the applications, as reflected in the four diagrams.  At the bottom is deep parsing, following the bottom-up processing of an automatic sentence analyzer.  This work is the most difficult, but it is the foundation and enabling technology for vast majority of NLP systems.

160213sg5p2r8ro18v17z8

The purpose of parsing is to structure unstructured text.  Facing the ever-changing language, only when it is structured in some logical form can we formulate patterns for the information we like to extract to support applications.  This principle of linguistics structures began to be the consensus in the linguistics community when Chomsky proposed the transformation from surface structure to deep structure in his linguistic revolution of 1957.  A tree representing the logical form does not only involve arcs that express syntactic-semantic relationships, but also contain the nodes of words or phrases that carry various conceptual information.  Despite the importance of such deep trees, generally they do not directly support an NLP product.  They remain only the internal representation of the parsing system, as a result of language analysis and understanding before its semantic grouding to the applications as their core support.

160216n8x8jj08qj2y1a8y

The next layer after parsing is the extraction layer, as shown in the above diagram.  Its input is the parse tree, and the output is the filled-in content of templates, similar to filling in a form: that is the information needed for the application, a pre-defined table (so to speak), so that the extraction system can fill in the blanks by the related words or phrases extracted from text based on parsing. This layer has gone from the original domain-independent parser into the application-oriented and product-demanded tasks.

It is worth emphasizing that the extraction layer is geared towards the domain-oriented semantic focus, while the previous parsing layer is domain-independent.  Therefore, a good framework is to do a very thorough analysis of logic semantics in deep parsing, in order to reduce the burden of information extraction.  With the depth of the analysis in  the logical semantic structures to support the extraction, a rule at extraction layer is in essence equivalent to thousands of surface rules at linear text layer.  This creates the conditions for the efficient porting to new domains based on the same core engine of parsing.

There are two types of extraction, one is the traditional information extraction (IE), the extraction of facts or objective information: named entities, the relationships between entities, and events involving entities (which can answer questions like “who did what when and where” and the like).  This extraction of objective information is the core technology and foundation for the knowledge graph (nowadays such a hot area in industry).  After completion of IE, the next layer of information fusion (IF) is aimed at constructing the knowledge graph.   The other type of extraction is about subjective information, for example, the public opinion mining is based on this kind of extraction. What I have done over the past five years as my focus is along this line for fine-grained extraction of public opinions (not just sentiment classification, but also to explore the reasons behind the public opinions and sentiments to provide the insights basis for decision-making).  This is one of the hardest tasks in NLP, much more difficult than IE for objective information.  Extracted information is usually stored in a database. This provides huge textual mentions of information to feed the underlying mining layer.

Many people confuse information extraction and text mining, but, in fact, they are two levels of different tasks.  Extraction faces each individual language tree, embodied in each sentence, in order to find the information we want.  The mining, however, faces a corpus, or data sources as a whole, from the language forest for gathering statistically significant insights.  In the information age, the biggest challenge we face is information overload, we have no way to exhaust the information ocean for the insights we need, therefore, we must use the computer to dig out the information from the ocean for the required critical intelligence to support different applications. Therefore, mining relies on natural statistics, without statistics, the information is still scattered across the corpus even if it is identified.  There is a lot of redundancy in the extracted mentions of information, mining can integrate them into valuable insights.

160215hzp5hq5pfd1alldj

Many NLP systems do not perform deep mining, instead, they simply use a query to search real-time from the extracted information index in the database and merge the retrieved information on-the-fly, presenting the top n results to the user. This is actually also mining, but it is a way of retrieval to achieve simple mining for directly supporting an application.

In order to do a good job of mining, there is a lot of work that can be done in this mining layer. Text mining not only improves the quality of existing extracted information pieces, moreover, it can also tap the hidden information, that is not explicitly expressed in the data sources, such as the causal relationship between events, or statistical trends of the public opinions or behaviours. This type of mining was first done in the traditional data mining applications as the traditional mining was aimed at structured data such as transaction records, making it easy to mine implicit associations (e.g., people who buy diapers often buy beer, this reflects the common behaviours of young fathers of the new-born, and such hidden association can be mined to optimize the layout and sales of goods). Nowadays, natural language is also structured thanks to deep parsing, hence data mining algorithms for hidden intelligence in the database can, in principle, also be applied to enhance the value of intelligence.

The fourth architectural diagram is the NLP application layer. In this layer, the results from parsing, extraction, and mining out of the unstructured text sources can be used to support a variety of NLP products and services, ranging from the QA (question answering) systems to the dynamic construction of the knowledge graph (this type of graph is visualized now in the Google search when we do a search for a star or VIP), from automatic polling of public opinions to customer intelligence about brands, from intelligent assistants (e.g. chatbots, Siri etc.) to automatic summarization and so on.

16221285l5wkx8t5ffi8a9

This is my overall presentation of the basic architecture of NLP and its applications, based on nearly 20 years of experiences in the industry to design and develop NLP products.  About 18 years ago, I was presenting a similar diagram of the NLP architecture to the first venture investor who told us that this is a million dollar slide.  The presentation here is a natural inheritance and extension from that diagram.

~~~~~~~~~~~~~~~~~~~
Here is the previously mentioned million-dollar slide story.  Under the Clinton’s administration before the turn of the century, the United States went through a “great leap forward” of the Internet technology, known as Dot Com Bubble, a time of hot money pouring into the IT industry while all kinds of Internet startups were springing up.  In such a situation, my boss decided to seek venture capital for the business expansion, and requested me to illustrate our prototype of the implemented natural language system for its introduction.  I then drew the following three-tier structure of an NLP system diagram: the bottom layer is parsing, from shallow to deep, the middle is built on parsing for information extraction, and the top layer illustrates some major categories of NLP applications, including QA.  Connecting applications and the downstairs two layers of language processing is the database, used to store the results of information extraction, ready to be applied at any time to support upstairs applications.  This general architecture has not changed much since I made it years ago, although the details and layout have been redrawn no less than 100 times.  The architecture diagram below is about one of the first 20 editions, involving mainly the backend core engine of information extraction architecture, not so much on the front-end flowchart for the interface between applications and the database.  I still remember early in the morning, my boss sent the slide to a Wall Street angel investor, by noon we got his reply, saying that he was very interested.  Less than two weeks, we got the first million dollar angel investment check.  Investors label it as a million dollar slide, which is believed to have not only shown the depth of language technology but also shows the great potential for practical applications.

165325a3pamcdcdr3daapw

Pre-Knowledge Graph: Architecture of Information Extraction Engine

 

【Related Chinese Blogs】

NLP Overview

Pre-Knowledge Graph: The Architecture of Information Extraction Engine

Natural language parser is to reveal the mystery of the language like a LIGO-type detector

Dream come true

( translated from http://blog.sciencenet.cn/blog-362400-981742.html )

The speech generation of the fully automatically translated, un-edited science blog of mine is attached below (for your entertainment :=), it is amazingly clear and understandable (definitely clearer than if I were giving this lecture myself with my strong accent).  If you are an NLP student, you can listen to it as a lecture note from a seasoned NLP practitioner.

Thanks to the newest Google Translate service from Chinese into English at https://translate.google.com/ 

 

 

[Related]

Wei’s Introduction to NLP Architecture Translated by Google

OVERVIEW OF NATURAL LANGUAGE PROCESSING

NLP White Paper: Overview of Our NLP Core Engine

【李白对话录之六:NLP 的 Components 及其关系】

白:
“交杯酒”,似乎“交杯”修饰的不是“酒”。“散伙饭”比“交杯酒”好点,可能“饭”单指饭局比“酒”单指敬酒频率要高些。

我:
这不就是一个黑箱子吗,里面啥关系对语义计算有什么用呢?如果有用,那就在词典绑架性标出,如果没用,就不管它。“交杯酒” 与 “酒” 的不同,是前者有个坑 【with+human】:“与张三的交杯酒刚喝过,李四就跟他掰了。” 后者似乎也可以,但那个似乎随机性很强或者后者指的是前者的时候:“与张三的酒刚喝过。。。”

白:
考虑创造新说法的安全性和可接受性,这问题不能绑架了之。见面礼,也属此类。现在流行的“谢师宴”,若干年前肯定是不说的。如何“安全地泛化”,对于语言生成来说是新课题。

我:
如果说的是语言生成,譬如在机器翻译应用,那么,一个系统有选择的余地。不必要翻译成一个短小紧凑的 【合成词】 的表达方式。可以用比较散漫的句法表达方式,这样相对保险,也规避了 word formation 的泛化的问题,因为句法的本性就是泛化和随机,构词法则不然。“谢师宴” 可以表达成 “感谢恩师的宴会”。

白:
人机对话不同
需要惊喜

我:
白老师看的是未来,锦上添花的东西。现如今雪中送炭还远没解决。
如果是 parsing,这种泛化的合成词的确词典收不胜收。汉语的造词能力特强,需要专门的 compounding 的模块去识别。

白:
单字形容词重叠+的,应该是系统性的现象。词典化怎么看都不像正路子。

我:
应该是两手吧。常用的 aa 重叠,尤其是双字的合成词,常规词典有收。系统的 rule 也必须有,娄底,保证recall。何况 “美” 与 “美美” 不是 1+1 的关系。可以被 “美美” 所状的谓词,单个的 “美” 根本不可能,无论睡觉、吃饭。同理,“好好” 与 “好” 也差别很大。可是 “幸幸福福” 与 “幸福” 就完全是规律化、系统性的现象了。即便用法有别,也是系统性地有别。这与 “好好、“美美” 不同。

白:
美美,是当事人感觉美。好好,是提要求/愿望的人觉得满足要求。轻轻,是行动人的身体或者行动人操控的物品宛若很轻。这一切基本与谓词无关。

我:
“美美睡上一觉”;“睡一个美美的觉。”
说与谓词无关,谓词不同意吧。
如果无关,辛勤与工作也无关。辛勤也是说人,工作也是说人,当“辛勤”修饰(状语)“工作”的时候,两个人是一个人。
如果说句法上的修饰关系,到了逻辑语义层不应该有所反映的话,那么逻辑语义表达中就不存在定语从句的路径。那么,“我说的话” 与 “我说话” 的语义区别咋办呢?
目前我们的处理是:“我说的话” 有一个小句“我说话”,这个小句有一个修饰的路径(Mod-S)指向“话”。

0928b

白:
逻辑语义是一个“结构体”,标配是负载最外层结构的词对外。需要其他词对外时,就需要定语从句来改变。所以定语从句不改变结构内逻辑语义关系,只是指派了不同词语来“代表”结构对外而已。S-mod是一个句法关系,不是逻辑语义关系。

我:
我对逻辑语义的理解是宽式的,涵盖一切由语句表达的涉及概念之间关系的语义,表达的是人对语句的理解。有了逻辑语义,再加上节点上的概念(从语词到概念的映射,理论上要经过 WSD),就可以说人理解语言了。如果是机器达到了上面两项,那就是机器的自然语言理解了。从这个角度看,定语从句不仅仅是表层的句法关系,它也是深层的语义关系(在 argument structure 以外的另一个维度)。

白:
“吃饭”,和“吃的饭”,吃与饭的逻辑语义关系不变,只是这个结构体的对外代言人,一个落在“吃”,一个落在“饭”。

我:
没错,吃饭 与 吃的饭 在 arg structure 维度,逻辑语义完全一致。也因此我们的 deep parse tree 上,下面的小句是等同的。跳出这个SVO结构体以外的维度,或者说,这个 SVO 与其他 SVO 发生关联的时候,这种关联也是语言理解的必需,也是语义。至于这个语义及其形式化的表达,叫不叫逻辑语义,那是命名的问题。但它的确是理解的必需,也的确是语义,也不能说不逻辑。对于 “我喜欢吃饭”,这个“吃饭” 的 arg structure 就直接做了 “喜欢” 的对象,到了 “我喜欢我吃的饭”,这个 arg structure 就只能降一级,然后通过 “饭” 来做喜欢的对象。逻辑上,arg structure 只是一个最基本的事件语义元件。

白:
结构体能做萝卜的成分有多个,包括最外层谓词本身。这并没超出逻辑语义范围。真正超出的是语用,比如定语从句有“造成既成事实”因而“强加于人”的感觉。

我:
由于这些元件的叠加所产生的语义,在语言表达中有很多方式,而且语言的节省(或偷懒)原则,使得这些元件的坑里面的萝卜往往省略,造成了语言向逻辑映射的困难,构成了 deep parsing 的挑战。说定语从句是句法形式,表达的是语用,而不是语义。这种说法,可成一家之言。可是,语义和语用本来的界限就有相当的灰色地带,哪些东西可以从语用的边界拉到语义这边,哪些东西可以在语义中挂起来,留待语用去解,都是一个公婆各有理的 practice,实践中就是系统内部(system internal)的协调。

白:
“惯于充当世界警察的美国”,就有把“美国惯于充当世界警察”当作既成事实强加给受众的意思。

我:
我个人的原则是,凡是 domain independent 的,都应该在语义里面表达和求解。凡是关涉 domain 的,或应用的,那就先挂起来,留到语用去解。这是把语用(pragmatics)与应用(apps)紧密联系了。定语从句是独立于 domain 的,不管哪个 domain 哪个应用,定语从句所表达的那点意思,都是一样的。当然会遇到有些语义计算的现象,它似乎有某种 domain 独立性,但又不完全。这时候的定夺就有任意性。主张在语义阶段求解的,加重的是语义 component 的负担,节省的是那些对此现象有要求的 domains 的 work,浪费表现在对于那些对此工作没有要求的 domains,那个语义工作就是白费功夫了。

白:
你这语用不是pragmatics,而是language usage。pragmatics一定是领域无关的。但pragmatics同样独立于逻辑语义结构

我:
前者我不确定,也许 community 对 pragmatics 的理解是你所说的,那样的话,“我的语义定义”里面是包含了这部分的。后者好像不对, language usage 一般指的是纯粹语言学的句法、词法、习惯用法等表层的现象。language usage 不是一个语言学的相对独立完整的 component。

白:
或者application,反正不是pragmatics的意思。这误会不是一天两天了,之前听你说语用我就感觉对不上茬儿。

我:
哈哈。
用的不是同一套话语体系,交流的时候要是不相互了解的话,的确很别扭。
举个具体的案例。费尔默上个世纪70年代(?)提出格语法(Case Grannar,深层格)的时候,我的理解,这是语义。实际上就是逻辑语义。当他不断把这条路线往下进行的时候,终于越来越趋近语用,最后成就的 FrameNet 在我的理解体系里面是属于 “语义” 向 “语用” 过度的结果(因此我一直批评它说在NLP中不尴不尬),但仍然基本上是领域独立的,可以划在语义的大范畴里面。可是,到了 MUC 创立了 IE 的时候,这就不再是领域独立了,于是就完完全全成了语用。信息抽取领域定义的那些关于事件和关系(知识图谱的发源)的 Templates, 与费尔默定义的 FrameNet,从形式上看,是一体的。不过在 FrameNet 里面,成千的 Frames 组织成了一个基本独立于领域的 hierarchy ,到了 IE 就完全放弃了自上而下的这种继承,一切都是零敲碎打,随着领域 随着应用随时拼凑起来的 Templates,直接服务于产品。

白:
指代消解,言外之意推导等,这些才是“语用学”环节要解决的问题。
你在美国,只要不用pragmatics指你说的语用,啥事没有,但对国内的人就不同了。你说的语用,在国内叫知识表示。

我:
指代在我的“科普”体系里面,是另一个 component,属于 Discourse,那是另一个维度,是篇章的维度。知识表示 (knowledge representation)有两大类吧,一类就是 ontology,有普世的,譬如董老师的 HowNet,也有领域的,譬如,医学领域的 ontology(本体)。另一类知识表示是动态的、流动的,就是现在红透半边天的知识图谱,其基础就是 IE,加上 篇章的、跨文本的一些工作支持的融合(fusion),包括merging,deconflicitng 等 mining。

白:
句内也有指代,无需篇章。

我:
句内也有指代,所以才有以句子为最大单位的句法的与之交互。交互的结果就是乔老爷的所谓 Binding Theory 或 Principles,但是指代在借助句法做了句内的指代以后,自然的下一步是走向篇章。事实上 乔老爷的 binding 原则之一,就是把句法搞不定的,推向篇章。那个原则是,本句的某个 NP 不可能是这个指代词 (“自己”、“他”)的所指。根据这一原则,句法的作用只是否定了一种可能,留下的是其他的可能,让篇章去寻。

我的相关科普在:【立委科普:NLP 联络图 】(英文在:  OVERVIEW OF NATURAL LANGUAGE PROCESSING )。里面把与 NLP 有关的语言学 components 按照我自己的理解,梳理了一遍。

 

【相关】

【博士涂鸦回顾:把常识代入文法的尝试】

上次说过,绝大多数的parsers对于谓词的 subcat 的表达都很简陋,伸展不开,多数不过把 subcat 当成一个代码,然后在相关的 subcat 规则中去确定 pattern。但是词驱动的文法 HPSG 却可以丝丝入扣,合情合理,可以直接在词典里面把 subcat 的 pattern 细致地描述,并对其句法语义的输入(pattern的条件)和输出(逻辑语义)之间的映射和解构,做出一个符合语言学原则的表达(representation)。

简陋有简陋的工程考量和理由,叠床架屋有叠床架屋的逻辑优美。鱼与熊掌不可兼得,我们最终还是更加倾向于简陋之法。尽管如此,走简陋快捷的路线的人,如果对结构表达的优美有所体验,还是有莫大的好处,至少不会被简陋的表象所迷惑,对于复杂的语言现象,逐渐摆脱简陋的捉襟见肘。

最近回看当年博士阶段的涂鸦文章,虽然其中反映出的对汉语句法的见识并不出彩,但是得力于 HPSG 的结构丰富性,还是把 subcat 在汉语文法中应用,表现得有条不紊,经得起时间的检验。当年钻研 HPSG 还是很专心的,吃得蛮透。正因为吃得透了,后来扬弃的时候就没有拖泥带水的牵挂。

譬如,在论及汉语NP带坑的现象的时候,是这样模型的:

11a)     桌子坏了。
11b)     腿坏了。
11c)     桌子的腿坏了。
12a)     他好。
12b)     身体好。
12c)     他的身体好。

When people say 11b) tui huai le (leg went wrong), we know something (the possessor) is omitted. For 11a), however, we have no such feel of incompleteness.

Although we may also ask whose table, this possessive relation between who and table is by no means innate. Similarly, ta (he) in 12a) is a complete notion denoting someone while shenti (body) in 12b) is not. In 11c) and 12c), the possessor appears in the possessive structure DE-construction, the expectation of tui (leg) and shenti (body) is realized. These examples show that some words (concepts) have conceptual expectation for some other words (concepts) although the expected words do not necessarily show up in a sentence and the expectation might not be satisfied. In fact, this type of expectation forms part of our knowledge (common sense). One way to represent the knowledge is to encode it with the related word in the lexicon.
Therefore we propose an underlying SYNSEM feature KNOWLEDGE to store some of our common sense knowledge by capturing the internal relation between concepts. KNOWLEDGE parallels to syntactic SUBCAT and semantic RELATION. KNOWLEDGE imposes semantic constraints on their expected arguments no matter what syntactic forms the arguments will take (they may take null form, i.e. the underlying arguments are not realized). In contrast, SUBCAT only defines syntactic requirement for the complements and gets interpreted in RELATION. Following this design, syntactic form and semantic constraints are kept apart. When necessary, the interaction between them can be implemented by lexical rules, or directly coindexed in the lexicon. For example, the following KNOWLEDGE information will be enforced as the necessary semantic constraints when we handle Chinese NP predicates by a lexical rule (see 3.3).

把常识暗度陈仓从后门带入文法,就是从那时候开始的。这个做法在欧洲语言的形式文法中不多见,因为句法形式大体够用了,通常不需要常识的帮忙。但是对于汉语,没有某种常识的引入,想做一个成熟的深度分析系统,则很难。当年带常识的的句法结构模型是这样定义的:

PHON      shenti
SYNSEM | KNOWLEDGE | PRED [1] possess
SYNSEM | KNOWLEDGE | POSSESSOR [2] human
SYNSEM | KNOWLEDGE | POSSESSED [3]
SYNSEM | LOCAL | CONTENT | INDEX [3]
SYNSEM | LOCAL | CONTENT | RESTRICTION { RELATION body }
SYNSEM | LOCAL | CONTENT | RESTRICTION { INSTANCE [3] }

最后,汉语文法中常识的引入被认为是对欧洲语言利用性数格的 agreement 的一个自然延伸。句法手段到语义限制的延伸。

Agreement revisited
This section relates semantic constraints which embody common sense to the conventional linguistic notion of agreement. We will show that they are essentially the same thing from different perspectives. We only need slight expansion for the definition of agreement to accommodate some of our basic knowledge. This is important as it accounts for the feasibility of coding knowledge in linguistic ways. Linguistic lexicon seems to be good enough to house some general knowledge in addition to linguistic knowledge.

为 parse“我鸡吃“ 和“鸡我吃”, 常识进入了文法(现在也可以利用大数据把常识代入):

A typical example of how concepts are linked in a network (a sophisticated concept lexicon) is seen in the representation of drink ((*ANI SUBJ) (((FLOW STUFF) OBJE) ((SELF IN) (((*ANI (THRU PART)) TO) (BE CAUSE))))) in Wilks 1975b. While for  various reasons we will not go as far as Wilks, we can gain enlightenment from this type of AI approach to knowledge. Lexicon-driven systems like the one in HPSG can, of course, make use of this possibility. Take the Chinese role-assignment problem, for example, the common sense that ANIMATE being eats FOOD can be seamlessly incorporated in the lexical entry chi (eat) as a semantic agreement requirement.

PHON chi
SYNSEM | KNOWLEDGE | PRED [1]  eat
SYNSEM | KNOWLEDGE | AGENT [2] animate
SYNSEM | KNOWLEDGE | PATIENT [3] food
SYNSEM | LOCAL | CATEGORY | SUBCAT | EXTERNAL_ARGUMENT [NP: [4]]
SYNSEM | LOCAL | CATEGORY | SUBCAT | INTERNAL_ARGUMENTS <[NP: [5]]>
SYNSEM | LOCAL | CONTENT | RELATION [1]
SYNSEM | LOCAL | CONTENT | EATER [4] | INDEX | ROGET [2]
SYNSEM | LOCAL | CONTENT | EATEN [5] | INDEX | ROGET [3]

可见,看上去不过是 POS 细分后的一个 subcat 的代码,里面其实包含了多少结构及其蕴含其内的知识。在 unification grammars 几乎成为历史陈迹的今天,我还是认为 HPSG 这样的表达是最优美的语言学的逻辑表达之一,论逻辑的清晰和美,后来的文法很难超越。

 

[Related]

Handling Chinese NP predicate in HPSG (old paper)

Notes for An HPSG-style Chinese Reversible Grammar

Outline of an HPSG-style Chinese reversible grammar

PhD Thesis: Morpho-syntactic Interface in CPSG (cover page)

 

Overview of Natural Language Processing

Dr. Wei Li’s English Blog on NLP

 

《立委科普:NLP系统语义模块的任务》

本篇旨在探讨NLP(Natural Language Processing)语义模块的任务,尤其在知识图谱应用中。探讨之前,我们先站在万米高看俯瞰一下语义模块在语言学和NLP的主要模块的架构中位于何处。
语言学的教科书通常把语言文本研究从浅入深划分为这么几个分支:词法(morphology)、句法(syntax)、语义(semantics)和语用(pragmatics)。还有另一个维度的分支,叫篇章研究(discourse study),是跨句进行,其他的研究一般限于句内。词法句法的研究成果在 NLP 中表现为 parser,可以自动把线性字符串的语句分析为句法树结构,千变万化的语句因此化为有限的句型或 patterns,为语言理解和应用提供了坚实的基础。语义处于句法之后、语用之前,我们叫它为语义中间件 (middleware),因为它是领域独立的语言研究的终点,支持的是依赖领域和应用的语用。这个语义中间件的任务也可以留到语用阶段在语义落地(semantic grounding)的时候根据语用对语义的要求来一起做,但是理论上,总有一部分语义工作有足够的领域独立性,值得提前做好,来支持种种不同的语用场景和应用,减轻语用模块的负担。
如此定义的语义模块(语义中间件),主要是寻找 hidden links,譬如隐含的逻辑主语、宾语 等。这些在句法阶段没有显性表明,但是有足够证据去确定如何填补。填补的时候,一个是利用句法(显性的links),一个是利用 ontology,通常是二者的结合。词驱动(word-driven)来做,是一个很 tractable 的任务,是比parsing更琐碎但难度较低的工作,因为要结构有结构,要ontology有ontology(包括动态形成的ontology节点,譬如NE专名的分类),条件比纯句法分析模块只有线性的pattern可用,是成熟多了。其有用性还是不太清晰: argument 之一就是,如果 hidden 的语义重要,人为什么不用显性句法手段?即便在一个句子的选定的句法结构中,某个重要的语义难以显性表达,如果足够重要,人就会换一种句法结构在另一个句子显性表达出来。如果上述 argument 有一定的道理,那么不做 hidden 语义,对于大数据挖掘,应该不会有太大的损害。至少在大数据挖掘这样的场景,信息的冗余性足以弥补 个体 hidden 语义的不全。在句法结束的时候,有些句子提到的 arg(s) 并没有到位,可以说是不饱和(unsaturated)。语义中间件的任务就是把句法没有做全的不饱和的坑填得饱和,hidden links 建立了,于是就饱和了。如果句法模块和语义模块以后,仍然不饱和,就应该在 discourse 中去找。如果 discourse 中还是没找到,那么理论上是应该通过常识去饱和它。
回到万米高空俯瞰,昨天还在想所谓“语义计算”到底包含哪些呢。从 community 来看,相关的方面有:(1)WSD(Word Sense Disambiguation); (2) FrameNet (role labeling); (3) IE(Information Extraction)。“经典”IE (MUC IE 传统)里面一般分 NE、relationship、event,外加 Coreference,等任务。从结构图的角度看,NE 和 WSD 是做 node 的语义计算;FrameNet 和 IE Template (for relationship or event) 是做 arc (link)的语义计算。这样来看 community 定义的几个任务和方向,可以发现,(1) 和 (2) 都是学究式的任务,不实用。(3) 是最接地气的东西,是应用(apps)直接需要的。但是 IE 是针对领域的,直接为产品服务的,不好抽象,那么就可以想想什么东西是句法之后,语用之前,最能帮助 IE。其中之一就是 Coreference,这个任务已经被 IE 收编了,但它实际上是独立于领域的篇章(discourse)尺度的语义计算,是为了支持 IE 的跨句整合的。
沿着这个思路,我们还可以细化,根据实际需求,我们定义过三个任务,觉得应该在语义中间件里面做,它们应该可以惠及所有的应用:第一个是 同位语关系,这个可以看成是 Corference之一种;第二个是 部分和整体的关系(譬如,苹果和iPhone);第三个 原因和结果的关系。上述三个关系不限于句法短距离,也包括远距离的,甚至跨句的这类联系。我们一直在这三个关系,加上代词的coreference (包括专名的 aliasing) 上下功夫,比在 hidden 逻辑主谓宾方面更多,因为前者直接服务于 local IE 以后的 IE,以便整合成图谱,是整合的粘合剂,后者大多可以通过信息冗余去做弥补。
以上说的是实践中摸索出来的体会,就是自然而然这么走下来的。local IE 在抓取信息填 IE Template 里面的坑的时候,所看到的都是局部的信息,所填坑的材料经常很“虚”。虚的极端例子就是代词(“它”,“这个”),或者 一些指代性的名词(“这台电脑”),这些东西只能作为桥梁,不能真正导致图谱。这时候语义模块在上述四个方面所做的工作,就可以帮助把这些虚的材料,变得实在,这是通向图谱的一个很重要的支持。
大而言之,语义中间件做到什么程度合适,有很大的争论空间。在确定应用之前,不少细线条语义进一步伸展没有太大意义,或者劳而少功。就是说在句法把结构的框架搭起来以后,在语用层面的具体应用确定之前,到底要做多少语义计算,不是容易说清楚的,直觉上和经验上,不赞成做得太多。从某种意义上看,费尔默创立 FrameNet 就是想把语义中间件进行到底。理论上,他的深入是有道理的,因为在 arg structure (句法subcat的拿手好戏)之后,如果要深入,domain independent 的 Frame hierarchy 是通向语用的深度桥梁。起码理论上如此。但是我们做了18年的 IE 以后,结论是,费尔默那个语义计算的路子基本是歧途。没感觉到啥好处,却带来了很大的 overhead,可操作性很差,也并不省功。IE 领域用 Template 定义语用领域的需求,没有人主张把这些 Templates 定义在 FrameNet 的 hierarchy 上面,因为感觉不到需要,而且也不现实。100 年后,也许 FrameNet 可以被重新发现,因为那时候的语用落地已经太多了,需要组织组织了。FrameNet 正好提供了一个组织和整合的框架,如今的语用落地都是零星的。
立委牌 NLP University 中,能看懂上面这些参杂了些假洋鬼子话(术语)的“高阶科普”的后学,是可以授予学位的。这个学位是硬通货。看不懂也没关系,可以视为狂人乱语,或者是误入迷宫,不隔行也如山,耽误了你玩深度学习(dl)的宝贵时间。

【语义计算沙龙:从“10年中学文化课”切词谈系统设计】

我:
毛老啊,1966-1976 10年文革,是我十年的中小学,我容易吗?10年中学文化课的时间不到一半,其余是学工学农学军。学赤脚医生 学开手扶拖拉机。
为什么是 【十年中】【学文化课】不是 【十年中学】【文化课】?

Guo:
@wei 单就这句,确实两可。但你后面有这么多的”学”……
至少对这个例子,统计,”深度神经”RNN之类还是有merit的。当然,这两种解析其实也没本质的区别。不必多费心思。

我:
怎讲?因为“学”频率高 所以“中学”成词就不便?统计模型在这个case怎么工作显示merit呢?愿闻其详。
大数据说 有五年中学 有六年中学,极少见十年中学,反映的是中学学制的常识。但是这个知识不是很强大,很难作数,因为这不是 positive evidence。如果句子在 “六年中学” 发生边界纠纷的时候 得到来自大数据的直接支持,那是正面的 evidence,力量就很强。负面证据不顶事儿,因为它面对的是 【非六】(或【非五】)的大海,理论上无边无沿,那点儿证据早被淹没了。

Guo:
统计分long term / global vs short term / local.

你讲的”大数据”,其实是在讲前者。

现在热的”深度神经”,有些是有意无意地多考虑些后者。例如,深度神经”皇冠上的明珠”LSTM即是Long Short Term Memory。虽非显式地求取利用”即时统计”,那层意思还是感觉的到的。

我:
@Guo 恩。这个 local 和 global 之间的关系很tricky
0821e

这个貌似歪打正着的parse应该纯粹是狗屎运,不理论。

白:
N+N的得分本来就低 有状语有动词的更加“典型” N+N是实在没招了只能借助构词法解决零碎的产物 有状语有动词时谁还理N+N。不管几年中学,也抗衡不了这个结构要素。就是说,同样是使用规则,有些规则上得厅堂,有些规则只能下得厨房。如果没有上得厅堂的规则可用,随你下厨房怎么折腾。但是如果有上得厅堂的规则可用,谁也不去下厨房。

我:
这里不仅仅是 N+N 的问题,在绝大多数切词模块中,还没走到N+N这一步,因此这个问题实际上可能挑战不少现存的切词程序:十年/中学/文化课 or 十年中/学/文化课 ?
有一个常用的切词 heuristic 要求偏向于音节数均匀的路径 显然前者比后者均匀多了。

白:
句法上谈多层,也是“狗/咬吕洞宾”, 不是“狗咬/吕洞宾”

我:
真正的反例是交叉型的。
句法怎么谈层次 其实无关 因为多层的切词不过是一个技术策略,(通常)本身并不参与 parsing,最终的结果是 狗/咬/吕洞宾 就行了。其实 即便论句法 SVO 层次 在汉语中还是颇有争论的 不像西方语言里面 V+NP 的证据那么充分。

白:
这有点循环论证了

我:
目前的接口是这样的 多数系统的接口是。切词的结果并不存在层次,虽然切词内部可以也应该使用层次。肯定有研究型系统不采用这样的接口,但实用系统中的多数似乎就是这样简单。

白:
都保留也没啥,交给句法处理好了,谁说一定要分出个唯一结果再交上去,很多系统接受词图而不是词流了。对于神经网络这种天然接受不确定性的formalism而言,接受词图并不比接受词流多什么负担。

我:
数据结构多了维度,对于传统系统,涉及面蛮大的。词不仅仅是词,词本身不是一个简单的 object。以前的系统词流就是string 或最多是 token+POS list 对那样简单的结构增加维度还好。

白:
词和短语一样可以给位置加锁解锁 竞争位置的锁

我:
不错,词是一切潜在结构的发源地,蕴藏了很大潜能,甚至在设计中,应该让词典可以内建结构,与parsing机制一体化。这种设计思想下的词 增加维度 就是带着镣铐跳舞 不是容易处置好的。nondeterministic 是一个动听但不太好使的策略。否则理论上无需任何休眠与唤醒。

白:
可以参数化,连续过渡。处理得好,管子就粗些。处理不好,管子就细些。极端就回到一条线。一个位置允许几个词竞争锁,可以参数化。超出管子容量的,再做休眠唤醒。

我:
多层系统下的 nondeterministic 结构,就好比潘多拉的盒子。放鬼容易降鬼难,层次越多越是这样。也许机器学习那边不怕,反正不是人在降服鬼。

白:
其实一个词多个POS,或者多个subcat,机制是一样的。不仅有组合增加的一面,也有限制增加的一面。不用人降服鬼,鬼自己就打起来,打不赢没脸见人。只要制定好“见人”的标准,其他就交给鬼。

我:
这就是毛主席的路线 叫天下大乱达到天下大治。文革大乱10年国民经济临近崩溃的边缘,但没有像60年那样彻底崩盘,除了狗屎运,还因为有一个绝对权威在。这个权威冷酷无情 翻脸不认人。今天红上了天的红卫兵造反派 明天就下牢狱。

白:
鬼打架也是有秩序的,不是大乱,是分布式表示。

我:
这样的系统大多难以调试 等到见人了 结果已定局 好坏都是它了 斯大林说 胜利者是不受指责的。

白:
局部作用,高度自治

我:
鬼虽然是按照人制定的规则打架。具体细节却难以追踪 因此也难以改正。当然 这个毛病也不是现在才有的 是一切黑箱子策略的通病。

白:
不是黑箱子,是基于规则、分布式表示、局部自治。打架的任何细节语言学上都可解释。理论上,如果词典确定,所有交集型分词歧义就已经确定,是词流还是词图,只是一个编码问题。如果再加上管子粗细的限制,编码也是高度可控的。

我:
刁德一说 这茶喝到这儿才有了滋味。看好白老师及其design

白:
“10年”说的究竟是时长(duration)为10年的时间段,还是2010年这一年的简称,也是需要甄别的。

 

【相关】

 

【置顶:立委NLP博文一览】

《朝华午拾》总目录

S. Bai: Natural Language Caterpillar Breaks through Chomsky’s Castle

masterminds-it-quiz-10-728

Translator’s note:

This article written in Chinese by Prof. S. Bai is a wonderful piece of writing worthy of recommendation for all natural language scholars.  Prof. Bai’s critical study of Chomsky’s formal language theory with regards to natural language has reached a depth never seen before ever since Chomsky’s revolution in 50’s last century.  For decades with so many papers published by so many scholars who have studied Chomsky, this novel “caterpillar” theory still stands out and strikes me as an insight that offers a much clearer and deeper explanation for how natural language should be modeled in formalism, based on my decades of natural language parsing study and practice (in our practice, I call the caterpillar FSA++, an extension of regular grammar formalism adequate for multi-level natural language deep parsing).  For example, so many people have been trapped in Chomsky’s recursion theory and made endless futile efforts to attempt a linear or near-linear algorithm to handle the so-called recursive nature of natural language which is practically non-existent (see Chomsky’s Negative Impact).  There used to be heated debates  in computational linguistics on whether natural language is context-free or context-sensitive, or mildly sensitive as some scholars call it.  Such debates mechanically apply Chomsky’s formal language hierarchy to natural languages, trapped in metaphysical academic controversies, far from language facts and data.  In contrast, Prof. Bai’s original “caterpillar” theory presents a novel picture that provides insights in uncovering the true nature of natural languages.

S. Bai: Natural Language Caterpillar Breaks through Chomsky’s Castle

Tags: Chomsky Hierarchy, computational linguistics, Natural Language Processing, linear speed

This is a technology-savvy article, not to be fooled by the title seemingly about a bug story in some VIP’s castle.  If you are neither an NLP professional nor an NLP fan, you can stop here and do not need to continue the journey with me on this topic.

Chomsky’s Castle refers to the famous Chomsky Hierarchy in his formal language theory, built by the father of contemporary linguistics Noam Chomsky more than half a century ago.  According to this theory, the language castle is built with four enclosing walls.  The outmost wall is named Type-0, also called Phrase Structure Grammar, corresponding to a Turing machine.  The second wall is Type-1, or Context-sensitive Grammar (CSG), corresponding to a parsing device called linear bounded automaton  with time complexity known to be NP-complete.  The third wall is Type-2, or Context-free Grammar (CFG), corresponding to a  pushdown automaton, with a time complexity that is polynomial, somewhere between square and cubic in the size of the input sentence for the best asymptotic order measured in the worst case scenario.  The innermost wall is Type-3, or Regular Grammar, corresponding to deterministic finite state automata, with a linear time complexity.  The sketch of the 4-wall Chomsky Castle is illustrated below.

This castle of Chomsky has impacted generations of scholars, mainly along two lines.  The first line of impact can be called “the outward fear syndrome”.  Because the time complexity for the second wall (CSG) is NP-complete, anywhere therein and beyond becomes a Forbidden City before NP=P can be proved.  Thus, the pressure for parsing natural languages has to be all confined to within the third wall (CFG).  Everyone knows the natural language involves some context sensitivity,  but the computing device cannot hold it to be tractable once it is beyond the third wall of CFG.  So it has to be left out.

The second line of impact is called “the inward perfection syndrome”.  Following the initial success of using Type 2 grammar (CFG) comes a severe abuse of recursion.  When the number of recursive layers increases slightly, the acceptability of a sentence soon approximates to almost 0.  For example, “The person that hit Peter is John” looks fine,  but it starts sounding weird to hear “The person that hit Peter that met Tom is John”.  It becomes gibberish with sentences like “The person that hit Peter that met Tom that married Mary is John”.  In fact, the majority resources spent with regards to the parsing efficiency are associated with such abuse of recursion in coping with gibberish-like sentences, rarely seen in real life language.  For natural language processing to be practical,  pursuing the linear speed cannot be over emphasized.  If we reflect on the efficiency of the human language understanding process, the conclusion is certainly about the “linear speed” in accordance with the length of the speech input.  In fact, the abuse of recursion is most likely triggered by the “inward perfection syndrome”, for which we intend to cover every inch of the land within the third wall of CFG, even if it is an area piled up by gibberish or garbage.

In a sense, it can be said that one reason for the statistical approach to take over the rule-based approach for such a long time in the academia of natural language processing is just the combination effect of these two syndromes.  To overcome the effects of these syndromes, many researchers have made all kinds of efforts, to be reviewed below one by one.

Along the line of the outward fear syndrome, evidence against the context-freeness has been found in some constructions in Swiss-German.  Chinese has similar examples in expressing respective correspondence of conjoined items and their descriptions.  For example,   “张三、李四、王五的年龄分别是25岁、32岁、27岁,出生地分别是武汉、成都、苏州” (Zhang San, Li Si, Wang Wu’s age is respectively 25, 32, and 27, they were born respectively in Wuhan, Chengdu, Suzhou” ).  Here, the three named entities constitute a list of nouns.  The number of the conjoined list of entities cannot be predetermined, but although the respective descriptors about this list of nouns also vary in length, the key condition is that they need to correspond to the antecedent list of nouns one by one.  This respective correspondence is something beyond the expression power of the context-free formalism.  It needs to get out of the third wall.

As for overcoming “the inward perfection syndrome”, the pursuit of “linear speed” in the field of NLP has never stopped.  It ranges from allowing for the look-ahead mechanism in LR (k) grammar, to the cascaded finite state automata, to the probabilistic CFG parsers which are trained on a large treebank and eventually converted to an Ngram (n=>5) model.  It should also include RNN/LSTM for its unique pursuit for deep parsing from the statistical school.  All these efforts are striving for defining a subclass in Type-2 CFG that reaches linear speed efficiency yet still with adequate linguistic power.  In fact, all parsers that have survived after fighting the statistical methods are to some degree a result of overcoming “the inward perfection syndrome”, with certain success in linear speed pursuit while respecting linguistic principles.  The resulting restricted subclass, compared to the area within the original third wall CFG, is a greatly “squashed” land.

If we agree that everything in parsing should be based on real life natural language as the starting point and the ultimate landing point, it should be easy to see that the outward limited breakthrough and the inward massive compression should be the two sides of a coin.  We want to strive for a formalism that balances both sides.  In other words, our ideal natural language parsing formalism should look like a linguistic “caterpillar” breaking through the Chomsky walls in his castle, illustrated below:

It seems to me that such a “caterpillar” may have already been found by someone.  It will not take too long before we can confirm it.
Original article in Chinese from 《穿越乔家大院寻找“毛毛虫”
Translated by Dr. Wei Li

 

 

【Related】

[转载]【白硕 – 穿越乔家大院寻找“毛毛虫”】

【立委按】

白硕老师这篇文章值得所有自然语言学者研读和反思。击节叹服,拍案叫绝,是初读此文的真切感受。白老师对乔姆斯基形式语言理论用于自然语言所造成的误导,给出了迄今所见最有深度的犀利解析,而且写得深入浅出,形象生动,妙趣横生。这么多年,这么多学者,怎么就达不到这样的深度呢?一个乔姆斯基的递归陷阱不知道栽进去多少人,造成多少人在 “不是人话” 的现象上做无用功,绕了无数弯路。学界曾有多篇长篇大论,机械地套用乔氏层级体系,在自然语言是 context-free 还是 context-sensitive 的框框里争论不休,也有折衷的说法,诸如自然语言是 mildly sensitive,这些形而上的学究式争论,大多雾里看花,隔靴搔痒,不得要领,离语言事实甚远。白老师独创的 “毛毛虫” 论,形象地打破了这些条条框框。

白老师自己的总结是:‘如果认同“一切以真实的自然语言为出发点和最终落脚点”的理念,那就应该承认:向外有限突破,向内大举压缩,应该是一枚硬币的两面。’ 此乃金玉良言,掷地有声。

【白硕 – 穿越乔家大院寻找“毛毛虫”】

看标题,您八成以为这篇文章讲的是山西的乔家大院的事儿了吧?不是。这是一篇烧脑的技术贴。如果您既不是NLP专业人士也不是NLP爱好者,就不用往下看了。

咱说的这乔家大院,是当代语言学祖师爷乔姆斯基老爷子画下来的形式语言类型谱系划分格局。最外边一圈围墙,是0型文法,又叫短语结构文法,其对应的分析处理机制和图灵机等价,亦即图灵可计算的;第二圈围墙,是1型文法,又叫上下文相关文法,其对应的分析处理机制,时间复杂度是NP完全的;第三圈围墙,是2型文法,又叫上下文无关文法,其对应的分析处理机制,时间复杂度是多项式的,最坏情况下的最好渐进阶在输入句子长度的平方和立方之间;最里边一层围墙,是3型文法,又叫正则文法,其对应的分析处理机制和确定性有限状态自动机等价,时间复杂度是线性的。这一圈套一圈的,归纳整理下来,如下图所示:

乔老爷子建的这座大院,影响了几代人。影响包括这样两个方面:

第一个方面,我们可以称之为“外向恐惧情结”。因为第二圈的判定处理机制,时间复杂度是NP完全的,于是在NP=P还没有证明出来之前,第二圈之外似乎是禁区,没等碰到已经被宣判了死刑。这样,对自然语言的描述压力,全都集中到了第三圈围墙里面,也就是上下文无关文法。大家心知肚明自然语言具有上下文相关性,想要红杏出墙,但是因为出了围墙计算上就hold不住,也只好打消此念。0院点灯……1院点灯……大红灯笼高高挂,红灯停,闲人免出。

第二个方面,我们可以称之为“内向求全情结”。2型文法大行其道,取得了局部成功,也带来了一个坏风气,就是递归的滥用。当递归层数稍微加大,人类对于某些句式的可接受性就快速衰减至几近为0。比如,“我是县长派来的”没问题,“我是县长派来的派来的”就有点别扭,“我是县长派来的派来的派来的”就不太像人话了。而影响分析判定效率的绝大多数资源投入,都花在了应对这类“不像人话”的递归滥用上了。自然语言处理要想取得实用效果,处理的“线速”是硬道理。反思一下,我们人类的语言理解过程,也肯定是在“线速”范围之内。递归的滥用,起源于“向内求全情结”,也就是一心想覆盖第三圈围墙里面最犄角旮旯的区域,哪怕那是一个由“不像人话”的实例堆积起来的垃圾堆。

可以说,在自然语言处理领域,统计方法之所以在很长时间内压倒规则方法,在一定程度上,就是向外恐惧情结与向内求全情结叠加造成的。NLP领域内也有很多的仁人志士为打破这两个情结做了各种各样的努力。

先说向外恐惧情结。早就有人指出,瑞士高地德语里面有不能用上下文无关文法描述的语言现象。其实,在涉及到“分别”的表述时,汉语也同样。比如:“张三、李四、王五的年龄分别是25岁、32岁、27岁,出生地分别是武汉、成都、苏州。”这里“张三、李四、王五”构成一个名词列表,对这类列表的一般性句法表述,肯定是不定长的,但后面的两个“分别”携带的列表,虽然也是不定长的,但却需要跟前面这个列表的长度相等。这个相等的条件,上下文无关文法不能表达,必须走出第三圈围墙。

再说向内求全情结。追求“线速”的努力,在NLP领域一直没有停止过。从允许预读机制的LR(k)文法,到有限自动机堆叠,再到基于大型树库训练出来的、最终转化为Ngram模型(N=5甚至更大)的概率上下文无关文法分析器,甚至可以算上统计阵营里孤军深入自然语言深层处理的RNN/LSTM等等,都试图从2型文法中划出一个既有足够的语言学意义、又能达到线速处理效率的子类。可以说,凡是在与统计方法的搏杀中还能活下来的分析器,无一不是在某种程度上摆脱了向内求全情结、在基本尊重语言学规律基础上尽可能追求线速的努力达到相对成功的结果。这个经过限制的子类,比起第三圈围墙来,是大大地“压扁”了的。

如果认同“一切以真实的自然语言为出发点和最终落脚点”的理念,那就应该承认:向外有限突破,向内大举压缩,应该是一枚硬币的两面。我们希望,能够有一种形式化机制同时兼顾这两面。也就是说,我们理想中的自然语言句法的形式化描述机制,应该像一条穿越乔家大院的“毛毛虫”,如下图所示:

据笔者妄加猜测,这样的“毛毛虫”,可能有人已经找到,过一段时间自然会见分晓。

from http://blog.sina.com.cn/s/blog_729574a00102wf63.html

 

【相关】

【新智元:parsing 在希望的田野上】 

【新智元:理论家的围墙和工程师的私货】

【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】

【泥沙龙笔记:NLP 专门语言是规则系统的斧头】

乔姆斯基批判

泥沙龙笔记:再聊乔老爷的递归陷阱

泥沙龙笔记:骨灰级砖家一席谈,真伪结构歧义的对策(2/2) 

《自然语言是递归的么?》

语言创造简史

【置顶:立委博客NLP博文一览(定期更新版)】

 

On Hand-crafted Myth of Knowledge Bottleneck

In my article “Pride and Prejudice of Main Stream“, the first myth listed as top 10 misconceptions in NLP is as follows:

[Hand-crafted Myth]  Rule-based system faces a knowledge bottleneck of hand-crafted development while a machine learning system involves automatic training (implying no knowledge bottleneck).

While there are numerous misconceptions on the old school of rule systems , this hand-crafted myth can be regarded as the source of all.  Just take a review of NLP papers, no matter what are the language phenomena being discussed, it’s almost cliche to cite a couple of old school work to demonstrate superiority of machine learning algorithms, and the reason for the attack only needs one sentence, to the effect that the hand-crafted rules lead to a system “difficult to develop” (or “difficult to scale up”, “with low efficiency”, “lacking robustness”, etc.), or simply rejecting it like this, “literature [1], [2] and [3] have tried to handle the problem in different aspects, but these systems are all hand-crafted”.  Once labeled with hand-crafting, one does not even need to discuss the effect and quality.  Hand-craft becomes the rule system’s “original sin”, the linguists crafting rules, therefore, become the community’s second-class citizens bearing the sin.

So what is wrong with hand-crafting or coding linguistic rules for computer processing of languages?  NLP development is software engineering.  From software engineering perspective, hand-crafting is programming while machine learning belongs to automatic programming.  Unless we assume that natural language is a special object whose processing can all be handled by systems automatically programmed or learned by machine learning algorithms, it does not make sense to reject or belittle the practice of coding linguistic rules for developing an NLP system.

For consumer products and arts, hand-craft is definitely a positive word: it represents quality or uniqueness and high value, a legit reason for good price. Why does it become a derogatory term in NLP?  The root cause is that in the field of NLP,  almost like some collective hypnosis hit in the community, people are intentionally or unintentionally lead to believe that machine learning is the only correct choice.  In other words, by criticizing, rejecting or disregarding hand-crafted rule systems, the underlying assumption is that machine learning is a panacea, universal and effective, always a preferred approach over the other school.

The fact of life is, in the face of the complexity of natural language, machine learning from data so far only surfaces the tip of an iceberg of the language monster (called low-hanging fruit by Church in K. Church: A Pendulum Swung Too Far), far from reaching the goal of a complete solution to language understanding and applications.  There is no basis to support that machine learning alone can solve all language problems, nor is there any evidence that machine learning necessarily leads to better quality than coding rules by domain specialists (e.g. computational grammarians).  Depending on the nature and depth of the NLP tasks, hand-crafted systems actually have more chances of performing better than machine learning, at least for non-trivial and deep level NLP tasks such as parsing, sentiment analysis and information extraction (we have tried and compared both approaches).  In fact, the only major reason why they are still there, having survived all the rejections from mainstream and still playing a role in industrial practical applications, is the superior data quality, for otherwise they cannot have been justified for industrial investments at all.

the “forgotten” school:  why is it still there? what does it have to offer? The key is the excellent data quality as advantage of a hand-crafted system, not only for precision, but high recall is achievable as well.
quote from On Recall of Grammar Engineering Systems

In the real world, NLP is applied research which eventually must land on the engineering of language applications where the results and quality are evaluated.  As an industry, software engineering has attracted many ingenious coding masters, each and every one of them gets recognized for their coding skills, including algorithm design and implementation expertise, which are hand-crafting by nature.   Have we ever heard of a star engineer gets criticized for his (manual) programming?  With NLP application also as part of software engineering, why should computational linguists coding linguistic rules receive so much criticism while engineers coding other applications get recognized for their hard work?  Is it because the NLP application is simpler than other applications?  On the contrary, many applications of natural language are more complex and difficult than other types of applications (e.g. graphics software, or word processing apps).  The likely reason to explain the different treatment between a general purpose programmer and a linguist knowledge engineer is that the big environment of software engineering does not involve as much prejudice while the small environment of NLP domain  is deeply biased, with belief that the automatic programming of an NLP system by machine learning can replace and outperform manual coding for all language projects.   For software engineering in general, (manual) programming is the norm and no one believes that programmers’ jobs can be replaced by automatic programming in any time foreseeable.  Automatic programming, a concept not rare in science fiction for visions like machines making machines, is currently only a research area, for very restricted low-level functions.  Rather than placing hope on automatic programming, software engineering as an industry has seen a significant progress on work of the development infrastructures, such as development environment and a rich library of functions to support efficient coding and debugging.  Maybe in the future one day, applications can use more and more of automated code to achieve simple modules, but the full automation of constructing any complex software project  is nowhere in sight.  By any standards, natural language parsing and understanding (beyond shallow level tasks such as classification, clustering or tagging)  is a type of complex tasks. Therefore, it is hard to expect machine learning as a manifestation of automatic programming to miraculously replace the manual code for all language applications.  The application value of hand-crafting a rule system will continue to exist and evolve for a long time, disregarded or not.

“Automatic” is a fancy word.  What a beautiful world it would be if all artificial intelligence and natural languages tasks could be accomplished by automatic machine learning from data.  There is, naturally, a high expectation and regard for machine learning breakthrough to help realize this dream of mankind.  All this should encourage machine learning experts to continue to innovate to demonstrate its potential, and should not be a reason for the pride and prejudice against a competitive school or other approaches.

Before we embark on further discussions on the so-called rule system’s knowledge bottleneck defect, it is worth mentioning that the word “automatic” refers to the system development, not to be confused with running the system.  At the application level, whether it is a machine-learned system or a manual system coded by domain programmers (linguists), the system is always run fully automatically, with no human interference.  Although this is an obvious fact for both types of systems, I have seen people get confused so to equate hand-crafted NLP system with manual or semi-automatic applications.

Is hand-crafting rules a knowledge bottleneck for its development?  Yes, there is no denying or a need to deny that.  The bottleneck is reflected in the system development cycle.  But keep in mind that this “bottleneck” is common to all large software engineering projects, it is a resources cost, not only introduced by NLP.  From this perspective, the knowledge bottleneck argument against hand-crafted system cannot really stand, unless it can be proved that machine learning can do all NLP equally well, free of knowledge bottleneck:  it might be not far from truth for some special low-level tasks, e.g. document classification and word clustering, but is definitely misleading or incorrect for NLP in general, a point to be discussed below in details shortly.

Here are the ballpark estimates based on our decades of NLP practice and experiences.  For shallow level NLP tasks (such as Named Entity tagging, Chinese segmentation), a rule approach needs at least three months of one linguist coding and debugging the rules, supported by at least half an engineer for tools support and platform maintenance, in order to come up with a decent system for initial release and running.  As for deep NLP tasks (such as deep parsing, deep sentiments beyond thumbs-up and thumbs-down classification), one should not expect a working engine to be built up without due resources that at least involve one computational linguist coding rules for one year, coupled with half an engineer for platform and tools support and half an engineer for independent QA (quality assurance) support.  Of course, the labor resources requirements vary according to the quality of the developers (especially the linguistic expertise of the knowledge engineers) and how well the infrastructures and development environment support linguistic development.  Also, the above estimates have not included the general costs, as applied to all software applications, e.g. the GUI development at app level and operations in running the developed engines.

Let us present the scene of the modern day rule-based system development.  A hand-crafted NLP rule system is based on compiled computational grammars which are nowadays often architected as an integrated pipeline of different modules from shallow processing up to deep processing.  A grammar is a set of linguistic rules encoded in some formalism, which is the core of a module intended to achieve a defined function in language processing, e.g. a module for shallow parsing may target noun phrase (NP) as its object for identification and chunking.  What happens in grammar engineering is not much different from other software engineering projects.  As knowledge engineer, a computational linguist codes a rule in an NLP-specific language, based on a development corpus.  The development is data-driven, each line of rule code goes through rigid unit tests and then regression tests before it is submitted as part of the updated system for independent QA to test and feedback.  The development is an iterative process and cycle where incremental enhancements on bug reports from QA and/or from the field (customers) serve as a necessary input and step towards better data quality over time.

Depending on the design of the architect, there are all types of information available for the linguist developer to use in crafting a rule’s conditions, e.g. a rule can check any elements of a pattern by enforcing conditions on (i) word or stem itself (i.e. string literal, in cases of capturing, say, idiomatic expressions), and/or (ii) POS (part-of-speech, such as noun, adjective, verb, preposition), (iii) and/or orthography features (e.g. initial upper case, mixed case, token with digits and dots), and/or (iv) morphology features (e.g. tense, aspect, person, number, case, etc. decoded by a previous morphology module), (v) and/or syntactic features (e.g. verb subcategory features such as intransitive, transitive, ditransitive), (vi) and/or lexical semantic features (e.g. human, animal, furniture, food, school, time, location, color, emotion).  There are almost infinite combinations of such conditions that can be enforced in rules’ patterns.  A linguist’s job is to code such conditions to maximize the benefits of capturing the target language phenomena, a balancing art in engineering through a process of trial and error.

Macroscopically speaking, the rule hand-crafting process is in its essence the same as programmers coding an application, only that linguists usually use a different, very high-level NLP-specific language, in a chosen or designed formalism appropriate for modeling natural language and framework on a platform that is geared towards facilitating NLP work.  Hard-coding NLP in a general purpose language like Java is not impossible for prototyping or a toy system.  But as natural language is known to be a complex monster, its processing calls for a special formalism (some form or extension of Chomsky’s formal language types) and an NLP-oriented language to help implement any non-toy systems that scale.  So linguists are trained on the scene of development to be knowledge programmers in hand-crafting linguistic rules.  In terms of different levels of languages used for coding, to an extent, it is similar to the contrast between programmers in old days and the modern software engineers today who use so-called high-level languages like Java or C to code.  Decades ago, programmers had to use assembly or machine language to code a function.  The process and workflow for hand-crafting linguistic rules are just like any software engineers in their daily coding practice, except that the language designed for linguists is so high-level that linguistic developers can concentrate on linguistic challenges without having to worry about low-level technical details of memory allocation, garbage collection or pure code optimization for efficiency, which are taken care of by the NLP platform itself.  Everything else follows software development norms to ensure the development stay on track, including unit testing, baselines construction and monitoring, regressions testing, independent QA, code reviews for rules’ quality, etc.  Each level language has its own star engineer who masters the coding skills.  It sounds ridiculous to respect software engineers while belittling linguistic engineers only because the latter are hand-crafting linguistic code as knowledge resources.

The chief architect in this context plays the key role in building a real life robust NLP system that scales.  To deep-parse or process natural language, he/she needs to define and design the formalism and language with the necessary extensions, the related data structures, system architecture with the interaction of different levels of linguistic modules in mind (e.g. morpho-syntactic interface), workflow that integrate all components for internal coordination (including patching and handling interdependency and error propagation) and the external coordination with other modules or sub-systems including machine learning or off-shelf tools when needed or felt beneficial.  He also needs to ensure efficient development environment and to train new linguists into effective linguistic “coders” with engineering sense following software development norms (knowledge engineers are not trained by schools today).  Unlike the mainstream machine learning systems which are by nature robust and scalable,  hand-crafted systems’ robustness and scalability depend largely on the design and deep skills of the architect.  The architect defines the NLP platform with specs for its core engine compiler and runner, plus the debugger in a friendly development environment.  He must also work with product managers to turn their requirements into operational specs for linguistic development, in a process we call semantic grounding to applications from linguistic processing.   The success of a large NLP system based on hand-crafted rules is never a simple accumulation of linguistics resources such as computational lexicons and grammars using a fixed formalism (e.g. CFG) and algorithm (e.g. chart-parsing).  It calls for seasoned language engineering masters as architects for the system design.

Given the scene of practice for NLP development as describe above, it should be clear that the negative sentiment association with “hand-crafting” is unjustifiable and inappropriate.  The only remaining argument against coding rules by hands comes down to the hard work and costs associated with hand-crafted approach, so-called knowledge bottleneck in the rule-based systems.  If things can be learned by a machine without cost, why bother using costly linguistic labor?  Sounds like a reasonable argument until we examine this closely.  First, for this argument to stand, we need proof that machine learning indeed does not incur costs and has no or very little knowledge bottleneck.  Second, for this argument to withstand scrutiny, we should be convinced that machine learning can reach the same or better quality than hand-crafted rule approach.  Unfortunately, neither of these necessarily hold true.  Let us study them one by one.

As is known to all, any non-trivial NLP task is by nature based on linguistic knowledge, irrespective of what form the knowledge is learned or encoded.   Knowledge needs to be formalized in some form to support NLP, and machine learning is by no means immune to this knowledge resources requirement.  In rule-based systems, the knowledge is directly hand-coded by linguists and in case of (supervised) machine learning, knowledge resources take the form of labeled data for the learning algorithm to learn from (indeed, there is so-called unsupervised learning which needs no labeled data and is supposed to learn from raw data, but that is research-oriented and hardly practical for any non-trivial NLP, so we leave it aside for now).  Although the learning process is automatic,  the feature design, the learning algorithm implementation, debugging and fine-tuning are all manual, in addition to the requirement of manual labeling a large training corpus in advance (unless there is an existing labeled corpus available, which is rare; but machine translation is a nice exception as it has the benefit of using existing human translation as labeled aligned corpora for training).  The labeling of data is a very tedious manual job.   Note that the sparse data challenge represents the need of machine learning for a very large labeled corpus.  So it is clear that knowledge bottleneck takes different forms, but it is equally applicable to both approaches.  No machine can learn knowledge without costs, and it is incorrect to regard knowledge bottleneck as only a defect for the rule-based system.

One may argue that rules require expert skilled labor, while the labeling of data only requires high school kids or college students with minimal training.  So to do a fair comparison of the costs associated, we perhaps need to turn to Karl Marx whose “Das Kapital” has some formula to help convert simple labor to complex labor for exchange of equal value: for a given task with the same level of performance quality (assuming machine learning can reach the quality of professional expertise, which is not necessarily true), how much cheap labor needs to be used to label the required amount of training corpus to make it economically an advantage?  Something like that.  This varies from task to task and even from location to location (e.g. different minimal wage laws), of course.   But the key point here is that knowledge bottleneck challenges both approaches and it is not the case believed by many that machine learning learns a system automatically with no or little cost attached.  In fact, things are far more complicated than a simple yes or no in comparing the costs as costs need also to be calculated in a larger context of how many tasks need to be handled and how much underlying knowledge can be shared as reusable resources.  We will leave it to a separate writing for the elaboration of the point that when put into the context of developing multiple NLP applications, the rule-based approach which shares the core engine of parsing demonstrates a significant saving on knowledge costs than machine learning.

Let us step back and, for argument’s sake, accept that coding rules is indeed more costly than machine learning, so what? Like in any other commodities, hand-crafted products may indeed cost more, they also have better quality and value than products out of mass production.  For otherwise a commodity society will leave no room for craftsmen and their products to survive.  This is common sense, which also applies to NLP.  If not for better quality, no investors will fund any teams that can be replaced by machine learning.  What is surprising is that there are so many people, NLP experts included, who believe that machine learning necessarily performs better than hand-crafted systems not only in costs saved but also in quality achieved.  While there are low-level NLP tasks such as speech processing and document classification which are not experts’ forte as we human have much more restricted memory than computers do, deep NLP involves much more linguistic expertise and design than a simple concept of learning from corpora to expect superior data quality.

In summary, the hand-crafted rule defect is largely a misconception circling around wildly in NLP and reinforced by the mainstream, due to incomplete induction or ignorance of the scene of modern day rule development.  It is based on the incorrect assumption that machine learning necessarily handles all NLP tasks with same or better quality but less or no knowledge bottleneck, in comparison with systems based on hand-crafted rules.

 

 

Note: This is the author’s own translation, with adaptation, of part of our paper which originally appeared in Chinese in Communications of Chinese Computer Federation (CCCF), Issue 8, 2013

 

[Related]

Domain portability myth in natural language processing

Pride and Prejudice of NLP Main Stream

K. Church: A Pendulum Swung Too Far, Linguistics issues in Language Technology, 2011; 6(5)

Wintner 2009. What Science Underlies Natural Language Engineering? Computational Linguistics, Volume 35, Number 4

Pros and Cons of Two Approaches: Machine Learning vs Grammar Engineering

Overview of Natural Language Processing

Dr. Wei Li’s English Blog on NLP

【关于 NLP 以及杂谈】

关于 NLP 以及杂谈

关于NLP体系和设计哲学

关于NLP方法论以及两条路线之争

关于 parsing

【关于中文NLP】

【关于信息抽取】

【关于舆情挖掘】

【关于大数据挖掘】

【关于NLP应用】

【关于人工智能】

【关于我与NLP】

【关于NLP掌故】

 

导亦有道,我是这样做NLP导师的

我:
我是这样教导学生 NLP和 AI 的:
人工智能里面没有智能
知识系统里面没有知识
一切都是自己跟自己玩
一切都是为了自己玩自己的时候 努力玩得似乎符合逻辑 自然 方便 而且容易记忆和维护

学:
前面的听懂了,AI 这块有点懵懂

我:没关系 前面听懂了是关键。后面是哲学,哲学的事儿不必那么懂。你都懂了 我这个做导师的怎么吃饭呢?

学:
给功能词加 features 怎样才妥?

我:
功能词可以枚举,原则上可以没有 features,无所谓妥不妥。看你怎么用 用起来觉得妥就妥 觉得别扭或捣乱 就不妥。如果你永远不用 则没有妥不妥的问题 给了与不给一个样 因为永远没用到。没用到是可能的,譬如你总是为这个词写 WORD 的规则, 不让它有机会被 feature 的规则匹配上 那么 features 就是摆设 也就谈不上妥不妥。

学:
有道理。本来就这么几个词,写WORD就好了,不需要为Feature伤脑筋。

我:
有点开窍的意思

学:
跟老师多交流,才能开窍,不然我就钻进自己的死胡同了。

我:
人都是这样的 钻进n个胡同以后才能在 n+ 的时候开窍。没进过胡同就开窍的 那不是天才 那是死人。

学:
NLP 里面的知识表达,包括词典的 features,应该怎么设计呢?

我:
从词典表达 lexical features 到句法语义逻辑的表达,大多没有黑白分明的标准答案。
就是自己这么给了 显得蛮合理 也好记忆 否则自己就不舒服 或记不住。更重要的是 给了 features 以后 规则好写了 规则自然 简洁 有概括性 且方便维护。
almost everything is coordination
u assign
u use
no one is in between
no intelligence no god
as long as it makes sense to you (not to others) so u know what u r doing
as long as it is natural and easy to remember
as long as you find it convenient to use certain features in rules and rules are easy to read and easy to maintain
in principle u can assign anything to any words
or choose not to assign
what goes around comes around
you play with yourself
computer knows nothing
features are just 0s or 1s
WHAT GOES AROUND COMES AROUND
that is NLP in an integrated system
whether it refers to POS, chunking, SVO or logical form
it is to make your job easy and yourself comfortable
u have no need to make others happy unless your system is a middleware commodity to serve your clients
if your NLP and your NLP apps are within your own control
they are integrated in your system in your own architecture
everything is internal coordination
This is my lecture on NLP Architecture for Dummies

白:
you是谁?个人、团队、公司?

我:
good question, it is the architect in most cases: he has the say.  Sometimes it can be a bit democratic if the architect wants to motivate his team, for example the naming right.

白:
是全局系统的architect,还是NLP这嘎达的architect?

我:
a bit of knowledge is named as f1 or f2, that is arbitrary and the major consideration is memonic-like,  features must be easy to remember, but sometimes we let a team member decide its name, such practice often makes the team happy, wow I can act like God, wow I can decide a drop of the sea in the system language …

白:
伟哥还没回答我最后一个问题: 是全局系统的architect,还是NLP这嘎达的architect?

我:
the former because we are talking about NLP and NLP apps in an integrated system:
apps 不是产品 而是语义落地。落地后 还有一个产品层面 包括 UI 等 那已经不劳我们操心了。落地是与产品的接口而已。NLP 核心引擎与 NLP 落地 是一个无缝连接的系统 这种 design 可以羡慕死人。
如果是有缝对接 如果是两拨人马 两个设计师 甚至两个公司 那就扯不完的皮 擦不完的屁股 成不了大事儿。NLP 和 NLP 产品可以分开 而且应该分开  但是 NLP 与 NLP落地 最好不分开。NLP 落地 包括(1) IE (2) MT (3) dialogue (mapping) (4) QA (5)…… 内部分层 但外部不分开 这就叫无缝连接

可以说 offshelf 害死人,component technology 没有啥前途。选择 offshelf 或 license components 往往是无奈之举,自己暂时没有能力 或不具备条件做,也有找的借口冠冕堂皇:不要 reinvent wheels,最后害的还是自己。
我们已经害过几次自己了 吃尽了苦头 才有这 “十年一悟”,以前说过的: 做工业NLP 自给自足是王道。

白:
这个,关键看公司拥有什么样的专家了。专家不同模式也不同。

我:
也与时代有关: 20 年后也许不必自给自足,就一样做好NLP落地。

【相关】

【立委科普:NLP 联络图 】

【立委科普:自然语言系统架构简说】

自给自足是NLP王道

置顶:立委科学网博客NLP博文一览(定期更新版)】

《朝华午拾》总目录

 

【关于人工智能】

我其实是个蛮可怜的“砖家”,一辈子只做一件事儿,除了 NLP 语言工程的一亩三分地,每日掘地三尺,愚公移山,对于化外之地,基本是白痴一枚。特别羡慕仰望那些学富五车融会贯通的达人,如董老白爷洪仙尼克。尽管如此,我却还是不满足于低头挖煤,不甘心做语言学腐儒,老有一种哲学家的心魔压迫着我,不时要不知天高地远地天马行空一番,但总是飞不远,最多是飞到 NLP 的顶头上层AI瞅瞅,hence 下面几篇关于AI的哲学随笔。自然语言理解(NLU)正是AI在语言领域的体现。

 

关于 NLP 以及杂谈

关于 parsing

【关于信息抽取】

关于NLP体系和设计哲学

关于NLP方法论以及两条路线之争

 

 

【关于NLP体系和设计哲学】

 

关于 NLP 以及杂谈

关于 parsing

【关于信息抽取】

关于人工智能

关于NLP方法论以及两条路线之争

 

《朝华午拾》总目录

【置顶:立委NLP博文一览(定期更新版)】

立委NLP频道