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

基于Gensim Word2Vec实现Pandas文本语料相似词替换为根词

实现文本语料的根词替换方案

当然有办法完成这个需求!我们可以通过构建替换映射字典 + 批量替换文本语料的方式来实现,以下是具体的步骤和代码示例:

步骤1:获取指定根词的高相似度词列表

首先,我们编写一个函数,从训练好的Word2Vec模型中提取与根词相似度高于指定阈值的词汇,同时把根词本身也加入列表(避免根词被误替换):

def get_similar_words(model, root_word, threshold=0.6):
    # 取足够多的相似词结果,避免漏选符合阈值的词汇
    similar_words = model.most_similar(root_word, topn=100)
    # 筛选相似度达标词,再加入根词本身
    target_words = [root_word] + [word for word, score in similar_words if score >= threshold]
    return target_words

步骤2:构建全局替换字典

接下来,为你需要处理的所有根词创建统一的映射字典,比如你提到的building和ltd:

# 定义需要替换的根词列表
root_words = ["building", "ltd"]
replace_dict = {}

for root in root_words:
    similar_words = get_similar_words(model, root, threshold=0.6)
    # 将每个相似词映射到对应的根词
    for word in similar_words:
        replace_dict[word] = root

# 如果你实际需求是把ltd相关词替换成limited(而非ltd),可以用下面的代码覆盖
# replace_dict.update({word: 'limited' for word in get_similar_words(model, 'ltd', 0.6)})

步骤3:批量替换Pandas数据框中的文本

最后,用Pandas的apply方法批量处理整个文本列:

import pandas as pd

# 假设你的原始数据框是data,文本列名为"Adj_Addr"
def replace_text(text, replace_dict):
    # 拆分文本为单词,统一转小写确保匹配
    words = text.lower().split()
    # 逐个替换单词,未匹配到的词保留原样
    replaced_words = [replace_dict.get(word, word) for word in words]
    # 重新拼接为完整文本
    return ' '.join(replaced_words)

# 应用替换逻辑到目标列,生成新的替换后列
data["Replaced_Addr"] = data["Adj_Addr"].apply(lambda x: replace_text(x, replace_dict))

# 查看替换结果
print(data["Replaced_Addr"].iloc[0])

注意事项

  • 语义准确性优化:示例中building的相似词出现了blog,这是模型训练语料或参数导致的语义偏差。你可以通过增大训练语料量、调整Word2Vec的window/sg参数,或者手动过滤无关词汇来提升替换精度。
  • 大小写兼容:代码中统一转小写处理,确保不同大小写的词汇(比如Building和building)都能被正确匹配替换。
  • 阈值灵活调整:根据实际需求调整相似度阈值——阈值越高,替换的词汇越精准;阈值越低,覆盖的相似词范围越广。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:13:03