自然语言处理(NLP)学习笔记(二)——NLP技术

NLPNatural Language Processing(自然语言处理了),接触和认识它也有快五年了吧,当初是以“应用语言学”的中文系专业名称认识它的,和每一个因之进入中文系的人一样,脑袋中除了迷惑还是迷惑,因为不知道它是做什么的。在这四年多的时间中,从迷惑到认识,再到喜欢,到了现在也可以说对NLP也有了一定的了解,加之这学期要开始学习“自然语言处理高级专题”,结合课程内容,建此系列,写下自己对NLP的认识。

此为第二部分,漫谈NLP相关技术。

说到NLP的相关技术,因为是要教会计算机理解人类语言嘛,所以先弄清楚语言在大脑中是怎么产生的是很有必要的。归纳来说,目前人们认为语言在大脑中形成有下面两种看法。

其一就是从理性主义的角度出发,认为人类的语言能力就好像是我们生来就会吃饭一样是天生具备的。这派观点的代表人物毫无疑问可以认为是乔姆斯基大神(如果您还不知道他是做什么的,请Google之)和他的生成语言学理论。乔大神认为,不管你现在或者将来要说的是哪一种语言,你和别人一样生来就具备了和其他人一样的语言能力。就好象我们现在所使用的电脑,打电脑一出场,BIOS就已经存在于芯片上了。同样,打我们生出来,我们脑中就已经存在着了一套抽象的语言知识。这套抽象的语言知识赋予了你后期能够学会各种各样具体语言的能力。归纳来说,理性主义认为语言是由抽象的语言知识(或者说语言规则)所构成的。因此,从这个角度出发,如果我们能够从理论上找到存在于人类脑中的这套语言知识,然后把它教给计算机,那么就可以实现让计算机和人一样理解自然语言的目的。

而另一派观点则从经验主义的角度出发,认为所谓的先天的语言知识那完全是扯淡,如果存在的话那为啥吭哧了半天还弄不出一个好的结果呢(对于这个效率的问题,其实人乔大神也说过,要想完全把人类内在的语言知识给形式化,那基本上是不可能的)。除此之外,观察每个小孩子语言习得的过程,很多小孩子在学会使用这种语言的时候首先接触到的并不是一套形式化的语法规则,而是听多了、说多了,自然也就学会了。从这个事实出发,经验派认为,人们之所以能够学会、理解一种语言,是因为我生活在这种语言的环境中,听到的语言都在我的脑中转化为了语言片段,而这些语言片段在我下次使用它们的时候将作为模板和材料来构建出新的句子。比如说吧,你之前听你附近的人说过下面的三个句子:

小狗吃苹果。

桃子很好吃。

小猫和小狗都是动物。

OK,从这三个句子中,你至少能够知道,“桃子”和“苹果”是一类东西,而“小猫”和“小狗”是一类东西。那么,现在你看到一直你认为是“小猫”的生物在吃一个你认为是“桃子”的东西,如果你想想别人描述这个现象,你就可以在你大脑中搜索了,就好象搭积木一样,你首先找到了“图纸”——“小狗吃苹果”貌似和这个情况很像;然后你找到了“材料”——“小猫”、“桃子”,貌似它们可以描述你看到的那两个东西;然后,你就可以把“材料”用在“图纸”中,通过替换“图纸”中原有的“材料”来构建出新的句子——“小猫吃桃子”。

以上就是从理性主义和经验主义两种角度出发对自然语言的成因作出的解释。相应的,应用在NLP中,我们也就得到了两种NLP技术——理性主义的规则方法、经验主义的统计方法。

所谓理性主义的经验方法,就像上面我们已经提到的,就是通过语言学家的努力,总结出一套形式化的语言知识规则来应用于计算机,从而让计算机能够像人一样根据这些知识来理解自然语言。举个最简单的利用语言知识规则来进行语言理解的例子。

首先呢,我们认为语言知识中有下面三条规则:

SP -> NP VP

NP -> N,

VP -> V N.

其中,SP指句子,NP指名词短语,VP指动词短语,N指名词,V指动词。上面三条规则表示的意义就是:一个名词短语加一个动词短语可以构成一个句子,一个名词构成一个名词短语,而一个动词加一个名词可以构成一个动词短语。

除了有上面的三条规则外,我们还需要有一些语言知识,也就是说,那些词是动词,那些词是名词。比如说上文的例子吧,其中“小猫、小狗、桃子、苹果”都是名词,而“吃”是动词。因此,有了这些,我们可以很容易的得到“小猫吃苹果、小狗吃桃子”等句子。而对计算机来说,有了这些规则就可以很轻松的生成出我们想要的句子了,而且也可以通过规则对一个句子进行句法分析从而进行句子的理解。

嗯,从上面的例子来看,这个方法挺好,它给出了我们想要的句子。但是在上篇笔记中我们也提到过,自然语言由于自身的灵活性以及二义性,对它进行类似的形式化处理是一件很头疼的事情。不说其他的,还是上面我们所提到的三条规则以及已知的这几个名词和动词,除了可以生成上面很好的句子外,还能够生成诸如“苹果吃小猫、桃子吃小狗”等这种无理取闹、写在卷子上只能被老师扣分的句子。所以要很完美地对我们的自然语言进行形式化描述,借孔子老人家的话说就是“路漫漫其修远兮,吾将上下而求索”……

说了理性主义的规则方法,我们再来说说经验主义的统计方法。所谓经验主义方法,首先就是得有经验,然后你才能有方法。因此在NLP中,这种研究方法在很大程度上依赖于语料库,而语料库也就是语言使用的经验。在分析或者生成新句子的时候,也是根据这些已有的材料来进行。只说理论等于没说,我们还是来看例子。

就说我们经常使用的拼音输入法吧。它所依赖的技术其实就是经验主义的统计方法。比如,我们还是输入拼音串儿“yishishiweiyiju”。

首先呢,根据现代汉语的拼音规则,可以将这个串儿分为“yi shi shi wei yi ju”这六个音节,其中每一个音节对应一个汉字(对于xian这种的特例,也就是多一种可能性,这里不再多说了)。

然后,就要开始在词库中进行寻找了,寻找着每一个音节或每两个音节所对应的可能的汉字,把它们从语料库中全都找出来,这也就是提取材料的过程。比如说,通过查找双音节的对应,我们可以得到“意识 实时 示威 偎依 移居”、“仪式 事实 侍卫 位移 依据”、“遗失 实施 市委 唯一 一举”等可能的组合情况。当然这里我们只是列举出了可能情况的很小一部分。

最后,所要做的工作就是在这些可能的结果中找到准确的答案。这个工作同样是依赖于语料来做的。经验主义认为,最准确的答案也就是在实际语料中出现最多的组合。因此,通过计算上面各个单位间的联合概率等概率统计的方法,最终得到在实际语料中最可能出现的组合,也就是程序认为最准确的组合。

好了,上面我们通过例子对两种方法做了简要的介绍。或许您也已经看出来了,这两种方法虽然各有道理,但也各有难处。首先是规则方法,它的最大难处就是语言知识构建起来比较头疼,一个句子分析系统几千条规则有时还不能保证50%的准确率。而相对来说,概率方法就不用费神去做这些理论工作了,利用概率方法,你唯一要做的就是建一个概率模型,然后找一个符合条件的条件,剩下的事儿就交给程序进行计算吧。虽然这样说来概率方法要简单一些,但是概率方法严重依赖于用于训练的语料库的规模以及概率模型的好坏。因此,找到一个好的概率模型以及搜集整理更多语料创建更大的语料库也是让经验主义者们最头疼的事儿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值