自然语言处理这样学,你也能造出人工智能

【自然语言处理这样学,你也能造出人工智能】_原题为:自然语言处理这样学,你也能造出人工智能
算法领域训练模型,被戏称为炼丹
通讯,书籍,消息,短信,歌曲,电影……我们很难想象没有语言的世界 。
我们每天要面对非常多的文本和语音数据,而自然语言处理要做的,就是如何理解这些数据中并做一些有趣的事情 。
目前我们接触到的视频聊天,自动售货机,无人机等等都属于自然语言处理的研究范畴,自然语言处理就是要培养人工智能来代替我们人类做这些事情,这门技术目前也是我们研究的热点 。
自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学、人工智能及语言学的交叉学科,这门学科所研究的内容是如何通过机器学习等技术,让计算机学会处理人类的语言,最终实现理解人类语言或者打造出人工智能的目标 。
可以看出自然语言处理所研究的内容的深度和广度是很大的,因此学习自然语言处理的过程是很漫长的,我认为学习自然语言处理的路线可以分为两部分:明确NLP的研究问题,找大量的书籍、资料、资源和向前辈学习,自己自学的道路是不太行得通的,因为这部分内容过于复杂和抽象 。
大家可以按照我下面这个思维导图来进行学习:
下面我就按照思维导图来给大家一点点介绍:
首要了解:NLP的研究方向在正式学习之前,我们首先要来了解一下自然语言处理的研究方向,有了方向感大家就可以根据自己的兴趣选择一个分支来入门,这样学习起来更轻松 。
所谓自然语言处理,即NLP,就是通过用计算机来处理人类的语言、文字,从而可以代替人类做一些文书类的工作,例如咨询、售后、海量数据处理以及公文阅读与处理等 。基于此,NLP领域延伸处理种类繁多的任务,这里我总结了文本向量化、命名实体识别-NER、文本分类、信息提取这四大类NLP任务,做一个介绍 。
文本向量化
文本的向量化可谓是NLP进入深度学习时代的标志 。所谓文本的向量化(embedding),就是将文本用一定维度的向量来表示,也可以理解为文本的数值化 。通过embedding,文本的语义、句法等特征得以表征,便于下游模型的处理 。
例如,“人/如果/没有/梦想/,/跟/咸鱼/还有/什么/差别”,向机器学习模型直接输入字符串显然是不明智的,这样直接输入机器是不识别的,毕竟是电脑不是人脑,不便于模型进行计算和文本之间的比较 。
那么,我们需要一种方式来表示一个文本,这种文本表示方式要能够便于进行文本之间的比较,计算等 。
最容易想到的,就是对文本进行向量化的表示 。例如,根据语料库的分词结果,建立一个词典,每个词用一个向量来表示,这样就可以将文本向量化了 。
这里面我们可以看到,用king,man,woman来合成queen 。这里可以把前三项看作三个向量,做一个线性组合,就可以得到queen这个词,这就像线性代数里面的线性相关性一样,queen代表某个向量,king,man,woman代表基底,queen是这三个基底的线性表示 。
命名实体识别-NER
命名实体识别(Named Entity Recognition,NER)是NLP中一项非常基础的任务 。NER是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础工具 。
要了解NER是一回什么事,首先要先说清楚,什么是实体 。要讨论实体的理论概念,可能会花上一整天的时间,我们不过多纠缠 。
简单的理解,实体,可以认为是某一个概念的实例 。例如,“人名”是一种概念,或者说实体类型,那么“王力宏”就是一种“人名”实体了 。“时间”是一种实体类型,那么“中秋节”就是一种“时间”实体了 。
所谓实体识别,就是将你想要获取到的实体类型,从一句话里面挑出来的过程 。
如上面的例子所示,句子“小明在北京大学的燕园看了中国男篮 的一场比赛”,通过NER模型,将“小明 “以PER,“北京大学”以ORG,“燕园”以LOC,“中国男篮”以ORG为类别分别挑了出来 。
命名实体识别的数据标注方式
NER是一种序列标注问题,因此他们的数据标注方式也遵照序列标注问题的方式,主要是BIOES 。先列出来BIOES分别代表什么意思:
将“小明在北京大学的燕园看了中国男篮的一场比赛”这句话,进行标注,结果就是:
那么,换句话说,NER的过程,就是根据输入的句子,预测出其标注序列的过程 。
文本分类
文本分类是一个不难理解的概念,即通过计算机对输入文本进行分类,例如判断“你真是个帅哥啊”这句话是褒义还是贬义 。文本分类的应用场景很多,例如情感分类、机器人中的意图识别等 。
听上去,分类问题似乎是个不难解决的问题,实际上文本分类有它的难度 。
当类别非常多或者类别与类别之间差异很小时,文本分类就开始变得困难;再者,有时需要考虑额外特征才能分类正确,例如常常需要根据说话者语气,才能判断“你真是个帅哥啊”这句话是讽刺还是真心的赞美 。
早期有一些基于传统机器学习的文本分类,例如基于某种词语特征的的贝叶斯模型,SVM分类器等 。
信息提取
信息提取(IE)的目标是将文本信息转化为结构化信息,起初用于定位自然语言文档中的特定信息 。
广泛地看,信息提取其实是一个非常宽泛的概念,从文本提出感兴趣的内容就可以称为信息提取 。
在NLP中常常用实体抽取、关系抽取 。
实体抽取是序列标记问题,上面的命名实体识别已经介绍过,关系抽取以及事件抽取则通常转化为分类的任务 。关系抽取常常需要先确认subject(主观)以及object(客观) 。所以,关系抽取任务常常伴随着实体抽取的要求 。
信息提取的应用比如说拿来一篇论文,我们就可以识别出它的作者,发表年份,摘要,关键词等重要信息 。
了解过后,开启学习模式:学习NLP上文说了四个和自然语言处理有关的研究了问题,想必大家一定会有自己感兴趣的部分,我比较感兴趣的是NER—命名实体识别技术,给机器编码就能识别人类的语言,这让我觉得有些不可思议 。
下面给大家详细讲解一下如何去学习自然语言处理 。
自学阶段:NLP学习书籍推荐—《统计自然语言处理基础》
自然语言处理的学习和统计是息息相关的,因为涉及到大量的数据处理,数据处理是离不开统计学的知识的 。
这本书是纯英文书籍,对于英文不太好的朋友来说可能读起来比较吃力,当然现在的翻译软件很强大这些应该都不是问题 。这里可以给大家推荐一款翻译软件—知云文献翻译,大家边看边用这个翻译就不用担心看不懂的问题了 。
我认为这本书比较好的一点是在每个章节的最后一部分都有一个深入学习和习题练习的部分,让读者更多的去发散思维,去练习巩固 。深入学习的部分很多都是这个领域最前沿的研究成果,大家一定要珍惜资源,确实是来之不易的!
这本书主要分为四个部分,首先是介绍部分,里面会讲解自然语言处理学习的数学基础,第二部分会给大家介绍一些基本术语,让大家对自然语言处理中的一些概念有一个基本的了解,第三部分会给大家介绍一些算法和模型理论,最后一部分则是自然语言处理的一些应用 。
总的来说这本书介绍的内容算是比较全面的,下面可以给大家简单介绍一下这几部分的内容:
第一部分:主讲数学基础
在数学基础这一部分里面这本书主讲了统计学的部分,像事件的运算律,条件概率的计算,贝叶斯公式的推导等等,这些公式要牢记,自然语言处理中构建概率统计模型会用到这些公式的推导 。
第二部分:介绍基础概念
第二部分介绍了一些自然语言处理中的基础概念,其实更多的还是偏向统计学,比如说t检验,假设检验,极大似然估计,协方差等等 。这里更多的是讲解构造模型之后的模型优化方法,以及如何检验模型的精确性等等 。
第三部分:介绍一些算法和模型:
有了前面两部分的基础,在第三部分开始介绍算法和模型了,比如马氏链,隐马尔可夫模型,文本标注,词类标注等等,这也是我在介绍中提到的识别方面的问题 。
第四部分:自然语言处理的应用
这里我举一个K-means聚类分析的例子,这个例子主要说明这个算法的本质是什么样的,将样本集合划分为k个子集,随机选取k个样本点为类中心,然后计算其他样本点到则k个中心的距离,最小的归为一类,这样得到一个新的类,然后计算这k个类的中心,在按照开头的方法计算距离,重新划分,如果最后类没有变化,则停止聚类,若有变化,则继续迭代,直到没有变化为止 。
这种聚类方法最多的应用还是在于文字识别,把文字相似的编码放在一起,这样会提高机器的识别效率 。
这样的例子在最后一部分还有很多,比如说支持向量机,决策树,朴素贝叶斯算法的应用等等 。
附加说明
这本书其实学起来是比较难的,不适合基础弱的小白去学习,我建议如果你的基础比较差的话,去加强一下高等数学基础,去看茆诗松《概率论与数理统计》,华东师范大学出版的《数学分析》上下册,北京大学出版的《高等代数》 。把这三部分内容看完,差不多就能打好基础了,再来学这本书也就不吃力了 。
向前辈学习:网课推荐—贪心科技NLP算法课程
看书的过程是一个自学的过程,我们不仅要自学自己独立思考,还要向前辈们取取经 。这里我向大家推荐贪心科技的NLP算法课程 。这门课程介绍了很多关于NLP的算法,比如情感分析,文本识别,分类,回归,聚类等等 。干货有很多,下面让我来给大家一一介绍:
首先给大家看一下课程学习安排,可以看到课程分为试学课程和正式课程 。
试学课程里面会给大家介绍一些基本的概念,比如说机器学习,深度学习,这两个都是自然语言处理学习的重要分支 。还会介绍一些向量,矩阵,线性回归等数学方面的知识,数学忘了的朋友在这里可以捡一捡 。大家可以在试学课程里面“热热身”,做做准备活动为正式上战场做准备,打个预防针 。
正式课程里面就是介绍很多的算法和应用了,像比如说逻辑回归,神经网络,支持向量机这些都是比较经典的算法,还有一些应用比如说金融评分卡模型的搭建,广告点击率预测等,能看出来NLP的应用还是很广泛的 。
课程中还为大家提供了明确的学习路径,学习路线里面也告诉了大家初级阶段和高级阶段大家要去学什么,我建议大家如果是学自然语言处理的话学初级阶段的三个课程就够了,高级课程难度有些过于高,适合专业的高级算法工程师去学习 。
在必备基础这一部分,老师重点提到了编程基础是核心,我们至少要掌握一种编程语言,在这里我给大家推荐学习Python,Python编程语法相对来说简单,易掌握,而且Python在处理数据方面功能强大,是学习NLP的好工具 。
我这里可以给大家推荐下面这本书来学习Python,这本书讲的很基础,包括Python的安装,字符,变量类型到函数的调用等等,源代码很详细,方便大家上机去操作 。
在每节课程开始之前,都有一道选择题来帮助大家先了解一下课程内容,在正式课程上面也有一段话来介绍即将要讲的课程是什么,我觉得这是比较人性化的,会起到一个预习的效果 。
在课程视频里面你会看到老师和你面对面,老师一边讲课会一边用笔在上面写,几乎就和在教室里面上课差别不大,方便大家可以边记笔记边听课 。
这门课程一共十八个章节,除了第一章介绍基础之外别的几乎都是在介绍算法和应用,内容都是满满干货,绝无水分!
全文小结自然语言处理的学习过程很难也很复杂,学起来并不轻松,大家要保持一个好的心态,很难做到所有分支都弄懂,能精通一个分支就很厉害了,大家就撸起袖子加油干吧,按照我开头的思维导图去学习,没有过不去的坎,没有学不会的知识!返回搜狐,查看更多

    推荐阅读