You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:55:54