
情感分析是一种自然语言处理技术,用于将给定的文本标记为积极、消极或中性。
通常情况下,情感分析用于营销,以更好地考虑客户需求,监测人们对特定产品的想法,提取有关预期趋势的信息,以改进营销策略。在营销保险方面,情感分析被使用,但不仅仅如此,它还在风险评估中非常有用,因为通过对推文的情感建模,可以构建一个可用于保费风险建模的风险因子。以下工作以使用TextBlob基准工具与从Hugging Face Hub检索的经过微调的预训练模型应用于土耳其地震推文的情感分析为例。您可以在本笔记本中跟随代码。
Hugging Face是什么?
Hugging Face是一个旨在民主化人工智能的平台,数据科学家和机器学习工程师可以在该平台上共同合作开发模型和数据集,并有机会部署应用程序。
直接进入工作,我从Kaggle中获取了一个关于2023年2月土耳其地震的推文数据集。
在下图中,除了情感标签之外,还有许多其他特征。

带有极性标签的情感分析可以与文本分类任务相关联,通过在训练集上拟合模型并在测试集上评估其性能,以便在具有相同结构的其他未见数据上使用该模型。然而,在这个数据集中,没有标签来训练模型,所以想要使用一种工具来自动生成极性标签,因为当数据集有成千上万行时,手动标记活动变得耗时。
有几个可用于执行情感分析的软件包,其中最著名的是TextBlob、VADER和Flair。对于这个任务,我选择了TextBlob作为基准。然后,我将其与来自Hugging Face的经过微调的预训练大型语言模型(LLMs)的结果进行了比较:cardiffnlp/twitter-roberta-base-sentiment-latest、cardiffnlp/bert-base-multilingual-cased-sentiment-multilingual、philschmid/distilbert-base-multilingual-cased-sentiment-2。
在继续使用模型之前,我回到了由16个变量(包括上传为索引的id)和28844行组成的数据集,其中一些特征包含了n/a的数据,推文记录于2023年2月7日至2023年2月26日期间。实际上,我对“date”、“text”和“user_location”这几列感兴趣,我用它们来过滤数据。
在下图中,可以从语言检测中看到推文是用英语书写的。

在下图中,可以了解到通过“user_location”特征,消息的前五个来源,土耳其排名第二,仅次于印度。

在这一步骤中,我通过筛选数据df_.query(‘user_location==”Turkey”‘)来缩小到538行的土耳其数据,并经过一些清洗,数据集准备好进行情感分析。
第一种方法是基于将TextBlob作为基准工具应用。
TextBlob如何工作?
TextBlob是一个具有API访问的Python库,用于进行多种NLP任务。TextBlob情感分析器可用于极性或主观性。极性提供一个范围为[-1,1]的浮点结果,其中-1表示负面情绪,+1表示积极情绪。在我的工作中,我还使用0值表示中性情绪。主观性也提供一个范围为[0,1]的浮点结果。主观性通常用于个人观点、情感或判断。问题是TextBlob会忽略其词汇库中没有的单词,它只关注能够应用极性的词语和短语,并进行平均以得到最终分数。
在这一点上,由于我对仅使用一种工具并且不了解结果的可靠性不太自信,我决定使用先进的工具:大型语言模型(BERT、RoBERTa和DistillBERT),这些模型经过微调和预训练,用于情感分析和文本分类任务,并从Hugging Face平台检索而来。
BERT、RoBERTa和DistillBERT有什么区别?
BERT代表双向编码器表示来自Transformer,它是由Google研究人员于2018年推出的一种自然语言处理模型。它基本上是一个编码器堆栈的Transformer架构。Transformer架构是一个编码器-解码器网络,它在编码器一侧使用自注意力机制,在解码器一侧使用注意力机制。Transformer的编码器是双向的,意味着它可以从左到右同时读取句子。给定一个句子作为Transformer编码器的输入,它会将句子中每个单词的上下文表示(嵌入)作为输出。编码器能够使用多头注意力机制(观察单词与其邻居之间的关系的方式)理解句子中每个单词的上下文,并将句子中每个单词的上下文表示作为输出返回。因此,BERT是一种基于上下文的嵌入模型。在预训练过程中,BERT使用了两个无监督学习任务:掩码语言建模(MLM)和下一句预测(NSP)。第一个任务随机掩盖句子中的一些单词,并训练模型根据周围单词的上下文来预测掩盖的单词。第二个任务训练模型来预测两个句子是否连续。在这份工作中使用的BERT是在推文上对bert-base-multilingual-cased进行微调的版本。而BERT多语言基础模型是在最大的多语言数据维基百科语料库上进行预训练的。
RoBERTa代表Robustly Optimized BERT Pre-training Approach,是Facebook AI研究人员开发的。与BERT一样,它基于Transformer架构,使用自注意力机制处理输入序列,并生成句子中单词的上下文化表示。与BERT不同的是,它在一个更大的数据集上进行了训练,并在训练过程中使用了动态掩码技术,有助于模型学习更强大的单词表示。在这份工作中使用的RoBERTa是在2018年1月至2021年12月的约1.24亿条推文上进行训练的twitter-roberta-base-2021-124m的微调版本。
DistillBERT是BERT的精简版,意味着它的目标是减小BERT的大小并提高速度,因此它是BERT的较小且更快的版本。DistillBERT与BERT具有相似的总体架构,但具有较少的编码器块,并在预训练过程中使用知识蒸馏技术,即训练一个较小的模型来模仿较大模型的行为。在这份工作中使用的DistillBERT是在amazon_reviews_multi数据集上进行训练的distilbert-base-multilingual-cased的微调版本。
让我们来看一下结果
我使用了3种极性:积极、消极和中性。
从TextBlob的结果图表来看,从2023年2月7日到2023年2月21日期间,中性情感占据主导地位。使用RoBERTa后,中性情感有所减少,但总体推文中仍然占据了53.2%的比例,尽管使用TextBlob的比例为55%。


除了中性情感之外,TextBlob存在一个问题,即负面情感仅占15.6%,而积极情感占29.4%,而使用LLMs时,负面情感胜过积极情感。我们应该信任哪些工具?我们确实面临一个引发恐惧、不安等典型负面情绪的事件,因此由LLMS提供的结果比基准更可信。


从BERT的结果来看,中性情感下降,占35.9%。它似乎能够分配比RoBERTa更极端的极性,其中47.2%为负面情感,16.9%为正面情感。负面情感在BERT中占优势。相反,中性情感只在2023年7月2日、2023年8月2日和2023年2月15日占优势。同时,在2023年2月11日的推文中,情感分布平衡。


DistillBERT是用于进行情感分析的最后一个工具,在这种情况下,中性情感几乎消失,只有2%。负面极性随时间增加,占74.9%。由于一方面最大的负面极性与事件一致,另一方面推文在分配正面/负面情感方面存在困难,并且大量中性情感的存在可能是合理的,因此我对结果不太有信心。


最后的评论
随着大数据的出现,公司使用社交网络进行与情感分析相关的目的已成为一种常见做法,始终尊重隐私,以考虑市场趋势。在这种情况下,我使用了与极端事件相关的数据集,因此可用的数据量很少。
经过微调的预训练模型显示出有趣的结果,超越了传统方法,并且一方面节省了手动标记活动所需的计算时间,另一方面给出了可以更多信任的良好结果,即在自定义数据上微调预训练模型。我想强调这一点,因为公司肯定可以在其战略中采用这种方式。
参考资料
数据集
笔记本
TextBlob
BERT
RoBERTa
DistillBERT
