type
status
date
slug
summary
tags
category
icon
password
📝主旨内容
一、自然语言处理概述
1、自然语言
自然语言是指汉语、英语、法语等人们日常使用的语言,是自然而然的随着人类社会发展演变而来的语言,而不是人造的语言,它是人类学习生活的重要工具。
概括说来,自然语言是指人类社会约定俗成的,并且区别于人工语言(如计算机程序)的语言。
2、自然语言处理
自然语言处理(NLP)是一门以计算机为工具,对书面或口头形式的语言进行各种处理和加工的技术,同时也是研究人与人交际中以及人与计算机交际中语言问题的一门科学。
NLP是计算机科学领域以及人工智能领域的一个重要的研究方向,是一门融语言学、计算机科学、数学、统计学于一体的科学。
3、NLP的发展历程
NLP的发展大致经历了3个阶段。
(1)1956年以前的萌芽期
二十世纪40年代到50年代之间,在美国还有两个人在进行着重要的研究工作。
乔姆斯基:他的主要工作为对形式语言的研究。
香农:他的主要工作是基于概率和信息论模型的研究。香农的信息论在概率统计的基础上对语言和计算机语言进行研究。
1956年,乔姆斯基提出了上下文无关语法,并将它运用到NLP中。他们的工作直接引起了基于规则和基于概率这两种不同的NLP技术的产生。而这两种不同的NLP方法,又引发了数十年有关基于规则方法和基于概率方法孰优孰劣的争执。
(2)1980年~1999年的快速发展期
1970年以后统计语言学家的出现使得自然语言处理重获新生,并取得了非凡的成就。采用基于统计的方法,IBM将当时的语音识别率从70%提升到90%,同时语音识别的规模从几百单词上升到几万单词,这样语音识别就有了从实验室走向实际应用的可能。
基于统计方法的分词。统计分词的主要思想是把每个词看做是由字组成的,如果相连的字在不同文本中出现的次数越多(概率越大),就证明这段相连的字很有可能就是一个词。
例如中文分词:“自然语言处理的基本概念 ” (自然语言处理 \的 \基本概念)。
20世纪90年代中期,有两件事从根本上促进了自然语言处理研究的复苏与发展。20世纪90年代中期以来,计算机的运行速度和存储量大幅增加,为自然语言处理改善了物质基础,使得语音和语言处理的商品化开发成为可能;1994年Internet商业化和同期网络技术的发展使得基于自然语言的信息检索和信息抽取的需求变得更加突出。
从20世纪90年代末到21世纪初,人们逐渐认识到,仅用基于规则或统计的方法是无法成功进行自然语言处理的。基于统计、基于实例和基于规则的语料库技术在这一时期开始蓬勃发展,各种处理技术开始融合,自然语言处理的研究再次繁荣。
90年代后,基于统计的自然语言处理开始大放异彩。首先是在机器翻译领域取得了突破,因为引入了许多基于语料库的方法。1990年在芬兰赫尔辛基举办的第13届国际计算语言学会议确定的主题是“处理大规模真实文本的理论、方法与工具”,研究的重心开始转向大规模真实文本了,传统的基于规则的自然语言处理显然力不从心了。
(3)21世纪的突飞猛进期(繁荣期)
21世纪之后,自然语言处理又有了突飞猛进的变化。2006年,以 Hinton为首的几位科学家历经近20年的努力,终于成功设计出第一个多层神经网络算法一一深度学习。
这是一种将原始数据通过一些简单但是非线性的模型转变成更高层次、更加抽象表达的特征学习方法,一定程度上解决了人类处理“抽象概念”这个亘古难题。深度学习在机器翻译、问答系统等多个自然语言处理任务中均取得了不错的成果,相关术也被成功应用于商业化平台中。
图灵测试(Turing Test):让人和机器进行交流,如果人无法判断自己交流的对象是人还是机器,就说明这个机器有智能了。
4、NLP研究内容
(1)NLP研究内容包括很多的分支领域,NLP研究内容包括很多的分支领域,如文本分类、信息抽取、信息检索、信息过滤、自动文摘、智能问答、话题推荐、机器翻译、主题词识别、知识库构建、深度文本表示、命名实体识别、文本生成、文本分析(词法、句法和语法)、舆情分析、自动校对、语音识别与合成等。
(2)部分NLP分支领域的介绍如下。
机器翻译:计算机具备将一种语言翻译成另一种语言的能力。
机器翻译又称为自动翻译,是利用计算机将一种自然语言转换为另一种自然语言的过程。机器翻译是计算语言学的一个分支,是人工智能的终极目标之一,具有重要的科学研究价值。
机器翻译 是自然语言处理中最为人所熟知的场景,国内外有很多比较成熟的机器翻译产品,如百度翻译等,还有提供支持语音输入的多国语言互译的产品(比如科大讯飞就出了一款翻译机)。
信息检索:
信息检索又称情报检索,是利用计算机系统从海量文档中找到符合用户需要的相关信息。
狭义的信息检索:仅指信息查询。
广义的信息检索:是信息按一定的方式进行加工、整理、组织并存储起来,再根据信息用户特定的需要将相关信息准确的查找出来的过程。
文本分类:
文本分类又称文档分类或信息分类,其目的是利用计算机系统对大量的文档按照一定的标准进行分类,该技术拥有广泛的用途,例如垃圾短信分类问题。
情感分析:计算机能够判断用户评论是否积极。
智能问答:计算机能够正确回答输入的问题。
智能问答是指问答系统能以一问一答的形式,正确回答用户提出的问题。
在一些电商网站有非常实际的价值,比如代替人工充当客服角色,有很多基本而且重复的问题,其实并不需要人工客服来解决,通过智能问答系统可以筛选掉大量重复的问题,使得人工座席能更好地服务客户。
信息过滤:
信息过滤是指信息过滤系统对网站信息发布、公众信息公开申请和网站留言等内容实现提交时的自动过滤处理。
如发现谩骂、诽谤等非法言论或有害信息时可以实现自动过滤,并给用户友好的提示,同时向管理员提交报告。
信息过滤技术目前主要用于信息安全防护、网络内容管理等。
文摘生成:计算机能够准确归纳、总结并产生文本摘要。
文摘是指能够全面准确地反映某一文献中心内容的简单连贯的短文,自动文摘则是指利用计算机自动地从原始文献中提取文摘。
互联网每天都会产生大量的文本数据,文摘是文本的主要内容,用户想查询和了解关注的话题需要花费大量时间和精力进行选择和阅读,单靠人工进行文摘是很难实现的。为了应对这种状况,学术界尝试使用计算机技术实现对文献的自动处理。
自动文摘主要应用于Web搜索引擎、问答系统的知识融合和舆情监督系统的热点与专题追踪。
信息抽取:
信息抽取是指从文本中抽取出特定的事件或事实信息。
例如,从时事新闻报道中抽取出某一恐怖事件的基本信息,如时间、地点、事件制造者、受害人、袭击目标、伤亡人数等。
信息抽取与信息检索有着密切的关系,信息抽取系统通常以信息检索系统的输出作为输入,并且信息抽取技术可以用于提高信息检索的性能。
文本分类:计算机能够采集各种文章,进行主题分析,从而进行自动分类。
舆情分析:计算机能够判断目前舆论的导向。
舆情分析是指根据特定问题的需要,对舆情进行深层次的思维加工和分析研究,得到相关结论的过程
舆情分析是一项十分复杂、涉及问题众多的综合性技术,同时也涉及网络文本挖掘、观点挖掘等各方面的问题。
舆情分析 可以帮助分析哪些话题是目前的热点,分析传播路径以及发展趋势,对于不好的與论导向可以进行有效的控制。
知识图谱:知识点相互连接而成的语义网络。
语音识别:
语音识别又称自动语音识别,是指对输入计算机的语音信号进行识别并转换成书面语言表示出来。
语音识别技术所涉及的领域众多,其中包括信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等。
自动校对:
自动校对是对文字拼写、用词、语法或文档格式等进行自动检查、校对和编排的过程。
电子信息的形成可通过多种途径,最通常的方法是用键盘输入,因而不免会造成一些输入错误,由此产生了利用计算机进行文本自动校对的研究。
自动校对系统可应用于报刊、出版社、打字业等需要进行文本校对的行业。
5、NLP的几个应用场景
(1)百度翻译
百度翻译是百度公司发布的在线翻译服务,其依托互联网数据资源和NLP技术的优势,致力于帮助用户跨越语言鸿沟,方便快捷地获取信息和服务。百度翻译是一款比较成熟的机器翻译产品。
(2)图灵机器人
图灵机器人是以语义技术为核心驱动力的人工智能产品,其三大核心功能之一就是智能问答。图灵机器人提供超过了500种实用生活服务技能,涵盖生活、出行、学习、金融、购物等多个领域,能提供一站式服务满足用户的需求。
(3)微信语音转文字
微信中有一种将语音转化成文字的功能,其中的原理就是利用NLP、语音识别等技术,在基于语言模型和声学模型的转写引擎下,将持续语流转写成文字。
此技术的好处之一是方便快速阅读和理解,另一好处是可以方便对内容的二次推广以及多次利用。
成年人正常的语速为160 字/分钟,语速比绝大多数人打字的速度都快,微信语音转文字功能的加入,可以极大地节省时间,提高工作效率。
(4)新闻分类
网络中存在越来越多的新闻信息积累,传统的手工新闻分类存在耗费大量人力和物力等诸多的弊端。
为了提高新闻分类的准确率和速度,新闻自动分类成为了发展方向。新闻分类有助于实现新闻的有序化管理,并对新闻进行挖掘分析。
百度就实现了新闻的分类,它涵盖了军事、财经、娱乐、游戏等多个分类,可以实现每隔一段时间自动获取更新,自动分类等操作,百度新闻分类如下图所示。
6、NLP与人工智能技术
NLP是人工智能研究的一个子领域,也是人工智能中最为困难的问题之一。
人工智能技术即是让机器能够像人类一样自动化完成智能任务的技术,其关键点在于智能和自动化。
(1)人工智能的发展历程、
人工智能在1955年达特茅斯特会议上被提出,而后人工智能先后经历了三次浪潮。
·20世纪70年代第一次AI浪潮泡沫破灭之后,相关研究者转而研究机器学习、数据挖掘、NLP等各个方向。
·1990年AI迎来第二次黄金时代,但是随着第五代计算机研制的失败,人工智能再次进入沉寂期。
·2008年左右,由于数据量的大幅度增长和计算力的大幅度提升,深度学习开始引领人工智能进入第三波浪潮。
深度学习引入到NLP领域中,在机器翻译、问答系统、自动摘要等方向取得成功。
(2)深度学习与NLP
深度学习可以在NLP中取得这样的成绩主要归结为两点。
·海量的数据。经过之前互联网的发展,积累了足够多的数据可以用于学习。当数据量增大之后,以支持向量机(SVM)、条件随机场 (CRF)为代表的传统浅层模型,无法对海量数据中的高维非线性映射做建模。以循环神经网络(RNN)为代表的深度模型,可以随着模型复杂度的增大而增强,更好贴近数据的本质映射关系,达到更优的效果。
·深度学习算法的革新。一方面,深度学习的word2vec的出现,可以将词表示为更加低维的向量空间,相对于one-hot方式,这既缓解了语义鸿沟问题,又降低了输入特征的维度,从而降低了输入层的维度,另一方面,深度学习模型非常灵活,使得之前的很多任务,可以使用端到端的方式进行训练,提升了性能。
7、学习NLP的困难
多学科场景的困难。NLP是一门融语言学、计算机科学、数学、统计学于一体的交叉学科,语言的多样性多变性以及歧义性给NLP的学习带来了困难。
理论学习的困难。NLP运用了多种复杂难懂的数学模型、例如概率图模型、隐马尔可夫过程(HMM)、最大熵模型、条件随机场模型(CRF)等,这些理论的理解对初学者来说有一定的难度。
语料的困难。在NLP的实际项目中,通常要使用大量的语言数据或者语料,对应初学者来说,获取这些语料是比较困难的。
二、NLP基本流程
中文NLP流程和英文相比有一些特殊性,主要表现在文本预处理环节。
·首先,中文文本是没有像英文的单词空格那样隔开,因此不能直接像英文一样可以直接用最简单的空格和标点符号完成分词。一般需要用分词算法完成分词。
·其次,中文的编码不是utf-8,而是unicode,在预处理的时候,需要处理编码的问题。这两点构成了中文相比英文的一些不同点。
中文NLP流程由语料获取、语料预处理、文本向量化、模型构建、模型训练和模型评价6部分组成。
(1)语料获取
在NLP之前,需要得到文本语料。文本语料的获取一般有下面几种方法。
·利用已经建好的数据集,或第三方语料库,这样可以省去很多处理成本。
·获取网上数据。很多时候所要解决的是某种特定领域的应用,仅靠开放语料库经常无法满足需求,这就需要用爬虫技术去获取需要的信息。
·制定数据搜集策略来搜集数据。可以通过制定数据搜集策略,从业务的角度来搜集所需要的数据。
·与第三方的合作获取数据。通过购买的方式满足部分需求文本数据。
(2)语料预处理
·去除数据中非文本部分。大多数情况下,获取的文本数据存在很多无用的部分,如爬取来的一些html代码、css标签和不需要用的标点符号等,这些都需要分步骤去除。少量的非文本内容可以直接用Python的正则表达式删除,复杂的非文本内容可以通过Python的一个库Beautiful Soup去除。
·中文分词。中文文本没有像英文单词空格那样隔开的,因此不能直接像英文一样可以直接用空格和标点符号完成分词。中文文本一般需要用分词算法完成分词。常用的中文分词软件有很多,如jieba、FoolNLTK、HanLP、THULAC、NLPIR、LTP等,本书使用jieba库为分词工具。jieba库是使用Python语言编写的,其安装步骤很简单,使用pip install jieba命令即可完成。
·词性标注。给词语标上词类标签,比如名词、动词、形容词等,常用的词性标注方法有基于规则的、基于统计的算法等。
·去停用词。停用词就是句子中没必要的单词,去掉停用词对理解整个句子的语义没有影响。中文文本中存在大量的虚词、代词或者没有特定含义的动词、名词,在文本分析的时候需要去掉。
(3)文本向量化
·词袋模型(Bag of Words)
·one-hot表示
·TF-IDF表示
·n元语法(n-gram)模型
·Word2vec模型。
(4)模型构建
·机器学习模型:KNN、SVM、Naive Bayes、决策树、K-means等
·深度学习模型:RNN、CNN、LSTM、Seq2Seq、FastText、TextCNN 等
(5)模型训练
构建模型完成后,则进行模型训练,其中包括了模型微调等。
在模型训练的过程中要注意两个问题。
一个为在训练集上表现很好,但在测试集上表现很差的过拟合问题。
另一个为模型不能很好地拟合数据的欠拟合问题。
同时,也要防止出现梯度消失和梯度爆炸问题。
仅训练一次的模型往往无法达到理想的精度与效果,需要进行模型调优迭代,提升模型的效果。
模型调优往往是一个复杂冗长且枯燥的过程,需要多次对模型的参数做出修正,调优的同时需要权衡模型的精度与泛用性,在提高模型精度的同时还需要避免造成过拟合。
(6)模型评价
模型训练完成后,还需要对模型的效果进行评价。
模型的评价指标主要有准确率、精确率、召回率、F1值、ROC曲线、AUC曲线等。
针对不同类型的模型,所用的评价指标往往也不同。如分类模型常用的评价方法有准确率(Accuracy)、精确率(Log loss)、AUC等。
同一种评价方法也往往适用于多种类的模型。对于实际的生产环境,模型性能评价的侧重点也不一样,不同的业务场景对模型的性能有不同的要求,如可能造成经济损失的预测结果会要求更高的模型精度
三、NLP的开发环境
python
anaconda
Spyder
致谢:
欢迎您在底部评论区留言,一起交流~
- 作者:昕昕丶未来不是梦
- 链接:https://pisce.buzz/article/nlp01
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。