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

使用NLTK为DataFrame中词语生成指定数量同义词的技术需求

生成包含同义词的新DataFrame方案

嘿,我看你的函数已经能运行,但还没达到生成目标DataFrame的需求。咱们来调整一下代码,让它能给指定列里的每个词提取前n个同义词,输出成符合预期的新DataFrame。

首先先说说原函数里几个需要调整的点:

  • 硬编码了df["col_1"],没有使用传入的column_name参数,函数复用性不足
  • 当前循环遍历的是所有名词synset的前2个,不是当前词对应的同义词,导致输出和目标词不匹配
  • 最后返回的syn只是最后一个词的synsets,没有收集所有词的结果

下面是修改后的完整代码,我会一步步解释逻辑:

import pandas as pd
from nltk.corpus import wordnet as wn

def get_synonyms(df, column_name, n=3):
    # 初始化列表,存储每个词及其对应的同义词集合
    synonym_results = []
    
    # 遍历指定列的每个词语
    for word in df[column_name]:
        # 获取当前词的名词synset(你的示例里都是物品类名词,指定pos更精准)
        synsets = wn.synsets(word, pos=wn.NOUN)
        synonyms = set()  # 用集合自动去重
        
        # 遍历每个synset,提取所有lemma(即同义词)
        for synset in synsets:
            for lemma in synset.lemmas():
                # 把下划线替换成空格,让同义词更符合自然语言格式
                synonym = lemma.name().replace('_', ' ')
                synonyms.add(synonym)
        
        # 移除原词本身(避免同义词列表里出现自己)
        synonyms.discard(word)
        # 转换成列表后取前n个同义词,不足n个就取所有
        top_n_synonyms = list(synonyms)[:n]
        
        # 把原词和同义词存入结果列表
        synonym_results.append({
            column_name: word,
            f'top_{n}_synonyms': top_n_synonyms
        })
    
    # 将结果列表转换为DataFrame返回
    return pd.DataFrame(synonym_results)

# 测试你的示例DataFrame
df = pd.DataFrame({
    'col_1': ['Book', 'Pen', 'Pencil'],
    'col_2': [5, 5, 6]
})

# 调用函数,获取每个词的前3个同义词
synonym_df = get_synonyms(df, 'col_1', n=3)
print(synonym_df)

代码细节说明:

  • 新增n参数,默认取前3个同义词,你可以根据需求自由调整数值
  • 用set()存储同义词,自动避免重复的同义词出现
  • 处理lemma里的下划线(比如reference_book会变成reference book),让结果更易读
  • 自动过滤掉原词本身(如果同义词集合里包含的话)
  • 最终返回的DataFrame包含原词列和对应同义词列表列,结构清晰

运行后你会得到类似这样的输出(同义词结果会因WordNet词库版本略有差异,属于正常情况):

col_1               top_3_synonyms
0   Book  [volume, script, record book]
1    Pen       [penitentiary, playpen]
2  Pencil    [lead pencil, pencil lead]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:35:56