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

R语言recipes中,能否用相对频率替代step_tokenfilter()?

解决方案

要在step_tokenfilter()中基于相对频率(而非默认的绝对频率)筛选token,可以通过以下步骤实现:

方法一:预计算相对频率并传入筛选词表

先在训练数据上计算经过停用词过滤后的token相对频率,筛选出目标数量的高频词,再将这些词传入step_tokenfilter()的tokens参数,替代默认的绝对频率排序逻辑:

library(tidytext)
library(dplyr)
library(recipes)

# 1. 在训练数据上计算token相对频率,筛选前1000个高频词
token_rel_freq <- data_train %>%
  # 拆分token
  unnest_tokens(token, sentence_lemma) %>%
  # 移除停用词
  anti_join(tibble(token = stopwords_list), by = "token") %>%
  # 统计绝对频次+计算相对频率
  count(token, name = "abs_count") %>%
  mutate(rel_freq = abs_count / sum(abs_count)) %>%
  # 按相对频率降序排序,取前1000个
  arrange(desc(rel_freq)) %>%
  slice_head(n = 1000) %>%
  pull(token)

# 2. 修改预处理流程,使用预筛选的词表过滤token
data_rec <- recipe(year ~ sentence_lemma, data = data_train) %>%
  step_tokenize(sentence_lemma) %>%
  step_stopwords(sentence_lemma, custom_stopword_source = stopwords_list) %>%
  step_tokenfilter(sentence_lemma, tokens = token_rel_freq) %>% # 传入预筛选词表
  step_tfidf(sentence_lemma) %>%
  step_normalize(all_predictors())

关键说明

  • 该方法严格基于训练数据计算相对频率,避免了数据泄露问题,符合机器学习预处理的规范。
  • step_tokenfilter()本身没有内置的相对频率过滤参数,通过预计算词表的方式是最直接的替代方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:52:11