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

如何手动计算R中文档-词矩阵中指定词表的词频?

特定词汇在文档中的词频计算方案

一、tm_term_score的原理说明

你之前用的tm_term_score(DTM.tfidf, Wordlist)返回的不是实际词频,而是文档层面的TF-IDF加权得分。它的计算逻辑是:对每个文档,将词表里所有词汇对应的TF-IDF值求和,最终得到该文档的综合得分——这是加权后的结果,和原始词频完全是两个概念。

二、手动计算目标词汇的实际词频

要得到词表中每个词汇在各文档的真实出现次数,核心是基于**原始词频的文档-词矩阵(DTM)**来操作,步骤如下:

1. 生成原始词频DTM(若已有可跳过)

如果你的DTM是TF-IDF加权后的,需要重新生成原始词频矩阵:

# 假设corpus是你的语料库对象
DTM.tf <- DocumentTermMatrix(corpus, control = list(
  weighting = weightTf,  # 采用原始词频权重
  tolower = TRUE,        # 统一转小写,避免词汇匹配失败
  # 以下参数根据你的预处理需求调整
  removeNumbers = TRUE,
  stopwords = TRUE
))

2. 筛选词表对应的词汇列

确保词表词汇与DTM列名匹配,然后提取目标列:

# 统一词表大小写,和DTM列名保持一致
Wordlist_clean <- tolower(Wordlist)
# 只保留DTM中存在的目标词汇
target_terms <- intersect(Wordlist_clean, colnames(DTM.tf))
# 提取目标词汇的词频矩阵
DTM_target <- DTM.tf[, target_terms]

3. 转换为数据框得到词频结果

# 将稀疏矩阵转为普通矩阵,再转成数据框
Term_Frequency <- as.data.frame(as.matrix(DTM_target))
# 可选:添加文档ID列,方便对应原始文档
Term_Frequency$Document_ID <- rownames(Term_Frequency)

最终的Term_Frequency数据框中,每一行代表一个文档,每一列对应词表里的一个词汇,单元格数值就是该词汇在对应文档中的实际出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:55:09