使Twitter数据对百事可乐和可口可乐进行客户情感分析

article/2025/9/8 18:13:46

介绍

可口可乐(Coca-Cola)和百事可乐(PepsiCo)是软饮料行业的知名品牌,两家公司均跻身《财富》500强。在竞争激烈的市场中拥有广泛产品线的公司彼此之间存在着激烈的竞争,并在随后的几乎所有垂直产品市场中不断争夺市场份额。

通过从每家公司的官方推特下载5000条推文来分析这两家公司的客户情绪,并在R中进行分析。在这一分析中,我们可以了解如何从品牌的社交媒体参与(在本例中为推特)中分析客户情绪。

目录

  • 涉及的软件包及其应用

  • 什么是情绪分析?

  • 清除文本

  • 词云

  • 在一天和一周内发布推文

  • 推特数据的情感评分

  • 客户推特的情感分析

  • 结论

R中使用的软件包

什么是情绪分析?

情感分析是一种文本挖掘技术,它为文本提供上下文,能够从主观抽象的源材料中理解信息,借助Facebook、Instagram等社交媒体平台上的在线对话,帮助理解对品牌产品或服务的社会情感,推特或电子邮件。众所周知,计算机不理解我们的通用语言,为了让他们理解自然语言,我们首先将单词转换成数字格式。接下来我们将尝试一步一步地去实现这一过程。

清除文本

我们已经从Twitter下载了数据集,由于推特的文本形式包含了链接、hashtags、推特er句柄名称和表情符号,为了删除它们,我们在R中编写了函数ions。删除这些无用信息后,所有文本都将转换为小写,删除英语中没有意义的停止词(如冠词、介词等)、标点符号和数字,然后再将它们转换为文档术语矩阵。

文档术语矩阵:是一个矩阵,包含每个单词在每个文档上出现的次数。

removeURL <- function(x) gsub(“(f|ht)tp(s?)://\S+”, “”, x, perl=T)removeHashTags <- function(x) gsub(“#\S+”, “”, x)removeTwitterHandles <- function(x) gsub(“@\S+”, “”, x)removeSlash <- function(x) gsub(“n”,” “, x)removeEmoticons <- function(x) gsub(“[^x01-x7F]”, “”, x)data_pepsi$text <- iconv(data_pepsi$text, to = “utf-8”)pepsi_corpus <- Corpus(VectorSource(data_pepsi$text))pepsi_corpus <- tm_map(pepsi_corpus,tolower)pepsi_corpus <- tm_map(pepsi_corpus,removeWords,stopwords(“en”))pepsi_corpus <- tm_map(pepsi_corpus,content_transformer(removeHashTags))pepsi_corpus <- tm_map(pepsi_corpus,content_transformer(removeTwitterHandles))pepsi_corpus <- tm_map(pepsi_corpus,content_transformer(removeURL))pepsi_corpus <- tm_map(pepsi_corpus,content_transformer(removeSlash))pepsi_corpus <- tm_map(pepsi_corpus,removePunctuation)pepsi_corpus <- tm_map(pepsi_corpus,removeNumbers)pepsi_corpus <- tm_map(pepsi_corpus,content_transformer(removeEmoticons))pepsi_corpus <- tm_map(pepsi_corpus,stripWhitespace)pepsi_clean_df <- data.frame(text = get(“content”, pepsi_corpus))dtm_pepsi <- DocumentTermMatrix(pepsi_corpus)dtm_pepsi <- removeSparseTerms(dtm_pepsi,0.999)pepsi_df <- as.data.frame(as.matrix(dtm_pepsi))data_cola$text <- iconv(data_cola$text, to = “utf-8”)cola_corpus <- Corpus(VectorSource(data_cola$text))cola_corpus <- tm_map(cola_corpus,tolower)cola_corpus <- tm_map(cola_corpus,removeWords,stopwords(“en”))cola_corpus <- tm_map(cola_corpus,content_transformer(removeHashTags))cola_corpus <- tm_map(cola_corpus,content_transformer(removeTwitterHandles))cola_corpus <- tm_map(cola_corpus,content_transformer(removeURL))cola_corpus <- tm_map(cola_corpus,content_transformer(removeSlash))cola_corpus <- tm_map(cola_corpus,removePunctuation)cola_corpus <- tm_map(cola_corpus,removeNumbers)cola_corpus <- tm_map(cola_corpus,content_transformer(removeEmoticons))cola_corpus <- tm_map(cola_corpus,stripWhitespace)cola_clean_df <- data.frame(text = get(“content”, cola_corpus))dtm_cola <- DocumentTermMatrix(cola_corpus)dtm_cola <- removeSparseTerms(dtm_cola,0.999)cola_df <- as.data.frame(as.matrix(dtm_cola))

词云

wordcloud是测试数据的一种表示形式,它通过增加测试数据的大小来突出显示最常用的单词,该技术用于将文本可视化为图像,是单词或标签的集合。在R中,可以使用worldcloud2包来实现,以下是它的输出代码。

word_pepsi_df <- data.frame(names(pepsi_df),colSums(pepsi_df))names(word_pepsi_df) <- c(“words”,”freq”)word_pepsi_df <- subset(word_pepsi_df, word_pepsi_df$freq > 0)wordcloud2(data = word_pepsi_df,size = 1.5,color = “random-light”,backgroundColor = “dark”)word_cola_df <- data.frame(names(cola_df),colSums(cola_df))names(word_cola_df) <- c(“words”,”freq”)word_cola_df <- subset(word_cola_df, word_cola_df$freq > 0)wordcloud2(data = word_cola_df,size = 1.5,color = “random-light”,backgroundColor = “dark”)

百事可乐和可口可乐的推特数据的词云

正如我们所知,词云中的词大小取决于其在推特中的频率,因此词会不断变化, just, native, right, racism很多出现在百事可乐客户的推特中,而get和support等词更多地出现在可口可乐客户的推特中。

在一天和一周内发布推文

由于推特收集的时间跨度超过一周,因此我们可以分析大多数用户活跃或用户在该品牌上发布最多推文的时间和工作日,这可以通过使用ggplot2库的折线图来可视化。下面是与输出一起使用的函数

data_pepsi$Date <- as.Date(data_pepsi$created_at)data_pepsi$hour <- hour(data_pepsi$created_at)data_pepsi$weekday<-factor(weekdays(data_pepsi$Date),levels=c(“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”,”Sunday”))ggplot(data_pepsi,aes(x= hour)) + geom_density() + theme_minimal() + ggtitle(“Pepsi”)ggplot(data_pepsi,aes(x= weekday)) + geom_bar(color = “#CC79A7”, fill = “#CC79A7”) + theme_minimal() +ggtitle(“Pepsi”) + ylim(0,1800)data_cola$Date <- as.Date(data_cola$created_at)data_cola$Day <- day(data_cola$created_at)data_cola$hour <- hour(data_cola$created_at)data_cola$weekday<-factor(weekdays(as.Date(data_cola$Date)),levels=c(“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”,”Sunday”))ggplot(data_cola,aes(x= hour)) + geom_density() + theme_minimal() + ggtitle(“Coca-Cola”)ggplot(data_cola,aes(x=
weekday)) + geom_bar(color = “#CC79A7”, fill = “#CC79A7”) + theme_minimal()

从上面的图表中,我们可以看到百事可乐和可口可乐在下午3-4点和凌晨1点左右都出现了峰值,因为人们喜欢在工作无聊或深夜使用社交媒体,这在我们的工作中是显而易见的。

一周内推特的分布情况

当每日推文显示在条形图上时,对于百事来说,周四是推特数量最多的一天,这是因为他们发布了季度报告,但就可口可乐而言,周二我们看到的推特数量最少。

推特数据的情感评分

在本节中,我们把推特数据分为积极的、消极的和中立的,这可以通过使用sendimentR包来实现,该软件包为每个词典单词分配一个从-1到+1的情感评分,并取推特中每个单词的平均值,得到每个推特的最终情感评分。

sentiments <- sentiment_by(get_sentences(pepsi_clean_df$text))data$sentiment_score <- round(sentiments$ave_sentiment,2)data$sentiment_score[data_pepsi$sentiment_score > 0] <- “Positive”data$sentiment_score[data_pepsi$sentiment_score < 0] <- “Negative”data$sentiment_score[data_pepsi$sentiment_score == 0] <- “Neutral”data$sentiment_score <- as.factor(data$sentiment_score)ggplot(data,aes(x = sentiment_score)) + geom_bar(color = “steelblue”, fill = “steelblue”) + theme_minimal()

几乎75%的推特用户都持肯定态度,因为这两个品牌在他们的客户中相当受欢迎。

顾客推特的情感分析

推特的情绪是由Syuzhet软件包执行的,该软件包根据十个情绪指数对每个词典单词进行评分,包括愤怒、预期、厌恶、恐惧、喜悦、悲伤、惊讶、信任、消极和积极。

如果我们把索引上每个词的值加起来,所有推特的情绪都可以用条形图表示。

cols <- c(“red”,”pink”,”green”,”orange”,”yellow”,”skyblue”,”purple”,”blue”,”black”,”grey”)pepsi_sentimentsdf <- get_nrc_sentiment(names(pepsi_df))barplot(colSums(pepsi_sentimentsdf),main = “Pepsi”,col = cols,space = 0.05,horiz = F,angle = 45,cex.axis = 0.75,las = 2,srt = 60,border = NA)cola_sentimentsdf <- get_nrc_sentiment(names(cola_df))barplot(colSums(cola_sentimentsdf),main = “Coca-Cola”,col = cols,space = 0.05,horiz = F,angle = 45,cex.axis = 0.75,las = 2,srt = 60,border = NA)

上面的输出是所有情绪在条形图上的显示,因为从条形图可以很清楚地看出,积极性对两家公司都起主导作用,这进一步加强了我们的上述假设。继续跟踪图表中的变化可以作为对新产品或广告的反馈。

最常用词

word_pepsi_df$words <- factor(word_pepsi_df$words, levels = word_pepsi_df$words[order(word_pepsi_df$freq)])word_cola_df$words <- factor(word_cola_df$words, levels = word_cola_df$words[order(word_cola_df$freq)])ggplot(word_pepsi_df[1:15,],aes(x = freq, y = words)) + geom_bar(stat = “identity”, color = “#C4961A”,fill = “#C4961A”) + theme_minimal() + ggtitle(“Pepsi”)ggplot(word_cola_df[1:15,],aes(x = freq, y = words)) + geom_bar(stat = “identity”, color = “#C4961A”,fill = “#C4961A”) + theme_minimal() + ggtitle(“Coca-Cola”)createNgram <-function(stringVector, ngramSize){ngram <- data.table()ng <- textcnt(stringVector, method = “string”, n=ngramSize, tolower = FALSE)if(ngramSize==1){ngram <- data.table(w1 = names(ng), freq = unclass(ng), length=nchar(names(ng)))}else {ngram <- data.table(w1w2 = names(ng), freq = unclass(ng), length=nchar(names(ng)))}return(ngram)}pepsi_bigrams_df <- createNgram(pepsi_clean_df$text,2)cola_bigrams_df <- createNgram(cola_clean_df$text,2)pepsi_bigrams_df$w1w2 <- factor(pepsi_bigrams_df$w1w2,levels = pepsi_bigrams_df$w1w2[order(pepsi_bigrams_df$freq)])cola_bigrams_df$w1w2 <- factor(cola_bigrams_df$w1w2,levels = cola_bigrams_df$w1w2[order(cola_bigrams_df$freq)])names(pepsi_bigrams_df) <- c(“words”, “freq”, “length”)names(cola_bigrams_df) <- c(“words”, “freq”, “length”)ggplot(pepsi_bigrams_df[1:15,],aes(x = freq, y = words)) + geom_bar(stat = “identity”, color = “#00AFBB”,fill = “#00AFBB”) + theme_minimal() + ggtitle(“Pepsi”)ggplot(cola_bigrams_df[1:15,],aes(x = freq, y = words)) + geom_bar(stat = “identity”, color = “#00AFBB”,fill = “#00AFBB”) + theme_minimal() + ggtitle(“Coca-Cola”)

二元语法

二元语法是一对字词,当句子被拆分成两个字词时产生的。获取单词的上下文是有用的,因为单个单词通常不提供任何上下文。

结论

我们可以看到,从现有的社交媒体参与度来看,公司可以分析客户的情绪,并据此制定业务战略,来用于制定公司决策(例如启动产品线)。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】

来都来了,喜欢的话就请分享点赞在看三连再走吧~~~


http://chatgpt.dhexx.cn/article/kC30lkVy.shtml

相关文章

【送书福利8本】YYDS《剑指Offer》,百万程序员人手一册

程序员面试应该看什么书&#xff1f; 博文菌必须毫不犹豫地首推《剑指Offer》这本程序员面试圣经。 这可不是博文菌信口拈来的回答&#xff0c;看看广大网友们的反馈&#xff0c;就知道这是经过读者朋友们认证的事实&#xff01;&#xff08; PS&#xff1a;文末有大量送书活动…

OMG!重磅福利!超大高清显示器免费赠送给读者粉丝!

废话不多说&#xff0c;27寸的显示器&#xff0c;说送就送~ 为了感谢所有小伙伴的支持和信任&#xff0c;免费送给你们 赠送规则 本次活动联合了其他几个知名号主一起赞助&#xff0c;共同送小米显示器 &#xff0c;点击下面每个公众号卡片回复 显示器 获得一张 助力券&#xf…

自费送苹果AirPods,机械键盘,10本书籍多重福利

终终终终终终终终终终于来福利了&#xff0c;最近经济也不太景气&#xff0c;涛哥手头也紧张&#xff0c;不过还是的感谢这段时间粉丝们对我的不离不弃啊。直接给大家送一个 苹果AirPods&#xff0c;一个机械键盘&#xff0c;10本书籍&#xff01;无论是自己玩&#xff0c;还是…

周五福利 | 想搞明白元宇宙?看它们就够了

#读者福利&#xff0c;烤仔将在 9 月 8 日统计下方留言点赞数前 15 名的读者&#xff0c;赠予新书&#xff01; 游戏中的 NPC 拥有了自我进化的能力&#xff1f; 一个孤独的银行柜员 GUY 拥有了独立思考的能力&#xff0c;发现自己其实是大型电游的背景人物&#xff0c;很快以非…

社区力量·好玩 | 走了凤梨,来了福利,ART101招募中◍˃̶ᗜ˂̶◍

《社区力量COET | 好玩&#xff0c;这次我们和“菠萝”一起玩&#xff01;》中烤仔与大家分享的好玩委员会发起的#带着菠萝回烤星的活动已经圆满结束啦???? 本次活动共收集到 46 幅作品。本仔在这里谢谢各位对烤仔的喜爱哦&#xff0c;也替好玩委员会感谢大家对本次活动的支…

【粉丝福利】人工智能行业的国际顶级盛会

作为人工智能行业的国际顶级盛会&#xff0c;2021世界人工智能大会将于2021年7月8日至10日在上海世博中心和上海世博展览馆同时举行。世界人工智能大会自2018年以来&#xff0c;已成功举办了三届。2021世界人工智能大会由国家发展和改革委员会、工业和信息化部、科学技术部、国…

Twitter 背后的技术

转自&#xff1a;  http://www.csdn.net/article/2013-12-09/2817755-Twitter-open-source 摘要&#xff1a;7年前的一个创意&#xff0c;成就了如今风靡全世界的社交网络和微博客服务——Twitter。如今Twitter的月活跃用户数达到了2亿多&#xff0c;每天大约有5亿条推文被发送…

985高校的学生“夫妻宿舍”令人羡慕,网友:这福利心动了,我要去读博!

本文募格学术撰写。 参考来源&#xff1a;微博、知乎、南方都市报、各学校官网等。 高校学生宿舍历来讲究“男女有别”&#xff0c;即使是研究生也不例外。 但是你知道吗&#xff1f; 如果你和对象一起读博&#xff0c;并且在研读期间走进婚姻殿堂领了结婚证的话&#xff0c;在…

9.9 元福利价,解锁校园满分计划

移动云开发者社区致力于为广大开发者提供技术交流和能力输出&#xff0c;是移动云开发者交流汇聚地、移动云产品首席体验官工作台、移动云技术能力布道者讲台和移动云能力输出窗口。 通过移动云开发者社区&#xff0c;在帮助移动云开发者用好云、好用云的同时&#xff0c;还可以…

985高校的学生“夫妻宿舍”令人羡慕,网友:已婚学子的读博福利

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 本文募格学术撰写。参考来源&#xff1a;微博、知乎、南方都市报、各学校官网等。 高校学生宿舍历来讲究“男女有别”&#xff0c;即使是研究生也不例外。 但是你知道吗&a…

回馈粉丝福利:小米电脑免费送!

废话不多说&#xff0c;12寸的小米平板电脑&#xff0c;说送就送~ 为了感谢所有小伙伴的支持和信任&#xff0c;免费送给你们 赠送规则 本次活动联合了其他几个知名号主一起赞助&#xff0c;共同送小米平板 &#xff0c;点击下面每个公众号卡片回复 小米 获得一张 助力券&#…

福利:学生免费注册使用JB全家桶

点击上方“计算机视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 工欲善其事必先利其器&#xff0c;学生可以免费安装Pycharm专业版啦&#xff0c;官网注册地址&#xff1a; https://www.jetbrains.com/store/?fromMenu#editiondiscounts 点开之后,点右上角的中文以后是…

2021端午大厂员工福利一览,网友:大厂爽啊。。。

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]点击领取全栈资料&#xff1a;全栈资料不知不觉又来到了假期&#xff0c;端午节作为传统节日&#xff0c;不仅放假&#xff0c;各个公司也会象征性发一些节日福利给各位&#xff0c;这些礼盒争奇斗艳&#xff0c;让我们一起…

粉丝福利 | 送书和键盘鼠标

总有朋友在技术群里吐槽计算机书籍太贵&#xff0c;错过了上次的免费送书活动&#xff0c;今天Peter和几位号主朋友一起为大家准备了计算机宝藏书籍&#xff08;目录在下面&#xff09;、以及社科类常年畅销书《非暴力沟通》、《认知觉醒》等书籍&#xff0c;and 5套键盘鼠标套…

【企业开源系列】Twitter:收发一条推文的背后

http://www.iteye.com/news/28556 Twitter被称为“互联网的短信服务”&#xff0c;允许用户发布不超过140个字的微博客&#xff0c;该创意来自Twitter的联合创始人Jack Dorsey&#xff0c;这个在7年前被分析师称为“有史以来最愚蠢”的创意&#xff0c;不料如今已经成为了风靡全…

Twitter在15岁终于迎来蜕变

热点追踪 / 深度探讨 / 实地探访 / 商务合作 弹指一挥间&#xff0c;Twitter已经15岁了。15年前&#xff0c;Twitter还被叫做“微型博客”。而今天&#xff0c;再用“微型博客”来称呼她显然已经不合适了。仅今年&#xff0c;Twitter就进行了一系列少有的大动作&#xff0c;不但…

开发者福利!Twitter 推出开源 iOS 文本编辑器 API

点击⬇️方“逆锋起笔”&#xff0c;公众号回复 pdf 领取大佬们推荐的学习资料技术编辑&#xff1a;宗恩丨发自 思否编辑部 近日&#xff0c;Twitter 宣布将为 iOS 开发人员提供一种独立且灵活的开源 API——Twitter Text Editor&#xff0c;该 API 可以为应用程序提供功能全面…

相关性研究思路及代码实现(MIC-最大信息系数、Relif-F特征选择算法、pearson、spearman、kendall、卡方检验、fisher精确检验、F检验、简单粗暴的分层聚合)

相关性研究思路及代码实现&#xff08;MIC-最大信息系数、Relif-F特征选择算法、pearson、spearman、kendall、卡方检验、fisher精确检验、F检验、简单粗暴的分层聚合&#xff09; 为什么要研究相关性&#xff1f;相关性计算方法选择与代码实现1. 数据预览与清洗a. 连续变量b. …

列联表与独立性检验(一维列联表 二维列联表 三维列联表 ; 卡方检验 Fisher精确检验 Cochran-Mantel-Haenszel检验)

文章目录 列联表一维列联表二维列联表三维列联表 独立性检验卡方检验Fisher精确检验Cochran-Mantel-Haenszel检验 列联表 列联表可以告诉你组成表格的各种变量组合的频数或比例 一维列联表 data <- with(Arthritis,table(Improved)) ## 简单的频数统计表dataprop.table(…

知识小结------数据分析------Fisher‘s exact test(费希尔检测)

系列知识小结目录 Cox比例风险回归模型&#xff08;proportional hazards model&#xff09; Fishers exact test费希尔检测 系列知识小结目录前言一、Fishers exact test费希尔检测是什么&#xff1f;二、原理与公式1.适用范围和目的2.公式的应用1.进行假设2.运用公式求概率P值…