APP下载

基于Transformer的文本情感分析应用实践

2021-09-27翟高粤高乾龙

客联 2021年7期
关键词:深度学习

翟高粤 高乾龙

摘 要:文本情感分析是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。本文先介绍文本情感分析的本质和任务,然后引入Transformer并进行其结构、原理和位置编码概念介绍;最后对整个项目结构关键部分进行模块分析和功能说明。

关键词:深度学习;Transformer;文本情感分析;多头注意力机制

自然语言处理NLP的一项重要处理就是情感分析Sentiment Analysis,它在社交内容的分析以及电商评论反馈分析中,都占有很高的分析价值。文本情感分析任务本质是自然语言序列的特征提取和基于特征的分类问题。相比于生成类NLP任务,文本情感分析任务的核心是自然语言特征的提取。文本特征提取一直是NLP主流的研究方向,从RNN到AutoEncoder再到BERT都是在特征提取方法上进行改进的。本文将Transformer的Encoder作为特征提取器,然后接上全连接的神经网络进行分类拟合,根据拟合结果判断情感倾向。接下来我们先介绍一下Transformer相关理论知识,以便能够更好地理解模型结构的设计。

一、Transformer简介

Transformer结构是谷歌在《Attention is all you need》论文中提出的。论文中提出的transformer这种新的结构,将其应用在机器翻译的领域上,取得了很好的效果。自从Attention机制在提出之后,加入Attention的Seq2Seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合rnn和attention的模型。但传统的基于RNN的Seq2Seq模型难以处理长序列的句子,无法实现并行,并且面临对齐的问题。

二、Transformer原理

(一)Transformer的基本结构

从设计结构上看,Transformer延续了Seq2Seq的Encoder-Decoder 结构:对输入的数据进行Encoder编码提取特征,然后将Encoder的输出和标注数据一起输入Decoder,最后计算字典内每个词的出现概率,选取最大概率对应的词作为最终输出。在Transformer结构中, Feed Forward是前馈神经网络层,其作用是将Multi-headAttention(多头注意力)层输出的数据进行非线性变换后输出。其结构如图1所示。

(二)多头注意力机制

注意力机制由来已久,从结构特点来看大致分为软注意力(Soft Attention)机制、硬注意力(Hard Attention)机制、全局注意力 (Global Attention)机制、局部注意力(Local Attention)机制和多头注意力(Multi-head Attention)机制。这里重点介绍和Transformer结构密切相关的多头注意力机制。

多头注意力机制是在Attention Is All You Need论文中提出的,多头注意力是由多个Scaled Dot-Product Attention(放缩点积注意力,点积是我们常用的计算相似度的方法之一,放縮指内积的大小是可控的)堆叠而得到的。与常见的注意力机制相比,放缩点积注意力机制主要是在相似计算和内积调节控制方面进行了改进。放缩点积注意力的计算过程大概是这样的:首先计算每个Q与K矩阵的相似度,然后使用softmax对相似度向量进行归一化处理得到 权重,最后将权重向量与V矩阵加权求和得到最终的attention值。Q与K的相似度计算过程是这样的:首先使用MatMul函数计算Q和K的相似度(MatMul是一种点积函数)。为了能够更好地控制计算 的复杂度,使用Scale函数对MatMul的计算结果进行缩放。

多头注意力其实就是每一次放缩点积注意力的计算结果,那么计算多次就是多头注意力。在每次计算时Q、K、V使用不同的参数进行线性变换,这样虽然进行了多次放缩点积注意力的计算,但每次计算的结果是不同的。对输入数据进行不同的线性变换操作是特征增强的一种手段,因为至少从理论上增加了有效特征,可以提高神经网络模型的预测效果。

(三)位置编码

在Transformer结构中没有使用任何RNN或其变体结构,这样Transformer就存在一个天然的缺陷:没有办法提取序列的位置顺序特征。我们知道自然语言的数据是有时序性的,一个词在句子中出现的 位置不同可以导致整个句子的意思完全不同。为了解决这个缺陷,在Transformer结构中使用了位置编码(Positional Encoding)来提取各个词的位置信息,并作为Encoder或Decoder的输入。Transformer位置编码的实现方式是:通过正余弦函数交替编码提取位置信息,然后将所提取的每个词的位置信息与每个词的 Embedding输出相加作为Encoder或Decoder的输入。正弦函数编码能够更好地体现不同词之间的位置关系,因为对于正弦函数来说,在一定的范围内变化可以近似于线性变换。

三、项目工程结构设计

整个项目工程结构分为两部分:文件夹和代码文件,在编程实践中建议采用文件夹和代码文件的方式来设计项目工程结构。所谓的文件夹和代码文件的方式是指把所有的Python代码文件放在根目录下,其他需要存放的静态文件、训练数据文件和模型文件等都放在文件夹中。

本项目分为五个部分:配置工具(getConfig.py)、数据预处理器(data_util.py)、神经网络模型(textClassiferModel.py)、执行器(execute.py)和应用程序(app.py)。配置工具提供通过配置文件来全局配置神经网络超参数的功能;数据预处理器提供数据加载功能;神经网络模型是由Transformer的Encoder部分和全连接神经网络组成的网络结构;执行器提供保存训练模型、预测模型等功能;应用程序是一个基于Flask的用于人机交互的简单Web应用程序。在文件夹中,model_data存放训练导出的模型文件;train_data存放训练数据;web_templates存放HTML、JS等静态文件。

(一)配置工具类实现

在实际的项目中,我们往往需要对参数进行频繁的调整,因此可以定义一个工具类来读取配置文件中的配置参数,这样在调参时只需要对配置文件中的参数进行调整,即可实现对全部参数的调整。

(二)数据预处理实现

数据预处理中需要实现的功能比较多,包括word2num、字典的生成、输入数据和标签数据的处理、npz文件的保存等。

(三)神经网络模型设计

在神经网络模型实现中,根据实际需要我们只实现了Transformer的Encoder部分,把这部分的输出作为对文本信息的提取输入到一个全连接神经网络中进行文本分类任务的训练。

(四)执行器实现

执行器实现的是模型创建、训练模型保存、模型加载和预测的功能,因此在编程实践中我们定义了create_model、train和预测函数。

(五)WEB应用实现

Web应用主要完成页面交互、图像格式判断、图像上传以及预测结果的返回展示。这里我们使用Flask这个轻量级Web应用框架来实现简单的页面交互和预测结果展示功能。

四、結论

Transformer是第一个用纯attention搭建的模型,不仅计算速度更快,在翻译任务上获得了更好的结果,也为后续的BERT模型做了铺垫。但也有一定的缺点,比如有些rnn轻易可以解决的问题transformer没做到,例如复制string,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding),总的来说Transformer结构是一个创新的结构,在大多数NLP处理方面表现非常优秀。

参考文献:

[1] 张冬瑜等.基于Transformer和BERT的名词隐喻识别[J],数据分析与知识发现,2020(3).

[2] 张宇等.融入注意力机制的深度学习动作识别方法[J],电讯技术,2021(4).

[3] 闫涛. 深度学习算法实践 [M]. 电子工业出版社出版社,2020.

[4] 王宇石等.一种基于卷积神经网络的违禁品探测系统及部署方法[J],科技创新与应用,2020(7).

猜你喜欢

深度学习
从合坐走向合学:浅议新学习模式的构建
面向大数据远程开放实验平台构建研究
基于自动智能分类器的图书馆乱架图书检测
搭建深度学习的三级阶梯
有体验的学习才是有意义的学习
电子商务中基于深度学习的虚假交易识别研究
利用网络技术促进学生深度学习的几大策略
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究