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

如何基于法语ANEW词典(FAN)在Quanteda中计算文本平均情感值

用法语ANEW词典(FAN)+ Quanteda计算文本平均情感值指南

嘿,我来帮你梳理怎么用法语版ANEW(也就是FAN词典)结合Quanteda工具,算出语料库中每篇文本的平均情感值。咱们一步步来:

1. 加载FAN词典并构建权重命名向量

FAN和普通的键值对词典不一样,它是给每个词直接分配数值分数的,所以首先得把它转换成Quanteda能识别的格式。假设你的FAN词典是CSV文件(这类情感词典一般都是这种结构,比如包含词和效价/唤醒度这类情感维度列):

  • 先读取词典数据:
library(readr)
# 替换成你的FAN词典实际路径
fan_dict <- read_csv("你的FAN词典文件路径.csv")
  • 接着把词典转成权重命名向量——把词作为向量的名称,对应的情感分数作为向量值(这里以效价为例,你也可以换成唤醒度、支配度这些维度):
# 假设词典里效价列的名字是valence,词列是word
fan_weights <- setNames(fan_dict$valence, fan_dict$word)

2. 预处理语料库并选择特征

接下来处理你的语料库,先转成Quanteda的语料库对象,再做特征筛选(比如去掉停用词、标点,只保留有用的实词):

library(quanteda)
# 把你的文本数据转成Quanteda语料库(支持数据框或向量格式)
my_corpus <- corpus(你的文本数据源)
# 生成文档-特征矩阵,同时做基础清洗
dfm_obj <- dfm(my_corpus, 
               remove_punct = TRUE,  # 去掉标点符号
               remove_symbols = TRUE, # 去掉特殊符号
               remove_stopwords = TRUE, # 去掉法语停用词
               tolower = TRUE) # 统一转小写,保证和词典词格式匹配

3. 计算加权情感分数&平均情感值

现在可以计算每篇文档的情感分数了,核心是用FAN的权重对匹配到的词做加权求和,再除以匹配到的词数得到平均值,这里给你两种方法:

方法一:用Quanteda内置函数更省心

# 匹配词典中的词,计算每篇文档的加权情感总和
sentiment_stats <- textstat_weighted(dfm_obj, weights = fan_weights)
# 计算平均情感值:加权总和 ÷ 匹配到的有效词数
average_sentiment <- sentiment_stats$weighted_sum / sentiment_stats$n
# 把结果和原文档绑定,方便后续分析
final_result <- data.frame(文档名称 = docnames(my_corpus),
                          平均效价 = average_sentiment)

方法二:手动计算更灵活(适合自定义逻辑)

# 只保留语料库中存在于FAN词典里的词
dfm_fan_match <- dfm_select(dfm_obj, pattern = names(fan_weights))
# 计算每篇文档的加权情感总和
weighted_total <- rowSums(dfm_fan_match * fan_weights[colnames(dfm_fan_match)])
# 统计每篇文档匹配到的FAN词数量
matched_word_count <- rowSums(dfm_fan_match)
# 处理没有匹配到任何FAN词的文档(这里设为NA,你也可以改成0或全局平均值)
average_sentiment <- ifelse(matched_word_count == 0, NA, weighted_total / matched_word_count)
# 整理成易读的结果表
final_result <- data.frame(文档名称 = docnames(my_corpus),
                          平均效价 = average_sentiment)

一些实用小提醒

  • 如果FAN词典包含多个情感维度(比如效价、唤醒度、支配度),可以分别为每个维度创建权重向量,重复上面的步骤就能得到各维度的平均分数。
  • 预处理时一定要保证语料库的词和词典的词格式统一(比如都转小写),不然会出现大量匹配失败的情况。
  • 对于没有匹配到任何FAN词的文档,你可以根据研究需求选择赋值:比如设为NA、0,或者用整个语料库的平均情感值填充。

内容的提问来源于stack exchange,提问作者Tristan G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:39:55