天池NLP学习赛(5)基于深度学习的文本分类2(word2vec与TextCNN实现文本分类)

基于深度学习的文本分类2

主要内容是从datawhale的官方学习blog中得到的,网址,主要介绍了相关模型的网络结构和模型的训练过程

分为两部分:
(1)word2vec词嵌入(词向量)
(2)利用神经网络在词向量的基础上实现文本分类(主要是TextCNN,因为TextRNN只用换个网络结构,然后HAN(分层注意力网络)的论文暂时咕咕咕了)希望以后有一天能仔细看看!

相当于利用word2vec模型作为embedding layer。正常的操作是用现有的所有文本(或者可以利用其它大量相似语料)进行word2vec的模型训练,得到词与词之间的联系作为词的特征。

这里的内容是python的实现和一些细节介绍。就简单例子,具体操作(因为的实战代码长且慢就没放上去)

part 1:文本表示方法 3:word2vec

(一) 主要内容

介绍:Word2vec模型为浅而双层的神经网络,网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。

word2vec的主要思路:通过单词和上下文彼此预测,对应的两个算法分别为:

(1)Skip-grams (SG):给定input word来预测上下文

(2)Continuous Bag of Words (CBOW):给定上下文,来预测input word

模型本质上是通过样本计算一个词a的一定范围内(例如前后的词)出现词b的概率。
Word2Vec模型实际上分为了两个部分,第一部分为建立模型(架构模型,训练参数),第二部分是通过模型获取嵌入词向量(input → \rightarrow output)。

另外提出两种更加高效的训练方法:

(1)Hierarchical softmax(之前fasttext模型的论文中提到过论文地址)

(2)Negative sampling

(二)word2vec例子

在这里我们具体介绍word2vec模型的实现,模型的结构和具体过程参考:

(1)使用gensim库

这里使用gensim库来实现word2vec,anaconda直接pip install gensim。

(2)word2vec API
class gensim.models.word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)

参数介绍:
(1)sentences:输入语句:形式为[‘I’,‘am’,‘a’,‘vegetable’,‘dog’]

(2)size:特征向量的维度

(3)alpha: 在随机梯度下降法中的初始学习率(初始步长)

(4)window:描述滑动窗口大小,表示在一个句子中,当前单词和被预测的单词之间的最大距离看这里的图示介绍

一个例子:
window=2时:
对句子:[‘I’,‘am’,‘a’,‘vegetable’,‘dog’]选定包括’a’的前两个词和’a’的后两个词组成的窗口, 滑动窗口进行模型训练:
\quad (a)在Skip-grams时,输入’a’,根据’am’‘vegetable’‘dog’,(一共有100个单词,我们训练这100个词和’a’的相关性)
\quad (b)在CBOW时,输入’am’‘vegetable’‘dog’,根据’a’,训练所有100个单词和’am’‘vegetable’'dog’的相关性

(5)min_count:最小词频,忽略所有总频率低于此频率的单词。

(6)max_vocab_size 用于限制在构建单词表过程使用的内存,如果出现比这个数多的不同单词,就修剪掉频率最小的那些单 词;每100million单词类型需要1GB的RAM,设置为None即没有限制(默认)

(7)sample : 配置高频词被随机下采样的阈值,比较可靠的范围是(0,1e-5)

主要的原因是word2vec模型在训练时会出现’a’,'the’这样的高频词,这样的高频词和其它词之间的联系不能带 来很大的信息,从而对出现高频词的词对(‘the’,‘dog’/‘book’/…)进行抽样训练
保留某个单词的概率: P ( x ) = ( F ( x ) 0.001 + 1 ) × 0.001 F ( x ) P(x)=(\sqrt{\frac{F(x)}{0.001}+1})\times \frac{0.001}{F(x)} P(x)=(0.001F(x)+1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值