DataWhale零基础入门NLP赛事系列:Task5 基于深度学习的文本分类

1.word2vec

首先通过词向量的学习我发现了自己理解中的误区,我原来一直以为Word2Vec是一种词向量。其实它只是一种训练词向量的模型,和那些机器学习的模型的本质是一回事,通过训练数据得到我们想要的内容,只不过Word2Vec训练出来的是词的向量表示。我觉得这也是许多NLP任务中预训练词向量的原因吧。
Word2Vec模型背后的基本思想是对出现在上下文环境里的词进行预测。对于每一条输入文本,我们选取一个上下文窗口和一个中心词,并基于这个中心词去预测窗口里其他词出现的概率。因此,word2vec模型可以方便地从新增预料中学习新增词的向量表达,是一种高效的在线学习算法。
word2vec主要思路:通过单词和上下文彼此预测,对应的两个算法分别为:
Skip-gram(SG):通过中心词预测上下文。
Continuous Bag of Words(CBOW):通过上下文预测中心词
训练中有两个小tips:

  1. Hierarchical softmax
  2. Negative sampling

1.1 Skip-Gram原理和网络结构

Skip-Gram是给定input word来预测上下文。而CBOW是给定上下文,来预测input word。
在这里插入图片描述
Word2Vec模型实际上分为了两个部分,第一部分为建立模型,第二部分是通过模型获取嵌入词向量。

word2vec整个建模过程实际上与自编码器的思想相似。先基于训练数据构建一个神经网络,当这个模型训练好以后,不需要用这个训练好的模型处理新的任务,真正需要的是这个模型通过训练数据所学的的参数,例如隐层的权重矩阵——实际上我们看到的权重在w2v中就是我们尝试学习的词向量。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是很容易出现维度灾难。如果现在有10000个单词,词向量维度为3000维,那么总共会有10000*300=300万个权重。在如此庞大的神经网络中进行梯度下降非常慢。
解决方案:

  1. 将常见的单词组合(word pairs)或者词组作为单个“words”来处理
  2. 对高频次单词进行抽样来减少训练样本的个数
  3. 对优化目标采用“negative sampling”方法,这样每个训练样本的训练只会更新一小部分的模型权重,从而降低计算负担。

Hierarchical Softmax过程
为了避免要计算所有词的softmax概率,word2vec采样了霍夫曼树来代替从隐藏层到输出softmax层的映射。
在这里插入图片描述
在这里插入图片描述
使用gensim训练word2vec

from gensim.models.word2vec import Word2Vec
model = Word2Vec(sentences, workers=num_workers, size=num_features)

2.TextCNN

TextCNN利用CNN(卷积神经网络)进行文本特征抽取,不同大小的卷积核分别抽取n-gram特征,卷积计算出的特征图经过MaxPooling保留最大的特征值,然后将拼接成一个向量作为文本的表示。

这里我们基于TextCNN原始论文的设定,分别采用了100个大小为2,3,4的卷积核,最后得到的文本向量大小为100*3=300维。

在这里插入图片描述

3.TextRNN

TextRNN利用RNN(循环神经网络)进行文本特征抽取,由于文本本身是一种序列,而LSTM天然适合建模序列数据。TextRNN将句子中每个词的词向量依次输入到双向双层LSTM,分别将两个方向最后一个有效位置的隐藏层拼接成一个向量作为文本的表示。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值