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

如何在quanteda的dfm特征频率统计中加入自定义短语统计?

实现单词语频与自定义短语频率的同时统计

要在quanteda中同时保留单词语频并加入自定义短语的频率统计,核心是先将目标短语合并为单个token,再进行常规的频率计算。以下是具体实现步骤:

步骤1:加载包与准备数据

首先加载所需库,并构造示例数据(如果已有现成的df_sample可跳过数据构造部分):

# 加载包
library(quanteda)
library(quanteda.textstats)

# 示例语料(替换为你的df_sample)
df_sample <- data.frame(text = c(
  "Mr. President gave a speech about the World Record. Super Bass was mentioned too.",
  "Another mention of Mr. President and World Record in the same text. Super Bass is popular."
))

# 自定义短语列表
key_lookups <- c("Mr. President", "World Record", "Super Bass")

步骤2:分词并合并自定义短语

先将语料转为corpus,再分词,关键是用tokens_compound把目标短语合并为单个token,这样统计时会被当作独立特征:

# 创建语料库
corp <- corpus(df_sample, text_field = "text")

# 分词(保留标点,避免拆分"Mr."这类短语)
toks <- tokens(corp, remove_punct = FALSE)

# 将短语转为phrase对象,用于合并
phrases_to_compound <- phrase(key_lookups)

# 合并短语为单个token
toks_compounded <- tokens_compound(toks, phrases_to_compound, concatenator = "_")

这里concatenator = "_"是将短语中的空格替换为下划线,方便后续识别,你也可以根据需要调整。

步骤3:生成DFM并计算频率

将处理后的tokens转为文档-特征矩阵,再计算频率:

# 生成DFM
dfm_obj <- dfm(toks_compounded)

# 计算频率统计
freq_stats <- textstat_frequency(dfm_obj)

# 可选:将合并后的token还原为原短语格式
freq_stats$feature <- gsub("_", " ", freq_stats$feature)

# 查看结果
head(freq_stats, 10)

运行后,freq_stats会同时包含单个词汇(如"speech"、"about")和自定义短语(如"Mr. President"、"World Record")的频率数据。

关键说明

  • 如果你的语料需要预处理(如小写化、移除停用词),请确保在合并短语之后进行,避免因为小写化导致短语匹配失败(比如"mr. president"无法匹配原短语)。
  • 若短语中包含特殊字符,需确保分词时保留对应字符,否则会影响合并效果。

内容的提问来源于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 08:03:02