我正在做一个项目,在这个项目中我使用了带有表情符号和表情符号的tweet。我的主要目标是得到推文(文本+表情符号)的综合情绪评分,正如我们所知,这些表情符号可能是数据中最有意义的部分,它们是不可忽视的。我已经通过图标转换了表情符号和表情符号的编码结构,但我只得到文本的情感评分,而不是表情符号。我在这个过程中使用维达情感,但如果有另一个情感库/词典可以使用,这将给我的所有表情符号的哨语评分,这将是非常有帮助和高度赞赏。
推特:
dput(df_emoji$Description)
c("DoorDash or Uber method asap<f0><9f><98><ad> cause I be starving<f0><9f><98><ad><f0><9f><98><ad>",
"such a real ahh niqq cuz I be having myself weak asl<f0><9f><98><82>",
"shii made me laugh so fuccin hard bro<f0><9f><98><82><f0><9f><98><82><f0><9f><98><82><f0><9f><98><82>",
"Hart and Will Ferrell made a Gem in Get hard fr<f0><9f><98><82><f0><9f><98><82><f0><9f><98><82>",
"@NigerianAmazon Chill<f0><9f><a4><a3><f0><9f><98><ad>", "so bomedy <f0><9f><98><82><f0><9f><98><82><f0><9f><98><82>",
"is that ass Gotdam<f0><9f><98><82><f0><9f><98><82><f0><9f><98><82>",
"wild<f0><9f><98><82><f0><9f><98><82><f0><9f><98><82>",
"them late night DoorDash<e2><80><99>s be goin crazy<f0><9f><a4><a3>",
"of the week<f0><9f><98><82><f0><9f><98><82><f0><9f><98><82><f0><9f><98><82>"
)代码:
emoji_senti <- data.frame(text = iconv(data_sample$text, "latin1", "ASCII", "byte"),
stringsAsFactors = FALSE)
column1 <- separate(emoji_senti, text, into = c("Bytes", "Description"), sep = "\\ ")
column2 <- separate(emoji_senti, text, into = c("Bytes", "Description"), sep = "^[^\\s]*\\s")
df_emoji <- data.frame(Bytes = column1$Bytes, Description = column2$Description)
allvals_emoji <- NULL
for (i in 1:length(df_emoji$Description)){
outs <- vader_df(df_emoji$Description[i])
allvals_emoji <- rbind(allvals_emoji,outs)
}
allvals_emoji请注意,第一条推文中只有9个英文单词有自己的分数,但它忽略了转换后的Unicode用于表情符号的得分。
# word_scores compound pos neu neg but_count
# 1 {0, 0, 0, 0, 0, 0, 0, 0, 0} 0.000 0.000 1.000 0.000 0
# 2 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.9, 0, 0} -0.440 0.000 0.805 0.195 0
# 3 {0, 0, 0, 2.6, 0, 0, -0.67835, 0, 0} 0.444 0.293 0.570 0.137 0
# 4 {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.4, 0} -0.103 0.000 0.877 0.123 0
# 5 {0, 0} 0.000 0.000 1.000 0.000 0
# 6 {0, 0, 0, 0} 0.000 0.000 1.000 0.000 0
# 7 {0, 0, -2.5, 0, 0} -0.542 0.000 0.533 0.467 0
# 8 {0, 0} 0.000 0.000 1.000 0.000 0
# 9 {0, 0, 0, 0, 0, 0, 0} 0.000 0.000 1.000 0.000 0
# 10 {0, 0, 0, 0} 0.000 0.000 1.000 0.000 0发布于 2022-07-22 04:59:46
查看下面的讨论:VaderSentiment: unable to update emoji sentiment score
"Vader在提取情感之前将表情符号转换为他们的词表示“
基本上,从我测试出来的表情符号的价值是隐藏的,但部分分数,并能影响它。如果您需要特定表情符号的评分,您可以检查library(lexicon)并运行data.frame(hash_emojis_identifier) (包含表情符号标识符并将其与词典格式匹配)和data.frame(hash_sentiment_emojis)来获取每个表情符号的情感值。然而,如果不知道vader如何使用诸如vader、词汇表之类的库来计算它们对分数本身的累积影响,就不可能从中判断出一系列表情符号对总消息得分的影响。
不过,您可以通过对使用表情符号的消息的总分与没有表情符号的分数之间的简单差异来评估表情符号的影响:
allvals <- NULL
for (i in 1:length(data_sample)){
outs <- vader_df(data_sample[i])
allvals <- rbind(allvals,outs)
}
allvalswithout <- NULL
for (i in 1:length(data_samplewithout)){
outs <- vader_df(data_samplewithout[i])
allvalswithout <- rbind(allvalswithout,outs)
}
emojiscore <- allvals$compound-allvalswithout$compound然后:
allvals <- cbind(allvals,emojiscore) 现在,对于大型数据集来说,将表情符号从文本中删除的过程自动化将是理想的。在这里,我只是手动删除它,以提出这类方法来解决这个问题。
https://stackoverflow.com/questions/73054815
复制相似问题