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

基于关键词创建并计算共现百分比的Quanteda实现方法

使用Quanteda计算指定关键词与其他术语的共现百分比

实现步骤

  1. 加载依赖库与数据
    首先加载quanteda包,并导入数据集:
library(quanteda)

df <- data.frame(text = c("House Sky Blue",
                          "House Sky Green",
                          "House Sky Red",
                          "House Sky Yellow",
                          "House Sky Green",
                          "House Sky Glue",
                          "House Sky Green"))
  1. 构建文档-词矩阵(DFM)
    将文本转换为语料库,分词后生成DFM,这是后续统计的基础:
# 创建语料库
corpus <- corpus(df$text)
# 分词(移除标点,可按需调整分词规则)
toks <- tokens(corpus, remove_punct = TRUE)
# 生成文档-词矩阵
dfm <- dfm(toks)
  1. 筛选含目标关键词的文档
    定位所有包含"House"的文档,并统计这类文档的总数:
# 获取包含"House"的文档索引
house_docs <- dfm[, "House"] > 0
# 统计含"House"的文档总数
total_house_docs <- sum(house_docs)
  1. 计算共现次数与占比
    统计其他术语在这些文档中的出现次数,再计算占比(排除"House"和无关的"Sky"):
# 计算每个词在含House的文档中的出现次数
cooccur_counts <- colSums(dfm[house_docs, ])
# 移除目标关键词House和无关的Sky
cooccur_counts <- cooccur_counts[!names(cooccur_counts) %in% c("House", "Sky")]
# 格式化为分数形式的共现占比
cooccur_percent <- paste0(cooccur_counts, "/", total_house_docs)
  1. 输出指定格式结果
    按照需求格式打印结果:
cat(paste0("feature=\"House\"\n percentage of co-occurrence \n\n"))
for (term in names(cooccur_percent)) {
  cat(paste0(term, " = ", cooccur_percent[term], "\n"))
}

关于textstat_simil返回NaN的说明

textstat_simil计算的是词向量之间的相似度(如余弦相似度),你的数据中"House"在所有文档中都出现,导致它的词向量方差为0,无法计算相似度,所以返回NaN。而我们需要的是共现比例,即含目标词的文档中同时出现其他词的比例,用上述基于DFM的统计方法更直接匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:20:16