人工智能导论(9)——自然语言处理(Natural Language Processing)
文章目录一、概述二、重点内容三、思维导图四、重点知识笔记NLP的两个核心任务NLP处理的三个分析层面NLP的主要流程语音识别机器翻译一、概述人类利用语言进行交流、思想表达和文化传承是人类智能的重要体现。自然语言处理(NLP)是指用计算机来处理、理解以及运用人类语言,实现人机交流的目的。
本文将人工智能"自然语言处理"基础知识整理为思维导图,便于回顾和记忆。
二、重点内容简介NLP核心任务NLP主要应用领域NLP三个分析层面NLP分析流程典型应用简介语音识别机器翻译三、思维导图四、重点知识笔记自然语言处理(NLP)是指用计算机来处理、理解以及运用人类语言,是计算机科学与语言学的交叉学科。
从应用角度看,自然语言处理的应用有:
语音识别、文字识别文本生成、图像描述生成机器翻译:将一种语言翻译成另一种语言。知识图谱、信息抽取对话系统、问答系统文本分类、情感分析文本推荐NLP的两个核心任务自然语言理解(NaturalLanguageUnderstanding,NLU)自然语言生成(NaturalLanguageGeneration,NLG)自然语言理解(NLU):实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义自然语言生成(NLG):以自然语言文本来表达给定的意图、思想等。NLU的应用:
机器翻译机器客服智能音响NLU的实现方式:
自然语言理解跟整个人工智能的发展历史类似,一共经历了3次迭代:
基于规则的方法:最早大家通过总结规律来判断自然语言的意图,常见的方法有:CFG、JSGF等。基于统计的方法:后来出现了基于统计学的NLU方式,常见的方法有:SVM、ME等。基于深度学习的方法:随着深度学习的爆发,CNN、RNN、LSTM都成为了最新的”统治者”。Transformer是目前“最先进”的方法。BERT和GPT-2都是基于TRansformer的。
NLG的6个步骤:
内容确定–ContentDetermination文本结构–TextStructuring句子聚合–SentenceAggregation语法化–Lexicalisation参考表达式生成–ReferringExpressionGeneration|REG语言实现–LinguisticRealisationNLG典型应用:
聊天机器人自动写新闻:对于具有明显规则的领域,比如体育新闻。目前很多新闻已经借助NLG来完成了BI报告生成NLP处理的三个分析层面第一层面:词法分析
词法分析包括汉语的分词和词性标注这两部分。
分词:将输人的文本切分为单独的词语词性标注:为每一个词赋予一个类别类别可以是名词(noun)、动词(verb)、形容词(adjective)等属于相同词性的词,在句法中承担类似的角色。第二层面:句法分析
句法分析是对输人的文本以句子为单位,进行分析以得到句子的句法结构的处理过程。
三种比较主流的句法分析方法:
短语结构句法体系,作用是识别出句子中的短语结构以及短语之间的层次句法关系;介于依存句法分析和深层文法句法分析之间依存结构句法体系(属于浅层句法分析),作用是识别句子中词与词之间的相互依赖关系;实现过程相对来说比较简单而且适合在多语言环境下应用,但是其所能提供的信息也相对较少深层文法句法分析,利用深层文法,对句子进行深层的句法以及语义分析例如词汇化树邻接文法,组合范畴文法等都是深层文法深层文法句法分析可以提供丰富的句法和语义信息深层文法相对比较复杂,分析器的运行复杂度也比较高,不太适合处理大规模的数据第三个层面:语义分析
语义分析的最终目的是理解句子表达的真是语义。语义表示形式至今没有一个统一的方案。
语义角色标注(semanticrolelabeling)是目前比较成熟的浅层语义分析技术。语义角色标注一般都在句法分析的基础上完成,句法结构对于语义角色标注的性能至关重要。通常采用级联的方式,逐个模块分别训练模型分词词性标注句法分析语义分析联合模型(新发展的方法)将多个任务联合学习和解码分词词性联合词性句法联合分词词性句法联合句法语义联合等联合模型通常都可以显著提高分析质量联合模型的复杂度更高,速度也更慢。NLP的主要流程传统机器学习的NLP流程预处理特征提取词袋设计Embedding特征分类器深度学习的NLP流程预处理设计模型模型训练预处理过程:
收集语料库(输入文本)文本清洗(文本清洗,)删除所有不相关的字符,例如任何非字母数字字符分割成单个的单词文本删除不相关的单词,例如“@”提及或网址链接将所有字符转换为小写,以便将诸如“hello”,“Hello”和“HELLO”之类的单词视为相同考虑将拼写错误或交替拼写的单词组合成单个表示(例如“cool”/“kewl”/“cooool”)考虑词性还原(将诸如“am”,“are”和“is”之类的词语简化为诸如“be”之类的常见形式)分词去掉停用词(可选)标准化和特征提取等。英文预处理:
分词–Tokenization词干提取–Stemming词形还原–Lemmatization词性标注–PartsofSpeech命名实体识别–NER分块–Chunking中文NLP预处理:
中文分词–ChineseWordSegmentation词性标注–PartsofSpeech命名实体识别–NER去除停用词中文分词方法:
经典的基于词典及人工规则:适应性不强,速度快,成本低基于词典:(正向、逆向、双向最大匹配)基于规则:(词法结构)现代的基于统计和机器学习:适应性强,速度较慢,成本较高基于统计:HMM隐马尔可夫模型基于机器学习:CRF条件随机场自然语言典型工具和平台
NLTK:全面的python基础NLP库。StanfordNLP:学界常用的NLP算法库。中文NLP工具:THULAC、哈工大LTP、jieba分词。语音识别将人类语音中的词汇内容转换为计算机可读的输入。
语音识别系统的分类主要有:
孤立和连续语音识别系统(主流为连续语音识别)以单字或单词为单位的孤立的语音识别系统自然语言只是在句尾或者文字需要加标点的地方有个间断,其他部分都是连续的发音特定人和非特定人语音识别系统特定人语音识别系统在前期需要大量的用户发音数据来训练模型。非特定人语音识别系统则在系统构建成功后,不需要事先进行大量语音数据训练就可以使用大词汇量和小词汇量语音识别系统嵌入式和服务器模式语音识别系统语音识别的过程
语音识别系统一般可以分为前端处理和后端处理两部分:
前端包括语音信号的输入预处理:滤波、采样、量化特征提取后端是对数据库的搜索过程训练:对所建模型进行评估、匹配、优化,之后获得模型参数识别语音识别的过程:
根据人的语音特点建立语音模型对输入的语音信号进行分析,并抽取所需的特征,建立语音识别所需要的模板将语音模板与输入的语音信号的特征进行比较,找出一与输入语音匹配最佳的模板通过查表和判决算法给出识别结果显然识别结果的准确率与语音特征的选择、语音模型和语音模板的好坏及准确度有关。
语音识别系统的性能受多个因素的影响
不同的说话人不同的语言同一种语言不同的发音和说话方式等提高系统的稳定性就是要提高系统克服这些因素的能力,使系统能够适应不同的环境。
声学模型是识别系统的底层模型,并且是语音识别系统中最关键的一部分。声学模型的目的是提供一种有效的方法来计算语音的特征矢量序列和各发音模板之间的距离。
语音识别关键技术
语音特征提取常见的语音特征提取算法有MFCC、FBank、LogFBank等声学模型与模式匹配声学模型:对应于语音音节频率的计算,输出计算得到的声学特征模式匹配:在识别时将输入的语音特征与声学特征同时进行匹配和比较目前采用的最广泛的建模技术是隐马尔可夫模型(HiddenMarkovModel,HMM)。语音模型与语义理解进行语法、语义分析语言模型会计算音节到字的概率主要分为规则模型和统计模型语音模型的性能通常通过交叉熵和复杂度来表示,交叉熵表示交叉熵表示用该模型对文本进行识别的难度复杂度是指用该模型表示这个文本平均的分支数,其倒数可以看成是每个词的平均概率机器翻译机器翻译就是让机器模拟人的翻译过程,利用计算机自动地将一种自然语言翻译为另一种自然语言。
在机器翻译领域中出现了很多研究方法,包括:
直接翻译方法句法转换方法中间语言方法基于规则的方法基于语料库的方法基于实例的方法(含模板与翻译记忆方法)基于统计的方法基于深度学习的方法等机器翻译过程:
原文输入:按照一定的编码转换成二进制。原文分析(查词典和语法分析)查词典:词在语法类别上识别为单功能的词,在词义上成为单义词(某些介词和连词除外)语法分析:进一步明确某些词的形态特征。找出动词词组、名词词组、形容词词组等译文综合(调整词序与修辞以及从译文词典中取词)任务1:把应该以为的成分调动一下首先加工间接成分:从前向后依次取词加工,从句子的最外层向内加工。其次加工直接成分:依据成分取词加工,对于复句还需要对各分句进行加工。任务2:修辞加工根据修辞的要求增补或删掉一些词。例如英语中的冠词、数次翻译汉语,加上"个"、“只”。任务3:查目标语言词典,找出目标语言文字的代码。译文输出将目标语言的代码转换成文字,打印出译文来通用翻译模型:
GNMT(GoogleNeuralMachineTranslation)基于网页和App的神经网络机器翻译完全基于注意力机制的编解码器模型TransformerTransformer的升级版—UniversalTransformer在Transformer出现之前,多数神经基于神经网络的翻译模型都使用RNN。RNN训练起来很慢,长句子很难训练好。UniversalTransformer模型具有了通用计算能力,在更多任务中取得了有力的结果。UniversalTransformer的训练和评估代码已开源在了Tensor2Tensor网站。
个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。
修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap
什么是自然语言处理
Python和NaturalLanguageToolkit(NLTK)Python编程语言提供广泛的工具和库,用于完成特定的NLP任务。其中许多工具和库都包含在NaturalLanguageToolkit(NLTK)中,这个工具包提供一系列开源的库、程序和教育资源,用于帮助构建NLP程序。
NLTK包含用于完成以上许多NLP任务的库,以及用于完成一些子任务的库,这些子任务包括句法分析、分词、词干提取和词形还原(提取单词词根的方法)和文本分词(将短语、句子、段落和篇章分解为有助于计算机更好地理解文本的"词")。它还包括一些库,用于实现各种功能,比如语义推理—根据从文本中提取的事实得出逻辑结论。
统计NLP、机器学习和深度学习最早的NLP应用是人工编码、基于规则的系统,可以执行特定NLP任务,但无法轻松扩展以适应无穷无尽的异常流或不断增长的文本和语音数据量。
统计NLP将计算机算法与机器学习和深度学习模型相结合,自动提取、分类和标记文本和语音数据的元素,然后为这些元素的每个可能含义分配统计似然值。目前,基于卷积神经网络(CNN)和递归神经网络(RNN)的深度学习模型和学习方法使NLP系统能够一边工作一边“学习”,从海量的非结构化和未标记的原始文本和语音数据集中提取更准确的含义。
有关这些技术及其学习方法之间细微差别的深入探讨,请参阅“AI、机器学习、深度学习与神经网络:有何区别?”