CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(1)

简介: CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM…你都掌握了吗?一文总结情感分析必备经典模型


机器之心专栏

本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。

本文将分 3 期进行连载,共介绍 18 推荐系统任务上曾取得 SOTA 的经典模型。


  • 第 1 期:CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM
  • 第 2 期:MemNet、AT-LSTM、IAN、AF-LSTM
  • 第 3 期:Bert on ABSA、ASGCN、GAN、Sentic GCN

您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。


本期收录模型速览

模型 SOTA!模型资源站收录情况 模型来源论文
CNN https://sota.jiqizhixin.com/project/textcnn
收录实现数量:6
支持框架:PyTorch,TensorFlow等
Convolutional Neural Networks for Sentence Classification
GRNN https://sota.jiqizhixin.com/project/grnn-2 Document modeling with gated recurrent neural network for sentiment classification
CLSTM https://sota.jiqizhixin.com/project/clstm Cached Long Short-Term Memory Neural Networks for Document-Level Sentiment Classification
TD-LSTM/TC-LSTM https://sota.jiqizhixin.com/project/td-lstm-2
收录实现数量:11
支持框架:PyTorch,TensorFlow等
Effective LSTMs for Target-Dependent Sentiment Classification


情感分析(sentiment analysis)是指利用计算机技术对文本、图像、音频、视频甚至跨模态的数据进行情绪挖掘与分析。广义上讲,情感分析还包括对观点、态度、倾向的分析等。情感分析是自然语言处理的一个重要的研究领域。情感分析主要涉及两个对象,即评价的对象(包括商品、服务、组织、个体、话题、问题、事件等)和对该对象的态度、情感等。情感分析在社会的舆情管理、商业决策、精准营销等领域有着广泛的应用。从情感分析的数据来源角度看,可分为人脸情感分析、语音情感分析、肢体语言情感分析、文本情感分析和生理模式情感分析等,本文聚焦于文本的情感分析,这也是目前网络内容理解中使用的重要技术(如无特别说明,下文中提到的情感分析均为文本情感分析)。

在自然语言处理中,情感分析属于典型的文本分类问题,即把需要进行情感分析的文本划分为其所属类别。主流的情感分析方法有两种:基于词典的方法和基于机器学习算法的方法。基于词典的方法主要通过制定一系列的情感词典和规则,拆解文本、提取关键词、计算情感值,最后通过情感值来作为文本的情感倾向判断依据。这种方法往往会忽略其词顺序、语法和句法,将这段文本仅仅看做是一个词集合,因此不能充分的表达文本语义信息。而引入深度学习技术的机器学习方法,利用词嵌入技术可以避免文字长短不均带来的处理困难;使用深度学习抽象特征,可以避免大量人工提取特征的工作;模拟词与词之间的联系,有局部特征抽象化和记忆功能,因此,深度学习技术在情感分析中发挥了越来越重要的作用。

目前情感分析用到的深度学习神经网络有多层神经网络(MLP)、卷积神经网络(CNN)和长短期记忆模型(LSTM),具体不同的模型通过交叉验证技术选取最优参数(比如,几层模型、每层节点数、Dropout 概率等)。情感分析的模型主要分为三个层面,分别为:Document level、Sentence level和Aspect level。其中,Document level是将整个文本作为分析单元并假设该文本讨论的对象为单一实体且情感、观点都是鲜明、清晰的,即neural、positive or negative 。Sentence level则是以每个句子作为单独的分析对象,由于句子与句子间可能存在某些关联,因此我们不能将其认为是观点明确的。而对于Aspect level其分类粒度更细,即我们需要抽取出targets不同层面相互独立的评价,并进行总结综合得到最后的情感。

本文回顾情感分析中必备的TOP模型。一些经典的自然语言处理领域的模型,例如XLNet、Bert及各种变体,适用于NLU、文本生成、情感分析等多个领域,本文均不涉及。本文只专注于专门的sentiment analysis模型。




一、Document level/Sentence level


1、 CNN

这篇文章引入卷积神经网络(CNN),将层与卷积滤波器应用于局部特征。最初发明用于计算机视觉的CNN模型后被证明对NLP有效,并在语义分析、搜索查询检索、句子建模和其他传统NLP任务中取得了优异的结果。本文训练了一个简单的CNN,在一个无监督的神经语言模型得到的单词向量的基础上再加上一层卷积,最初保持单词向量静态,只学习模型的其他参数。这个简单的模型在多个基准上取得了很好的结果,这表明预先训练的向量是“通用”的特征提取器,可以用于各种分类任务。通过微调学习特定于任务的向量,可以得到进一步的改进。最后,作者描述了对网络结构的一个简单修改,通过拥有多个通道,允许使用预先训练的和任务特定的向量。


图1 有两个通道的例句的模型结构


设xi ∈ Rk 为对应于句子中的第i个单词的k维词向量,句子长度为n,图1左侧是一个n*k的矩阵,表示一句话的n个词语,每个词语是一个k维向量,假设文本中最长的句子中的词个数为n,则 小于n 的句子填充为m。最终得到的词向量矩阵为 n * k。表示为:




