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

使用tokens_compound统计语料库短语频率并导出CSV的问题求助

解决quanteda中tokens_compound短语统计无结果的问题

原代码运行后无法识别目标短语,核心问题有三个,修正方案如下:

问题分析

  1. 变量名冲突:将tokens转成dfm时用了tokens作为变量名,覆盖了之前的tokens对象,后续dfm_lookup调用的是未合并短语的原始dfm,而非处理后的tokens
  2. 短语拼写错误:原列表里的"fellow citiznes"(正确拼写为fellow citizens)、"unlimited sumission"(正确拼写为unlimited submission),拼写错误导致无法匹配语料中的短语
  3. 未使用合并后的tokens:dfm_lookup需要基于合并短语后的comp_toks生成dfm,而非原始dfm

修正后的完整代码

library("quanteda")
# Package version: 2.1.2

data(data_corpus_inaugural)

# 处理tokens,规避变量名冲突
toks <- data_corpus_inaugural %>% 
  tokens(remove_punct = TRUE,
         remove_symbol = TRUE, 
         padding = TRUE) %>% 
  tokens_tolower()

# 修正短语拼写错误
multiword <- c("the house of representatives", "the senate", "foreign legislative",
               "fellow citizens", "men of reflection", "total independence", 
               "unlimited submission","no middle course",
               "apprehension of danger", "formidable power")
# 执行短语合并
comp_toks <- tokens_compound(toks, pattern = phrase(multiword))

# 基于合并后的tokens生成dfm
comp_dfm <- dfm(comp_toks)

# 字典短语与合并后的下划线格式保持一致,同步修正拼写
dictx <- dictionary(list(govt = c("the_house_of_representatives", "the_senate", "foreign_legislative"),
                         people = c("fellow_citizens", "men_of_reflection"),
                         action = c("total_independence", "unlimited_submission"),
                         course = "no_middle_course",
                         energy = c("apprehension_of_danger", "formidable_power")))

# 在合并短语后的dfm上执行lookup
test <- dfm_lookup(comp_dfm, dictionary = dictx)
test2 <- convert(test, to = "data.frame")
write.csv(test2, "D:/Test.csv")

关键修改说明

  • 修正短语拼写错误,确保能匹配语料中的真实内容
  • 调整变量名避免冲突:将合并后的dfm命名为comp_dfm,不再覆盖原始tokens对象
  • 基于comp_toks生成dfm,保证lookup的是已经完成短语合并的语料
  • 同步修正字典中的短语拼写,确保和tokens_compound生成的下划线连接格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:05:59