人工智能中的自然语言处理基本概念
自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。主要的目标是使用计算机相关方法、算法和技术,分析、处理、理解人类的语言。虽然人类的不同语言之间有差别,但是有些算法和技术,是通用的。
自然语言处理的应用场景非常广泛,主要包括机器翻译、舆情监测与分析、自动摘要抽取与生成、观点提取、文本分类、问题回答(专家系统)、文本语义对比、语音识别、中文OCR、文本自动生成等方面,可以说跟我们的日常生活息息相关。
接下来的一系列文章的主要目的,是为初学者介绍自然语言处理中的一些相关算法、原理和技术,引导读者入门,能够对自然语言处理的相关概念、方法、算法、技术等,有一个初步的认识和印象。
限于篇幅,一些细节方面并没有深入下去,也无法做到面面俱到,读者有兴趣的,可以继续查阅网络资料、相关文献进行深入的学习和研究。
另外需要说明的是,这只是一系列的博客文章,并不是严谨的科学论文,在很多描述上,采用了通俗的、口语化的、轻松的描述方式,更加科学的推理与证明,需要阅读科学文献来进行获取。
自然语言处理应用领域分类机器翻译就是将人类的一种语言翻译成另外一种语言。当然,随着技术的不断进步,机器翻译已经不仅仅是在人类语言之间进行翻译,还可以将人类的语言翻译成程序代码,完成程序的自动生成;还可以将一副图像,翻译成一句话进行讲解,这些都可以被认为是机器翻译的应用范畴。
舆情监测与分析通过对网上的文本进行分析,查看大家对一个事情的看法(正面还是负面),例如对一个产品的评价,可以通过采集用户对商品的评价文本,分析有多少用户对产品满意,有多少给了负面评价,进一步的,还可以分析出用户满意和不满意的关键点是什么。
自动摘要抽取与生成通过对文本进行分析,自动提炼出摘要(关键信息)。又分两个方向,一个是摘要抽取,一个是摘要生成。摘要抽取一般来说,是将一篇文档中的关键字提炼出来,形成一句或者一段还算比较通顺的话,这些词语,是在本来的文章中就存在的。摘要生成,指的是为一篇文档生成一段话,提取核心思想,这些词语,有可能并不是原文档中存在的,而是通过对文档的语义理解,生成新的词语,可以认为是对文档的解读。
观点提取观点提取的含义,与摘要生成比较类似,但是更加主观一些,相当于对文档内容进行更深层次的解读,有可能大部分的词语都不是原文档中存在的,而是使用更加通俗易懂的语言,对一些专业的、晦涩难懂的文档进行重新提炼。
文本分类是最重要的自然语言处理应用之一。其核心目的,是通过分析一批文档的内容,将他们分成不同的类别。通过对文档进行分类,可以实现评价的自动分析(正面评价、负面评价)、文件的自动归类与整理、新闻咨询的推荐与自动推送等各种功能。
问题回答也可以被称为专家系统。通过搜集整理大量的语料,为每一个问题生成一个答案,广泛应用于各种智能客服、专家提问与解答等系统中。
除此之外,自然语言处理的应用场景还有很多,例如对于语义的理解、语音的识别与理解等,都可以被认为是自然语言处理中的一部分。
为了完成对自然语言的处理,需要对相关的概念、技术,有一个初步的认识和印象。
自然语言处理的基本概念语料库语料库(Corpus)指的是经科学取样和加工后的电子文本(音频)库,其中存放的是在自然语言的实际使用中真实出现过的语言材料。
换句话说,语料库,其实就是我们需要处理和分析的所有文本的集合。在很多计算机领域中,也可以被称为数据集。一般来说,语料库是自然语言处理中对数据集的特殊称呼,从作用上来看,它们和其他领域的数据集并没有本质的区别。
语料存在的形式可以是多种的,例如存入数据库中,或者简单的文本文件等,只要能够被分析和处理程序进行简单的读取,就可以。
语料库的大小可谓千差万别。如果要做商品的评价分析,那么可能只需要得到这个商品的1万条评价就可以了;如果要对中国的古典文学进行研究和分析,或许,语料库需要1000本古典名著;如果要对互联网进行舆情监控,那么大概率,需要100亿个网页的数据才能做到。
同时,语料库的复杂程度也不相同。如果是为了进行文本分类等任务,那么使用单一语种的语料库就可以(单语的,Monolingual)。如果是翻译任务,可能还需要多语种语料库(双语的,Bilingual,和多语的,Multilingual)。另外,在翻译任务中,可能还需要平行语料库。所谓平行语料库,指的是对于一种语言的一个文档,一定有另外一种语言的同样内容(含义)的文档与之相对应。传统的翻译算法,基本上都构建在平行语料之上。
从标注的角度来说,语料库又可以分为带有标注信息的监督学习语料库和不带有标注信息的非监督学习(半监督学习)语料库。所谓的监督学习语料库,指的是带有标注信息。标注信息指的是,对语料要表达的含义进行了说明,这种说明叫做标注(Label)。例如,对于一个酒店的评价,有正面的,有负面的。可是,通常情况下,评价作者并不会在评论中明确说出他的评价是正面的还是负面的,如果我们的任务是区分以后的评价是正面还是负面,就需要对已有的数据进行区分,标注出哪些条目(评价)是正面的,哪些是负面的。如果只有正面和负面的区分,一般来说用0和1来进行标注。
同样的,对于文本分类,标注的意思是,在进行处理之前,对语料库中的数据进行说明,哪一个文档属于哪一个分类,这样,人工智能等算法,才能从中学习到规律。
语料库的质量,也有很大的差异。最典型的是用于翻译的平行语料库。平行语料库要求对于任何一个文档,一定有另外一个语言的、能够表述同样含义的语料与之对应,那么这个所谓的相同含义,质量就有很大的差异了。很多平行语料库的作者,是从网上一些英语教学、翻译网站采集的由普通用户翻译的语言文本,当成是正确、准确、权威的翻译,来组成一个平行语料,这在很大程度上会影响平行语料库的质量。
一般来说,语料库有几个特点:
必须是真实的。自然语言处理中的自然,当然指的就是人类真正在使用的语言。所以,一个合格的语料库中的文字,必须是真实的,由人类在自然的生活过程中产生的,不能够或者说,也不应该,由机器或者其他任何方式来生成。当然,在一些算法中,为了解决数据不平衡问题,可能会生成一些文本来提升算法的性能,但是那是在处理过程中,原始的语料库必须是真实的。语料库应该是原始的。一个优秀的语料库,应该是原汁原味的,没有经过特殊加工的。一旦语料库被加工过,那么很多信息可能会丢失。一般来说,语料库来自于网上公开的数据集,采用这种数据集有很多好处:省去自己采集和标注的烦恼;可以和现有的算法直接进行比较(因为采用了同样的语料库)。当然,如果无法找到现成的语料库,也可以根据自己的需要自行创建。采集和创建的方法千差万别,这里就不再赘述了。
数据预处理拿到语料库之后,首先要做的事情,就是数据的预处理工作。数据的预处理工作,主要目的是为了让数据更加符合分析和处理的要求。数据预处理的手段主要包括:语料清洗、分词、词性标注、去停用词、词频统计等。
数据清洗。语料清洗即保留语料中有用的数据,删除噪音数据。常见的清洗方式有:人工去重(去掉重复数据)、对齐(一般应用于平行语料)、删除(包括一些特殊符号、标点符号:在大部分的场景下,标点都没有用、html标签:一般应用于一些网上采集的数据、表情符号)、标注(一般应用于没有标注的数据集,进行手动标注)、大写转小写(应用于英语等区分字母大小写的语料)等。此外,噪音数据还包括文本错误、缺失、异常等。清洗的方法包括手动处理,或者通过开发小工具、编写简短的小程序来进行数据清洗。分词。文本分词,即将文本分成一个一个的词语,是某些语言(中文)特殊的数据预处理手段。英语等语言,使用空格将词语分开,因此,大多数情况下,不需要单独进行分词处理。常用的分词方法有基于规则的、基于统计的分词方法,而统计的样本内容来自于一些标准的语料库。当然,现在已经有很多分词算法可供选择,可以根据需要尝试适合自己语料的分词算法。词性标注。这是一类特殊的预处理手段,一般应用于语义理解任务中。词性标注指的是为分词结果中的每个词标注正确的词性,即确定每个词是名词、动词、形容词或其他词性的过程。词性标注有多个重要作用:第一,消除歧义。一些词在不同语境或不同用法时表示不同的意思;第二,强化基于单词的特征。此外,词性标注还具有标准化、词形还原,以及有效移除停用词的作用。常用的词性标注方法有基于规则的、基于统计的算法,比如:最大熵词性标注、HMM词性标注等。去停用词。关于什么是停用词,后续的文章还有更详细的说明。简短说,停用词就是一些没有具体含义的词语,比如中文的“吧”,是一种语气助词,通常来说是没有含义的,可以从文本语料库中直接去掉。一般来说,某些研究机构会公布他们认为的停用词表,通过查询这张表,能够很容易的将所有停用词从语料库中去除。词频统计。词频统计即统计分词后文本的词频,目的是找出对文本影响最大的词汇,是很多自然语言处理算法中必须要得到的数据,因此,可以提前将所有词频统计出来,甚至还可以根据每一个文档统计词频,以备后续处理时使用。一文看懂自然语言处理
网络上有海量的文本信息,想要处理这些非结构化的数据就需要利用NLP技术。
本文将介绍NLP的基本概念,2大任务,4个典型应用和6个实践步骤。
NLP为什么重要?“语言理解是人工智能领域皇冠上的明珠”
比尔·盖茨
在人工智能出现之前,机器智能处理结构化的数据(例如Excel里的数据)。但是网络中大部分的数据都是非结构化的,例如:文章、图片、音频、视频…
在非结构数据中,文本的数量是最多的,他虽然没有图片和视频占用的空间大,但是他的信息量是最大的。
为了能够分析和利用这些文本信息,我们就需要利用NLP技术,让机器理解这些文本信息,并加以利用。
什么是自然语言处理–NLP每种动物都有自己的语言,机器也是!
自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。
人类通过语言来交流,狗通过汪汪叫来交流。机器也有自己的交流方式,那就是数字信息。
不同的语言之间是无法沟通的,比如说人类就无法听懂狗叫,甚至不同语言的人类之间都无法直接交流,需要翻译才能交流。
而计算机更是如此,为了让计算机之间互相交流,人们让所有计算机都遵守一些规则,计算机的这些规则就是计算机之间的语言。
既然不同人类语言之间可以有翻译,那么人类和机器之间是否可以通过“翻译”的方式来直接交流呢?
NLP就是人类和机器之间沟通的桥梁!
为什么是“自然语言”处理?
自然语言就是大家平时在生活中常用的表达方式,大家平时说的「讲人话」就是这个意思。
自然语言:我背有点驼(非自然语言:我的背部呈弯曲状)
自然语言:宝宝的经纪人睡了宝宝的宝宝(微博上这种段子一大把)
NLP的2大核心任务NLP有2个核心的任务:
自然语言理解–NLU|NLI自然语言生成–NLG自然语言理解–NLU|NLI
自然语言理解就是希望机器像人一样,具备正常人的语言理解能力,由于自然语言在理解上有很多难点(下面详细说明),所以NLU是至今还远不如人类的表现。
自然语言理解的5个难点:
语言的多样性语言的歧义性语言的鲁棒性语言的知识依赖语言的上下文想要深入了解NLU,可以看看这篇文章《一文看懂自然语言理解-NLU(基本概念+实际应用+3种实现方式)》
自然语言生成–NLG
NLG是为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等。
NLG的6个步骤:
内容确定–ContentDetermination文本结构–TextStructuring句子聚合–SentenceAggregation语法化–Lexicalisation参考表达式生成–ReferringExpressionGeneration|REG语言实现–LinguisticRealisation想要深入了解NLG,可以看看这篇文章《一文看懂自然语言生成-NLG(6个实现步骤+3个典型应用)》
NLP的5个难点语言是没有规律的,或者说规律是错综复杂的。语言是可以自由组合的,可以组合复杂的语言表达。语言是一个开放集合,我们可以任意的发明创造一些新的表达方式。语言需要联系到实践知识,有一定的知识依赖。语言的使用要基于环境和上下文。NLP的4个典型应用情感分析
互联网上有大量的文本信息,这些信息想要表达的内容是五花八门的,但是他们抒发的情感是一致的:正面/积极的–负面/消极的。
通过情感分析,可以快速了解用户的舆情情况。
聊天机器人
过去只有Siri、小冰这些机器人,大家使用的动力并不强,只是当做一个娱乐的方式。但是最近几年智能音箱的快速发展让大家感受到了聊天机器人的价值。
而且未来随着智能家居,智能汽车的发展,聊天机器人会有更大的使用价值。
语音识别
语音识别已经成为了全民级的引用,微信里可以语音转文字,汽车中使用导航可以直接说目的地,老年人使用输入法也可以直接语音而不用学习拼音…
机器翻译
目前的机器翻译准确率已经很高了,大家使用Google翻译完全可以看懂文章的大意。传统的人肉翻译未来很可能会失业。
NLP的2种途径、3个核心步骤NLP可以使用传统的机器学习方法来处理,也可以使用深度学习的方法来处理。2种不同的途径也对应着不同的处理步骤。详情如下:
方式1:传统机器学习的NLP流程
语料预处理中文语料预处理4个步骤(下文详解)英文语料预处理的6个步骤(下文详解)特征工程特征提取特征选择选择分类器方式2:深度学习的NLP流程
语料预处理中文语料预处理4个步骤(下文详解)英文语料预处理的6个步骤(下文详解)设计模型模型训练英文NLP语料预处理的6个步骤分词–Tokenization词干提取–Stemming词形还原–Lemmatization词性标注–PartsofSpeech命名实体识别–NER分块–Chunking中文NLP语料预处理的4个步骤中文分词–ChineseWordSegmentation词性标注–PartsofSpeech命名实体识别–NER去除停用词总结自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。
NLP的2个核心任务:
自然语言理解–NLU自然语言生成–NLGNLP的5个难点:
语言是没有规律的,或者说规律是错综复杂的。语言是可以自由组合的,可以组合复杂的语言表达。语言是一个开放集合,我们可以任意的发明创造一些新的表达方式。语言需要联系到实践知识,有一定的知识依赖。语言的使用要基于环境和上下文。NLP的4个典型应用:
情感分析聊天机器人语音识别机器翻译NLP的6个实现步骤:
分词-tokenization次干提取-stemming词形还原-lemmatization词性标注-postags命名实体识别-ner分块-chunking往期精彩文章回顾:
PyTorch手把手搭建神经网络(MNIST)
神经网络的自我修养——神经网络结构搜索NAS简述
(Python教程)什么是机器学习、人工智能、深度学习,三者又是什么关系?
总结:
我整理了一份关于pytorch、python基础,图像处理opencv自然语言处理、机器学习、数学基础等资源库,想学习人工智能或者转行到高薪资行业的,大学生都非常实用,无任何套路免费提供,,加我Q群【856833272 】也可以领取的内部资源,人工智能题库,大厂面试题学习大纲自学课程大纲还有200G人工智能资料大礼包免费送哦~扫码加V免费领取资料.