@[toc]
回顾
在自然语言处理任务中,主要是两个:1、文本数据的表示。2、模型的选择处理。我们之前使用fasttext就是这两者的结合,他可以很快的训练处词向量,然后用softmax算法进行分类。这其中的所有过程对我们来说是透明的,细节我们都不清楚,所以为了更好的学习,接下来我们学习使用word2vec来训练词向量并使用textRNN或者TextCNN算法实现新闻文本分类效果
word2vec的基本概念理解
word2vec
下面是datawhale给出的解释:
本节通过word2vec学习词向量。word2vec模型背后的基本思想是对出现在上下文环境里的词进行预测。对于每一条输入文本,我们选取一个上下文窗口和一个中心词,并基于这个中心词去预测窗口里其他词出现的概率。因此,word2vec模型可以方便地从新增语料中学习到新增词的向量表达,是一种高效的在线学习算法(online learning)。
个人理解:
首先计算机只认识数值型的基本数据,所以我们需要把文本转成数值型表示。可以使用独热编码或者词袋模型等方式。如给定词典:[“我”,“夸赞”,“他们”,“帅”,“吴彦祖”,“像”,“一样”,“跟”,“比”]
这个时候某句话的表示:我/夸赞/他们/比/吴彦祖/帅/。可以表示为[1,1,1,1,1,0,0,0,1]
当然这个时候如果词与词之间还有关系的话可以使用条件概率的方式表示概率如:在吴彦祖这个词前是我/夸赞,这个是可以通过统计和条件概率计算的方式得到的。
根据上面我们可以理解word2vec的基本思想了,对出现上下文环境中的词进行预测。对于每一条输入文本,我们选取一个上下文窗口和一个中心词,并基于这个中心词去预测窗口里其他词出现的概率。就是通过向量表示后,通过条件概率等方式表示出某一个或几个词后的概率是什么,或者反过来,通过出现的单词预测上下文。
word2vec的两个算法分别为:Skip-grams (SG):预测上下文、Continuous Bag of Words (CBOW):预测目标单词
Skip-grams (SG):预测上下文
如上所表述的,对文本向量化表示后,使用条件概率来计算某个单词后预测上下文
Continuous Bag of Words (CBOW):预测目标单词
通过条件概率等方式计算某N个单词序列后出现什么单词概率较大
以上是本人对word2vec的一些粗浅理解。
使用word2vec训练词向量
使用gensim的word2vec中的方法很简便就能训练出我们的词向量
model = gensim.models.Word2Vec(documents, size=300)
model.train(documents, total_examples=len(documents), epochs=10)
model.save("../input/Word2vec.w2v")
TextCNN原理理解
我们训练好词向量后,可以考虑对词向量进行一定的操作转换,比如词袋模型的方式,这样能降低一定的复杂度。接下来就是把词向量运用到textCNN中,实现新闻分类的效果。
textCNN是2014年提出的模型,网络结果如下图:
详细过程原理如下图: