发布时间:2023-12-13 17:00
原创 :Prabowo
作者:Prabowo Yoga Wicaksana
译者:LZM
推特董事会已于2022年4月25日同意埃隆·马斯克提出的440亿美元收购要约。支持言论自由是他决定收购Twitter的原因之一。他还想用新特性来增强产品,使算法开源以增加信任,打败垃圾邮件机器人,并建立完善的人类验证系统。
在这篇文章中,我们不会深入探讨这件事的经济学原理或对未来的影响,而是分析公众对这件事的情绪。
在介绍主题之前,我们先来回顾一下BERT和RoBERTa模型。
BERT,全名为Bi-directonal Encoder Representation from Transformer,是一种基于Transformer结构的双向语言编码模型。
与XLM-R一样,BERT和RoBERTa一起,被归类为预训练型语言模型(Pre-Trained Language Model,PLM)中的掩码语言模型(Masked Language Model,MLM)。MLM的训练目标是:根据给定的上下文,正确地预测被掩掉的单词。掩掉的单词被随机替换为[MASK]或者替换为随机token。
图1. Masked Language Model架构
BERT使用的是Transformer的编码器,而非想GPT家族那样使用Transformer解码器。BERT堆叠多个Transformer编码层来学习复杂的双向表征。RoBERTa使用了10倍的数据量在BERT的基础上改善了2-20%的性能。如果读者对此感兴趣,可以阅读该 Recent Advances in Natural Language Processing via Large Pre-Trained Language Models: A Survey 。
这些数据是借助twint库在Twitter上收集(抓取)的。
我们使用“elon musk twitter”作为关键词,我们收集从2022年04月26日22:36:07到2022年04月27日06:59:59的推文。我们用这样的实验设置收集了75541条tweet。图中显示了这一步的代码和结果。在此之后,我们将数据转换为csv文件,以便对该数据进行进一步分析(数据下载见https://www.kaggle.com/datasets/prabowoyogawicaksana/elon-musk-twitter-acquisition-opinion?select=elonmusktweet.csv)。
尽管我们设置为只收集英文内容,但是仍然有部分非英文内容被抓取。从100000个推文中,我们得到75541个英语推文,其中包含“elon musk twitter”关键字。
图2. 数据收集代码
图3. 默认收集的字段
在我们将文本交给RoBERTa模型分析之前,需要先对它们进行预处理,以便从文本中获得真实的分析结果。由于文本数据来自Twitter,我们需要删除用户名以减少可能发生的、对个体的偏见。
下面是介绍预处理步骤:
1、标签删除
下面的代码展示了如何使用正则表达式删除文本中的标签(hashtag)。
2、表情符号(Emojis)翻译
下面的代码展示了如何将表情符号(Emojis)翻译为文本。
3、用户名删除
下面的代码展示了如何从推特中删除用户名。
4、连接删除
删除所有的“http”和“bit.ly”以及所有不相关的链接,方便进行情感分析。
5、非ASCII字符删除
6、电子邮件地址和标点符号删除
删除文本中的所有电子邮件地址和标点符号。
7、停止词(stopword)删除
使用NLTK上的停止字库移除停止字。我们可以在列表中添加更多的停止词,比如第6行。
8、特殊字符删除
在我们定义了上面的所有函数之后,我们将把它们应用到dataframe:
所有预处理的tweet都在new_tweet列上。我们可以看到预处理前后的对比。
数据经过预处理后就可以进行分类了。我们使用 cardiffnlp/twitter-roberta-base-sentiment-latest 模型对这些数据进行分类。
这个基于RoBERTa的模型对2018年1月至2021年12月的124M条推文进行了训练,并通过TweetEval基准数据集进行了微调,用于情绪分析。该模型将给出情绪输出类别有:
l 0表示负面(negative)
l 1表示中立(neutral)
l 2表示正面(positive)
在我们调用所需的库进行分类之后,现在我们可以定义函数来对句子进行分类,并借助下面的lambda函数将我们的函数应用于new_tweet列的每一行:
注意BERT将512个token作为多层transformer模型的输入,所以我们可以将长推特切片进行情绪分类。
你可以通过这个链接(https://jalammar.github.io/illustrated-bert/)深入了解。
在我们应用上面的分类函数后,我们得到了最终的结果,其中包含了下面每条tweet的情感类别:
在本节中,我们将讨论一些关于已经得到的标记数据的分析。在此之前,我们将删除Null值,因为可能有些tweet只提到了其他用户而没有实质内容,会在预处理阶段处理为Null。
从上述分析结果可以看出:
l 百分之94.7的tweet(71454条)持正面情绪
l 百分之5.3的tweet(4031条)持负面情绪
l 没有tweet持中立态度
我们可视化全部数据的前20个常用标签,结果如下所示:
我们可以看到,#ElonMusk和#Twitter是最常用的标签,其次是#言论自由。可以认为,马斯克为了言论自由而收购推特的使命被推特用户听到了。下一个可视化是关于tweet中使用的词频分布:
数据分布和积极情绪的分布非常相似,因为积极情绪在数据中占主导地位(94.7%)。一条tweet中使用频率最高的单词在15 - 20个单词之间(约2500 - 3000个tweet)。另一方面,负面情绪则更为多变。
积极情绪中使用最多的词汇是“言论自由”、“购买”和“平台”。我们可以看到,公众对马斯克收购的乐观态度受到了Twitter作为一个自由言论平台的精神的影响。
尽管负面情绪中充满了一些刺耳的话语,但”自由言论“在负面情绪用词中也占据了主导地位。公众还将这一消息与”特朗普“联系起来。
然而,作为Twitter用户,我们对这个消息抱着最好的希望。
我们希望能从中获益,因为马斯克希望用新功能来增强产品,让算法开源,以增加信任,打败垃圾邮件机器人,并验证用户的人类身份。