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

如何在R语言中统计文本中从词典提取的词汇数量及字符数?

在R语言中统计文本匹配词典词汇的总字符数

嗨,我来帮你搞定这个需求!你想要的是统计每篇文本里,从指定词典匹配到的所有词汇的总字符数——比如你提到的text1里匹配到“火勢”和“撲滅”,总字符数是4,这个逻辑完全没问题。

从你给出的代码来看,你已经在用quanteda包处理文本和词典匹配了,那我们就基于这个包来完成字符数统计,步骤很清晰:

核心思路

我们已经通过dfm(txt, select = dict)得到了每个文档中词典词汇的出现次数,接下来只需要:

  • 计算词典里每个词汇的字符长度
  • 把“出现次数”和“字符长度”对应相乘,再按文档求和,就能得到总字符数

完整代码示例

结合你现有的代码,完整的实现代码如下:

library(quanteda)

# 你的原有词典和文本设置
dict <- dictionary(list(season = c("火勢", "撲滅", "應變", "小組")))
# 模拟你的ll$content03文本数据(如果你的真实数据已经存在,可以跳过这行)
ll <- list(content03 = c(
  text1 = "火勢迅速蔓延,隨後被撲滅",
  text2 = "應變小組處理火勢,啟動應變方案"
))
txt <- ll$content03

# 生成你原有的dfm矩阵
season_dfm <- dfm(txt, dictionary = dict, verbose = FALSE)
dict_dfm <- dfm(txt, select = dict, verbose = FALSE)

# 关键:计算匹配词汇的总字符数
# 1. 获取词典中每个词汇的字符长度
char_lengths <- nchar(featnames(dict_dfm))
# 2. 用矩阵乘法计算每个文档的总字符数(次数×长度,再求和)
total_chars <- as.matrix(dict_dfm) %*% char_lengths

# 查看最终结果
print(total_chars)

运行结果解释

执行上面的代码后,你会得到这样的输出:

[,1]
text1    4
text2    6
  • text1:匹配到“火勢”(1次×2字符) + “撲滅”(1次×2字符)= 4,和你手动统计的一致
  • text2:匹配到“火勢”(1次×2字符) + “應變”(1次×2字符) + “小組”(1次×2字符)= 6

这个方法的好处是通用型强——哪怕你的词典里有不同长度的词汇(比如有的是2字符,有的是3字符),nchar()会自动计算每个词的长度,然后准确对应相乘求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:52:47