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

词干提取(stemming)操作后如何还原得到单词的原始形式

实现词干到原始token映射的方案

核心思路:原有预处理函数仅返回词干结果,丢失了原始token与词干的对应关系,调整函数在处理阶段同步记录两者的对应关系即可。

1 调整预处理函数

修改原有预处理逻辑,同步存储未被过滤的原始token和对应处理后的词干:

def preprocess_with_mapping(text):
    original_tokens = []
    processed_tokens = []
    for token in gensim.utils.simple_preprocess(text):
        if token not in gensim.parsing.preprocessing.STOPWORDS:
            original_tokens.append(token)
            processed_tokens.append(lemmatize_stemming(token))
    return original_tokens, processed_tokens

注:如果stemmer还未初始化,需要提前导入并初始化:

from nltk.stem import WordNetLemmatizer, PorterStemmer
stemmer = PorterStemmer()

2 运行获取对应关系

调用修改后的函数即可得到一一对应的原始token列表和词干列表:

original_tokens, stemmed_tokens = df['text'].map(preprocess_with_mapping)[0]

# 打印所有对应关系
for ori, stem in zip(original_tokens, stemmed_tokens):
    print(f"词干 {stem} 对应原始token: {ori}")

运行后你就能看到die分别对应dies和died的映射关系。

3 (可选)构建词干映射字典

如果需要快速查询某个词干对应的所有原始token,可以用如下代码构建映射字典:

from collections import defaultdict
stem_2_original = defaultdict(list)
for ori, stem in zip(original_tokens, stemmed_tokens):
    stem_2_original[stem].append(ori)

# 查询die对应的原始token
print(stem_2_original['die'])
# 输出:['dies', 'died']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:06:03