目录
- 一.NLP含义
- 1.自然语言处理
- 2.NLP的作用
- 3.NLP和CV的区别
- 二.NLP的研究方向
- 1.处理文本信息
- 2.处理语音信息
- 3.处理其他信息
- 三.NLP的知识分布
- 1.循环神经网络
- 2.注意力机制
- 3.词向量
- 4.NLP的模型
- 一.NLP的定义和歧义性
- 二.词向量
- 三.word2vec
- 1.模型
- 2.CBOW与Skip-Gram模式
- 四.注意力机制attention transformer bert
一.NLP含义
1.自然语言处理
A. 语言和语义的关系
B.自然语言和自然语义的关系
C.计算机如何处理语言
2.NLP的作用
A.让计算机具有语言能力
B.充当计算机的语言大脑,有思维判断能力
3.NLP和CV的区别
A.二者处理的方向不同:
CV处理视觉问题
NLP处理语言问题
B.二者处理的方式不同:
CV是将图像转成像素矩阵,输入模型
NLP需要将文本转成向量(此向量是经过学习训练过的才有效果)
二.NLP的研究方向
1.处理文本信息
A.连续文本信息
B.离散文本信息
2.处理语音信息
语音一般都是基于一段时间的连续性信息,属于一维信号
3.处理其他信息
信号,波形,符号,代号等
三.NLP的知识分布
1.循环神经网络
按照序列进行输入输出的神经网络模型
A. RNN模型(双向)
B. LSTM模型(双向)
C. SEQ2SEQ(双向)
SEQ2SEQ是一种ENcoder-Decoder(编解码框架)的模型:
可以把它看作处理由一个句子(段落或篇章)生成另外一个句子(段落或篇章)的通用处理模型。
输入和输出可以是同一种语言,也可以是两种不同的语言,若是不同语言,就可以处理翻译问题了。若是相同语言,输入序列为篇章,而目标序列为
小段落则可以处理文本摘要问题
2.注意力机制
注意力就是让模型获得学习焦点的能力
A. 普通注意力
Attention for Image Captioning(图像识别/看图说话)
Attention for Machine Translation(机器翻译)
注意力模型可以看作是一种通用的思想,本身并不依赖于特定框架,但是目前大多数注意力模型都伴随在ENcoder-Decoder框架下。
在Seq2Seq结构中,encoder把所有的输入序列都编码成一个统一的语义向量context(就是我们所说的向量C),然后再由decoder解码
只用最后一个隐藏层输出的向量C表示整个句子的信息,不是很合理。
B. 自注意力
C. 多头注意力
3.词向量
经过学习后,让代表每个词的向量之间产生一定关系
A. 词的来源:从包含被学习的词的语料库(文章)中获得
B. 步骤:分词,去重,定义向量维度,建模型,训练
C. 词和向量之间的转换:
对词进行转换成定义好的长度的向量
D. 向量维度的大小
理论上是维度越多可能越好,但是实际上是有问题的:
向量维度越高,学习越慢
维度越高,占用内存空间越大
产生类似过拟合的效果,关注细节越多,结果产生偏差
一般情况下,维度在500-800之间就可以
E. 向量的编码形式
1.稠密向量:
优点:维度不需要太长,表示的信息更丰富
缺点:反向传播计算量太大,不利于网络学习
2.稀疏向量
ONE-HOT:
利于网络学习,但是词的个数太多的时候,需要更长的向量来表示,增加了存储空间
树结构:普通树(二叉树),最优树(霍夫曼树)
一般在向量个数小于5000的时候使用Onet-hot,大于5000的时候使用树结构
F.衡量向量差异的方法
1. 距离(欧式距离)
2. 余弦相似度
4.NLP的模型
A. word2vec
CBOW
Skip-gram
B. ELMo
C. transformer
D. Bert
E. GPT2
F. XLnet
一.NLP的定义和歧义性
NLP = NLU +NLG
NLU: 语音/文本 —>意思meaning
NLP : 意思meaning ----> 语音/文本
Why NLP is harder than CV ?
①理解语义(meaning)
② Ambiguity (一词多义):
③ 上下文(Context)
一个词语的意思有多种,可以需要根据上下文来重新更新该词语的意思
④分词
中文分词 ‘今晚的课程有意思’ :今晚/的/课程/有意思
中文分词工具 jieba 安装方式 :pip install jieba
二.词向量
词向量:可以理解为从词转换到向量
真实世界抽象存在的文字转换成可以进行数学公式操作的向量,而对这些向量的操作,才是NLP真正要做的任务
我们这里说的词向量必须要有相关性,是经过学习过后的
最简单的将词变成向量的方法:
V代表词库,词库中有6个词,每个词用one-hot向量编码如图所示:
上述方法存在的问题:
- 这是一种稀疏的编码方式,即存在大量的0元素,只有极少部分的非0元素
- 无法表示出单词之间的语义相关性(相似度,距离)
来看下面这种分布式的表示方法(稠密Dense的编码方式,也可以表示出单词之间的相关性):
三.word2vec
1.模型
word2vec模型其实就是简单化的神经网络。
输入是One-Hot Vector,Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。
我们要获取的dense vector其实就是隐藏层Hidden Layer的输出单元。有的地方定为Input Layer和Hidden Layer之间的权重,其实说的是一回事。下图所示,假设隐藏层有三个神经单元,即表示用【1,3】的向量表示一个词的词向量:
2.CBOW与Skip-Gram模式
word2vec主要分为CBOW(Continuous Bag of Words)和Skip-Gram两种模式。
CBOW是从原始语句推测目标字词;而Skip-Gram正好相反,是从目标字词推测出原始语句。
CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
对同样一个句子:Hangzhou is a nice city。我们要构造一个语境与目标词汇的映射关系,其实就是input与label的关系。
这里假设滑窗尺寸为1
CBOW可以制造的映射关系为:[Hangzhou,a]—>is,[is,nice]—>a,[a,city]—>nice
Skip-Gram可以制造的映射关系为(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)
四.注意力机制attention transformer bert
SEQ2SEQ添加attention机制