景永霞,苟和平,刘 强
(1.琼台师范学院 信息科学技术学院,海南 海口 571100;2.琼台师范学院 教育大数据与人工智能研究所,海南 海口 571100)
Web技术的发展和移动终端的普及,为网络用户提供了广阔的信息获取与分享平台,用户不再只是被动地成为信息的接受者,也作为信息的创造者通过网络发布自己的信息,分享自己的知识和观点,因此产生了大量的短文本数据.为了能够实现短文本数据中的文本分类、网络舆情监控和产品推荐服务等,人们更加关注短文本数据的分析.
研究者提出了不同的文本分类算法,其中基于机器学习的文本分类算法获得了广泛的应用,如支持向量机(SVM)、k最近邻(kNN)、朴素贝叶斯(Native Bayes)等算法都是常用的文本分类模型.目前,深度学习技术已经成为主流的文本分析模型,最初研究人员采用CNN模型实现短文本分类[1],RNN、RNN与CNN融合等模型也逐步应用到短文本分类中[2],同时还采用融合词向量的方法来提高文本分类精度[3],采用BTM和BERT模型提取文本主题特征信息和上下文语义信息,构建短文本特征向量[4].
在文本分类过程中,采用TF-IDF、LDA等方法实现文本向量化表示,这些方法在实现文本表示时忽略了文本词之间的语义关系,而Word2Vec是一种浅层网络,在实现文本表示中无法解决一词多义问题.
在线评论文本具有文本短小,特征稀疏、语法不规范等特点,使用传统特征表示模型会造成表示模型的高维稀疏性,同时特征选择计算开销大、适应性差,无法表达文本词之间的语义关系或者无法解决在不同上下文环境中的多义词,进而造成文本语义理解能力不强.CNN模型虽然能够很好地获得深层语义关系,但对长距离特征捕获能力相对较弱;RNN存在短期记忆问题,无法很好地学习到全局的结构信息.因此,本文提出一种基于BERT模型的文本表示,这种基于Transformer的模型,能够较好地实现长距离特征获取,解决了短期记忆的问题,实现文本向量表示,提高短文本分类效果.
David Blei等[5]在2003年提出基于贝叶斯理论的方法(Latent Dirichlet Allocation,LDA),该方法可获取文本中隐藏的主题和特征,从而实现文本的向量化表示,广泛应用在文本分类等自然语言处理领域[6],但该模型更加适用于长文本,针对短文本存在高维和特征稀疏的情况,需要结合其他的表示模型实现.Word2Vec是google的开源词向量计算工具,通过给定的语料库进行训练,将词转换为指定实数空间中的向量,词之间的相似度通过计算词向量之间的相似度实现.Word2Vec包含CBOW和Skip-gram两种训练模型[7].利用Word2Vec模型获取词在解决短文本特征表达能力弱的问题时取得了较好的效果[8],但在进行文本向量表示时,存在无法解决一词多义的问题.
BERT(Bidirectional Encoder Representations from Transformers,BERT)是google人工智能研究团队2018年提出的一种基于深度学习的语言表示模型,通过文本语料库训练获得语言模型,然后下游任务可以采用此模型进行诸如文本分类等任务.采用BERT获得的词向量能够很好地解决GPT等这类单向语言模型无法双向结合上下文有效信息的局限性.
BERT的模型架构是一个多层双向Transformer编码器[9],其结构如图1所示.
图1 BERT模型架构
短文本W={w1,w2,…,wN}表示一条短文本,Ei(i=1,2,3,…,N)表示N个将句子的字符向量、字符类型向量、位置向量相加得到的文本向量表示.Trm表示Transformer处理,整个文本表征是通过双向Transformer进行堆叠编码,最后生成融合整个文本信息的语言表征.Ti(i=1,2,3,…,N)表示输入的文本字符经过多层双向Transformer进行编码后输出的字符向量.BERT中Self-Attention机制获取句子中每个字符的词向量.
BERT模型采用两种无监督任务进行预训练[9]:①掩码语言模型(Mask Language Model).为了训练深度双向表示,随机屏蔽一些百分比的输入标记,再根据剩余的标记预测那些被屏蔽的标记;②下句预测(Next Sentence Prediction).许多重要的下游任务都是基于对两个句子之间关系的理解,如问答系统、段落排序等自然语言处理任务.
本文提出的基于BERT模型短文本分类模型(MBERT)处理流程如图2所示.该模型主要是采用BERT进行文本词向量表示,通过词向量融合获得整个文本向量表示.
对于包含n条短文本数据集D,表达式为:
D={Ci|i=1,2,3,…,m},
(1)
图2 基于BERT模型短文本分类模型
其中,Ci(i=1,2,3,…,m)表示文本数据的类别,|Ci|表示类别Ci中包含的总文本数.采用BERT进行短文本分类主要过程如下.
(1) 短文本数据预处理,对于获取的短文本数据,去重,采用分词的方法,对停用词处理,如去掉一些虚词、代词等文本分类没有实际意义的字词;
(2) 文本标记向量化表示.对于短文本数据d={w1,w2,…,wN},wi(1,2,3,…,N)表示文本标记(词),根据BERT模型获取文本d([CLS])和其对应标记wi的向量表示为:
(2)
其中,M表示文本标记向量的长度,就是BERT模型最后一层隐层输出的hidden_states状态,即hidden_size;
(3) 获得文本标记均值向量表示.根据输出的文本,可得表达式为:
(3)
(4) 通过全连接层(FC)和Softmax处理,获得最后的分类结果.经过全连接层处理获取的输出为:
y=WTd′+bias,
(4)
其中,W为768×m维的权重矩阵,bias为偏置项.则有
(5)
在本次实验中,采用BERT预训练模型:BERTBASE(L=12,H=768,A=12,Total Parameters=110 M),软件环境为Python 3.9和Anaconda集成开发工具.
实验数据为今日头条TNEWS短文本数据集,包含15个类别,总共382 691条数据,其中训练集为267 882条,验证集为57 404条,测试集为57 405条.实验相关参数设置如表1所列.
表1 参数设置表
算法评价采用传统的文本分类性能评价指标,即精确率precision、召回率recall和综合评价指标F1(F1-measure),根据文本标签的真实值和预测值,给定:
(1)TP,真实值是positive,预测值为positive的样本数(True Positive);
(2)FP,真实值是negative,预测值为positive的样本数(False Positive);
(3)FN,真实值是positive,预测值为negative的数量(False Negative);
(4)TN,真实值是negative,预测值为negative的数量(True Negative).
混淆矩阵如表2所列.
表2 文本测试混淆矩阵
根据表2可得3类评价的计算公式为:
(6)
(7)
(8)
在实验中采用BERT模型进行中文文本词嵌入处理,采用所提模型最后一层输出的各个词的混合模型来进行文本表示和分类.其实验训练损失和验证损失、训练准确率和验证准确率曲线如图3所示.
图3 训练与验证的损失与准确率
文本分类测试结果的精确率、召回率和F1值的宏平均(Macro avg)与加权平均(Weighted avg)如表3所列.
表3 文本分类测试结果
根据模型测试,其分类准确率(accuracy)达到88.66%.且15个类别的f1-score值的宏平均和加权平均达到82.15%和88.61%.因此,采用本文提出的文本分类方法,能够很好地获取文本中词语之间的语义关系,提升分类性能.
本文提出BERT模型结合文本中各个词嵌入表示获得文本上下文语义关系,实现短文本词之间的语义关联分析,进而获得整个文本的语义表示及短文本关键分类特征,提高分类的准确率.通过实验分析,能够获得较好的分类效果.后续将研究采用词向量表示模型,同时去除短文本中的部分虚词,减少噪声对分类结果的影响,以提高分类效果.