首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的表情情感分析

R中的表情情感分析
EN

Stack Overflow用户
提问于 2022-07-20 16:02:44
回答 1查看 177关注 0票数 1

我正在做一个项目,在这个项目中我使用了带有表情符号和表情符号的tweet。我的主要目标是得到推文(文本+表情符号)的综合情绪评分,正如我们所知,这些表情符号可能是数据中最有意义的部分,它们是不可忽视的。我已经通过图标转换了表情符号和表情符号的编码结构,但我只得到文本的情感评分,而不是表情符号。我在这个过程中使用维达情感,但如果有另一个情感库/词典可以使用,这将给我的所有表情符号的哨语评分,这将是非常有帮助和高度赞赏。

推特:

代码语言:javascript
复制
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>"
)

代码:

代码语言:javascript
复制
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用于表情符号的得分。

代码语言:javascript
复制
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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、词汇表之类的库来计算它们对分数本身的累积影响,就不可能从中判断出一系列表情符号对总消息得分的影响。

不过,您可以通过对使用表情符号的消息的总分与没有表情符号的分数之间的简单差异来评估表情符号的影响:

代码语言:javascript
复制
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

然后:

代码语言:javascript
复制
allvals <- cbind(allvals,emojiscore) 

现在,对于大型数据集来说,将表情符号从文本中删除的过程自动化将是理想的。在这里,我只是手动删除它,以提出这类方法来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73054815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档