其中,⊕是串联运算符。X_i:n为单词xi的串联(从第i个单词到第n个单词,把它们串联起来),卷积运算包含一个滤波器w∈R^hk,它被应用于单词h的窗口以生成一个新的特征。例如,特征c_i由单词x_i:i+h−1的窗口生成:



其中,b∈R是一个偏置项,w是权重,f是一个非线性函数。这个过滤器应用于句子{X_1:h, X_2:h+1, …, X_n-h+1:n}生成特征图:



然后在特征映射上应用max超时池化操作,并将最大值ˆc=max{c}作为与此对应的特征特殊过滤器。其思想是为每个特征映射捕获最重要的特征,即具有最高值的特征。这种池化方案可以处理可变的句子长度。

此外,本文在倒数第二层使用了dropout以解决过拟合问题,当模型参数太多而训练样本少的时候容易出现过拟合问题。


项目 SOTA!平台项目详情页
CNN 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/textcnn


2、 GRNN

这篇文章引入了一个神经网络,以统一的、自底向上的方式来学习基于向量的文本表示方法。该模型首次使用CNN/LSTM来学习句子表示,利用Gated RNN自适应地对句子的语义及其之间关系进行编码。


图2 文本级情感分类的神经网络模型。(w_i)^n代表第n个句子中的第i个词,l_n是句子长度

词向量表示
词向量表示有两种实现方式:随机初始化或者预训练的方式。作者参考的是word2vec实现方案,并且用预训练词向量的方式以保留更多的语义信息。

句子表示
CNN和LSTM模型都可以用于句子编码。两种模型可以将非固定长度的句子表示成定长的向量,且不需依赖依存句法分析或者成分句法分析就能保留句子的词序等信息。作者在本文中使用CNN with multiple conventional filters of different widths的方式实现句子编码。作者在文章中分别使用宽度为1,2,3的卷积核去获取unigrams,bigrams和trigrams。为了得到句子的全局语义信息,作者随后接入一个average pooling layer,再接入tanh激活函数(作用是引入非线性),最后将整个句子的不同宽度卷积核的向量表示接入一个Average层,从而得到该句平均向量表示。整个过程如图3所示。


图3 使用卷积神经网络进行句子合成

篇章表示
一个最简单的实现策略是:忽略句间顺序,直接使用句向量的平均值作为该文本向量表示。先不考虑计算效率问题,这种方式并不能有效的保留句子之间复杂的语言关系(比如:原因结构,反义结构等)。CNN模型可以用来表示篇章,这种模型通过其线性层储存句间关系。RNN也可以实现,但基本的RNN模型存在缺陷:梯度消失或者梯度爆炸。在长句中问题就会凸显出来:梯度可能会呈指数级上升或者衰减,这就使得长距离依赖问题变得棘手。为了解决这个问题,作者将基本RNN改造成一种带有门控结构的RNN,这种方式类似于LSTM或者GNN,区别见下列转换函数:

该模型可以被看作是一个LSTM,它的输出门永远是打开的,因为我们更倾向于不抛弃句子的任何部分语义来获得更好的文本表示。图4(a)显示了一个标准的顺序方式,其中最后一个隐藏向量被视为情感分类的文本表示。我们可以做进一步的扩展,比如将隐性向量的平均值作为文本表示,这需要考虑具有不同颗粒度的历史语义的层次结构。该方法如图4(b)所示。进一步,可以以同样的方式使用前面的历史和后面的证据,并利用双向门控RNN作为计算工具。


图4 用门控递归神经网络进行文本文建模。GNN代表了门控递归神经网络的基本计算单元

组合的文本表示可以自然地被视为文本特征,用于情感分类而不需要特征工程。具体来说,首先添加一个线性层,将文本向量转化为实值向量,其长度为类号C。之后,添加一个softmax层,将实值转化为条件概率,其计算方式如下:



对于模型训练,作者使用黄金情感分布P^g(d)和预测的情感分布P(d)之间的交叉熵误差作为损失函数:



然后通过反向传播对整个参数集求损失函数的导数,使用随机梯度下降算法更新参数:


项目 SOTA!平台项目详情页
GRNN 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/grnn-2



相关文章
|
3天前
|
机器学习/深度学习 存储 数据可视化
【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码2
【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码
|
3天前
|
机器学习/深度学习 数据可视化 TensorFlow
【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码1
【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码
|
3天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
11天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
13天前
|
机器学习/深度学习 编解码 算法
R语言用FNN-LSTM假近邻长短期记忆人工神经网络模型进行时间序列深度学习预测4个案例
R语言用FNN-LSTM假近邻长短期记忆人工神经网络模型进行时间序列深度学习预测4个案例
|
22天前
|
机器学习/深度学习 人工智能 数据可视化
【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析
【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析
|
22天前
|
机器学习/深度学习 Python 数据处理
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
|
23天前
|
机器学习/深度学习 人工智能 数据可视化
CNN(卷积神经网络)模型以及R语言实现
CNN(卷积神经网络)模型以及R语言实现
|
23天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言实现CNN(卷积神经网络)模型进行回归数据分析
R语言实现CNN(卷积神经网络)模型进行回归数据分析
|
23天前
|
机器学习/深度学习 人工智能 测试技术
基于keras平台CNN神经网络模型的服装识别分析
基于keras平台CNN神经网络模型的服装识别分析

热门文章

最新文章