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