赞
踩
自然语言是指汉语、英语、法语等人们日常使用的语言,是自然而然地随着人类社会发展演变而来的语言。它是人类学习和生活中的重要工具。概括来说,自然语言是指人类社会约定俗成的,并且区别于人工语言(如计算机程序语言)的语言。
自然语言处理(Natural Language Processing,NLP)是指利用计算机对自然语言的形、音、义等信息进行处理,即对字、词、句、篇章的输人、输出、识别、分析、理解、生成等进行操作和加工的过程。NLP是计算机科学领域和人工智能领域的-个重要研究方向,是一门融语言学、计算机科学、数学和统计学于一体的科学。NLP的具体表现形式包括机器翻译、文本摘要、文本分类、文本校对、信息抽取、语音合成、语音识别等。
NLP机制涉及两个流程:自然语言理解和自然语言生成。自然语言理解研究的是计算机如何理解自然语言文本中包含的意义,自然语言生成研究的是计算机如何生成自然语言文本表达给定的意图、思想等。因为NLP的目的是让计算机“理解”自然语言,所以NLP有时又被称为自然语言理解(Natural Language Understanding,NLU)。
1946年世界上第一台通用电子计算机诞生时,英国人布思和美国人韦弗就提出了利用计算机进行机器翻译。从这个时间点开始算起,NLP技术已经历70多年的发展历程。NLP的整个发展历程可以归纳为“萌芽期”“发展期”“繁荣期”3个阶段。
1.萌芽期(1960年以前)
20世纪40年代到50年代之间,除了当时给世界带来极大震撼的计算机技术外,在美国还有两个人在进行着重要的研究工作。其中一位是乔姆斯基,他的主要工作为对形式语言进行研究;另一位是香农,他的主要工作是基于概率和信息论模型进行研究。香农的信息论是在概率统计的基础上对自然语言和计算机语言进行的研究。1956年,乔姆斯基提出了上下文无关语法,并将它运用到NLP中。他们的工作直接导致了基于规则和基于概率这两种不同的NLP技术的产生,而这两种不同的NLP技术又引发了数十年有关基于规则方法和基于概率方法孰优孰劣的争执。
2.发展期(1960年-1999年)
20世纪60年代,法国格勒诺布尔大学的著名数学家沃古瓦开始了自动翻译系统的开发。在这一时期,很多国家和组织对机器翻译都投入了大量的人力、物力和财力。然而在机器翻译系统的开发过程中,出现了各种各样的问题,并且这些问题的复杂度远远超过了原来的预期。为了解决这些问题,当时人们提出了各种各样的模型和解决方案。虽然最后的结果并不如人意,但是却为后来的各个相关分支领域的发展奠定了基础,如统计学、逻辑学、语言学等。
20世纪90年代后,在计算机技术的快速发展下,基于统计的NLP取得了相当大的成果,开始在不同的领域里大放异彩。例如,由于机器翻译领域引入了许多基于语料库的方法,因此率先取得了突破。1990年,第13届国际计算机语言学大会的主题是“处理大规模真实文本的理论、方法与工具”,从而将研究的重心开始转向大规模真实文本,传统的基于语言规则的NLP开始显得力不从心。
20世纪90年代中期,有两件事促进了NLP研究的复苏与发展。一件事是计算机的运行速度和存储量的大幅提高,这为NLP改善了物质基础,使得语言处理的商品化开发成为可能;另一件事是1994年万维网协会成立,在互联网的带动下,产生了很多原来没有的计算模型,大数据和各种统计模型应运而生。这段时间,在大数据和概率统计模型的影响下,NLP得到了飞速的发展。
3.繁荣期(2000年至今)
21世纪之后,一大批互联网公司的涌现对NLP的发展起到了很大的推动作用,如早期的雅虎搜索、后来的谷歌和百度。大量的基于万维网的应用和各种社交工具在不同的方面促进了NLP的发展进步。在这个过程中,各种数学算法和计算模型越来越显现出重要性。机器学习、神经网络和深度学习等技术都在不断地消除人与计算机之间的交流限制。特别是深度学习技术,它将会在NLP领域发挥越来越重要的作用。也许在不久的将来,在互联网的基础上,现今NLP中遇到的问题将不再是问题。使用不同语言的人们可以畅通无阻地沟通交流,人与计算机之间的沟通也没有阻碍。
NLP研究内容包括很多的分支领域,如文本分类、信息抽取、信息检索、信息过滤、自动文摘、智能问答、话题推荐、机器翻译、主题词识别、知识库构建、深度文本表示、命名实体识别、文本生成、文本分析(词法、句法和语法)、舆情分析、自动校对、语音识别与合成等。部分常见的NLP分支领域的简介如下。
1.机器翻译
机器翻译又称自动翻译,是利用计算机将一种自然语言转换为另一种自然语言的过程。机器翻译是计算机语言学的一个分支,是人工智能的终极目标之一,具有重要的科学研究价值。
2.信息检索
信息检索又称情报检索,是指利用计算机系统从海量文档中找到符合用户需求的相关信息。狭义的信息检索仅指信息查询,广义的信息检索是指将信息按一定的方式进行加工、整理、组织并存储起来,再根据信息用户特定的需求将相关信息准确地查找出来的过程。
3.文本分类
文本分类又称文档分类或信息分类,其目的是利用计算机系统对大量的文档按照一定的标准进行分类。文本分类技术具有广泛的用途,公司可以利用该技术了解用户对产品的评价,政府部门也可以利用该技术分析人们对某一事件、政策法规或社会现象的评论,实时了解百姓的态度。
4.智能问答
智能问答是指问答系统能以一问一答的形式,正确回答用户提出的问题。智能问答可以精确地定位用户所提问的知识,通过与用户进行交互,为用户提供个性化的信息服务。
5.信息过滤
信息过滤是指信息过滤系统对网站信息发布、公众信息公开申请和网站留言等内容实现提交时的自动过滤处理。例如,发现谩骂、诽谤等非法言论或有害信息时实现自动过滤,并给用户友好的提示,同时向管理员提交报告。信息过滤技术目前主要用于信息安全防护、网络内容管理等。
6.自动文摘
文摘是指能够全面准确地反映某一文献中心内容的简单连贯的短文,自动文摘则是指利用计算机自动地从原始文献中提取文摘。互联网每天都会产生大量的文本数据,文摘是文本的主要内容,用户想查询和了解关注的话题需要花费大量时间和精力进行选择和阅读,单靠人工进行文摘是很难实现的。为了应对这种状况,学术界尝试使用计算机技术实现对文献的自动处理。自动文摘主要应用于Web搜索引擎、问答系统的知识融合和舆情监督系统的热点与专题追踪。
7.信息抽取
信息抽取是指从文本中抽取出特定的事件或事实信息。例如,从时事新闻报道中抽取出某一恐怖袭击事件的基本信息,如时间、地点、事件制造者、受害人、袭击目标、伤亡人数等。信息抽取与信息检索有着密切的关系,信息抽取系统通常以信息检索系统的输出作为输入,此外,信息抽取技术可以用于提高信息检索系统的性能。
8.舆情分析
舆情分析是指根据特定问题的需要,对舆情进行深层次的思维加工和分析研究,得到相关结论的过程。网络环境下舆情信息的主要来源有新闻评论、网络论坛、聊天室、博客、新浪微博、聚合新闻和QQ等。由于网上的信息量十分巨大,仅仅依靠人工的方法难以应对海量信息的搜集和处理,因此需要加强相关信息技术的研究,形成一套自动化的网络舆情分析系统,以及时应对网络舆情,由被动防堵变为主动梳理、引导。舆情分析是一项十分复杂、涉及问题众多(包括网络文本挖掘、观点挖掘等各方面的问题)的综合性技术。
9.语音识别
语音识别又称自动语音识别,是指对输入计算机的语音信号进行识别并将其转换成文字表示出来。语音识别技术涉及的领域众多,其中包括信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等。
10.自动校对
自动校对是指对文字拼写、用词、语法或文档格式等进行自动检查、校对和编排的过程。电子信息的形成可通过多种途径实现,最常用的方法是用键盘输入,但键盘输入不免会造成一些输人错误,利用计算机进行文本自动校对的研究就由此产生了。自动校对系统可应用于出版、打字业等需要进行文本校对的行业。
NLP不仅是一种新兴的商业技术,更是一种广泛使用的流行技术。几乎所有涉及语言的功能都包含NLP算法。NLP在人们的日常生活中有广泛的应用,常见应用场景如下。
1.百度翻译
百度翻译是百度公司发布的在线翻译服务,其依托互联网数据资源和NLP技术的优势,致力于帮助用户跨越语言鸿沟、方便快捷地获取信息和服务。百度翻译是一款比较成熟的机器翻译产品。此外,还有支持语音输人的多国语言互译的产品,如科大讯飞的机器翻译产品。
2.图灵机器人
智能问答在一些电商网站中具有非常实用的价值,如代替人工充当客服角色。人工客服有时会遇到很多基本而且重复的问题,此时就可以通过智能问答系统公筛选掉大量重复的问题,使人工客服能更好地服务客户。图灵机器人是以语义技术为核心驱动力的人工智能产品,其三大核心功能之一就是智能问答。图灵机器人提供超过500种实用生活服务技能,涵盖生活、出行、学习、金融、购物等多个领域,能提供一站式服务以满足用户的需求。
3.微信语音转文字
微信中有一个将语音转化成文字的功能,其原理就是利用NLP、语音识别等技术,在基于语言模型和声学模型的转写引擎下,将持续语流转写成文字。此功能的好处之一是方便快速阅读和理解,另一个好处是方便对内容进行二次推广和多次利用。成年人正常的语速为160字/分钟,比绝大多数人打字的速度快,微信语音转文字这个功能,可以极大地节省输入文字的时间,提高工作效率。
4.新闻自动分类
新闻自动分类是文本自动分类最常见的一个应用。随着网络信息技术的迅速发展和传统纸媒向信息化媒体的逐渐转型,网络中存在着越来越多的新闻信息积累,传统的手动新闻分类存在耗费大量人力和物力等诸多的弊端。为了提高新闻分类的准确率和速度,新闻自动分类顺理成章地成为发展方向。新闻自动分类有助于实现新闻的有序化管理,以及新闻的挖掘分析。百度就实现了新闻的自动分类,它涵盖军事、财经、娱乐、游戏等多个分类,可以实现每隔一段时间自动获取更新、自动分类等操作。
人工智能技术是让计算机能够通过模仿人类自动化完成智能任务的技术,其关键在于智能和自动化。NLP是人工智能(Artificial Intelligence,AI)研究的一个子领域,也是人工智能中最困难的问题之一。
AI技术的发展大致经历了3次浪潮。20世纪70年代第一次AI浪潮泡沫破灭之后,相关研究者转而研究机器学习、数据挖掘、NLP等方向。20世纪90年代AI迎来第二个黄金时代,但是AI并未真正进人人们日常生活,AI再次进入沉寂期。2008年左右,由于数据量的大幅度增长和计算机性能的大幅度提升,深度学习开始引领AI进入第三次浪潮。人们也逐渐开始将深度学习技术引入NLP领域中,并在机器翻译、问答系统、自动摘要等方向取得成功。深度学习能在NLP中取得这样的成绩的原因可以归结为海量数据的获取和深度学习算法的革新。
互联网的快速发展,使得很多应用积累了足够多的数据用于学习。当数据量增大之后,以支持向量机(Support Vector Machine,SVM)、条件随机场(Conditional Random Field,CRF)为代表的传统浅层模型由于模型过浅,无法对海量数据中的高维非线性映射建模,因此不能带来性能的提升。然而,以循环神经网络(Recurrent Neural Network,RNN)为代表的深度学习模型,可以随着模型复杂度的增大而增强,能更好地贴近数据的本质映射关系,达到更优的效果。
深度学习的词向量模型Word2Vec,可以将词表示为更低维度的向量空间。这既缓解了语义鸿沟问题,又降低了输入特征的维度,从而降低了输入层的维度。深度学习模型非常灵活,这使得之前的很多任务可以通过端到端的方式进行训练,从而提升了模型的性能。
NLP在过去几十年的发展中,从基于简单的规则方法到基于统计学方法,再到现在的基于深度学习神经网络的方法,技术越来越成熟,在很多领域都取得了巨大成就。展望未来10年,随着数据的积累,云计算、芯片技术和人工智能技术的发展等,自然语言必将越来越贴近人工智能。除此之外,随着人工智能各领域的研究细化,跨领域的研究整合将是未来的发展方向。可预见的是,NLP将会和计算机视觉、听觉、触宽寺领域高度融合,反映在人工智能技术上就是语音识别和图像识别,实现包含语言、知识和推理的真正意文上的智能。
NLP研究与应用已经取得较为丰硕的成果,但同时也面临着许多新的挑战。实际上对于NLP的很多问题,人们本身也不能非常准确、满意地解决。当然,开不是说人们不应该对某项技术提出更高的要求和希望,但更重要的是应该如何建立有效的理论模型和实现方法,这也是NLP这门学科所面临的问题和挑战。
NLP的发展已经进入了一个相当繁荣的时期,各行各业中越来越多的内容涉及NLP,这使得NLP的学习成为一种迫切的需要。在实际的学习应用中,自然语言的复杂性和多变性使得学习NLP变得困难。一是多学科交叉的困难。NLP是一门融语言学、计算机科学、数学、统计学于一体的交叉学科。由于教学时间与学习精力是有限的,人们无法做到对每一学科的学习和研究都面面俱到,只能对每个学科浅尝辄止,无法进一步深入学习,因此多学科融合就成为一个学习难点。二是理论学习的困难。NLP运用了多种复杂难懂的数学模型,如概率图模型、隐马尔可夫模型(Hidden Markov Model, HMM)、最大熵模型、条件随机场模型等,这些理论的理解对初学者来说有一定的难度。三是语料获取的困难。在 NLP的实际项目中,通常要使用大量的语言数据或者语料,而初学者要获取这些语料是比较困难的。
中文NLP的基本流程和英文相比有一些特殊性,主要表现在文本预处理环节。首先,中文文本没有像英文单词那样用空格隔开,因此不能像英文一样直接用最简单的空格和标点符号完成分词,一般需要用分词算法完成分词。其次,中文的编码不是utf-8,而是Unicode,因此在预处理的时候,有编码处理的问题。中文NLP的基本流程由语料获取、语料预处理、文本向量化、模型构建、模型训练和模型评价6部分组成。
在进行NLP之前,人们需要得到文本语料。文本语料的获取一般有以下几种方法。
(1)利用已经建好的数据集或第三方语料库,这样可以省去很多处理成本。
(2)获取网络数据。很多时候要解决的是某种特定领域的应用,仅靠开放语料库无法满足需求,这时就需要通过爬虫技术获取需要的信息。
(3)制订数据搜集策略搜集数据。可以通过制订数据搜集策略,从业务的角度搜集所需要的数据。
(4)与第三方合作获取数据。通过购买的方式获取部分需求文本数据。
获取语料后还需要对语料进行预处理,常见的语料预处理如下。
(1)去除数据中非文本内容。大多数情况下,获取的文本数据中存在很多无用的内容,如爬取的一些HTML代码、CSS标签和不需要的标点符号等,这些都需要分步骤去除。少量非文本内容可以直接用 Python的正则表达式删除,复杂的非文本内容可以通过 Python的 Beautiful Soup库去除。
(2)中文分词。常用的中文分词软件有很多,如jieba、FoolNLTK、HanLP、THULAC、NLPIR、LTP等。其中jieba是使用 Python语言编写的,其安装方法很简单,使用“pip install jieba”命令即可完成安装。
(3)词性标注。词性标注指给词语打上词类标签,如名词、动词、形容词等,常用的词性标注方法有基于规则的算法、基于统计的算法等。
(4)去停用词。停用词就是句子中没必要存在的词,去掉停用词后对理解整个句子的语义没有影响。中文文本中存在大量的虚词、代词或者没有特定含义的动词、名词,在文本分析的时候需要去掉。
文本数据经过预处理去除数据中非文本内容、中文分词、词性标注和去停用词后,基本上是干净的文本了。但此时还是无法直接将文本用于任务计算,需要通过某些处理手段,预先将文本转化为特征向量。一般可以调用一些模型来对文本进行处理,常用的模型有词袋模型(Bag of Words Model)、独热表示、TF-IDF 表示、n元语法(n-gram)模型和 Word2Vec模型等。
文本向量化后,根据文本分析的需求选择合适的模型进行模型构建,同类模型也需要多准备几个备选用于效果对比。过于复杂的模型往往不是最优的选择,模型的复杂度与模型训练时间呈正相关,模型复杂度越高,模型训练时间往往也越长,但结果的精度可能与简单的模型相差无几。NLP中使用的模型包括机器学习模型和深度学习模型两种。常用的机器学习模型有KNN、SVM、Naive Bayes、决策树、K-means 等。常用的深度学习模型有RNN、CNN、LSTM、Seq2Seq、FastText、TextCNN等。
模型构建完成后,需要进行模型训练,其中包括模型微调等。训练时可先使用小批量数据进行试验,这样可以避免直接使用大批量数据训练导致训练时间过长等问题。在模型训练的过程中要注意两个问题:一个为在训练集上表现很好,但在测试集上表现很差的过拟合问题;另一个为模型不能很好地拟合数据的欠拟合问题。同时,还要避免出现梯度消失和梯度爆炸问题。
仅训练一次的模型往往无法达到理想的精度与效果,还需要进行模型调优迭代,提升模型的性能。模型调优往往是一个复杂、冗长且枯燥的过程,需要多次对模型的参数做出修正;调优的同时需要权衡模型的精度与泛用性,在提高模型精度的同时还需要避免过拟合。在现实生产与生活中,数据的分布会随着时间的推移而改变,有时甚至会变化得很急剧,这种现象称为分布漂移(Distribution Drift)。当一个模型随着时间的推移,在新的数据集中的评价不断下降时,就意味着这个模型无法适应新的数据的变化,此时模型需要进行重新训练。
模型训练完成后,还需要对模型的效果进行评价。模型的评价指标指主要有准确率(Accuracy)、精确率(Precision)、召回率、F1值、ROC曲线、AUC线等。针对不同类型的模型,所用的评价指标往往也不同,例如分类模型常用的评价方法有准确率、精确率AUC曲线等。同一种评价方法也往往适用于多种类型的模型。在实际的生产环境中,模型性能评价的侧重点可能会不一样,不同的业务场景对模型的性能有不同的要求,如可能造成经济损失的预测结果会要求模型的精度更高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。