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

KeyATM能否使用词根作为关键词合并同根词汇变体?

KeyATM匹配同根词为同一关键词的解决方案

KeyATM本身不支持通配符词根匹配,你可以通过预处理阶段统一同根词的词型来实现需求,Snowball词干提取无法合并free和freedom是Porter词干算法的固有特性,可改用以下两种方案:

方案1:自定义词映射批量替换(最适配free*通配符需求)

该方案完全可控,只处理你指定的词根匹配范围,不会改动其他词汇的表达:

  • 先提取当前语料的所有唯一词型,用正则匹配筛选所有符合^free规则的词汇,拿到所有free*的同根变体
  • 构建替换字典,把所有筛选到的变体统一映射为目标关键词free
  • 对分词后的语料执行批量替换,再把处理后的语料输入KeyATM即可
    参考代码:
library(quanteda)
# 替换示例,corp_tokens为你已分词好的quanteda tokens对象
free_variants <- grep("^free", types(corp_tokens), value = TRUE)
replace_dict <- setNames(rep("free", length(free_variants)), free_variants)
corp_tokens_clean <- tokens_replace(corp_tokens, pattern = names(replace_dict), replacement = replace_dict)

处理完成后,你在KeyATM的关键词列表里仅需填写free,所有原文本中出现的free、freedom、freely等同根词都会被识别为该关键词。

方案2:用词形归并工具处理通用同根合并

如果你需要批量处理大量词根的同根词,可使用比Snowball词干提取准确率更高的词形归并工具,比如spacyr包对接的spaCy自然语言处理工具,会基于语义归并同根词:

library(spacyr)
# 初始化spaCy模型,需提前安装en_core_web_sm模型
spacy_initialize(model = "en_core_web_sm")
# 对原始文本向量做词形归并
parsed_res <- spacy_parse(your_raw_text_vector, lemma = TRUE)
# 提取归并后的词元序列,再转换为KeyATM要求的输入格式即可
lemmatized_corp <- split(parsed_res$lemma, parsed_res$doc_id)

提示:对于free和freedom这类词根与派生名词的组合,部分词形归并模型可能不会自动合并,这种情况下优先使用方案1的自定义映射即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:45:05