如何在R Studio中使用Rauh德语政治情感词典并转Tibble
针对Rauh德语政治情感词典的问题解答
1. 是否需要手动构建polarity()函数?
不需要。你代码里用到的polarity()是quanteda包内置的属性赋值方法,用来为quanteda字典对象定义正负极性分组,不是需要手动编写的自定义函数。直接用polarity(字典对象) <- list(pos = 正类别向量, neg = 负类别向量)的格式就能完成极性配置。
2. .Rdata文件结构与情感类别问题
.Rdata是R的二进制对象文件,不是纯文本,所以readLines()无法读取内容,必须用load()加载。加载后会直接在R环境中生成对应的数据框对象(你代码里的neg.sent.dictionary和sent.dictionary)。- 情感类别信息就在加载后数据框的
sentiment列中:sentiment = 1对应正向,sentiment = -1对应负向;否定词典里的sentiment = 1实际是“否定负向词”(表达正向),sentiment = -1是“否定正向词”(表达负向)。 - 不需要额外结合SentiWS等文件。Rauh词典本身就是基于SentiWS和GermanPolarityClues整合扩展而来,所有必要的情感词汇与极性信息都已包含在这两个
.Rdata文件中。
3. 转换为tidyverse Tibble的方法
要生成包含Line(行号)、word(词汇)、category(情感类别)的Tibble,可按以下步骤处理:
library(tidyverse) # 加载词典对象 load("Rauh/Rauh_SentDictionaryGerman_Negation.Rdata") load("Rauh/Rauh_SentDictionaryGerman.Rdata") # 处理基础词典:添加行号、整理词汇与类别 basic_tibble <- sent.dictionary %>% mutate( Line = row_number(), # 添加唯一行号 word = feature, # 提取词汇 category = case_when( sentiment == -1 ~ "negative", sentiment == 1 ~ "positive" ) ) %>% select(Line, word, category) %>% as_tibble() # 处理否定词典:添加行号、拆分否定前缀、整理类别 negation_tibble <- neg.sent.dictionary %>% mutate( Line = row_number() + nrow(basic_tibble), # 行号接续基础词典 word = str_replace(feature, "NOT_", "NOT "), # 拆分否定前缀与词汇 category = case_when( sentiment == 1 ~ "neg_negative", # 否定负向词对应正向情感 sentiment == -1 ~ "neg_positive" # 否定正向词对应负向情感 ) ) %>% select(Line, word, category) %>% as_tibble() # 合并两个Tibble final_rauh_tibble <- bind_rows(basic_tibble, negation_tibble) # 查看结果示例 head(final_rauh_tibble)
说明:
Line列用行号生成,确保每个条目唯一;word列针对否定词典的NOT_xxx格式做了拆分,变成自然的“NOT xxx”短语;category列直接映射原词典的sentiment值,保留了Rauh词典的否定极性逻辑。
内容的提问来源于stack exchange,提问作者user23820003
相关产品推荐
相关产品推荐

