首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据情感标签进行情感评分?

如何根据情感标签进行情感评分?
EN

Stack Overflow用户
提问于 2017-09-22 12:20:31
回答 2查看 388关注 0票数 1

我正在做一个R项目。我用的是通用问询者词典--一本有几个情感词典的词典。我从这里下载的http://www.wjh.harvard.edu/~inquirer/inquirerbasic.xls

现在,我想创建一个新列"score“,如果值为正数,该列将赋值为1

代码语言:javascript
复制
df <- read.csv("inquirerbasics.csv", header=T, stringsAsFactors=FALSE)
df3 <- subset(df, select=c(1:6))
head(df3)

 Entry Source Positiv Negativ Pstv Affil
1           A  H4Lvd                           
2     ABANDON  H4Lvd         Negativ           
3 ABANDONMENT     H4         Negativ           
4       ABATE  H4Lvd         Negativ           
5   ABATEMENT    Lvd                           
6    ABDICATE     H4         Negativ  

现在我想创建一个列分数,在这里我可以为负值分配分数1,为正值分配分数3,为子值分配分数3。我该如何创建它?

EN

回答 2

Stack Overflow用户

发布于 2017-09-22 12:31:37

一种选择是创建一个key/val数据集,并在使用coalesce创建单个列后与原始数据集连接

代码语言:javascript
复制
library(dplyr)
keyval <- data.frame(key = c("Negativ", "Positiv", "Pstv"),
             score = c(1, 1, 3), stringsAsFactors=FALSE)
df3 %>%
    mutate(key = coalesce(Positiv, Negativ, Pstv)) %>% 
    left_join(., keyval) %>%
    select(-key)
# Joining, by = "key"
# A tibble: 11,788 x 7
#         Entry Source Positiv Negativ  Pstv Affil score
#         <chr>  <chr>   <chr>   <chr> <chr> <chr> <dbl>
# 1           A  H4Lvd    <NA>    <NA>  <NA>  <NA>    NA
# 2     ABANDON  H4Lvd    <NA> Negativ  <NA>  <NA>     1
# 3 ABANDONMENT     H4    <NA> Negativ  <NA>  <NA>     1
# 4       ABATE  H4Lvd    <NA> Negativ  <NA>  <NA>     1
# 5   ABATEMENT    Lvd    <NA>    <NA>  <NA>  <NA>    NA
# 6    ABDICATE     H4    <NA> Negativ  <NA>  <NA>     1
# 7       ABHOR     H4    <NA> Negativ  <NA>  <NA>     1
# 8       ABIDE     H4 Positiv    <NA>  <NA> Affil     1
# 9     ABILITY  H4Lvd Positiv    <NA>  <NA>  <NA>     1
#10      ABJECT     H4    <NA> Negativ  <NA>  <NA>     1
# ... with 11,778 more rows

注意:在这里,我们仅使用了基于OP文章中所示示例的前6列。如果我们需要更多的列,更改'keyval‘为这些列添加’coalesce‘和'score’,在连接之前对所有这些列进行计分

票数 0
EN

Stack Overflow用户

发布于 2017-09-29 19:32:51

如果您正在使用字典,我推荐我们的文本挖掘包,它具有广泛的字典处理功能。

它允许将固定的、"glob“或正则表达式匹配到字典值,这是非常有用的,因为许多文本字典方案使用globs作为通配符。

这是我会怎么做的。

代码语言:javascript
复制
library("quanteda")
packageVersion("quanteda")
## [1] ‘0.99.9’

geninquirer <- df

# construct a quanteda dictionary
# also cleans up the #1 etc tags
GIpos <- 
    c(geninquirer$Entry[geninquirer$Positiv == "Positiv"], 
      geninquirer$Entry[geninquirer$Yes == "Yes"]) %>%
    stringi::stri_replace_all_regex("#\\w+$", "") %>%
    unique
GIneg <- 
    c(geninquirer$Entry[geninquirer$Negativ == "Negativ"],
      geninquirer$Entry[geninquirer$No == "No"]) %>%
    stringi::stri_replace_all_regex("#\\w+$", "") %>%
    unique
GI_dict <- dictionary(list(positive = GIpos, negative = GIneg))

txt <- "I will abandon other text analysis packages for dictionary
        analyis because the excellent quanteda makes it so easy."

虽然只需一步即可完成此操作,但在这里,我首先创建了dfm,并在第二步中对其应用了字典。

代码语言:javascript
复制
dfm(txt) %>% dfm_lookup(dictionary = GI_dict, nomatch = "other")
## Document-feature matrix of: 1 document, 3 features (0% sparse).
## 1 x 3 sparse Matrix of class "dfmSparse"
## features
## docs    positive negative other
##   text1        2        1    16

请注意,您甚至不需要将字典值小写,因为匹配的默认值是不区分大小写的。

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

https://stackoverflow.com/questions/46356813

复制
相关文章

相似问题

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