目录(点击切换)
本文节选自《计算之魂》电子版:
/儿第2章//逆向思考一一从递推到递归//人类的语言其实天然地符合递归的原则。不过这里要说明的是,今天各种语法分析器所采用的语法规则其实已经不是人写的了,而是计算机自己根据语料学习得到的。为了符合大家在语文课上所学的内容,我对上述语法规则做了一些简化,在真实的自然语言处理中,语法单元和语法规则的颗粒度要小很多,也复杂很多。采用递归的算法分析语言,复杂度其实是很高的。前文给出的语法规则被称为上下文无关文法(Context-FreeGrammar),因此规则中等号“=”左边的一个句子成分什么样的语法单元构成是完全独立的,和上下文无关。用上下文无关文法分析自然语言语句的复杂度是OUV),这里面是句子的长度。今天我们使用的计算机程序语言,其文法都是上下文无关的。虽然O(OV)在工程上具有非常高的复杂度,但我们依然能够“忍受。不过,真实的自然语言的语法结构常常是和上下文相关的(Context-Sensitive),也就是说,一个句子成分是否能够被重写成一个或一组其他的句子成分,取决于它的上下文。比如下面就是一条典型的上下文相关文法的规则:(介词)名词短语(副词)=(介词)数量词+形容词+名词(副词)在这条文法规则中,等号“=”左边的名词短语能和否重写为右边的数量词+形容词+名词,要看上下文条件了,即括号“)”中介词前缀和副词后缀的条件是否满足。如果我们对比一下相应的上下文无关文法,它应该是名词短
计算之魂思考题答案
语=数量词+形容词+名词它是无条件的。真实的自然语言显然是上下文相关的。我们都知道,一个词在句子中起什么作用要看上下文。比如“改革”这个词,既可以是名词用作主语,也可以是动词用作谓语,这完全取决于上下文。因此分析自然语言时,我们应该使用上下文相关文法(Context-SensitiveGrammar),而非简单的上下文无关文法。但是这样一来,分析句子语法结构的算法的复杂度就大大增加了。这本身是一个NP困难(《NP-hard)的问题,不过在通常的情况下,可以简化到O(Y),这比上下文无关文法的CUV)复杂度高了很多,这样复杂度的算法在计算机工程中被认为已经很难实现。在处理自然语言时,我们通常只091//计算之现//能以上下文无关文法为基础,在某些情况下考虑引入少量的上下文相关文法规则。20世纪80年代之后,概率统计在自然语言处理上发挥了巨大的作用。计算语言学家开始尝试在句法分析时考虑每一种语法规则适用的范围和频率,优先尝试使用频率高的规则,这样就大大降低了语法分析的难度,同时提高了文法分析的准确性。这种考虑了语法规则概率的上下文无关文法则被称为基于概率的上下文无关文法(ProbabilisticContext一FreeGrammar,PCEG)。从机器学习的角度来讲,它和马尔可夫模型基本上等价。而考虑了概率的上下文相关文法,计算量也可以被大大降低,它其实和一个被称为条件随机场的机器学习方
计算之魂 电子版
法大致等价,而后者又基本上等价于今天很热门的深度神经网络。这也是今天在有了深度神经网络的机器学习工具〔〈即深度学习)后,很多自然语言处理的问题能够得到改进的一个原因。很多计算机从业者一辈子都未必接触过与自然语言处理相关的工作,虽然这项工作今天变得越来越时对。不过,稍微了解一些计算机分析自然语言背后的机理对于学习计算机的人来讲有两个好处。首先,它有助于大家加深对计算思维的理解,特别是对递归、城套和模块化的理解。我们在前面讲过,递归思想的关键就是把一个大问题不断拆成小问题,怎么拆就需要人的智慧了。在自然语言理解中,那些文法规则就是人类告诉计算机该怎么拆的指令。其次,它有助于我们亲身感受一下很多计算机应用的问题计算量到底能有多大。很多问题哪怕找到了最佳算法,复杂度也要远远高于我们的想象。在很多人看来,分析一个长度为20个单词的句子时对它建立语法树,并非一个了不得的事情,让接受过训练的大学生来做这件事,不过一两分钟的事情。但是让计算机来做,如果没有将算法优化到极致,也需要一分钟左右的时间,要知道今天计算机一分钟能完成的计算是万亿次。为什么自然语言处理的复杂度那么高?主要是合乎文法的语法树数量太多,关于这一点我们在第4.4节介绍树的数量时还会讲到。在一般的工业领域,效率通常只能是百分之几十或者几倍的提高。但是在计算机工程上,有时对算法效率看似微小的提升,都可能极大地缩短运算时间(变为原来092
吴军计算之魂的主要内容
| 计算之魂主要内容 | 计算之魂百度网盘求资源 |
| 计算之魂主要内容 | 计算之魂 吴军电子书 |
| 计算之魂总和最大区间 | 计算之魂合并区间 |
综上:计算之魂免费阅读值得推荐阅读

评论已关闭!