循环网络之NLP之文本表示

离散表示文本:

文档向量One-hot 

step 1:构建所有词构建一个词典。

step 2:对词典的每一个词做One-hot编码

每个词向量只有一个位置有1,其他位置全为零。

文档向量可以直接将各词的词向量表示加和

ps:基于词的one-hot编码,来表示句子向量。

 

TF-IDF模型(逆文档频率)

词权重(TF-IDF)词不是出现次数越高,就一定重要!(例如:惯用词)

权重是啥:你在此文本出现频率越高,而在其他文本出现频率越低,才会认为这个词是个重要词,最终的值才会大!

通过词的概率来构建文档向量!

ps:优化了词的重要性表达,但是忽略了词与词之间的顺序。(李雷喜欢韩梅梅,和韩梅梅喜欢李雷)

ps:基于频数的词袋模型。/词袋模型就是对词来说的,忽略了词之间关系的模型。

ps:基于tf-idf的词袋模型。

 

N-gram词向量表示

通过滑窗的思路保住词的顺序,保留一元组,二元组,三元组........N元组来构建这样的一个词典!

结果:数量太多,引出N元语言模型近似表示!!

N元语言模型

这样顺序的一组词组成这样的句子出现的概率。

这不就类似朴素贝叶斯嘛!

依赖上一级:

总结:就是描述这些词以这种顺序排列的概率有多高!

 

连续表示文本:

现代统计自然语言处理中最有创见的想法之一:词的含义可能会被附近的词进行代表

Co-currence矩阵的行(列)向量作为词向量(共现矩阵)

通过滑窗,捕捉语义,可以挖掘语法和语义信息。(每一个词可以用周边的词来表示出来

滑窗的大小一般设置为5-10,因为需要扑捉到更多的信息嘛!

利用了n-gram的滑窗思想!window_size=1时!只有2个组合  i对i  , i对like  等等........

 

 

Co-currence矩阵的SVD降维的低维词向量表示

使用n-gram的话,词典会非常的大,对空间消耗很大。

最直接的想法:直接使用SVD对共现矩阵做降维!

但是,随着语料库和词典增长太快,直接做降维时间复杂度是O(n立方),而且每加一个词矩阵就会加很多,

而且与其他深度学习的学习矿建差异很大,数据都会变动很大,学出来的模型能行吗?

NNLM(Neural Network Language model)

目标:训练语言模型,通过窗口的前若干(N-1)个词,来预估最后一个(N)词!

假设函数:N元语言模型。

损失函数:

归一化条件:

思路:对前n-1个前向词用one-hot编码生成n-1个v*1维的列向量,把这n-1个稀疏列向量映射到投影矩阵(D*V)在进行拼接得到D*(N-1)矩阵(是我们要得到的矩阵),然后就进入神经网络进行计算!输出层:softmax,损失函数优化:BP+SGD

V代表词典维度,D代表稠密词维度,D*V就是稠密词向量矩阵

Word2Vec:Continuous(连续) Bag of Words Model(CBOW)连续词袋模型

step 1 (样本):利用滑窗的思想,从左往右滑动,把每个滑窗把中间的词当成目标词,上下文的词当成输入。构建一个样本训练方式是有监督的哈,输入数据是无监督的

ps:进行词典的one-hot映射生成词的向量,在通过词对的形式构建出样本。

step 2(模型):把样本输入(上下文的词)(n-1个v*1维的词向量),在D*V上进行投影,对n-1个结果进行求和得到稠密词的列向量D*1维度(是最后我们需要的向量,然后用softmax进行分类(D个类别,词典的词数),D个词的全连接

ps:对词向量进行稠密矩阵的映射得到了稠密词向量,然后进行相加合并,在进行分类。

小结:你会发现,softmax分类的维度太高了,词典有多少次你就有多少类别,而且还是全连接,这会产生神经元*类别个参数!

step 3(层次化softmax):平铺开的多分类,变为若干次二分类问题。将Haffman树加在这里会怎样?(简单介绍下,基于贪心的思想每次合并出现频率最小的两个树,依次构建即可,最后这棵树出现概率最大的节点一定会出现在离根节点最近的地方!本质还是尽可能多的信息复用)!

step 4(负例采样):另一种优化softmax平铺的思路,一个正样本,v-1个负样本,我考虑下采样负样本,然后不就好做了吗?

采样的策略:统计词出现概率高低,来计算一个长度,并且把所有样本的长度都归一化到[0,1]区间,每次随机选一个位置即可,长度大的样本选中概率大!

Word2Vec:Skip(跳跃)-Gram Model

利用中心词去预估周边词!

word2vec存在的问题:

算法思想是建立在滑窗上来进行的,你只看到了滑窗里面的信息,而没有注意到全局的信息。

word2vec的优点:

可以学习到词和词之间的分布。

ps:可以生成词向量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值