自然语言处理介绍
Posted 棒棒糖的编程小世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然语言处理介绍相关的知识,希望对你有一定的参考价值。
1.语音与语言处理中的知识
我们把处理口语和书面语(统称为“语言”)的计算技术称为语音和语言处理,简称自然语言处理。我们将看到,这是一个范围很广泛的定义,这个定义包括了从人人皆知的诸如词数计算、自动换行等简单技术,直到诸如在Web.上的自动问答、实时的口语自动翻译等高级技术。
自然语言处理的这些应用与其他应用系统的区别是,自然语言处理要使用语言知识。例如,UNIX的wc程序可以用来计算文本文件中的字节数、词数或行数。当我们用它来计算字节数和行数时,wc只用于进行一般的数据处理。但是,当我们用它来计算一个文件中词的数目时,就需要关于“什么是一个词” 的语言知识,这样,这个wc也就成为了一个自然语言处理系统。
当然,we只是一个非常简单的系统,它只具有极为有限的语言知识。有更复杂的语言能力的智能机器人将要求更广泛和更深刻的语言知识。
在复杂的语言行为中需要的语言知识可以分为6个方面:
●语音学与音系学,研究语言的语音
●形态学,研究词的有意义的组合
●句法学,研究词与词之间的结构关系
●语义学,研究意义
●语用学,研究如何用语言来达成一定的目的
●话语学,研究大于话段的语言单位
2.歧义
上述6个方面的语言知识存在着一个令人吃惊的事实:语音和语言计算机处理的绝大多数或者全部研究都可以看成是在其中某个层面上的消解歧义。如果我们想把某个意思输人计算机,但是存在着若干个不同的结构来表示这个意思,那么就说这样的输入是有歧义的。我们来考虑口语中的一个句子I made her duck。这个句子可能有5个不同的意思(也可能还会更多),以下是歧义的若干实例:
I cooked waterfowl for her.(我给她烹饪鸭子)
I cooked waterfowl belonging to her(我烹饪属于她的鸭子)
I created the (plaster?) duck she owns.(我把她的石膏(?)鸭子做了创新)
I caused her to quickly lower her head or body.(我使她很快地把她的头或身体放低-些)
I waved my magic wand and turned her into undifferentiated waterfowl.(我挥动魔杖把她变成了一只人们一点儿也看不出破绽的鸭子)
这些不同的意思都是由于歧义引起的。首先,duck 和her的词类在形态或句法上是有歧义的。duck可以是动词或名词,而her可以是表示给予格的代词或表示所属格的代词。其次,make在语义上是有歧义的,它的意思可以是create (创造),也可以是cook (烹饪)。最后,动词make还可以有不同的句法歧义。make 可以做及物动词,带直接宾语,如例句(2); make也可以做双及物动词,带两个宾语, 如例句(5),表示把第一宾语(her )变成了第二个宾语( duck);make还可以带- 个直接宾语和-个动词,如例句( 4),表示使直接宾语(her)进行某个动作( duck)。此外,在口语的句子中,还可以有一种更为深刻的歧义,第一个词可以被理解为eye,第二个词可以被理解为maid。
这样,歧义就更加复杂了。在本书中,我们会经常介绍消解( resolve )这些歧义(或称排歧( disambiguate ) 的模型和算法。例如,使用词类标注( part-of-speech tagging )方法确定duck是名词还是动词。使用词义排歧( word sense disambiguation )方法确定make的意思是create (创造)还是cook (烹饪)。词类排歧和词义排歧是词汇排歧( lexical disambiguation )的两个主要内容。很多研究都可以纳入到词汇排歧的框架之内。例如,在文本-语音合成系统中,当读到单词lead 的时候,必须判断这个lead是应该按照lead pipe中的lead读音,还是应该按照lead me on中的lead读音。此外还有句法排歧(syntactic disambiguation )。例如,当我们判断her和duck是属于不同的实体,如例句(1)或例句(4),还是属于同一个实体,如例句(2),这样的问题就属于句法排歧问题,可以通过概率剖析( probabilistic parsing )方法来解决。在上述例子中没有出现的一些歧义(例如,判断一个句子是陈述句还是疑问句,可以通过言语行为解释( speech act interpretation)方法来解决。
3.模型与算法
上述这些模型和理论都来自计算机科学,数学和语言学的工具,在这些领域受过训练的人对这样的工具一般都不会感到生疏。其中最重要的部分是状态机state machine )、形式规则系统( formal rule system)、逻辑( logic )以及概率论( probability theory )和其他的机器学习工具。从熟知的计算范型出发,这样的模型本身就可以给出为数不多的算法。其中最重要的算法是状态空间搜索( state space search )算法和动态规划( dynamic programming )算法。
简单地说,状态机就是形式模型。形式模型应该包括状态、状态之间的转移以及输入表示等*。这种基本模型的变体有确定的有限状态自动机( determinstic finite-state automata )、非确定的有限状态自动机( non-deterministic finite -state automata )和有限状态转录机( finite. state transducer),它们可以写到-个输出器中;另外还有加权自动机( weighted automata).马尔可夫模型( Markov model )和隐马尔可夫模型( hidden Markov model),它们都包含一个概率组成成分。
与这些过程性模型紧密联系的模型是陈述性模型。在这些陈述性模型中,最重要的有正则语法( regular grammar),正则关系( regular relation)、上下文无关语法( context.free grammar)、特征增益语法( feature-augmented grammar )以及这些文法的相应概率文法变体。状态机和形式规则系统是用于处理音系学、形态学和句法学的主要工具。
与状态机和形式规则系统相关联的最典型的算法就是搜索代表有关输入的假设的状态空间。例如,在语音识别中,对于输人的词搜索其音位系列的空间;在剖析中,对于输人的句子的正确句法分析搜索其树的空间,等等。在自然语言处理中经常使用的算法都是一些 众所周知的图算法,例如,深度优先算法( depth-first search )以及最佳优先搜索算法( best-first)和A*搜索算法(A search)等试探性算法的变体。动态规划范型对于很多这样的方法的计算可循性是至关重要的,因为只有这样才能确保避免冗余的计算。
对于获取语言知识起着关键性作用的第三种模型是逻辑。我们将讨论一阶逻辑( first order logic ),即谓词演算( predicate calculus ),以及诸如特征结构、语义网络、概念依存等有关的形式化方法。在传统上,这些逻辑表达方法是处理语义学、语用学和话语分析等方面知识的选择工具(正如我们将会看到的,尽管在这些领域的应用越来越依赖于在音系学、形态学和句法学中所使用的简单机制,但逻辑表达方法也非常重要)。
概率论是获取语言知识的技术中的最后一个部分。其他的各种模型( 状态机、形式系统和逻辑)都可以使用概率得到进一步提高。概率论的一个重要应用是解决前面我们讨论过的歧义问题:几乎所有语音处理和语言处理问题都可以这样来表述:“对于某个歧义的输人给出N个可能性,选择其中概率最高的一个”。
概率论的另一个优点是它同时也是一种机器学习( machine leaning )的模型。机器学习的研究目前主要集中在探索自动学习前面描述过的自动机,规则系统,搜索试探、分类等的各种表达。这样的系统可以使用大规模的语料库来训练,特别是当我们还没有很好的因果关系模型时,机器学习系统可以用来作为一种有效的模型技术。
4.语言,思维和理解
如果计算机能够像我们这样熟练地处理语言,那么,这就意味着计算机已经达到了真正的智能机器的水平。这种信念基于这样的事实语言总是与我们的认知能力纠缠在一起。
Alan Turing(1950)是第一个认识到计算机与认知能力之间有着如此密切关系的科学家。在他的一篇著名的论文中,Turing提出了图灵测试(Turing Test )的想法。Turing在他的论文的开头就指出,关于什么是机器思维的问题无法回答,因为“机器”( machine)与“思维”( think )这两个术语本身就是含糊不清的。因此,他建议做一个游戏来进行测试。在游戏中,计算机对于语言的使用情况可以用来作为判断计算机是否能进行思维的依据。如果计算机在游戏中获胜,那么就可以判断计算机具有智能。在Turing的游戏中有三个参加者:两个人和一台计算机。其中的一个人充当提问者的角色,他要使用电传打字机向另外两个参加者提出一系列问题,根据这两个参加者的回答判断哪一个回答是计算机做出的。计算机的任务是尽量设法来愚弄提问者,对于提问者的问题,尽量做出像人一-样的回答,设法使提问者相信它真的是一个人。第二个参加游戏的人则尽量设法使提问者相信第三个参加者是计算机,只有他和提问者才是人。
下面是Turing在他的论文中所描述的一个交互过程。显而易见,计算机要模拟人,并不能要求它成为一一个无所不知的专家。
Q: Please write me a sonnet on the topic of the Forth Bridge.
A: Count me out on this one. I never could write poetry.
Q: Add 34957 to 70764.
A: (30s之后给出回答) 105621.
第一个提问要求写一首商籁体的诗,这显然是高智能的工作,因此,回答是拒绝写这样的诗歌。第二个提问要求做5位数的加法,需要30 s的思索之后才能够给出正确的回答。这样的问题不论对于人来说,还是对于计算机来说,都并非易事。Turing 预言,大约到20世纪末,具有10 GB存储量的计算机经过5 min的提问之后,将会有30%的可能性愚弄提问者,使提问者分辨不清它究竟是人还是计算机。如果你也想像计算机那样愚弄别人,也可能说不清楚究竟采用什么样的严格标准去愚弄,才可以使别人感到困惑。然而,对于Turing来说,关键的问题是,只要使用人的语言就足以作为测定智能的可操作标准了。
令人惊讶的是, 1966年就有人设计了一个称为ELIZA的程序来验证Turing的思想( Weizenbaum,1966)。ELIZA是一个早期的自然语言处理系统,这个系统能与用户进行有一定限制的对话。下面是ELIZA系统模拟心理医生的一段对话:
用户: You are like my father in some ways.
ELIZA;: WHAT RESEMBLANCE DO You SEE
用户2: You are not very aggressive but 1 think you don't want me to notice that.
ELIZA: WHAT MAKES You THINK I AM NOT AGGRESSIVE
用户,: You don't argue with me.
ELIZA; WHY DO You THINK I DO NOT ARGUE WITH YOU
用户。: You are afraid of me.
ELIZA: DOES IT PLEASE YOU To BELIEVE 1 AM AFRAID OF You
在第2章中将会详细讨论到, ELIZA 只是使用模式匹配的方法进行输入并把它转换成适当的输出,这是一一 个非常简单的系统。事实上ELIZA并没有必要懂得如何模拟心理医生,它只是使用简单的模式匹配就取得了成功。正如系统的设计人Weizenbaum所说的,在ELIZA系统中,听话者的所作所为就好像他们对于周围的世界一无所知。
ELIZA与Turing思想的深刻联系在于,很多与ELIZA进行过交互的人都相信,ELIZA确实理解了他们所说的话以及他们所提出的问题。Weizenbaum(1976)指出,甚至在把程序的操作过程向人们做了解释之后,仍然有不少人继续相信ELIZA的能力。近年来,人们又以不同的形式重复着Weizenbaum的工作。自1991年以来,在Loebner奖的比赛中,人们试图设计各种计算机程序来做Turing测试。尽管这些比赛的科学意义不是很大,但这些比赛的成绩说明,哪怕是很粗糙的程序有时也会愚弄人们的判断力(Shieber, 1994)。哲学家和人工智能研究者对于Turing测试究竟是否适合用来测试智能的争论已经持续很多年了,但上述比赛的结果并没有平息这样的争论(Searle, 1980)。
在社会科学中的有关研究证实了Turing在同一篇文章中的预见:
然而,我相信,在本世纪末,词语的使用和教育的舆论将大大地改变,使我们有可能谈论机器思维而不致遭到别人的反驳。
现在已经清楚,无论人们相信什么,无论人们是否知道了计算机的内部工作情况,他们都在谈论计算机,并且都在与计算机进行着交互,把计算机当成一个社会实体。人们把计算机当成人一样对待,他们要对它讲礼貌,把它当成团队中的成员,并且期望计算机能够理解人们的需求,能够非常自然地与人们进行交互。例如, Reeves and Nass(1996发现,当计算机要求人们来评价计算机的所作所为好不好时,人们要针对不同计算机提出的同样的问题做出更多的正面回答。人们似乎担心他们给计算机的回答不够礼貌。Reeves 和Nass在另外的实验中还发现,如果计算机对人们说一-些奉承的话,人们给计算机的评价也就会高- \一些。给出这样的一些预设, 使用语音和语言的系统就能够给众多的用户在很多应用方面提供更自然的交互界面。这些情况导致了一个称为会话代理(conversational agent )的研究焦点,所谓会话代理就是通过会话进行交际的计算机人造实体。
5.现状及发展
现在语音和语言处理正处于激动人心的时刻。目前已经商品化的机器人语音识别系统,互联网的兴起,都使得语音和语言处理的应用成为了当前的热门话题,有时甚至过分地提出了一些令人激动的可能的应用领域。在这里列举出该学科当前的一些应用项目,并提出该学科近期发展的一些可能的方面。
加拿大的计算机程序能够接受每天的天气预报数据,然后自动生成天气预报报告,不必经过进-步编辑就可以用英语和法语公布(Chandioux, 1976)。
Systran的Babel Fish机器翻译系统每天可以处理Alta Vista搜索引擎的100万个翻译请求。
到马萨诸塞州坎布里奇市访问的一-个访问者用口语问计算机在什么地方可以吃饭,系统查询了个关于当地饭店的数据库之后,给出了相关信息作为回答(Zue et al, 1991)。
这些仅仅是当前语音和语言处理技术的几个为数不多的事实。下面我们再举出更多的实例来说明当前世界上在语音和语言处理的研究和开发实验室中进行的一-些探索性应用研究。
让计算机阅读数百篇典型的大学生论文并给这些论文打分,而计算机的打分结果与人的打分结果几乎毫无区别,难以分辨(Landauer et al., 1997)。
让计算机充当自动阅读家庭教师,帮助改善阅读能力。它能教小孩阅读故事,当阅读人要求阅读或者出现阅读错误时,计算机能使用语音识别器来进行干预(Mostow and Aist, 1999)。
给计算机装上图像识别系统,它就可以观看-段足球比赛的录像,并且用自然语言报告比赛的情况(Wahlster, 1989)。
对于有言语或交际障碍的残疾人,计算机能预见下面将要出现的词语,给他们做出提示,或者当他们说话时帮助在词语方面进行扩充,使残疾人能完整地说出简洁的话语(Newell et al, 1998;McCoy et al., 1998)。
6.语音与语言处理简史
1950-1960:基础研究。神经元模型的出现,有限自动机和正则表达式的研究,形式语言理论的形成,上下文无关语法的独立发现
1957-1970:符号派与随机派两个阵营
1970-1983:四个范型(随机范型,基于逻辑的范型,基于自然语言理解的范型,话语模型范型)
1983-1993:经验主义与有限状态模型的复苏
1994-1999:不同领域的合流
概率和数据驱动的方法几乎成为了自然语言处理的标准方法。句法剖析、词类标注、参照消解和话语处理的算法全都开始引入概率,并且采用从语音识别和信息检索中借用的评测方法。
其次,由于计算机的速度和存储量的增加,使得在语音和语言处理的一些子领域,特别是在语音识别、拼写检查、语法检查这些子领域,有可能进行商品化的开发。
语音和语言处理的算法开始被应用于增强交替通信( Augmentative and Altenative Communication,简称AAC)中。最后,Web 的发展使得进一步加强基于语言的信息检索和信息抽取的需求变得更加突出。
以上是关于自然语言处理介绍的主要内容,如果未能解决你的问题,请参考以下文章