自然语言处理(NLP)——简介
自然语言处理(NLPNaturalLanguageProcessing)是一种专业分析人类语言的人工智能。就是在机器语⾔和⼈类语言之间沟通的桥梁,以实现人机交流的目的。在人工智能出现之前,机器智能处理结构化的数据(例如Excel里的数据)。但是网络中大部分的数据都是非结构化的,例如:文章、图片、音频、视频...在非结构数据中,文本的数量是最多的,他虽然没有图片和视频占用的空间大,但是他的信息量是最大的。为了能够分析和利用这些文本信息,我们就需要利用NLP技术,让机器理解这些文本信息,并加以利用。
NLP的主要内容大概如下:
2个核⼼心任务:自然语言理解-NLU自然语言生成-NLG5个难点:语言是没有规律的,或者说规律是错综复杂的。语言是可以自由组合的,可以组合复杂的语言表达。语言是一个开放集合,我们可以任意的发明创造一些新的表达方式。语言需要联系到实践知识,有一定的知识依赖。语言的使用要基于环境和上下文。4个典型应用:情感分析聊天机器人语音识别机器翻译6个实现步骤:分词-tokenization次干提取-stemming词形还原-lemmatization词性标注-postags命名实体识别-ner分块-chunking自然语言理解-NLU1.什么是自然语言理解(NLU)?自然语言处理(NLP,NaturalLanguageProcessing)是使用自然语言同计算机进行通讯的技术,因为处理自然语言的关键是要让计算机“理解”自然语言,所以自然语言处理又叫做自然语言理解(NLU,NaturalLanguageUnderstanding),也称为计算语言学(ComputationalLinguistics)。一方面它是语言信息处理的一个分支,另一方面它是人工智能(AI,ArtificialIntelligence)的核心课题之一。
比如我们平时用的智能音箱:
我想听歌放首歌来点音乐...
人们会有很多种自然的表达,可以说“自然的表达”有无穷多的组合都是在代表“听歌”这个意图的。而要理解这么多种不同的表达,对机器是个挑战。早些时候,机器只能处理结构化的数据(比如关键词),也就是说如果要听懂人在讲什么,必须要用户输入精确的指令。而这些指令的关键词肯定在不同表达中会被误判,所以显得很笨。自然语言理解这个技能出现后,可以让机器从各种自然语言的表达中,区分出来,哪些话归属于这个意图;而那些表达不是归于这一类的,而不再依赖那么死板的关键词。再比如说智能音响:
“太吵了”机器:“已帮您调小音量”
用户并没有提到音量,但是机器需要知道用户的意图——音量太高,需要把音量调小。
2.自然语言理解(NLU)的应用机器翻译(有道、百度翻译等)机器客服(各种app里面的机器客户)智能音箱(小爱音箱、天猫精灵等)3.自然语言理解(NLU)的难点难点1:语言的多样性自然语言有很多不同的表达,组合方式非常灵活,不同的组合可以表达多种含义,总能找到很多例外的情况。
难点2:语言的歧义性如果不联系上下文,缺少环境的约束,语言有很大的歧义性。
难点3:语言的鲁棒性自然语言在输入的过程中,尤其是通过语音识别获得的文本,会存在多字、少字、错字、噪音等问题。
难点4:语言的知识依赖语言是对世界的符号化描述,语言天然连接着世界知识。
难点5:语言的上下文上下文的概念包括很多种:对话的上下文、设备的上下文、应用的上下文、用户画像。
4.NLU的实现方式自然语言理解一共经历了3次迭代:
基于规则的方法基于统计的方法基于深度学习的方法总结规律来判断自然语言的意图,常见的方法有:CFG、JSGF等。基于统计学的NLU方式,常见的方法有:SVM、ME等。随着深度学习的爆发,CNN、RNN、LSTM都成为了最新的主流,Transformer是目前最先进的方法。自然语言生成-NLGNLG是为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等
1.自然语言生成-NLG有2种方式:text-to-text:文本到语言的生成data-to-text:数据到语言的生成2.NLG的3个LEVEL简单的数据合并:自然语言处理的简化形式,这将允许将数据转换为文本(通过类似Excel的函数)。模板化的NLG:这种形式的NLG使用模板驱动模式来显示输出。。数据动态地保持更改,并由预定义的业务规则集(如if/else循环语句)生成。高级NLG:这种形式的自然语言生成就像人类一样。它理解意图,添加智能,考虑上下文,并将结果呈现在用户可以轻松阅读和理解的富有洞察力的叙述中。
3.NLG的6个步骤第一步:内容确定-ContentDetermination作为第一步,NLG系统需要决定哪些信息应该包含在正在构建的文本中,哪些不应该包含。通常数据中包含的信息比最终传达的信息要多。第二步:文本结构-TextStructuring确定需要传达哪些信息后,NLG系统需要合理的组织文本的顺序。例如在报道一场篮球比赛时,会优先表达「什么时间」「什么地点」「哪2支球队」,然后再表达「比赛的概况」,最后表达「比赛的结局」。第三步:句子聚合-SentenceAggregation不是每一条信息都需要一个独立的句子来表达,将多个信息合并到一个句子里表达可能会更加流畅,也更易于阅读。第四步:语法化-Lexicalisation当每一句的内容确定下来后,就可以将这些信息组织成自然语言了。这个步骤会在各种信息之间加一些连接词,看起来更像是一个完整的句子。第五步:参考表达式生成-ReferringExpressionGeneration|REG这个步骤跟语法化很相似,都是选择一些单词和短语来构成一个完整的句子。不过他跟语法化的本质区别在于“REG需要识别出内容的领域,然后使用该领域(而不是其他领域)的词汇"。第六步:语言实现-LinguisticRealisation最后,当所有相关的单词和短语都已经确定时,需要将它们组合起来形成一个结构良好的完整句子。
4.NLG的3种典型应用自动写作(自动写新闻,自动写论文等)聊天机器人(各种手机开发的内置聊天机器人,智能音响,商场导航机器人等)BI的解读和报告生成(各行各业解读报告生成比如体检报告)
分词-TOKENIZATION分词就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作。随着深度学习,部分工作中也可以进行【分字】。一般分词我们使用到中英文分词,中英文分词有不同
区别1:分词方式不同,中文更难英文有天然的空格作为分隔符,但是中文没有。所以如何切分是一个难点,再加上中文里一词多意的情况非常多,导致很容易出现歧义。区别2:英文单词有多种形态英文单词存在丰富的变形变换。为了应对这些复杂的变换,英文NLP相比中文存在一些独特的处理步骤,我们称为词形还原(Lemmatization)和词干提取(Stemming)。中文则不需要词性还原:does,done,doing,did需要通过词性还原恢复成do。词干提取:cities,children,teeth这些词,需要转换为city,child,tooth"这些基本形态。区别3:中文分词需要考虑粒度问题粒度越大,表达的意思就越准确,但是也会导致召回比较少。分词的方法大致分为3类:
基于词典匹配基于统计基于深度学习给予词典匹配的分词方式优点:速度快、成本低缺点:适应性不强,不同领域效果差异大我的这篇博文就是一个基于词典匹配的分词方法:C#实现前向最大匹配、字典树(分词、检索)
基于统计的分词方法优点:适应性较强缺点:成本较高,速度较慢这类目前常用的是算法是HMM、CRF、SVM、深度学习等算法,比如Stanford、Hanlp分词工具是基于CRF算法。
基于深度学习优点:准确率高、适应性强缺点:成本高,速度慢例如有人员尝试使用双向LSTM+CRF实现分词器,其本质上是序列标注,所以有通用性,命名实体识别等都可以使用该模型,据报道其分词器字符准确率可高达97.5%。
中文分词工具下面排名根据GitHub上的star数排名:
HanlpStanford分词ansj分词器哈工大LTPKCWS分词器jiebaIK清华大学THULACICTCLAS英文分词工具
KerasSpacyGensimNLTK词干提取STEMMING和词形还原LEMMATISATION词干提取和词形还原是英文语料预处理中的重要环节,英文单词有多种形态,需要词性还原和词干提取,中文不需要!词干提取是去除单词的前后缀得到词根的过程。大家常见的前后词缀有「名词的复数」、「进行式」、「过去分词」...等等提取出词干来。比如[dogs]提取[dog]。词干提取更多被应用于信息检索领域,如Solr、Lucene等,用于扩展检索,粒度较粗。
词形还原是基于词典,将单词的复杂形态转变成最基础的形态。词形还原不是简单地将前后缀去掉,而是会根据词典将单词进行转换。比如[drove]转换为[drive]。形还原更主要被应用于文本挖掘、自然语言处理,用于更细粒度、更为准确的文本分析和表达。
三种主流词干提取算法:Porter、Snowball、Lancaster
词性标注-PARTOFSPEECH词性标注(Part-Of-Speechtagging,POStagging)也被称为语法标注(grammaticaltagging)或词类消疑(word-categorydisambiguation),是语料库语言学(corpuslinguistics)中将语料库内单词的词性按其含义和上下文内容进行标记的文本数据处理技术。词性标注就是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程,如下是汉语的词性部分对照表:
命名实体识别NAMED-ENTITYRECOGNITION|NER命名实体识别(NamedEntityRecognition,NER)是NLP中一项非常基础的任务。NER是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础工具。命名实体识别,那什么是实体,简单的理解,实体,可以认为是某一个概念的实例。
例如,“人名”是一种概念,或者说实体类型,那么“孙权”就是一种“人名”实体了。“时间”是一种实体类型,那么“国庆节”就是一种“时间”实体了。所谓实体识别,就是将你想要获取到的实体类型,从一句话里面挑出来的过程。只有好的实体识别才会让其它任务的开展更有效,比如事件抽取、关系抽取等。
分块-chunking文本分块是将一大段文本分割成几段小文本,其目的是比如想获取一段文本中的一小部分,或分割得到固定单词数目的小部分等,经常用于非常大的文本。注意文本分块和分词不一样,分词的目的是把一段文本分割成单词,而文本分块的目的是把一大段文本分割成多个小段文本。组块分析(Chunking):标出句子中的短语块,例如名词短语(NP),动词短语(VP)等。
最后NLP里面有很多工作和技术需要做,上面只是简单的介绍了NLP的内容和一些概念,目前有的方法。每一个步骤都可以分开来在不同的应用中发挥作用,也可以联系起来做成很棒的产品。NLP中常见的任务
这是学习NLP开篇需要了解的内容和总结,其中很多解释和句子摘抄至:https://easyai.tech/ai-definition/nlp/(侵告删)。
后面会学一些NLP的相关知识,包括【hanlp】的学习分享。
自然语言处理:让机器善解人意
华为诺亚方舟实验室语音语义首席科学家刘群指出,随着人类进入智能时代,智能设备和数据量都空前增长,通过语音和语言进行人机交互的需求也在急速增长,语音和自然语言处理领域将涌现更多有影响力的前沿研究和技术创新。
自然语言是人类智慧的独特表现。自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域的一个重要研究方向,旨在研究人机之间用自然语言进行有效通信的理论和方法。根据Gartner发布的《2018世界人工智能产业发展蓝皮书》,到2021年,全球自然语言处理市场的价值预计会达到160亿美元。
自然语言处理是AI皇冠上的明珠《营赢》:从整个科学领域的角度来考虑,您觉得自然语言处理的意义是什么?
刘群:语言学是一门古老的学科,人类为什么会有语言?动物为什么没有发展出人类这样复杂高级的语言?语言机制是人类大脑中先天就有的,还是像其他能力一样后天获得的?语言是如何形成和发展的?语言本身服从一些怎样的规律?无数的不解之谜等待着科学家来回答。
计算语言学,或者自然语言处理,既是一门科学,也是一门应用技术。从科学角度说,像其他计算机科学一样,它是一种从模拟角度来研究语言的学科。自然语言处理并不直接研究人类语言的机制,而是试图让机器去模拟人类的语言能力。如果说计算机拥有了像人一样的语言能力,从某种角度,我们就可以说,我们理解了人类的语言机制。由于理解自然语言需要关于外在世界的广泛知识以及运用操作这些知识的能力,所以自然语言处理是一个人工智能完备(AI-complete)的问题,并被视为人工智能的核心问题之一。
《营赢》:有人认为“自然语言处理应该是实现通用人工智能的关键挑战,得语言者得天下”,您怎么看?
刘群:这句话有一定的道理。有人把人的智能分为三大类:感知智能、运动智能和认知智能。
第一,感知智能,包括听觉、视觉、触觉等;最近两年,深度学习的引入大幅度提高了语音和图像的识别率,所以计算机在感知智能层面已经做得相当不错了,在一些典型的测试下,达到或者超过了人类的平均水平。
第二,运动智能,指能够在复杂的环境中自由行动的能力。运动智能是机器人研究的核心问题之一。
第三,认知智能属于最高级的智能活动。动物也具有感知智能和运动智能,但在认知智能方面,却明显低于人类。认知智能是包括理解、运用语言的能力,掌握知识、运用知识的能力,以及在语言和知识基础上的推理、规划和决策能力。认知智能中最基础也是最重要的部分就是语言智能,研究语言智能的学科就是自然语言处理。
自然语言处理的研究对象是人类语言,如词语、短语、句子、篇章等。通过对这些语言单位的分析,我们不仅希望理解语言所表达的字面含义,还希望能理解说话人所表达的情感,以及说话人通过语言所传达的意图。没有成功的自然语言处理,就不会有真正的认知智能。
自然语言理解和处理也是人工智能中最难的部分。比如一幅图像,改变像素,或者一个局部,对整个图像的内容影响并不太大。但文字就不一样了,很多情况下,一句话中改变一个字,意思会完全不一样。
很多人工智能/机器学习技术,在图像识别领域,已经获得了很大的成功,但在自然语言处理领域,还处于起步的阶段。比如说,风格的生成。现在人们很容易把一幅画转变成梵高的风格,但要把一段话转换成莎士比亚风格,还没有技术能够做得很好。
所以,有些学者把自然语言处理称为“人工智能皇冠上的明珠”,是很有道理的,我非常认同这种说法。
自然语言处理的赛道《营赢》:您认为目前自然语言处理面临的最大问题是什么?
刘群:我认为自然语言处理今后面临的主要问题是两个。
一是语义理解,或者说知识的学习,或常识的学习问题。这是自然语言处理技术如何变得更“深”的问题。尽管常识的理解对人类来说不是问题,但是它却很难被教给机器。比如我们可以对手机助手说“查找附近的餐馆”,手机就会在地图上显示出附近餐馆的位置。但你如果说“我饿了”,手机助手可能就无动于衷,因为它缺乏“饿了需要就餐”这样的常识,除非手机设计者把这种常识灌入到了这个系统中。但大量的这种常识都潜藏在我们意识的深处,AI系统的设计者几乎不可能把所有这样的常识都总结出来,并灌入到系统中。
二是低资源问题。所谓无监督学习、Zero-shot学习、Few-shot学习、元学习、迁移学习等技术,本质上都是为了解决低资源问题。面对标注数据资源贫乏的问题,譬如小语种的机器翻译、特定领域对话系统、客服系统、多轮问答系统等,自然语言处理尚无良策。这类问题统称为低资源的自然语言处理问题。对这类问题,我们除了设法引入领域知识(词典、规则)以增强数据能力之外,还可以基于主动学习的方法来增加更多的人工标注数据,以及采用无监督和半监督的方法来利用未标注数据,或者采用多任务学习的方法来使用其他任务,甚至其他语言的信息,还可以使用迁移学习的方法来利用其他的模型。这是自然语言处理技术如何变得更“广”的问题。
《营赢》:过去十年,自然语言处理领域影响最深远的研究是什么?
刘群:答案很明确,就是深度学习技术的引入。
基于深层神经网络的深度学习方法从根本上改变了自然语言处理技术的面貌,把自然语言处理问题的定义和求解从离散的符号域搬到了连续的数值域,导致整个问题的定义和所使用的数学工具与以前完全不同,极大地促进了自然语言处理研究的发展。
在深度学习技术引入自然语言处理之前,自然语言处理所使用的数学工具跟语音、图像、视频处理所使用的数学工具截然不同,这些不同模态之间的信息流动存在巨大的壁垒。而深度学习的应用,把自然语言处理和语音、图像、视频处理所使用的数学工具统一起来了,从而打破了这些不同模态信息之间的壁垒,使得多模态信息的处理和融合成为可能。
总之,深度学习的应用,使得自然语言处理达到了前所未有的水平,也使得自然语言处理应用的范围大大扩展。可以说,自然语言处理的春天已经来临。
《营赢》:自然语言处理对框架乃至硬件层面提出了哪些独特的需求呢?
刘群:AI研究对硬件的需求是无止境的。可以说,贫穷限制了想象力,硬件限制了模型。只有在更好的硬件条件下,科学家才能尝试更复杂的模型,才能发展出更新更好的方法。
我不觉得自然语言处理对框架和硬件有独特的需求,自然语言处理的需求跟其他AI研究的需求应该是类似的,更多的内存、更高的带宽、更多的并行、更高的速度,永远都是需求的。有了这些,针对自然语言处理问题做一些特定的优化,并不是太大的问题。
《营赢》:2018年,学术界有哪些新的方法或者趋势,让您觉得会对自然语言处理的应用产生新的影响?
刘群:2018年自然语言处理研究领域最令人惊艳的成果是预训练语言模型,这包括基于RNN的Elmo和基于Transformer的GPT和Bert。预训练语言模型的成功充分证明了我们可以从海量的无标注文本中学到大量潜在的知识,而无需为每一项自然语言处理任务都标注大量的数据。
在应用方面,Google演示的Duplex技术让人耳目一新。与此同时,国内几个公司提供的会议同声翻译技术也令人印象深刻,语音同传虽然还有很多错误,与人类同声传译相比还有很大差距,但其实用性已经毋庸置疑。这项技术的实际应用在几年前还难以想象,在这么短时间内就达到了现在这样可以初步实用的水平,真是非常出乎意料。
华为发力自然语言处理《营赢》:华为诺亚方舟实验室在自然语言处理领域的技术布局包括哪些?取得了哪些进展?
刘群:华为诺亚方舟实验室的自然语言处理研究主要包括三个大的方向:语音技术、机器翻译和对话技术。
诺亚方舟的自然语言处理技术,已经开始在华为的各种产品和服务中获得广泛的应用。以大家日常使用的华为手机为例,华为的手机语音助手就集成了诺亚方舟的语音识别和对话技术。诺亚方舟的机器翻译技术支持了华为内部海量的技术资料的翻译。诺亚方舟基于知识图谱的问答技术为华为的全球技术支持系统(GTS),提供了快速准确地回答复杂技术问题的能力。
诺亚方舟实验室的自然语言处理在研究方面也取得了突出的成果。我们在自然语言文本匹配、对话生成、神经网络机器翻译方面的研究成果被研究者广泛引用。在NIPS近五年来引用最多的50篇论文中就有一篇是我们的论文,在ACL近五年来应用最高的20篇论文中也有我们的一篇论文、引用最高的30篇论文中有我们的3篇论文。
《营赢》:听觉、视觉结合的多模态是否会是自然语言处理未来很有前途的研究方向?华为是否已有这方面的研究了?
刘群:是的。我们已经开始在这一领域开展研究了。
自然语言处理场景应用产业化《营赢》:自然语言作为人类社会信息的载体,使得自然语言处理不只是计算机科学的专属。自然语言处理如何能成为其他领域(如金融、法律、医疗健康等)的重要支撑技术?
刘群:自然语言处理技术早已深入我们的日常生活。很多人都没有意识到,我们每天都在享受自然语言处理技术提供的便利,比如,拼音输入法。很多人大概有印象,20年前流行过五笔字型输入法。但后来,拼音输入法几乎完全取代了五笔字型。
其实当年五笔字型流行的时候并非没有拼音输入法,那时的拼音输入法智能程度非常低,用户需要为每一个拼音从大量同音字中选择正确的汉字,联想功能也非常弱,输入速度非常慢。只有到后来自然语言处理技术取得了长足的进步,统计语言模型使得我们能够为一长串的拼音自动选择最可能的汉字序列,才使得拼音输入法最终取代五笔字型,并占据了汉字输入法的主导地位。
另外,现在的搜索引擎也大量使用了自然语言处理技术。你在百度或者谷歌搜索“四川的人口”,搜索引擎除了给你一系列相关的网页以外,还会直接给出一个具体的答案,这就用到了自然语言问答技术。
在金融、法律、医疗健康等领域,自然语言处理技术也得到了越来越广泛的应用。在金融领域,自然语言处理可以为证券投资提供各种分析数据,如热点挖掘、舆情分析等,还可以进行金融风险分析、欺诈识别等。在法律领域,自然语言处理可以帮助进行案例搜索、判决预测、法律文书自动生成、法律文本翻译、智能问答等等。在医疗健康领域,自然语言处理技术更是有着广阔的应用前景,如病历的辅助录入、医学资料的检索和分析、辅助诊断等等。现代医学资料浩如烟海,新的医学手段、方法发展迅猛,没有任何医生和专家能够掌握所有的医学发展的动态,自然语言处理可以帮助医生快速准确地找到各种疑难病症最近的研究进展,使得病人最快地享受医学技术进步的成果。
《营赢》:自然语言的研究对普通人有什么影响,会给我们的生活带来什么方便或冲击?
刘群:会让大家的生活越来越方便。比如打客服电话,你不用再选择一大堆的语音菜单。语音助手可以理解你的需求,贴心地帮你完成日常生活中的各种任务。机器甚至可以帮你写报告、写诗、写情书等等。与此同时,技术的进步也会给我们的生活带来一些冲击。比如就业方面,机器取代人工会造成一些人失业。但新技术的应用让一些职业消失的同时,又创造出大量新的就业机会。作为个人应该主动积极地想办法去适应这种变化,而不是消极等待和抱怨。
自然语言处理(NLP)和语音识别(ASR)的区别
一、两者的概念ASR:语音识别。通俗的来讲,就是将语音信号转化成文字文本,并加以输出(显示在屏幕上面)。这个过程,机器并不知道你说的是什么,可以说就是单单的实现了两种信号的转化。而且概念本身就已经说明了,信号初始状态只能是语音信号,也就是人们说的话。所以ASR又可以理解为,让机器听见。
NLP:自然语言处理。通俗的讲,通过某种算法让计算机理解所输入的内容,理解的意思就是,比如:输入“开门”,机器人的下一个动作就会是把门打开。这个过程中,输入的可能不是语音信号,也可以是键盘敲进去的,或者是用笔写上然后机器进行识别等等形式。所以,NLP又可以理解成,让机器听懂。
二、两者的区别通过以上的解释,那可能有的人就会认为,听懂不应该是先听见吗?那NLP包括ASR。答案是:语音输入只是一个输入的形式之一,但是不绝对,还有其他行形式的输入。所以,听懂不一定听见。
紧接着就会有一个概念就是,听见不一定听懂,上面已经说了ASR就是信号的转换,不代表机器已经理解说话的内容。
这个地方再举个例子吧!开车的都用谷歌或者百度地图。当我们想去某个地方的时候,可以用语音输入,然后在手机上上会显示出说话的内容。这个阶段就是语音识别(ASR)的领域。后面,手机然后进行定位,这个可以理解成自然语言处理(NLP)的领域了。
综上,只能说两者存在着交集,但是却是两个不同的领域。