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

如何在R语言tm包中匹配以“surviv”开头的词汇?

如何在tm包中匹配以“surviv”开头的词汇?

嘿,我来帮你搞定这个问题~你现在用的DocumentTermMatrix配合dictionary参数是精确匹配,只能拿到你指定的那几个词,要匹配所有以“surviv”开头的词汇(比如survival、survivor、survive这些),有两种实用的方法:

方法一:先筛选符合前缀的词汇,再生成矩阵

这个方法先从你的语料库中提取所有以“surviv”开头的词汇,再把它们作为字典传入DocumentTermMatrix,步骤清晰直观:

# 1. 从语料库中获取所有唯一词汇
all_terms <- Terms(docs)
# 2. 筛选出所有以"surviv"开头的词汇(ignore.case=TRUE不区分大小写,可按需去掉)
surviv_terms <- grep("^surviv", all_terms, ignore.case = TRUE, value = TRUE)
# 3. 生成只包含这些词汇的文档-词矩阵
dtm <- DocumentTermMatrix(docs, control = list(dictionary = surviv_terms))
# 4. 查看结果
x <- inspect(dtm)

方法二:自定义分词器,直接保留目标词汇

如果你不想单独提取词汇,可以自定义一个分词器,在分词阶段就只保留以“surviv”开头的词,一步到位:

# 定义自定义分词器:先分词,再筛选符合前缀的词
surviv_tokenizer <- function(x) {
  # 先用默认分词器拆分文本
  tokens <- wordTokenizer(x)
  # 筛选出以"surviv"开头的词汇
  grep("^surviv", tokens, ignore.case = TRUE, value = TRUE)
}

# 使用这个分词器生成文档-词矩阵
dtm <- DocumentTermMatrix(docs, control = list(tokenize = surviv_tokenizer))
x <- inspect(dtm)

小提示

  • 如果你需要严格区分大小写(只匹配小写的"surviv"开头),把代码里的ignore.case = TRUE去掉就行。
  • 第一种方法能让你先看到所有符合条件的词汇,方便核对;第二种方法更直接,适合快速生成目标矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:18:06