自然语言处理
自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
自然语言处理主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。
基本介绍 编辑本段
语言是人类区别其他动物的本质特性。在所有生物中,只有人类才具有语言能力。人类的多种智能都与语言有着密切的关系。人类的逻辑思维以语言为形式,人类的绝大部分知识也是以语言文字的形式记载和流传下来的。因而,它也是人工智能的一个重要,甚至核心部分。
用自然语言与计算机进行通信,这是人们长期以来所追求的。因为它既有明显的实际意义,同时也有重要的理论意义:人们可以用自己最习惯的语言来使用计算机,而无需再花大量的时间和精力去学习不很自然和习惯的各种计算机语言;人们也可通过它进一步了解人类的语言能力和智能的机制。
自然语言处理是指利用人类交流所使用的自然语言与机器进行交互通讯的技术。通过人为的对自然语言的处理,使得计算机对其能够可读并理解。自然语言处理的相关研究始于人类对机器翻译的探索。虽然自然语言处理涉及语音、语法、语义、语用等多维度的操作,但简单而言,自然语言处理的基本任务是基于本体词典、词频统计、上下文语义分析等方式对待处理语料进行分词,形成以最小词性为单位,且富含语义的词项单元。
自然语言处理(NaturalLanguageProcessing,NLP)以语言为对象,利用计算机技术来分析、理解和处理自然语言的一门学科,即把计算机作为语言研究的强大工具,在计算机的支持下对语言信息进行定量化的研究,并提供可供人与计算机之间能共同使用的语言描写。包括自然语言理解(NaturalLanguageUnderstanding,NLU)和自然语言生成(NaturalLanguageGeneration,NLG)两部分。它是典型边缘交叉学科,涉及到语言科学、计算机科学、数学、认知学、逻辑学等,关注计算机和人类(自然)语言之间的相互作用的领域。人们把用计算机处理自然语言的过程在不同时期或侧重点不同时又称为自然语言理解(NaturalLanguageUnderstanding,NLU)、人类语言技术(HumanLanguageTechnology,HLT)、计算语言学Hl(ComputationalLinguistics)、计量语言学(QuantitativeLinguistics)、数理语言学(MathematicalLinguistics)。
实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义,也能以自然语言文本来表达给定的意图、思想等。前者称为自然语言理解,后者称为自然语言生成。因此,自然语言处理大体包括了自然语言理解和自然语言生成两个部分。历史上对自然语言理解研究得较多,而对自然语言生成研究得较少。但这种状况已有所改变。
无论实现自然语言理解,还是自然语言生成,都远不如人们原来想象的那么简单,而是十分困难的。从现有的理论和技术现状看,通用的、高质量的自然语言处理系统,仍然是较长期的努力目标,但是针对一定应用,具有相当自然语言处理能力的实用系统已经出现,有些已商品化,甚至开始产业化。典型的例子有:多语种数据库和专家系统的自然语言接口、各种机器翻译系统、全文信息检索系统、自动文摘系统等。
自然语言处理,即实现人机间自然语言通信,或实现自然语言理解和自然语言生成是十分困难的。造成困难的根本原因是自然语言文本和对话的各个层次上广泛存在的各种各样的歧义性或多义性(ambiguity)。
自然语言的形式(字符串)与其意义之间是一种多对多的关系。其实这也正是自然语言的魅力所在。但从计算机处理的角度看,我们必须消除歧义,而且有人认为它正是自然语言理解中的中心问题,即要把带有潜在歧义的自然语言输入转换成某种无歧义的计算机内部表示。
歧义现象的广泛存在使得消除它们需要大量的知识和推理,这就给基于语言学的方法、基于知识的方法带来了巨大的困难,因而以这些方法为主流的自然语言处理研究几十年来一方面在理论和方法方面取得了很多成就,但在能处理大规模真实文本的系统研制方面,成绩并不显著。研制的一些系统大多数是小规模的、研究性的演示系统。
目前存在的问题有两个方面:一方面,迄今为止的语法都限于分析一个孤立的句子,上下文关系和谈话环境对本句的约束和影响还缺乏系统的研究,因此分析歧义、词语省略、代词所指、同一句话在不同场合或由不同的人说出来所具有的不同含义等问题,尚无明确规律可循,需要加强语用学的研究才能逐步解决。另一方面,人理解一个句子不是单凭语法,还运用了大量的有关知识,包括生活知识和专门知识,这些知识无法全部贮存在计算机里。因此一个书面理解系统只能建立在有限的词汇、句型和特定的主题范围内;计算机的贮存量和运转速度大大提高之后,才有可能适当扩大范围.
以上存在的问题成为自然语言理解在机器翻译应用中的主要难题,这也就是当今机器翻译系统的译文质量离理想目标仍相差甚远的原因之一;而译文质量是机译系统成败的关键。中国数学家、语言学家周海中教授曾在经典论文《机器翻译五十年》中指出:要提高机译的质量,首先要解决的是语言本身问题而不是程序设计问题;单靠若干程序来做机译系统,肯定是无法提高机译质量的;另外在人类尚未明了大脑是如何进行语言的模糊识别和逻辑判断的情况下,机译要想达到“信、达、雅”的程度是不可能的。
发展历史 编辑本段
最早的自然语言理解方面的研究工作是机器翻译。1949年,美国人威弗首先提出了机器翻译设计方案。其发展主要分为三个阶段。
早期自然语言处理
第一阶段(60~80年代):基于规则来建立词汇、句法语义分析、问答、聊天和机器翻译系统。好处是规则可以利用人类的内省知识,不依赖数据,可以快速起步;问题是覆盖面不足,像个玩具系统,规则管理和可扩展一直没有解决。
统计自然语言处理
第二阶段(90年代开始):基于统计的机器学习(ML)开始流行,很多NLP开始用基于统计的方法来做。主要思路是利用带标注的数据,基于人工定义的特征建立机器学习系统,并利用数据经过学习确定机器学习系统的参数。运行时利用这些学习得到的参数,对输入数据进行解码,得到输出。机器翻译、搜索引擎都是利用统计方法获得了成功。
神经网络自然语言处理
第三阶段(2008年之后):深度学习开始在语音和图像发挥威力。随之,NLP研究者开始把目光转向深度学习。先是把深度学习用于特征计算或者建立一个新的特征,然后在原有的统计学习框架下体验效果。比如,搜索引擎加入了深度学习的检索词和文档的相似度计算,以提升搜索的相关度。自2014年以来,人们尝试直接通过深度学习建模,进行端对端的训练。目前已在机器翻译、问答、阅读理解等领域取得了进展,出现了深度学习的热潮。
概念技术 编辑本段
信息抽取(IE)
信息抽取是将嵌入在文本中的非结构化信息提取并转换为结构化数据的过程,从自然语言构成的语料中提取出命名实体之间的关系,是一种基于命名实体识别更深层次的研究。信息抽取的主要过程有三步:首先对非结构化的数据进行自动化处理,其次是针对性的抽取文本信息,最后对抽取的信息进行结构化表示。信息抽取最基本的工作是命名实体识别,而核心在于对实体关系的抽取。
自动文摘
自动文摘是利用计算机按照某一规则自动地对文本信息进行提取、集合成简短摘要的一种信息压缩技术,旨在实现两个目标:首先使语言的简短,其次要保留重要信息。
语音识别技术
语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术,也就是让机器听懂人类的语音,其目标是将人类语音中的词汇内容转化为计算机可读的数据。要做到这些,首先必须将连续的讲话分解为词、音素等单位,还需要建立一套理解语义的规则。语音识别技术从流程上讲有前端降噪、语音切割分帧、特征提取、状态匹配几个部分。而其框架可分成声学模型、语言模型和解码三个部分。
Transformer模型
Transformer模型在2017年,由Google团队中首次提出。Transformer是一种基于注意力机制来加速深度学习算法的模型,模型由一组编码器和一组解码器组成,编码器负责处理任意长度的输入并生成其表达,解码器负责把新表达转换为目的词。Transformer模型利用注意力机制获取所有其他单词之间的关系,生成每个单词的新表示。Transformer的优点是注意力机制能够在不考虑单词位置的情况下,直接捕捉句子中所有单词之间的关系。模型抛弃之前传统的encoder-decoder模型必须结合RNN或者CNN(ConvolutionalNeuralNetworks,CNN)的固有模式,使用全Attention的结构代替了LSTM,减少计算量和提高并行效率的同时不损害最终的实验结果。但是此模型也存在缺陷。首先此模型计算量太大,其次还存在位置信息利用不明显的问题,无法捕获长距离的信息。
基于传统机器学习的自然语言处理技术
自然语言处理可将处理任务进行分类,形成多个子任务,传统的机械学习方法可利用SVM(支持向量机模型)、
Markov(马尔科夫模型)、CRF(条件随机场模型)等方法对自然语言中多个子任务进行处理,进一步提高处理结果的精度。但是,从实际应用效果上来看,仍存在着以下不足:(1)传统机器学习训练模型的性能过于依赖训练集的质量,需要人工标注训练集,降低了训练效率。(2)传统机器学习模型中的训练集在不同领域应用会出现差异较大的应用效果,削弱了训练的适用性,暴露出学习方法单一的弊端。若想让训练数据集适用于多个不同领域,则要耗费大量人力资源进行人工标注。(3)在处理更高阶、更抽象的自然语言时,机器学习无法人工标注出来这些自然语言特征,使得传统机器学习只能学习预先制定的规则,而不能学规则之外的复杂语言特征。
基于深度学习的自然语言处理技术
深度学习是机器学习的一大分支,在自然语言处理中需应用深度学习模型,如卷积神经网络、循环神经网络等,通过对生成的词向量进行学习,以完成自然语言分类、理解的过程。与传统的机器学习相比,基于深度学习的自然语言处理技术具备以下优势:(1)深度学习能够以词或句子的向量化为前提,不断学习语言特征,掌握更高层次、更加抽象的语言特征,满足大量特征工程的自然语言处理要求。(2)深度学习无需专家人工定义训练集,可通过神经网络自动学习高层次特征。
技术难点 编辑本段
内容的有效界定
日常生活中句子间的词汇通常是不会孤立存在的,需要将话语中的所有词语进行相互关联才能够表达出相应的含义,一旦形成特定的句子,词语间就会形成相应的界定关系。如果缺少有效的界定,内容就会变得模棱两可,无法进行有效的理解。例如他背着母亲和姐姐悄悄的出去玩了。这句话中如果不对介词“和”作出界定,就很容易形成母亲和姐姐两个人不知道他出去玩,或者是母亲不知道他和姐姐出去玩。
消歧和模糊性
词语和句子在不同情况下的运用往往具备多个含义,很容易产生模糊的概念或者是不同的想法,例如高山流水这个词具备多重含义,既可以表示自然环境,也能表达两者间的关系,甚至是形容乐曲的美妙,所以自然语言处理需要根据前后的内容进行界定,从中消除歧义和模糊性,表达出真正的意义。
有瑕疵的或不规范的输入
例如语音处理时遇到外国口音或地方口音,或者在文本的处理中处理拼写,语法或者光学字符识别(OCR)的错误。
语言行为与计划
句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者,如果一门课程上一年没开设,对于提问“这门课程去年有多少学生没通过?”回答“去年没开这门课”要比回答“没人没通过”好。
关联技术 编辑本段
计算机科学
自然语言处理的最初目的就是实现人和计算机的自然语言对话,计算机作为对话的一个主体是自然语言处理这个概念提出的先决条件。长久以来人们对于机器人应用于生活,成为重要生产力推动社会发展,尤其是使机器人拥有“人的智能”就充满了憧憬,自然语言处理作为人工智能领域的一个重要组成部分,对于推动机器人的真正智能化有标志性作用。近年来计算机性能在数据存储能力、处理速度等方面的大幅提升,为海量数据的处理、概率统计,为发现语言的规律、获得内在联系成为可能。
互联网技术
互联网的出现使信息的传播更加便捷,依托于互联网技术出现的各种新媒体是信息已成为信息传播的主要途径,各种网络聊天软件增加了人们沟通交流的途径,这些以文字形式出现具有保存一定时间要求的信息带来了数据的爆炸式增长,为利用基于统计的自然语言处理提供了海量资源。依托于互联网技术,出现的开源平台,也是研究者们获取研究资源的重要途径。
机器学习方法
机器学习是利用数据和经验改进计算机算法、优化计算机性能的多领域交叉学科,可以追溯到17世纪的最小二乘法、马尔科夫链,但是其真正发展起来应该从20世纪50年代算起,经历了“有无知识的学习”的执行、基于图结构及逻辑结构进行系统描述、结合各种应用拓展到对多个概念学习三个阶段的发展,自20世纪80年代重要进入更新的、能够真正使计算机智能化的第四阶段。
利用半监督或无监督的机器学习方法对海量自然语言进行处理也与机器学习的发展历程相对应,大致可以分为两个阶段:基于离散性表示的线性模型的传统机器学习,基于连续性表示的非线性模型的深度学习。
深度学习是一种计算机自动学习算法,包括输入层、隐含层、输出层三部分,其中输入层是研究人员提供的大量数据,是算法的处理对象,隐含层的层数由实验人员确定,是算法对数据进行特征标记、发现其中规律、建立特征点间联系的过程,输出层则是研究人员可以得到的结果,一般来说输入层得到的数据越多,隐含层的层数越多,对数据的区分结果也就越好,但是带来的问题是计算量的加大、计算难度的提升,所幸计算机硬件在近年来取得飞跃。作为推动自然语言处理的最新动力,机器学习展现出了前所未有的优势:
(一)克服了语言特征人工标记的稀疏性的缺点,深度学习可以利用分布式向量对词做分类,词类标签、词义标签、依存关系等可以得到有效标记;
(二)克服了语言特征人工标记不完整的问题,人工的语言标记由于工作量的繁重,被遗漏的可能性很大,而高效率的计算机进行此项工作可以大大减少这种失误;
(三)克服了传统机器学习算法计算量大、计算时间长的问题,深度学习利用矩阵进行计算将计算量大幅压缩。
工具平台 编辑本段
NLTK:全面的python基础NLP库。
StanfordNLP:学界常用的NLP算法库。
中文NLP工具:THULAC、哈工大LTP、jieba分词。
研究热点 编辑本段
预训练技术
预训练思想的本质是模型参数不再随机初始化,而是通过语言模型进行训练。目前NLP各项任务的解决思路是预训练加微调。预训练对于NLP任务有着巨大的提升帮助,而预训练语言模型也越来越多,从最初的Word2vec]、Glove到通用语言文本分类模型ULMFiT以及EMLo等。而当前最优秀的预训练语言模型是基于Transformer模型构建。该模型是由Vaswani等人提出的,其是一种完全基于Self-Attention所构建的,是目前NLP领域最优秀的特征提取器,不但可以并行运算而且可以捕获长距离特征依赖。
当前影响最大的预训练语言模型是基于Transformer的双向深度语言模型—BERT。BERT是由多层双向Transformer解码器构成,主要包括2个不同大小的版本:基础版本有12层Transformer,每个Transformer中的多头注意力层是12个,隐藏层大小为768;加强版有24层Transformer,每个Transformer中的多头注意力层是24个,隐藏层大小为1024。由此可见深而窄的模型效果要优于浅而宽的模型。目前BERT在机器翻译、文本分类、文本相似性、阅读理解等多个任务中都有优异的表现。BERT模型的训练方式包括2种:(1)采用遮盖单词的方式。(2)采用预测句子下一句的方式。
通过上述2种方式训练得到通用语言模型,然后利用微调的方法进行下游任务,如文本分类、机器翻译等任务。较比以前的预训练模型,BERT可以捕获真正意义上的双向上下文语义。但BERT也有一定的缺点,既在训练模型时,使用大量的[MASK]会影响模型效果,而且每个批次只有15%的标记被预测,因此BERT在训练时的收敛速度较慢。此外由于在预训练过程和生成过程不一致,导致在自然语言生成任务表现不佳,而且BERT无法完成文档级别的NLP任务,只适合于句子和段落级别的任务。
XLNet是一种广义自回归的语言模型,是基于Transformer-XL而构建的。Transformer的缺点:(1)字符之间的最大依赖距离受输入长度的限制。(2)对于输入文本长度超过512个字符时,每个段都是从头开始单独训练,因此使训练效率下降,影响模型性能。针对以上2个缺点,Transformer-XL引入了2个解决方法:分割循环机制(DivisionRecurrenceMechanism)和相对位置编码(RelativePositionalEncoding)。Transformer-XL的测试速度更快,可以捕获更长的上下文长度。
无监督表征学习在NLP领域取得了巨大成功,在这种理念下,很多研究者探索了不同的无监督预训练目标,而自回归语言建模和自编码语言是2个最成功的预训练目标。而XLNet是一种集合了自回归和自编码2种方式的泛化自回归方法。XLNet不使用传统自回归模型中的固定前向或后向因式分解顺序,而使用一种随机排列自然语言预测某个位置可能出现的词,这种方式不仅可以使句子中的每个位置都能学习来自所有位置的语境信息,而且还可以构建双向语义,更好地获取上下文语义。由于XLNet采用的是Transformer-XL,因此模型性能更优,尤其在包含长文本序列的任务中。
无论是BERT还是XLNet语言模型,在英文语料中表现都很优异,但在中文语料中效果一般,ERNIE则是以中文语料训练得出一种语言模型。ERNIE是一种知识增强语义表示模型,其在语言推断、语义相似度、命名实体识别、文本分类等多个NLP中文任务上都有优异表现。ERNIE在处理中文语料时,通过对预测汉字进行建模,可以学习到更大语义单元的完整语义表示。ERNIE模型内部核心是由Transformer所构成。模型结构主要包括2个模块,下层模块的文本编码器(T-Encoder)主要负责捕获来自输入标记的基本词汇和句法信息,上层模块的知识编码器(KEncoder)负责从下层获取的知识信息集成到文本信息中,以便能够将标记和实体的异构信息表示成一个统一的特征空间中。
图神经网络技术
图神经网络(GraphNeuralNetwork)的研究主要是集中在相邻节点信息的传播与聚合上,从图神经网络的概念提出,到受深度学习中卷积神经网络的启发。图神经网络对于非欧几里德数据在深度学习中的应用有着非常重要的地位,尤其是利用图结构在传统贝叶斯因果网络上可解释的特点,在定义深度神经网络关系可推理、因果可解释的问题上有很大的研究意义。如何利用深度学习方法对图结构的数据进行分析和推理吸引了非常多的研究和关注。
通用的图神经网络推理过程可以通过图节点预表示、图节点采样、子图提取、子图特征融合、图神经网络的生成和训练子过程来表示,具体步骤如下:
STEP1图节点预表示:通过图嵌入(GraphEmbedding)的方法对图中每一个节点进行嵌入表示;
STEP2图节点采样:对图中每个节点或存在的节点对的正负样本进行采样;
STEP3子图提取:提取图中每一个节点的邻节点构建n阶子图,其中n表示第n层的邻节点,从而形成通用的子图结构;
STEP4子图特征融合:对每一个输入神经网络的子图进行局部或全局的特征提取;
STEP5生成图神经网络和训练:定义网络的层数和输入输出的参数,并对图数据进行网络训练。
1.图卷积神经网络
深度学习的流行与卷积神经网络的广泛适用性密不可分,图神经网络的研究中时间最长、研究成果最多的就是图卷积神经网络,从特征空间来看图卷积神经网络主要可以分为频域和空间域两个类型。
频域的图卷积神经网络基于图信号处理问题,将图神经网络的卷积层定义为一个滤波器,即通过滤波器去除噪声信号从而得到输入信号的分类结果。实际问题中只能用于处理无向且边上无信息的图结构,将输入信号的图定义为可特征分解的拉普拉斯矩阵,归一化后的特征分解可以表示为通用结构其对角矩阵
附件列表
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。