python自然语言处理实战核心技术与算法
2021-03-18 17:30:43 4 举报
AI智能生成
Python自然语言处理实战:核心技术与算法.涂铭刘祥刘树春.机械工业出版社2018-05
作者其他创作
大纲/内容
Chapter 1:NLP基础
Part 1. 什么是NLP
1. NLP概念
Natural Language Processing
2. NLP基本分类
自然语言理解
音系学
指代语言中发音的系统化组织
词态学
研究单词构成以及相互之间的关系
句法学
给定文本的哪部分是语法正确的
语义句法学
给定文本的含义是什么
语用学
文本的目的是什么
自然语言生成
自然语言文本
文本规划
完成结构化数据中的基础内容规划
语句规划
从结构化数据中组合语句来表达信息流
实现
产生语法通顺的语句来表达文本
3. NLP研究任务
机器翻译
计算机具备将一种语言翻译成另一种语言的能力
情感分析
计算机能够判断用户评论是否积极
智能问答
计算机能够正确回答输入的问题
文摘生成
计算机能够准确归纳、总结并产生文本摘要
文本分类
计算机能够采集各种文章,进行主题分析,从而进行自动分类
舆论分析
计算机能够判断目前舆论的导向
知识图谱
知识点相互连接而成的语义网络
Part 2. NLP发展历程
1. 萌芽期(1956年以前)
早期的自然语言处理具有鲜明的经验主义色彩
自然语言处理领域的主流仍然是基于规则的理性主义方法
2. 快速发展期(1980-1999年)
基于统计、基于实例和基于规则的语料库技术在这一时期开始蓬勃 发展
各种处理技术开始融合,自然语言处理的研究再次繁荣
3. 突飞猛进期(21世纪)
深度学习在机器翻译、问答系统等多个自然语言处理任务中均取得了不错的成果
相关技术也被成功应用于商业化平台中
Part 3. NLP相关知识的构成
1. 基本术语
1)分词(segment)
词是最小的能够独立活动的有意义的语言成分
英文单词以空格作为自然分解符
汉语以字为基本的书写单位,词语之间没有明显的区分标记
2)词性标注(part-of-speech tagging)
词性
动词
名词
形容词
目的
表证词的一种隐藏状态,隐藏状态构成的转移构成了状态转移序列
3)命名实体识别(NER,Named Entity Recognition)
从文本中识别具有特定类别的实体
4)句法分析(syntax parsing)
基于规则的专家系统
目的
解析句子中各个成分的依赖关系
5)指代消解(anaphora resolution)
中文中代词出现的频率很高,它的作用就是用来表征前文出现过的人名、地名等
6)情感识别(emotion recognition)
本质上是分类问题
应用在舆情分析等领域
7)纠错(correction)
自动纠错在搜索技术以及输入法中利用的很多
N-Gram
8)问答系统(QA system)
需要语音识别、合成,自然语言理解、知识图谱等多项技术配合才会实现的比较好
2. 知识结构
句法语义分析
针对目标句子,进行各种句法分析,如分词、词性标记、命名实体识别及链接、句法分析、语义角色识别和多义词消歧等
关键词抽取
抽取目标文本中的主要信息
文本挖掘
主要包含了对文本的聚类、分类、信息抽取、摘要、情感分析以及对挖掘的 信息和知识的可视化、交互式的呈现界面
机器翻译
将输入的源语言文本通过自动翻译转化为另一种语言的文本
信息检索
对大规模的文档进行索引
问答系统
针对某个自然语言表达的问题,由问答系统给出一个精准的答案
对话系统
系统通过多回合对话,跟用户进行聊天、回答、完成某项任务
3. 前置知识体系
Python
统计学&线性代数
Part 4. 语料库
1. 中文维基百科
2. 搜狗新闻语料库
3. IMDB情感分析语料库
互联网电影资料库(Internet Movie Database,简称IMDb)
Part 5. 探讨NLP的几个层面
1. 第一层面
词法分析
汉语分词
汉语词性标注
2. 第二层面
句法分析
短语结构句法体系
作用是识别出句子中的短语结构以及短语之间的层次句法关系
依存结构句法体系
作用是识别句子中词与词之间的相互依赖关系
深层文法句法分析
利用深层文法对句子进行深层的句法以及语义分析
3. 第三层面
语义分析
Part 6. NLP与人工智能
Chapter 2:NLP前置技术解析
Part 1. 搭建Python开发环境
Anaconda
Jupyter Notebook
Part 2. 正则表达式
1. 匹配字符串
2. 使用转义符
3. 抽取文本中的数字
Part 3. Numpy
主要功能
ndarray
一个具有向量算术运算和复杂广播能力的多维数组对象
用于对数组数据进行快速运算的标准数学函数
用于读写磁盘数据的工具以及用于操作内存映射文件的工具
非常有用的线性代数,傅里叶变换和随机数操作
用于集成C/C++和Fortran代码的工具
Chapter 3:中文分词技术
Part 1. 中文分词简介
词是什么
词的抽象定义
什么是词
词的具体界定
Part 2. 规则分词
1. 基于规则的分词是一种机械分词方法
主要通过维护词典,在切分语句时将语句的每个字符串与词表中的词进行逐一匹配,找到则切分,否则不切分
2. 按照匹配切分的方式分类
正向最大匹配法(Maximum Match Method)
基本思想
假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典
若字典中存在这样的一个i字词
匹配成功,匹配字段被作为一个词切分出来
如果词典中找不到这样的一个i字词
则匹配失败,将匹配字段中的最后一个字去掉,对剩下的字串重新进行匹配处理
如此进行下去,直到匹配成功,即切分出一个词或剩余字串的长度为零为止。这样就完成了一轮匹配,然后取下一个i字字串进行匹配处理,直到文档被扫描完为止。
算法描述
从左向右取待切分汉语句的m个字符作为匹配字段,m为机器词典中最长词条的字符数
查找机器词典并进行匹配
若匹配成功
则将这个匹配字段作为一个词切分出来
若匹配不成功
则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配
重复以上过程,直到切分出所有词为止
逆向最大匹配法(Reverse Maximum Match Method)
基本原理
与MM法相同,不同的是分词切分的方向与MM法相反
算法描述
从被处理文档的末端开始匹配扫描,每次取最末端的i个字符(i为词典中最长词数)作为匹配字段
若匹配成功
则将这个匹配字段作为一个词切分出来
若匹配失败
则去掉匹配字段最前面的一个字,继续匹配
双向最大匹配法(Bi-direction Matching Method)
将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。
Part 3. 统计分词
Pre 1. 主要思想
把每个词看做是由词的最小单位的各个字组成的,如果相连的字在不同的文 本中出现的次数越多,就证明这相连的字很可能就是一个词
Pre 2. 操作步骤
1)建立统计语言模型
2)对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式
隐含马尔科夫(HMM)
条件随机场(CRF)
1. 语言模型
语言模型在信息检索、机器翻译、语音识别中承担着重要的任务
概率论的专业术语描述
长度为m的字符串确定其概率分布P(ω1,ω2,…,ωm),其中ω1到 ωm依次表示文本中的各个词语
公式描述
n元模型(n-gram model)
在估算条件概率时,忽略距离大于等于n的上文词的影响
概率表示
P(ωi|ω1,ω2,…,ωi-1)≈P(ωi|ωi-(n-1),…,ωi-1)
n=1时
一元模型(unigram model)
整个句子的概率等于各个词语概率的乘积,各个词之间都是相互独立的
概率表示
P(ω1,ω2, …,ωm)=P(ω1)P(ω2)…P(ωm)
n=2时
二元模型(bigram model)
概率表示
P(ωi|ω1,ω2,…,ωi-1)=P(ωi|ωi- 1)
n=3时
三元模型(trigram model)
概率表示
P(ωi|ω1,ω2,…,ωi- 1)=P(ωi|ωi-2,ωi-1)
当n≥2时
该模型可以保留一定的词序信息的
而且n越大, 保留的词序信息越丰富,但计算成本也呈指数级增长
n元条件概率的计算
使用频率计数的比例来计算
问题
描述
如按照上述公式估计n元条件概率时,就会出现分子分母为零的情况
解决
平滑算法
拉普拉斯平滑算法
2. 隐含马尔可夫模型(HMM模型)
将分词作为字在字串中的序列标注任务来实现的
基本思路
每个字在构造一个特定的词语时都占据着一个确定的构词位置(即词位)
现规定每个字最多只有四个构词位置
B(词首)
M(词中)
E(词尾)
S(单独成词)
Part 4.混合分词
Part 5. 中文分词工具—Jieba
优点
社区活跃
功能丰富
提供多种编程语言的实现
使用简单
结合了基于规则和基于统计这两类方法
Jieba三种分词模式
1)精确模式
试图将句子最精确的切开,适合文本分析
jieba.cut(string,cut_all=False)
jieba.cut(string)
2)全模式
把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义
jieba.cut(string,cut_all=True)
3)搜索引擎模式
在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
jieba.cut_for_search(string)
实战——高频词提取
高频词
一般指文档中出现频率较高且非无用的词语,其一定程度上代表了文档的焦点所在
高频词提取其实就是自然语言处理中的TF(Term Frequency)策略
干扰项
标点符号
一般标点符号无任何价值,需要去除
停用词
诸如“的”“是”“了”等常用词无任何意义,也需要剔除
Chpter 4:词性标注与命名实体识别
Part 1. 词性标注
1. 词性标注简介
词性
词性是词汇基本的语法属性,通常也称为词类
词性标注
是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程
2. 词性标注规范
中文领域中尚无统一的标注标准
较为主流的规范
北大的词性标注集
本书中以此为标准
宾州词性标注集
3. Jieba分词中的词性标注
标注流程
1)首先基于正则表达式进行汉字判断
re.compile("([\u4E00-\u9FD5a-zA-z0-9+#&\._]+)")
2)若符合上面的正则表达式,则判定为汉字
然后基于前缀词典构建有向无环图
再基于有向无环图计算最大概率路径,同时在前缀词典中找出它所分出的词性
若在词典中未找到,则赋予词性为“x”(代表未知)
3)若不符合上面的正则表达式,那么将继续通过正则表达式进行类型判断,分别赋予“x” “m”(数词)和“eng”(英文)
Part 2. 命名实体识别
1. 命名实体识别简介
目的
识别语料中人名、地名、组织机构名等命名实体
由于这些命名实体数量不断增加, 通常不可能在词典中穷尽列出,且其构成方法具有各自的规律性
通常把对这些词的识别在词汇形态处理(如汉语切分)任务中独立处理,称为命名实体识别
(Named Entities Recognition,NER)
分类
3大类
实体类
时间类
数字类
7小类
人名
地名
组织机构名
时间
日期
货币
百分比
难点
各类命名实体的数量众多
命名实体的构成规律复杂
嵌套情况复杂
长度不确定
划分方式
基于规则的命名实体识别
规则加词典是早期命名实体识别中最行之有效的方式
主要思想
依赖手工规则的系统,结合命名实体库,对每条规则进行权重赋值
然后通过实体与规则的相符情况来进行类型判断
缺点
规则往往依赖于具体语言、领域和文本风格
其编制过程耗时且难以涵盖所有的语言现象
可移植性差
更新维护困难
基于统计的命名实体识别
主流方法
隐马尔可夫模型
最大熵模型
条件随机场
主要思想
基于人工标注的语料,将命名实体识别任务作为序列标注问题来解决
缺点
对语料库的依赖比较大
可以用来建设和评估命名实体识别系统的大规模通用语料库比较少
混合方法
结合规则和统计方法
2. 基于条件随机场的命名实体识别
条件随机场(CRF)
概念
设X=(X1,X2,X3,…,Xn)和Y=(Y1,Y2,Y3,…,Ym)是联合随机变量
若随机变量 Y构成一个无向图G=(V,E)表示的马尔可夫模型
则其条件概率分布P(Y|X)称为条件随机场(Conditional Random Field,CRF)
即 P(Yv|X,Yw,w≠v)=P(Yv|X,Yw,w~v)
其中w~v表示图G=(V,E)中与结点v有边连接的所有节点,w≠v表示结点v以外的所有节点
线性链条件随机场(linearchain CRF)
定义
设X=(X1,X2,X3,…,Xn)和Y=(Y1,Y2,Y3,…,Yn)均为线性链表示的随机变量序列
若在给定的随机变量序列X的条件下,随机变量序列Y的条件概率分布P(Y|X)构成条件随机场,且满足马尔可夫性: P(Yi|X,Y1,Y2,…,Yn)=P(Yi|X,Yi-1,Yi+1)
则称P(Y|X)为线性链的条件随机场
结构
线性链条件随机场
(linear-chain Conditional Random Fields,linear- chain CRF)
参数化形式
完整的线性链CRF的参数化形式
Z(x)是规范化因子,其求和操作是在所有可能的输出序列上做的
λk和μl为转移函数和状态函数对应的权值
简化版
Z(x)
HMM和CRF对比
对比图
HMM是一个有向图,线性链CRF是一个无向图
HMM处理时,每个状态都依赖上一个状态
线性链CRF依赖于当前状态的周围结点状态
Chapter 5:关键词提取算法
Part 1. 概述
分类
有监督
通过分类方式进行
过程
通过构建一个较为丰富和完善的词表,然后通过判断每个文档与词表中每个词的匹配程度,以类似打标签的方式,达到关键词提取的效果
优点
能够获取到较高的精度
缺点
需要大批量的标注数据
人工成本过高
新信息内容很难表达出来
无监督
TF-IDF算法
TextRank算法
主题模型算法
LSA
LSI
LDA
Part 2. TF/IDF算法
1. 定义
TF-IDF算法(Term Frequency-Inverse Document Frequency,词频–逆文档频次算法)是一 种基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度
2. 组成
TF算法
概念
统计一个词在一篇文档中出现的频次
基本思想
一个词在文档中出现的次数越多,则其对文档的表达能力也就越强
不足
仅衡量词的出现频次,没有考虑到词对文档的区分能力
公式表达
tf(word)=(word在文档中出现的次数)/(文档总词数)
IDF算法
概念
统计一个词在文档集的多少个文档中出现
基本思想
如果一个词在越少的文档中出现,则其对文档的区分能力也就越强
不足
强调词的区分能力,但是一个词在一篇文档中频繁出现说明这个词能够很好表现该文档的特征
公式表达
|D|为文档集中总文档数,|Di|为文档集中出现词i的文档数量
分母加1是采用了拉普拉斯平滑,避免有部分新的词没有在语料库中出现过而导致分母为零的情况出现,增强算法的健壮性。
3. TF-IDF算法
计算公式
分支主题
Part 3. TextRank算法
1. 定义
TextRank算法最早用于文档的自动摘要,基于句子维度的分析,利用TextRank对每个句子进行打分,挑选出分数最高的n个句子作为文档的关键句,以达到自动摘要的效果
2. 基本思想
Google的PageRank算法
PageRank算法是一种网页排名算法
基本思想
1)链接数量
一个网页被越多的其它网页链接,说明这个网页越重要
2)链接质量
一个网页被一个越高权值的网页链接,也能表明这个网页越重要
计算公式
分支主题
加入阻尼系数d
3. 计算公式
分支主题
4. 应用
在关键词抽取时和在自动摘要中的不同
1)词与词之间的关联没有权重
退化为PageRank计算公式
2)每个词不是与文档中所有词都有链接
窗口
在窗口中的词相互间都有链接关系
Part 4. 主题模型算法
Pre
1. 概念
主题模型认为在词与文档之间没有直接的联系,它们应当还有一个维度将它们串联起来,主题模型将这个维度称为主题
每个文档都应该对应着一个或多个的主题,而每个主题都会有对应的词分布,通过主题,就可以得到每个文档的词分布
2. 核心公式
分支主题
1. LSA/LSI算法
LSA(Latent Semantic Analysis,潜在语义分析)
LSI(Latent Semantic Index,潜在语义索引)
二者通常被认为是同一种算法,只是应用场景略不同
LSA和LSI都是对文档的潜在语义进行分析
但LSI在分析后还会对分析结果建立相关索引
S.T.Dumais等人为了解决传统向量空间模型对文本的语义信息利用能力匮乏的问题,提出了潜在语义分析的概念
LSA主要步骤
1)BOW模型将文档表示为向量
2)将所有文档词向量拼接起来构成 词-文档 矩阵(m*n)
3)对 词-文档 矩阵进行奇异值分解(SVD)操作([m*r]*[r*r]*[r*n])
4)根据SVD结果将 词-文档 矩阵映射到更低的维度k([m*k]*[k*k]*[k*n],0<k<r)的近似SVD结果
每个词和文档都可以表示为k个主题构成的空间中的一个点,通过计算每个词和文档的相似度(cosine sim/KL sim)
得到每个文档中对每个词的相似度结果,去相似度最高的词即为文档的关键词
LSA评价
优点
相比于传统SVM模型,LSA通过SVD将词、文档映射到低维的语义空间,并在有限利用文本语义信息的同时,大大降低计算的代价,提高分析质量
缺点
SVD计算复杂度非常高
特征空间维度较大的,计算效率十分低下
得到的分布信息是基于已有数据集的,当新文档加入已有特征空间时,需要对整个空间重新训练
LSA还存在着对词的频率分布不敏感、物理解释性薄弱等问题
改进
pLSA算法
贝叶斯模型——LDA
EM算法
2. LDA算法
LDA(Latent Dirichlet Allocation,隐含狄利克雷分布)
由David Blei等人在2003年提出的
理论基础
贝叶斯理论
先验分布+数据(似然)=后验分布
狄利克雷分布
LDA模型训练
Step 1. 吉布斯采样
训练过程
1)随机初始化
对预料中每篇文档中的每个词w,随机地赋予一个topic编号z
2)重新扫描语料库
对每个词w按照吉布斯采样公式重新采用它的topic,在预料中进行更新
3)重复以上语料库的重新采样过程直到吉布斯采样收敛
4)统计语料库的topic-word共现频率矩阵,该矩阵都是LDA模型
Step 2. 针对新文档的topic进行评估
1)随机初始化
对当前文档中的每个词w,随机地赋一个topic编号z
2)重新扫描当前文档
按照吉布斯采样公式,重新采样它的topic
3)重复以上过程直到吉布斯采样收敛
4)统计文档中的topic分布即为预估结果
注意
怎么确定共轭分布中的超参
怎么通过狄利克雷分布和多项式分布得到它们的共轭分布
具体怎么实现吉布斯采样
Chapter 6:句法分析
Part 1. 概述
句法分析是自然语言处理的核心技术,是对语言进行深层次理解的基石
句法分析的主要任务
识别出句子所包含的句法成分以及这些成分之间的关 系,一般以句法树来表示句法分析的结果
难点
歧义
自然语言区别于人工语言的一个重要特点就是它存在大量的歧义现象
搜索空间
句法分析是一个极为复杂的任务,候选树个数随句子增多呈指数级增长,搜索空间巨大
概念
句法分析(Parsing)是从单词串得到句法结构的过程,而实现该过程的工具或程序被称为句法分析器(Parser)
分类
根据其侧重目标分
完全句法分析
获取整个句子的句法结构为目的
局部句法分析
只关注与局部的一些成分
根据所用方法分
基于规则的方法
在处理大规模真实文本时,会存在语法规则覆盖有限、系统可迁移差等缺陷
基于统计的方法
本质是一套面向候选树的评价方法,其会给正确的句法树赋予一个较高的分值,而给不合理的句法树赋予一个较低的分值
Part 2. 数据集与评测方法
1.句法分析的数据集
美国宾夕法尼亚大学加工的英文宾州树库(Penn TreeBank,PTB)
中文宾州树库(Chinese TreeBank,CTB)
清华树库 (Tsinghua Chinese TreeBank,TCT)
台湾中研院树库
2. 评测方法
主要任务
评测句法分析器生成的树结构与手工标注的树结构之间的相似程度
主要考虑性能
满意度
指测试句法分析器是否适合或胜任某个特定的自然语言处理任务
效率
主要用于对比句法分析器的运行时间
PARSEVAL评测体系
一种粒度比较适中、较为理想的评价方法
主要指标
准确率
表示分析正确的短语个数在句法分析结果中所占的比例
即分析结果中与标准句法树中相匹配的短语个数占分析结果中所有短语个数的比例
召回率
表示分析得到的正确短语个数占标准分析树全部短语个数的比例
交叉括号数
表示 分析得到的某一个短语的覆盖范围与标准句法分析结果的某个短语的覆盖范围存在重叠又不存在包含关系,即构成了一个交叉括号
Part 3. 常用方法
1. 基于PCFG的句法分析
PCFG(Probabilistic Context Free Grammar)是基于概率的短语结构分析方法
PCFG是上下文无关文法的扩展,是一种生成式的方法
其短语结构文法可以表示为一个 五元组(X,V,S,R,P)
X
一个有限词汇的集合(词典),它的元素称为词汇或终结符
V
一个有限标注的集合,称为非终结符集合
S
称为文法的开始符号,其包含于V,即S∈V
R
有序偶对(α,β)的集合,也就是产生的规则集
P
代表每个产生规则的统计概率
解决问题
基于PCFG可以计算分析树的概率值
若一个句子有多个分析树,可以依据概率值对所有的分析树进行排序
PCFG可以用来进行句法排歧,面对多个分析结果选择概率值最大的
衍生算法
基于单纯PCFG的句法分析方法
基于词汇化的PCFG的句法分析方法
基于子类划分PCFG的句法分析方法
2. 基于最大间隔马尔可夫网络的句法分析
最大间隔马尔可夫网络(Max-Margin Markov Networks)是SVM和HMM的结合
最大间隔马尔可夫网络要实现多元分类,可以采用多个独立而且可以并行训练的二分类器来代替
3. 基于CRF的句法分析
4. 基于移进–归约的句法分析模型
移进–归约方法(Shift-Reduce Algorithm)是一种自下而上的方法
其操作的基本数据结构是堆栈
主要涉及操作
移进
从句子左端将一个终结符移到栈顶
归约
根据规则,将栈顶的若干个字符替换为一个符号
接受
句子中所有词语都已移进栈中,且栈中只剩下一个符号S,分析成功,结束
拒绝
句子中所有词语都已移进栈中,栈中并非只有一个符号S,也无法进行任何归约操作,分析失败,结束
Part 4. 使用Standford Parser的PCFG算法进行分析
Stanford Parser
Stanford Parser是斯坦福大学自然语言小组开发的开源句法分析器,是基于概率统计句法分析的一个Java实现
优点
既是一个高度优化的概率上下文无关文法和词汇化依存分析器,又是一个词汇化上下文无关文法分析器
以权威的宾州树库作为分析器的训练数据,支持多语言
目前已经支持英文、中文、德 文、阿拉伯文、意大利文、保加利亚文、葡萄牙文等语种
提供了多样化的分析输出形式,除句法分析树输出外,还支持分词和词性标注、短语结 构、依存关系等输出
内置了分词、词性标注、基于自定义树库的分析器训练等辅助工作
支持多种平台,并封装了多种常用语言的接口,如Java、Python、PHP、Ruby、C#等
Chapter 7:文本向量化
Part 1. 概述
文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能
Part 2. 向量化算法word2vec
Pre
1. 词袋模型
词袋(Bag Of Word)模型是最早的以词语为基本处理单元的文本向量化方法
缺点
维数灾难
无法保留词序信息
存在语义鸿沟问题
2. 分布假说
分布假说(distributional hypothesis)
核心思想
上下文相似的词,其语义也相似
1. 神经网络语言模型
神经网络语言模型(Neural Network Language Model,NNLM)
目标
构建一个语言概率模型
基本结构
分支主题
优点
由于NNLM模型使用低维紧凑的词向量对上文进行表示,这解决了词袋模型带来的数据稀疏、语义鸿沟等问题,显然NNLM模型是一种更好的n元语言模型
在相似的上下文语境中,NNLM模型可以预测出相似的目标词
2. C&W模型
目标
生成词向量
核心机理
如果n元短语在语料库中出现过,那么模型会给该短语打高分
如果是未出现在语料库中的短语则会得到较低的评分
结构
分支主题
优点
较NNLM模型而言,C&W 模型可大大降低运算量
3. CBOW模型和Skip-gram模型
CBOW模型(Continuous Bag of-Words)
目标
根据上下文来预测当前词语的概率,且上下文所有的词对当前词出现概率的影响的权重是一样的
结构
分支主题
该模型使用一段文本的中间词作为目标词
CBOW模型去掉了隐藏层,这会大幅提升运算速率
Skip-gram模型
目标
根据当前词语来预测上下文概率
结构
分支主题
Part 3.向量化算法doc2vec/str2vec
1. 提出
谷歌的工程师Quoc Le和Tomoas Mikolov在word2vec的基础上进行拓展,提出了doc2vec技术
2. 模型
Distributed Memory(DM)
目标
DM模型试图预测给定上下文中某单词出现的概率,只不过DM模型的上下文不仅包括上下文单词而且还包括相应的段落
Distributed Bag of Words(DBOW)
目标
DBOW则在仅给定段落向量的情况下预测段落中一组随机单词的概率
3. 优点
DM模型与CBOW模型相对应,故可根据上下文词向量和段向量预测目标词的概率分布
DBOW模型与Skip-gram模型对应,只输入段向量,预测从段落中随机抽取的词组概率分布
doc2vec是word2vec的升级,doc2vec不仅提取了文本的语义信息,而且提取了文本的语序信息
Chapter 8:情感分析技术
Part 1. 情感分析的应用
1. 电子商务
2. 舆情分析
3. 市场呼声
4. 消费者呼声
Part 2. 情感分析的基本方法
1. 词法分析
运用了由预标记词汇组成的字典,使用词法分析器将输入文本转换为单词序列
过程
将每一个新的单词与字典中的词汇进行匹配
如果有一个积极的匹配
分数加到输入文本 的分数总池中
如果有一个消极的匹配
输入文本的总分会减少
处理方法流程图
分支主题
不足
其性能(时间复杂度和准确率)会随着字典大小(词汇的数量)的增加而迅速下降
2. 基于机器学习的分析
主要使用监督学习方法,有3个阶段
数据收集
预处理
训练分类
分类器使用一系列特征向量对目标数据进行分类
在机器学习技术中,决定分类器准确率的关键是合适的特征选择
特征向量的选择
常用
unigram(单个短语)
bigrams(两个连续的短语)
trigrams(三个连续的短语)
其它
积极词汇的数量
消极词汇的数量
文档的长度
支持向量机(SVM)
朴素贝叶斯(NB)
卷积神经网络(CNN)
挑战
分类器的设计
训练数据的获取
对一些未见过的短语的正确理解
3. 混合分析
Polling多项式分类器(PMC,又称多项式朴素贝叶斯)
Chapter 9:NLP中用到的机器学习算法
Part 1. 简介
Pre
1. 研究动机
让计算机系统具有人的学习能力以便实现人工智能
2.核心
建模和算法
1. 机器学习训练的要素
1. 数据
机器学习发展的核心
复杂的非线性模型比其它线性模型需要更多的数据
2. 转换数据的模型
非线性函数
3. 衡量模型好坏的损失函数
对比模型的输出和真实值之前的误差
4. 一个调整模型权重以便最小化损失函数的算法
最小化损失函数
2. 机器学习的组成部分
按学习结果分类
预测(Prediction)
一般用回归(Regression,Arima)等模型
聚类(Clustering)
K-means
分类(Classification)
支持向量机(SVM),逻辑回归(Logistic Regression)
降维(Dimensional reduction)
主成分分析(PCA)
按学习方法分类
监督学习(Supervised Learning)
深度学习
无监督学习(Un-supervised Learning)
聚类
半监督学习(Semi-supervised Learning)
增强学习(Reinforced Learning)
Part 2. 常用机器学习算法
1. 文本分类
概念
文本分类是指在给定分类体系,根据文本内容自动确定文本类别的过程
分类过程
训练阶段
根据训练数据训练得到分类模型
预测阶段
根据分类器推断出文本所属类别
步骤
1)定义阶段
定义数据以及分类体系,具体分为哪些类别,需要哪些数据
2)数据预处理
对文档做分词、去停用词等准备工作
3)数据提取特征
对文档矩阵进行降维,提取训练集中最有用的特征
4)模型训练阶段
选择具体的分类模型以及算法,训练出文本分类器
5)评测阶段
在测试集上测试并评价分类器的性能
6)应用阶段
应用性能最高的分类模型对待分类文档进行分类
2. 特征提取
在使用分类器之前,需要对文本提取特征
提取方法
Bag-of-words
最原始的特征集,一个单词/分词就是一个特征
统计特征
Term frequency(TF)
Inverse document frequency(IDF)
TF-IDF
N-Gram
一种考虑了词汇顺序的模型,就是N阶Markov链
3. 标注
给定一个输入,输出不定量的类别,这个就叫作标注任务
4. 搜索与排序
PageRank
5. 推荐系统
推荐算法
6. 序列学习
模型
seq2seq
案例
语音识别
文本转语音
机器翻译
Part 3. 分类器方法
1. 朴素贝叶斯(Native Bayesian)
概念
朴素贝叶斯方法是基于贝叶斯定理与特征条件独立假设的分类方法
过程
1)对于给定的训练集合,首先基于特征条件独立(所以叫朴素版的贝叶斯)学习输入、输出的联合概率分布
2)基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y
2. 逻辑回归(Logistic Regression)
优点
实现建单
分类时计算量小
速度快
存储资源低
缺点
容易欠拟合
准确度欠佳
3. 支持向量机(SVM)
目的
在特征空间中寻找到一个尽可能将两个数据集合分开的超级平面(hyper-plane)
过程
1)目标函数
2)拉格朗日法求导
3)解决对偶问题
优点
可用于线性/非线性分类,也可用于回归
低泛化误差
推导过程优美,容易解释
计算复杂度低
缺点
对参数和核函数的选择比较敏感
原始的SVM只擅长处理二分类问题
Part 4. 无监督学习的文本聚类
Chapter 10:基于深度学习的NLP算法
Part 1. 深度学习概述
1. 神经元
神经元结构图
分支主题
数学公式
分支主题
2. 激活函数
Sigmoid函数
3. 感知机与多层网络
多层感知机
分支主题
多层网络/多层感知器(Multi-Layer Perceptron,MLP)
Part 2. 神经网络模型
将很多个单一的神经单元组合到一起,一个神经单元的输出就可以是另一个神经单元的输入
Part 3. 多输出层模型
前馈网络
Part 4. 反向传播算法
反向传播算法(Back Propagation,BP)
BP算法不仅可以用于多层前馈神经网络,还可以用于其他类型神经网络,例如LSTM
推导过程
1)前馈网络传导计算
逐层算出L2到最后一层的每层节点的激活值
2)计算各节点的残差值
对于输出层,使用公式
分支主题
上式推导过程
3)从最后一层依次向前推到第2层
第l层的残差
分支主题
由上式可推出
依上面只需将nl替换为l就可以推到中间层l与l=1的残差关系
更新偏导数
分支主题
Part 5. 最优化算法
机器学习完成一个训练任务的三个要素
算法模型
目标函数
优化算法
梯度下降
函数的梯度方向代表了函数值增长最快的方向
那么和它相反的方向就是函数减少速度最快的方向
随机梯度下降(SGD)
在梯度下降方法上的创新
批量梯度下降(MGD)
Part 6. 丢弃法(Dropout)
通常是对输入层或者隐藏层做操作
随机选择部分该层的输出作为丢弃元素
把想要丢弃的元素乘以0
把非丢弃元素拉伸
一般情况下,隐含节点Dropout率等于0.5的时候效果最好,原因是0.5的时候Dropout随机生成的网络结构最多
Part 7. 激活函数
1. sigmoid函数
公式表达
分支主题
图像描述
分支主题
2. tanh函数
公式表达
分支主题
图像描述
分支主题
3. ReLu函数
(Rectified Linear Unit,规划线性单元)
公式表达
分支主题
图像描述
分支主题
Part 8. 实现BP算法
Code见源码
Part 9. 词嵌入算法
1. 词向量
One-Hot表示
把每个词顺序编号,每个词就是一个很长的向量,向量的维度等于词表大小,只有对应位置上的数字为1,其他都为0
基本假设
词之间的语义和语法关系是相互独立的
缺点
仅仅从两个向量是无法看出两个词汇之间的关系 的,这种独立性不适合词汇语义的运算
维度爆炸。随着词典规模的增大, 句子构成的词袋模型的维度变得越来越大,矩阵也变得超稀疏,这种维度的爆增,会大大耗费计算资源
2. word2vec
基本假设
基于语言学的 距离象似性原理
衡量词语之间的相似性,在于其相邻词汇是否相识
3. 词向量模型
Part 10. 训练词向量实践
Code见源码
Part 11. 朴素Vanilla-RNN
RNN
循环神经网络
能够通过在原有神经网络基础上增加记忆单元,处理任意长度的序列(理论上),在架构上比一般神经网络更加能够处理序列相关的问题
基本网络单元
分支主题
网络示意图
分支主题
Part 12. LSTM网络
1. 长短时记忆网络
(Long Short Term Memory network)
门结构
遗忘门
sigmoid层
1——完全保留
0——完全遗忘
输入门
状态门
2. LSTM变种形式
增加了窥视孔连接(peephole connection)
使用了配对遗忘与输入门
Gated Recurrent Unit(GRU)
将输入门和遗忘门结合成了一个单独的”更新门”
Depth Gated RNN
Clockwork RNN
Part 13. Attention机制
1. 基本思想
打破了传统编码器—解码器结构在编解码时都依赖于内部一个固定长度向量的限制
2. 实现
通过保留LSTM编码器输入序列的中间输出结果
训练一个模型来对这些输入进行选择性的学习,并且在模型输出时将输出序列与之进行关联
3. 文本翻译
当给定一个法语句子的输入序列,将它翻译并输出英文句子
4. 图说模型
5. 语音识别
6. 文本摘要
Part 14. Seq2Seq模型
1. 模型示意图
分支主题
2. Encoder
直接使用RNN(一般用LSTM)进行语义向量生成
其中f是非线性激活函数,ht-1是上一隐节点输出,xt是当前时刻的输入
3. Decoder
使用另一个RNN通过当前隐状态ht来预测当前的输出符号yt
分支主题
Part 15. 图说模型
从图片中自动 生成一段描述性文字
Part 16. 深度学习平台
1. Tensorflow
简介
Google在2015年底发布的开源深度学习框架
优点
高度的灵活性
可移植性好
高可靠性
性能卓越
支持的语言丰富
缺点
学习曲线陡峭
学习成本会高
前后的版本接口变动很大
2. Mxnet
简介
亚马逊(Amazon)的李沐带队开发的深度学习库
3. PyTorch
简介
PyTorch是近年来Torch7团队开源的Python优先的深度学习框架,能够在强大的GPU加速基础上实现张量和动态神经网络
功能
使用强大的GPU加速Tensor计算(类似Numpy)
构建基于tape的自动升级系统的深度神经网络
优点
图是动态的
PyTorch非常简洁,方便使用
4. Caffe
简介
Caffe是深度学习框架之一,基于C++语言编写,是一个清晰、可读性强、快速上手的深度学习框架。作者是中国人贾杨清
存储格式
HDF5
LMDB
LevelDB
优势
Caffe代码完全开源,速度快,支持GPU加速
Caffe自带一系列网络,如AlexNet、VGG等
Caffe代码设计比较模块化,方便阅读学习
Caffe支持Python以及MATLAB接口
5. Theano
简介
Theano由 Frédéric Bastien创建,这是蒙特利尔大学机器学习研究所(MILA)背后的一个非常优秀的研究团队
Chapter 11:Solr搜索引擎
Part 1. 全文检索的原理
1. 全文检索
根据搜索关键字的方式搜索到相应的文档
2. 对于非结构化数据的搜索方法
顺序扫描法(Serial Scanning)
每次都要扫描
全文检索(full-text search)
先建立索引,再对索引进行搜索的过程
Part 2. Solr简介与部署
1. 简介
Solr是一种开放源码的、基于Lucene Java的搜索服务器,易于加入Web应用程序中
2. 特性
高级的全文搜索功能
专为高通量的网络流量进行的优化
基于开放接口(XML和HTTP)的标准
综合的HTML管理界面
可伸缩性——能够有效地复制到另外一个Solr搜索服务器
使用XML配置达到灵活性和适配性
可扩展的插件体系
3. 部署
1)下载Tomcat、Solr、JDK安装包
Solr6版本最好是搭配JDK1.8
2)规划安装目录
3)将下载好的Tomcat、Solr、JDK包移动到安装目录下,并且使用Linux命令tar分别对Tomcat以及Solr解压
4)将解压完的包通过Linux的命令mv重新命名并且移动到安装目录下,重新命名的意义在于使目录的名称更为简洁
5)验证JDK是否安装成功
6)Solr集成Tomcat
7)启动tomcat,启动命令
8)建立solrcore
Part 3. Solr后台管理描述
Part 4. 配置schema
配置步骤
1)managed-schema
2)FieldType域类型定义
3)Field定义
name
type
indexed
stored
multiValued
该Field如果要存储多个值时设置为true,Solr允许一个Field存储多个值
Part 5. Solr管理索引库
1. 创建索引
2. 查询索引
3. 删除文档
0 条评论
下一页