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

Python使用wordnet提取同义词并合并为无重复单一列表问题

解决方案

你现有代码的问题主要出在结果存储的作用域错误、无全局汇总逻辑、缺少去重步骤三点:

  • result 列表定义在单词遍历循环内部,每处理一个新单词就会清空之前的同义词结果
  • 每次遍历单个synset就执行打印,导致结果分批输出且重复多次
  • 没有统一的去重逻辑,同一个同义词会被不同词义的synset多次加入列表

修正后可直接运行的代码

from nltk.corpus import wordnet

str_1 = "Help, Describe, AI, biology, data, machine learning, country"
# 用set存储自动去重,且保留大小写差异(符合你输出中同时存在AI、ai的要求)
synonym_set = set()

def process_genre(input_str):
    for genre in input_str.split(", "):
        for syn in wordnet.synsets(genre):
            for l in syn.lemmas():
                synonym_set.add(l.name())
    # 转成排序后的列表,和你期望的输出格式一致
    return sorted(synonym_set)

# 执行函数并打印结果
final_synonyms = process_genre(str_1)
print(final_synonyms)

运行说明

  • 首次运行如果提示wordnet不存在,先执行nltk.download('wordnet')下载语料库即可
  • 用set存储自动完成去重,不会合并大小写不同的同义词,完全符合你给出的期望输出格式
  • 最终返回的是包含所有单词同义词的单一有序列表,可直接和初始词库合并用于后续NLP任务

注:原输入中的machine learning在WordNet语料库中没有对应synset,所以不会返回同义词,属于正常情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:05