科学网

 找回密码
  注册

tag 标签: formalism

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

【李白之39:探究自然语言的毛毛虫机制】
liwei999 2017-4-16 11:37
白: 定义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)。结构上,形在前,修饰名。形被名吃掉: 。 白: 在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博文一览】 《朝华午拾》总目录
个人分类: 立委科普|4463 次阅读|0 个评论
S. Bai: NLP Caterpillar Breaks through Chomsky's Castle
liwei999 2016-8-10 14:24
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 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 by the worst case scenario. The innermost wall is Type-3, or Regular Grammar, corresponding to a 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 (Context-sensitive) is NP-complete, anywhere therein and beyond become 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 (Context-free). 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 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, some 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 by the 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 《 穿越乔家大院寻找“毛毛虫” 》 【Related】 Chomsky's Negative Impact K. Church: A Pendulum Swung Too Far , Linguistics issues in Language Technology, 2011; 6(5) Overview of Natural Language Processing Dr. Wei Li’s English Blog on NLP 【立委按】 白硕老师这篇文章值得所有自然语言学者研读和反思。击节叹服,拍案叫绝,是初读此文的真切感受。白老师对乔姆斯基形式语言理论用于自然语言所造成的误导,给出了迄今所见最有深度的犀利解析,而且写得深入浅出,形象生动,妙趣横生。这么多年,这么多学者,怎么就达不到这样的深度呢?一个乔姆斯基的递归陷阱不知道栽进去多少人,造成多少人在 “不是人话” 的现象上做无用功,绕了无数弯路。学界曾有多篇长篇大论,机械地套用乔氏层级体系,在自然语言是 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 型文法中划出一个既有足够的语言学意义、又能达到线速处理效率的子类。可以说,凡是在与统计方法的搏杀中还能活下来的分析器,无一不是在某种程度上摆脱了向内求全情结、在基本尊重语言学规律基础上尽可能追求线速的努力达到相对成功的结果。这个经过限制的子类,比起第三圈围墙来,是大大地“压扁”了的。 如果认同“一切以真实的自然语言为出发点和最终落脚点”的理念,那就应该承认:向外有限突破,向内大举压缩,应该是一枚硬币的两面。我们希望,能够有一种形式化机制同时兼顾这两面。也就是说,我们理想中的自然语言句法的形式化描述机制,应该像一条穿越乔家大院的“毛毛虫”,如下图所示: 据笔者妄加猜测,这样的“毛毛虫”,可能有人已经找到,过一段时间自然会见分晓。
个人分类: 立委科普|3696 次阅读|0 个评论
【泥沙龙笔记:NLP 专门语言是规则系统的斧头】
liwei999 2016-4-19 01:00
我:接着上篇的“毛毛虫”话题往下说专用语言。 NLP 专用语言 (属于 domain language 范畴吧) 涉及 formalism (FSA++) 的定义 (包括 syntax sugar)以及实现(language parsing, compiling and running), 这是极为重要的毛毛虫基础工作 。 否则的话,往往只能做玩具系统,譬如我硕士阶段拿通用语言 BASIC 做的一对二 MT 系统, 我的师兄用 COBOL 做的德汉 MT,都 是如此。 很多人不了解NLP专用语言这方面的工作,而市面上和open source又没有现成的工具,因此无从起步。规则系统的式微由此可见,连个基本的工具、语言和平台都没有,并不是每个人都有本事和耐心自制工具、创制语言的。不像学习,各种不同路子的 ML,都有很多软件包,大多是开源、不要钱的,少数也只收点 nominal fee,拿来就可用。任何先进的算法和研究,一经发表,找个研究生就可以基本复制过来,重复别人的结果。特别能够激励研究生创业,很短时间就可以拿出一个似乎可用的NLP系统。 而规则那头,只有10几年前从 PARC spin-off 出来的 Inxight 作为 NLP industry leader 当年发布过一款 LinguistX,提供了 NLP 专用语言和平台。可 Inxight 没活下来,LinguistX 自然从市面上退出了。因此NLP符号派不仅是人才断层,平台和语言也断层了。积重难返。 我前后服务的两家公司做的语言和平台,都是自己定义内部实现才做成的。很幸运吧,天不我欺,冥冥之中还是很受眷顾的。都是那么小的公司,却都恰好有内部工程师愿意啃编译这个不时髦的果子,听命于我去做平台,实现编译,不辞辛苦,老板也没用皮鞭抽着也做出来了。“毛毛虫” 就是这么摸索中实现、修改和完善的。 唐:如果用Prolog实现你的规则是否可行? 我:不可行,首先是backtracking,速度这关就过不了。我的博士项目就是在 Prolog 平台上用一个 Prolog 衍生出来的专用语言 ALE 实现的,同一个 unification 文法既做parsing也做generation,用于双向MT,看上去蛮漂亮,但就是个 toy。 董: 做硕士这样也许就可以,这是学手艺。但如果从此就是照着这么做。那不是在用自己的努力来证明别人的正确性。发表论文方便了,因为审稿人高兴看到。但是自己的创新就受限了。我们从来不会这么做。 我: 常有猎头试图来找,多数我不理,碰到听上去是个有大平台或有趣项目的,有时就谈谈。谈到中间,最常见的一个问题就是,你这么资深,是不是就不编程,主要做管理了?这不怪。据说 40 岁以上还没被淘汰的码农比熊猫多不了多少,或者是怪才,或者是缺心眼,自我煎熬。 我说,不是啊,我最讨厌的就是管理了,我最爱的就是做系统。问:hands-on?答:是的,非常的 hands on,on到痴迷的程度,夜以继日。下一个问题就是:那您用什么语言呢?我说:我这样的资深,哪里会用别人的语言。我是用自己的语言写系统。到了这里,不解释的话,一多半人都以为我是胡说。General purpose 做不了 real world 的系统啊,不用自己的,市面上又没有(其实有,也最好不要用,我们曾试图 license LinguistX,后来还是放弃了,回头看是最英明的早期决策了,offshelf 对优化和扩展是双重束缚),还怎么做呢? 董: 好的木匠都用自己的工具,用不惯别人的。 我: 董老师经历历史的,这个 NLP 语言也是有一个艰难的摸索过程和传承的。开始是数据与算法合一在通用语言中,后来终于认识到这唱不了大戏。于是在我入行的时候,数据与算法分开的口号震天响。怎么分开,就是创制NLP专用语言呗。起初的尝试很原始、粗糙,就是建一个表,定义几个常用的域,然后对这个表解释执行,所有的规则只能在表的简单的syntax里面,表达力极为有限。满足不了语言学家随机组合条件宽严的需要。语言所王广义老师当时的项目就是这么一个表处理。刘老师董老师在我入行前应该也是从表处理开始,后来过渡到表达力丰富的专项语言的。于是斧头在刘老师和董老师一辈就造出来了,里面融合了很多语言学的元素,经验的积累,以及专门针对 MT 的种种操作,因为当时 NLP=MT,MT 就是 NLP. 规则是独立了,语言学算法与机制还是混在一起。 独: @wei 国内现在有资金也有年轻人,回国创业吧 我:我一直在看机会的大小,keep eyes open。现在状态不差,但也不愿贸然跳进一条小船,耗不起。如果有一个特大的平台可以发挥一辈子的积累,能够做一些真正对世界有实质影响的产品,就是乔布斯说的给宇宙 put a ding,当然会考虑。因为现实就是,技术是 under-used,没有充分发挥可以发挥的影响。昨天我跟老板也是这么说的,有点 frustrated。老板也知道,技术上很多潜力,产品暂时无法消化。所以我一直认为,产品老总是比技术大咖更要紧的角色。产品不能清晰定义需求,我一个再强的引擎,在那里是干着急白费劲。那么强大的树结构和深层分析,本来可以做很多事的,抽取很多不同的情报,制作知识图谱,或者支持开放式智能搜索 or 问答系统,现在基本是只做一件事儿。当然所用到的那一点舆情抽取挖掘,还是得益于 deep parsing 的高质量而领先于世,舆情精准度比对手高出20多个百分点。现有的引擎和平台对世界几乎没有影响,核武器委屈在一个地库里面。冷藏着。 独: 现在做人机对话机器人比较火,可以参与 雷: 核武器是不能用的, 人类世界会就此毁灭的 我: 因此,机会真来了,也不想错过。但我这个岁数,不是很好的机会,也不愿意草草加入。目前的状态有一点好,我可以慢慢磨剑,天生我剑必有用。 今天侃的历史以前有个小品似的小结在:【 语言创造简史 】。 【相关】 语言创造简史 【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】 【白硕 - 穿越乔家大院寻找“毛毛虫”】 【新智元:理论家的围墙和工程师的私货】 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|3738 次阅读|0 个评论
【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】
热度 1 liwei999 2016-4-19 00:00
根据乔姆斯基的 形式语言理论 ,无论对象是计算机语言还是自然语言,其语言分析(parsing)的文法需要一个形式系统工具(formalism)表达。这个体系是层级(hierarchical 乔姆斯基 谱系_百度百科 )的,对于语言分析的表现力因此强弱不同,所对应的算法及其自动机也因此具有不同的计算复杂度。这些都是经典到不能再经典的老生常谈了,细节可以看wiki百科或编译理论的教科书。 自然语言parsing中讨论最多的formalisms 是 FSA和CFG,传统的观点虽然足够权威,但大多不得要领。其说法是,FSA 有线性高效算法,用起来也直观(模式匹配而已),但表达力不够。乔姆斯基本人批评说它不适合做自然语言分析,因为FSA从原理上不能涵盖据说是自然语言本性的中心递归(center recursion)结构:这是个似是而非的论点,我们在乔姆斯基批判等博文(见文后《相关》链接)中已经多次论及,这里不再重复。CFG 是传统的短语结构文法派使用最多的工具,由于可以应对递归而倍受青睐,但没有线性实现的算法。白老师根据多年的观察,第一次提出,适合自然语言分析的formalism很可能是个穿越乔姆斯基层级体系内部边界(白老师形象地称作“乔家大院”)的“毛毛虫”。 这是令人耳目一新的新鲜观点,与我几十年的NLP实践体验非常吻合。我把这条我们从导师辈传承火种并坚持摸索30年的毛毛虫叫做 FSA++,因为毛毛虫的基础仍是 FSA但有很多扩展突破。其算法始终没有超出线速的要求,对应的文法也不是单层的大一统,而是很多个小文法叠加(cascade)成一个多层处理的pipeline,可以做到任意层面的分析深度。自然语言 parsing 因此而变得前所未有地灵活和深入。应对自然语言里的递归现象也因此易如反掌。 这是一个自然语言领域的极为重要的议题,可惜的是学术界的统计一面倒使得相关研究和讨论几乎绝迹。 本篇笔记就是一些零星的心得笔记,是多年实践的初步总结,记下来与白老师及同仁分享。NLP后学看不懂没关系,因为教科书和学术论文中少见这一类训练和讨论。不是你的错,and you are not alone,看个热闹或无视可矣。 有一个新发现,关于“毛毛虫”的。其实也不新,只是先前可能熟视无睹,没特别注意这个特点。 在线性模式匹配的 fsa++ 里面,多层的所谓 cascaded 的处理是必要的。因为有些匹配与另外的匹配有某种线性相交,如果同一层处理,往往不可兼得。顾了这头,顾不了那头。 到了 dag(directed acyclic graph)式依存句法树为基础的平面 fsa++,当然仍然可以或应该根据模块化原则分层处理,包括parsing的“休眠唤醒”。 但是对层次是依赖却由于模式的不同减弱了。 完全可以在同一层做n个有相交的子树模式匹配。每个模式是从不同角度来的子树规则,各自对付不同的子现象。 无论线性还是平面,编码规则有个minimal nodes 的原则,即规则最小化。最小(必要)还足够(充分)才是好规则,好的语言学概括。只有规则最小化,才可以有效预防规则量的线性组合爆炸,增强parsing的鲁棒性,也 增强 对现象的覆盖( 差全率 recall) 。 最小化原则针对规则的个体,是对规则码农而言。与其相对应,规则整体(规则集,or 文法)在编译后执行(running)的时候,则是遵循最大原则, 来保证规则之间的优先次序。对于线性模式,就是 longest matching principle (另一个线性原则是,left-to-right principle or right-to-left principle,算是人为规定的 config,根据每一层模块的匹配方向而定。) 这些都是清楚明白的,但是到了二维世界,匹配原则就有些模糊了。 Longest principle 的对应物如果是 embedded patterns, 当然就是大树吃小树,这个没有疑问,也符合逻辑。 但更多的时候其实不是完全的 properly embedded, 而是某种相交。这时候,如果毛毛虫的创造者硬性规定某个 quasi-longest principle 也是可以的,譬如相交的一端,比另一端多 n 个节点,超过阈值了,就算它赢。这样做似乎也可能带来一些好处,因为旗鼓相当自然可以算匹配双赢(只要结论不造成逻辑冲突),但是一头沉的情形似乎应该是东风压倒西风才合理。 但实际上,这个火候似乎不好掌握,不妨考虑放开,后果自负,由语言学家自己根据数据制导掌控,而不是从毛毛虫内部控制。当然也有其他的 priority 掌控方式可以实施,此处不细谈。 总结一下,一维毛毛虫成长为二维毛毛虫以后,规则执行层面的制约减弱了,使得规则的适用度增强了。减弱的第一条是,平面世界没有线性左右的区别,因此 left to right 的原则不再适用(入口 node 的原则还可以有很多说法或 config,此处不提)。减弱的第二条就是,longest principle 只遮盖很少的 proper 子树的情况。 这个转变带来的好处就是,结构层面的规则在最小化以后,可以全面开花地同时作用于数据结构,实施休眠唤醒,减叶加枝,parsing patching 或 IE 抽取等工作。 其副作用还有待更多的实践和总结。 【相关】 【白硕 - 穿越乔家大院寻找“毛毛虫”】 【泥沙龙笔记:NLP 专门语言是规则系统的斧头】 乔姆斯基批判 乔姆斯基 谱系_百度百科 语言创造简史 智元:理论家的围墙和工程师的私货】 【新智元笔记:李白对话录 - RNN 与语言学算法】 【立委科普:结构歧义的休眠唤醒演义】 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|6385 次阅读|1 个评论
【李白对话录:RNN 与语言学算法】
热度 2 liwei999 2016-2-27 21:11
立委按: 本次《李白对话》涉及NLP两条道路融合的大议题。这个问题在NLP历史上从来就没有协调解决好过,其结果是以一方的无条件投降或隐身在学界拉下帷幕。这个议题的重要性和这次讨论带来的启发性,学术史将会留下印记。在我假想的NLP大学里,学生如果能独立消化理解这个对话的80%,至少可以授予一个硕士学位。其实,真实生活中新毕业的博士也不妨自己测一下能不能看懂在说什么。看懂了,可以自己奖励自己一碗正宗牛肉面。如果看不懂,呵呵。 李: 说机器学习的本质是自动编程,很多人不大认可,主要是觉得把一个热门甚至universal的东西等价于一个听上去就不靠谱的东西,多少有些抹黑的味道,至少是别有用心。抹黑犯不着,别有用心是有的。 白: 不是自动编程。 李: 有人可能argue,说机器学习学出来的系统,不是真正意义的自动编程,而只是学出来一个 modal,这个modal不过是一个资源,一种数据。可以是symbolic rule 的形式,更多的是统计概率模型 stochastic modal 。前者等价于手工的规则集或文法,而后者 stochastic modal 类似专家词典一样的资源,虽然人肉眼不大能看懂它。总之,这些类似词典文法的models不是程序,程序是在调用这些model的时候体现的。那个调用的东西,所谓 model 的 runner (decoder, 刘老师老老年把内含语言学过程性算法的runner叫控制器),那个才是程序,那个里面有算法,可那玩意儿不是机器学习培训model的过程中 “学习” 出来的,而是每一类机器学习算法预先给定的。从这个意义上,机器学习学习的不是程序,而是“知识”。 其实这正是我诘问机器学习在领域深度任务上有效性的关键所在,那个 runner 是预定的,通用的(可以用于NLP,也可以用于AI的任何领域,股票预测、蛋白质分子结构等),里面所隐含的算法和过程,没有领域算法的因素,因此凡是超出 model (知识资源的某种形式)表达能力以外的语言学算法,统统被认为是不必要的,或者被认为是可以被通用算法完全取代的。这怎么能做好深度 NLP 呢? 白: 这个过程需要澄清一下: 1、模型(如RNN)是一个formalism的一般形态。 2、这个formalism中含有大量未定的参数(权值)。 3、合适的权值可较好地解决填坑的任务。 4、权值可通过DL获得,也可通过编译显性语言学知识获得。 李: 我的困惑是,机器学习在哪里留下了接口,可以让语言学算法,特别是“过程性”的算法(先做什么,后做什么)进来? 如果没有这个接口,那就是认为语言学算法是儿戏,不值得吸收,语言学家可以轻易取代。 白: 过去的BP做不到“过程性”,RNN恰恰能做到。所以,编译到RNN,真的是编译,不是隐喻。 李: 关于 4,那些显性的语言学知识包括过程性的语言学算法么?还是只包括静态或平面的语言规则?多层的语言规则系统怎么进入 RNN 去帮助调控权值? 白: 语言规则都有对应的自动机,自动机都是过程性的。你也多层RNN好了。所以,要RNN,不要DL,是可行的。 李: 我一直就卡在这里。所有对机器学习无视语言学算法的怀疑均出于此( 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 )。 在 Prolog 和 constraint-based grammars (也叫合一文法) 流行的时候,很多人看轻了过程性,以为语言的文法资源可以是没有过程的,没有层次的。一个外在的算法决定这个资源怎么用,分析还是生成。但这个观点站不住 站不住 站不住 啊。重要的观点至少说三遍。语言学的过程性的算法是深度parsing绕不过去的,这就是我的结论。因此无论是 HPSG,GPSG 等以前流行的文法派也好,还是更传统的 CFG 的单层文法派也好(其实二者是同质的formalism,涉及到的decoding算法是直接从形式语言formalism派生出来的),还是机器学习把语言分析当成黑箱子去训练一个model也好,统统地有一个共同的缺陷,致命的,就是里面假设了,通用的算法,或基于某个乔氏形式语言formalism的单层算法,可以包打一切,可以代替语言学过程性的算法。 白: 机器学习不假定乔氏,不排斥分层。 李: 传统的机器学习为什么都那么浅、那么平、那么地单层为主,至少层次极为限制?这里面可能的确有其苦衷。 白: 机器学习的结果可以有过程性。 李: 机器学习本身自然是可以有层次的,有过程性,但是那是它内部的事情。如果一旦开了一个口子,让领域的过程性算法参合进来,容易乱套,这个接口不好定义和协调。猜想这就是苦衷。算法是命令问责制,不可能服从两个司令。所以不能轻易开口子,让语言学进来告诉机器该怎么做。语言学家做资料员可以,但不能当经理去指挥程序的走向,否则不是祸起萧墙,凌驾于党。 白: 不是formalism的问题,是学习本身的问题。绕开学习就不是问题了。 李: 怎么绕开学习?具体一点说说看。 白: 先说过程性。这里有三个层面的问题。一、分层,这相当于模型的级联,并不颠覆模型;二、非确定规则系统的确定化,比如regex到fsa,重写规则到图灵机,都在转换的过程当中忠实地引入了过程性,向RNN转换也是如此,理论上不存在法外之地;三、通常的规则系统里,各规则是平权的,但为规则引入优先级并不是新的idea,早就有,具体条件下按优先级选择同时适用的规则,程序可以做,RNN们也一样可以做。一是宏观控制,二是微观控制,三是中观控制。 李: 这个语言学算法与RNN接口的议题很有意思,以后可以细细讨论,也许是两条道路的汇聚点。 白: 当分层和分优先级管住了大的逻辑,具体规则的不确定变确定管住了每一根毛细血管,就剩不下什么法外的过程性了。 李: 有点意思。 你的第二点不是问题。那个过程性是天然的。第一点最重要,这里面有经验因素,也有原则,但正如所说,不改变“毛毛虫”(i.e. formalism)的性质,不过是一个过程的config而已。需要注意的是,分层的接口。这个接口很微妙,可以假定是数据结构搞定它。 白: 分层和滑动窗口结合会带来新问题。 李: 在你那里就是 RNN 的representation。只要这个数据结构是约定好的 protocol,分层本身就是一个 config 而已。 至于第三点,其实我的“毛毛虫”里面,早就有规则权重机制了。没有这个优先级的区分,还怎么玩 hierarchy 的规则系统,怎么应对语言的个性与共性? 个性共性的矛盾,一个是可以通过外部过程性控制,譬如先调个性,再做共性;或者先做共性,再用个性去 override,但是外部过程控制不能解决 hierarchy 的全部要求。因此规则集内部还是需要有适度的优先级控制。这些优先级多是经验性的或实验性的调控。靠的是语言学家对语言现象的感觉,到底是个性还是共性,多大程度上是个性等等。这个地方,有语料现象的统计来帮助的空间,因为人的语感不一定可靠,而且人见到的现象永远是局部的。 白: 假如,下面一层走很多步,上面一层才走一步,下面一层有可能先突破滑动窗口的限制,必须“武断”了,而上面一层其实等得起。这就导致不协调。如果用休眠唤醒,就可以在层级间更好地协调。所以,休眠唤醒这种非常典型的过程性机制,也是formalism的应有之义。 李: 听上去蛮有道理。 你这个滑动窗口,可以解释,用例子illustrate一下么? 白: 就是当前已经看到但没搞定的token不能超过多少个。要么停下来,要么搞定,不能在没搞定的情况下还往前走。其实我举的把字句辖域的例子(“把总统杀死的刺客埋了吧”),就是这么引起的。 李: 哦 那个滑动窗口是动态的,但对于某一层是基本定的。拿 regex 来说,理论上,有了 * 和 +, 窗口可以无限长,但是实际上,开发者心里有数,这个 * 不能超过一个 n,否则就无法预期后果了。 白: 类似 李: 因此,大体上,每一个层是有一个相对固定的窗口的。到了下一层,因为句素的数据结构更新了,句素动态加长,滑动窗口就自然变大。到了句法建树阶段,long distance 也不过就是个三级跳而已,看上去很远的物理距离也够得着了,树结构上成为了邻居,远距离由此而 bigram or trigram 了。这就是句素分层处理的奥妙和威力。 白: 我刚才说的,就是下层紧张上层空闲的情况,这时休眠是有帮助的。 李: 受教了。 白: 彼此。 李: 休眠唤醒保不定哪一天会成为领域的热门术语呢。高兴的是,至少 “难过” 的休眠唤醒,我已经放到系统了,部分实践了这个机制。恰好 “难过”的歧义关涉情感分析,我舆情挖掘可以用到,在雷达上。 白: 分层、优先级、滑动窗口、休眠唤醒,这四个东西,把语言学家可感的主要过程性要素朝着落地的方向推进了一大截。 李: 诺。 白: 它们融入RNN框架的前景,借用早上讨论的热词,叫“有希望”而不仅仅是“有/希望”。 李: 今次的隔空对话很有意思,感觉是在两个频道,但这两个频道并不是隔绝的,互相可以听见,有交叉,但又不总是 可以 unify,所以不时需要澄清或 illustrate 来让频道兼容。白老师晚安,这个话题以后肯定还会回顾的,这是一个以前不怎么 touch 也没有条件 touch 的地带。 【相关博文】 【李白对话录系列】 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 《新智元笔记:再谈语言学手工编程与机器学习的自动编程》 《立委随笔:机器学习和自然语言处理》 《立委随笔:语言自动分析的两个路子》 《新智元笔记:NLP 系统的分层挑战》 【立委科普:歧义parsing的休眠唤醒机制初探】 【李白对话录 - 从“把手”谈起】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|7177 次阅读|3 个评论
《新智元笔记:关于 NLP formalism》
热度 1 liwei999 2016-1-19 09:45
白 :把N-gram模型和分层有机结合起来还是一个没有很好解决的问题。 我 : 单位(句素)可以看作是动态的,因此 “gram”可以一路变大。从n字(词素), 到n词, 到n词组。词组本身可大可小,有基本型和嵌套型,所以句素之间的距离会越来越近。距离近到一定程度的时候,句型就触手可及了。这个动态“句素”在deep parsing中的奥妙,我的导师刘先生80年代就一直在强调,而语言学祖师爷乔老爷反倒一叶障目,自己栽进了自己的递归陷阱,这才有对FSA的盲目批判。 白 : 也可以理解为,中心词的投射半径一路变大。滑动窗口远去的时候,投射半径大的词仍然残留在滑动窗口之内。 我 : 有个疑问要请教白老师。 白 : 请讲。 我 : 就是你说的,formalism的私货总归会导致灾难。大体是这个意思。我不大信服。 白 : 哦,那就是你私货已经饱和了,这个时候已经可以总结formalism了。 我 : 我对计算复杂性的理论不大在行,所以对于工程师的作为不多干预。因此,作为架构者,我主要是提出specs,根据语言学的需求,怎样的扩展可以更方便去捕捉语言现象。然后工程师就去实现。在这个过程中,我看到的是,如果一个方案不大灵光,或者因为时间或者因为空间,工程师会推到重来,重新实现。然后就是讨价还价。大体上就是对我原有的specs做某种限制,只要我感觉这种限制,并不太影响我想要做的表达,我愿意接受。这样一个互动的结果,就是扩展了的formalism或platform:既满足了语言学家的要求,也满足工程的要求。就是线速啊memory啊等。 白 : 那是你们公司的治理结构决定的。如果是一个既懂语言学又懂复杂性又懂软件工程的人提出方案,就会在做方案的过程中对后面那些限制一并考虑。 我 : 等到系统 scale up 到大数据上一直运行无误的时候,我为什么要担忧呢?有什么可担忧的? 白 : 这样提出来的formalism,工程师不会有太多架构层面的颠覆。 我 : 其实,经验上,我觉得担忧的不是formalism的扩展和实现。那个东西如果有问题一定迟早会表现出来。我最关注的不是formalism层面,那个对我太“低级”,我关注的是软件工程层面,就是系统开发层面的规范。这个层面如果不掌控好,真地有可能把系统导向歧途,譬如过度开发问题。总之不能由着语言学家和开发者的性子来,要用数据和规范去约束他们。有时候也用一点formalism的限制去约束他们。 白 : 这就是我说的控制“野蛮生长“ 我 : 迄今为止,我最有感觉的就是前不久新智元翻译转发的谷歌2015年“顶级论文”( 《新智元笔记:【Google 年度顶级论文】有感》 ), 所谓谷歌最重大的机器学习的秘诀,那里面所说的关于使用机器学习在工程上所要注意的事项和应对策略的总结,与我的规则系统开发所经验的问题与对策,几乎完全吻合。都是一个工程现场的 NLP系统开发的掌控问题。 白 : 我理解formalism没有什么low不low的,你已经解决了自然不需多加关注。当然对这种事实上的formalism做不做总结、做什么样的总结,是另外一个问题。但是,好用的formalism不是唯一的,尽管可以神似。我下一篇博文“打回原形”就要说这个问题。 我 : 也许,白老师是说,如果我的计算背景再强一些,我可以把实践中摸索出来的formalism 的拓展,从理论上提高一下,这样对于推动领域的发展,或者帮助推动某种更一般性的平台突破,会有贡献。其实,这个工作已经开始做了,这才有我写的那篇 《 语言创造简史 》 , 制定一门NLP专用语言的 specs本身就是对 formalism 的总结。至于 formalism 本身,我觉得验证了就 work 了,并不要担心。担心的是使用formalism 的人和团队,而不是 formalism 本身。formalism就是个工具,使用工具的人可能会滥用。 白 : 比如,你的前条件就是lookahead,你的后条件就是栈。有了lookahead和栈,那还叫什么有限状态自动机,早就穿墙了。 我: 可那不是真栈,没有根本损害线速。 白 : 要换一种语言,把它变成架构性约束,从中看不见语言学,只看见软件工程,就到位了。LR(k)也是线速。人家也是既有lookahead又有栈。 我: formalism 本身的限制和宽松其实是双刃剑,举个简单的例子。FSA中,* 和 + 是个可能导致memory 溢出的算符,滥用的话不好,可是这个东西用起来蛮方便。从 formalism 着手去限制,我也做过,就是让 FSA 不 support 它们,人为地禁止使用。就好比当年为结构程序设计,禁止 GOTO 语句一样。结果就是code 变得难看、冗长一些了,但一劳永逸地解决了溢出的问题。不支持 * 或+ ,后来在语言中改成了只支持 *n,就是让写代码的人必须给这个* 一个确定的数字。这个办法最好,算是 formalism 层面的强制要求。 白 : 内存保护是共性问题,是软件工程的“标配”。领域知识(含语言学知识)硬编码也是大忌。通常要对二者从架构上就进行隔离。 我 : 硬编码是说用程序直接实现?那个东西在前处理或很个别的过程中,有一些方便。 白 : 对。如果调整语言学知识,就要重新编译。这种就属于硬编码。 我 : 成体系的知识,包括长尾知识,都是资源性质,然后通过formalism 实现。所谓资源与程序分开,就是说的这个。 还有就是, NLP 的流程和一些config 是在 formalism 之上的。那个东西有点像secret source,一般是只做不讲,为什么这一步这么做,那一步那么做,怎样协调,遵循什么原则,等等。教科书上的parser 没有这一部分带有语言学算法性质的东西,结果照本宣科的人做不了实用的 parser。 白 : 从公司老板角度,要对人事变动具有应变的弹性,不能过度依赖藏在员工脑袋里的秘密。除非秘密藏在老板本人的脑袋里。 我 : 哈,其实老板现在不怎么在乎,更操心的是产品层面和sales,因为核心引擎做出来稳定以后,就是个黑匣子样,基本没必要再进去做变动了(除了词典外)。变动的都是抽取层,那玩意儿没啥学问和奥妙。另外还可以变动的就是领域词典或领域ontology,也是在系统的周边做变动。 白 : 如果真如你所说,那理论上可以把你踢走了。 我 :当然,藏在架构师脑子里面的东西,对于拓展一个新产品,或对做一个本来没有预见到的应用的任务,还是有很大作用的,换一个不懂架构的,可能就不知所措了。 Who 踢走 who 啊?:=) 不踢走的原因是还有符号价值。另外一个理由是,还不够昂贵。最关键的理由是不能涣散民心。首席走了,面子上不好看。如果是“被走”,那是无奈。 我现在最好奇的其实是白老师在做的东西,觉得那个把 FSA 规则转成 RNN 的东西哪一天会突然爆发。反正我已经下了战书了( 【新智元:中文 parsing 在希望的田野上】 ),就等白老师的系统来应战了,:),其他的那些不大想关注。什么斯坦福parser,还有什么 CMU parser,五花八门,测试一下看上去也还不错,但没有让人惊喜的地方。 顾 : 从文字理解延展到推理,是否可行? 我 : 推理和常识是我不敢碰的东西,从体系上说。至于词典语义里面暗度陈仓一些零星的常识,那已经用了很久了。 白 : 推理是做多做少的问题,理解是能做不能做的问题。 我 : 关键是,只要尝试过一些NLP 应用和产品就会发现,产品所要求的“理解”往往并不是太难。从分析抽取到产品的grounding,路程大多不远。因此,抽象层面的理解和推理,更多的是学术意义,难度大,但往往不是应用的必需。 【相关】 【白硕 - 穿越乔家大院寻找“毛毛虫”】 【新智元笔记:中文 parsing 在希望的田野上】 语言创造简史 《新智元笔记:【Google 年度顶级论文】有感》 乔姆斯基批判 【新智元笔记:理论家的围墙和工程师的私货】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|4148 次阅读|1 个评论
【新智元笔记:理论家的围墙和工程师的私货】
liwei999 2016-1-15 11:16
白硕老师最近的文章 【白硕 - 穿越乔家大院寻找“毛毛虫”】 , 值得所有自然语言学者研读和反思。击节叹服,拍案叫绝,是初读此文的真切感受。白老师对乔姆斯基形式语言理论用于自然语言所造成的误导,给出了迄今所见最有深度的犀利解析,而且写得深入浅出,形象生动,妙趣横生。这么多年,这么多学者,怎么就达不到这样的深度呢?一个乔姆斯基的递归陷阱不知道栽进去多少人,造成多少人在 “不是人话” 的现象上做无用功,绕了无数弯路。学界曾有多篇长篇大论,机械地套用乔氏层级体系,在自然语言是 context-free 还是 context-sensitive 的框框里争论不休,也有折衷的说法,诸如自然语言是 mildly sensitive,这些形而上的学究式争论,大多雾里看花,隔靴搔痒,不得要领,离语言事实甚远。白老师独创的 “毛毛虫” 论,形象地打破了这些条条框框。 白老师把乔氏层级体系研究中中出现的问题,总结为 “向外恐惧情结” 和 “向内求全情结”,可谓一针见血。关于向内求全情结,其表现比较清晰,白老师总结的各种克服这种情结的努力也好理解,以此说明毛毛虫是相当的“扁”也很到位。相 对而言,对向外恐惧情结的理解,以及圈外现象的观察,就难一些。 白老师举了“分别”所关联的配对问题,算是一例。 还有其他什么圈外的现象需要穿越,值得更多的观察和讨论。我个人 觉得这里有几点:一是,总体来说,有限状态圈外的自然语言现象其实并不多(所谓递归,几乎就是子虚乌有,最多不过是两三层循环的事儿,可以实现为有限状态机的 cascade 叠加即可); 即便不穿越这层围墙,也无大碍。 二是,圈外的现象如果想应对,可以作为 formalism 的特殊延伸(而不是乔姆斯基大院的层级扩展)或作为个别现象个别处理。白老师说:(FSA 实践中查询后条件的)“lookahead已经破了fsa的戒了,做得初一,就做得十五。现在不是什么能实现的问题,是允许用什么实现的问题,能实现的路径太多了,但是羊头和狗肉对不上。” 事实正是如此,理论家在那里争论围墙及其计算复杂性的困扰,而一个普通的工程师根本就没有这种羁绊和顾虑,只要你能阐述清楚你的要求,就会有可控复杂度的实现途径。迄今还没遇到跨不过去的坎儿。 举两个必须超越 FSA formalism 的常见现象来看,发现做一些额外的特殊处理,其实是很简单的事儿,并不需要一下子提升到扩展院墙的“高度”,劳民伤财。 第一个现象是汉语的重叠词现象(reduplication),这是一个汉语词法研究总结得很充分的现象,有 ABAB,AABB,ABB,AAB 之类的重叠范式。这类现象需要一个 unification 的机制。原 fsa 不支持 unification,但是在原 formalism 上加上这种对工程师易如反掌。第二个是搭配关系,包括可分离动词,包括 subcat 中对特定介词的词典要求。前者如“洗澡”,“洗一个痛快的澡”;后者如 deprive sb of sth 中对 of 的词典要求。这些东西要求词典化的搭配在句法中实现为变量的实体化,这样才能做好句法和词典的接口 。formalism 不支持,可是一个聪明的工程师很快就会提出解决方案。 白老师是严谨的 : “ 羊头和狗肉对不上,能对上的是什么,要给个说法。就算是毛毛虫,也要有个毛毛虫说法。光说不立,立了不说,按说的做必死。这是商业手段。而言行一致的 formalism 是有的。这对于知识的管理和传承,会带来很大好处。” 这是对工程师暗度陈仓,挂羊头卖狗肉的批评。不过,很多时候也有些冤枉工程师,因为他们在 formalism 里夹进去的私货,他们自己可能根本就没觉得是一个什么值得在理论上说道的东西。一切都是自然而然的。 总之,自然语言的绝大部分,并不需要乔氏定义的很强的 formalism,因为这条毛毛虫足够的扁,而且没有想象的那么长。 白老师自己的总结是:‘ 如果认同“一切以真实的自然语言为出发点和最终落脚点”的理念,那就应该承认:向外有限突破,向内大举压缩,应该是一枚硬币的两面 。’ 此乃金玉良言,掷地有声。 洪诗人吟道:乔家大院住叶工,越进内室越挂龙。DL 寻衅今打洞,骑墙盘亘毛毛虫。 【相关】 【白硕 - 穿越乔家大院寻找“毛毛虫”】 乔姆斯基批判 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|4328 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 20:38

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部