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

如何使用Python在两个词表中查找同义词,解决多词短语匹配问题

问题原因

你原有代码运行出错、匹配失效主要有3个核心问题:

  • WordNet返回的多词同义词默认以下划线连接(比如carbon dioxide会返回carbon_dioxide),和你词表里空格分隔的短语格式不匹配,无法命中
  • WordNet本身没有收录缩写对应关系(比如co2和carbon dioxide的关联),这类特殊匹配无法覆盖
  • 代码逻辑错误:你将整个word_list_2列表传入函数,打印时调用word.upper()会直接报错(列表不存在字符串的upper方法),且没有按word_list_2的每个词单独分组输出结果。
实现方案

通过补充自定义同义词映射、适配WordNet的输出格式、修正遍历逻辑即可实现需求,可运行代码如下:

import nltk
from nltk.corpus import wordnet
# 首次运行需要下载依赖,取消注释下一行即可
# nltk.download('wordnet')

# 自定义同义词映射,补充WordNet未收录的专业术语、缩写对应关系
custom_synonym_map = {
    "co2": ["carbon dioxide"],
    # 可根据你的业务场景补充更多专属映射
}

# 你的词表
word_list_1 = ['right', 'head', 'left', 'mass', 'removal', 'terminal', 'carbon dioxide', 'dominance', 'initiation']
word_list_2 = ['right', 'co2', 'control', 'creation', 'end']

# 预处理word_list_1加快匹配速度
wl1_set = set(word_list_1)
# 建立下划线格式到原格式的映射,适配WordNet的输出规则
wl1_underscore_map = {item.replace(" ", "_"): item for item in word_list_1}

def get_matched_synonyms(target_word):
    synonyms = []
    # 优先查自定义映射
    if target_word in custom_synonym_map:
        for syn in custom_synonym_map[target_word]:
            if syn in wl1_set and syn not in synonyms:
                synonyms.append(syn)
    # 查WordNet通用同义词
    for synset in wordnet.synsets(target_word):
        for lemma in synset.lemma_names():
            # 转换为原词表的空格格式
            original_lemma = wl1_underscore_map.get(lemma, lemma.replace("_", " "))
            if original_lemma in wl1_set and original_lemma not in synonyms and original_lemma != target_word:
                synonyms.append(original_lemma)
    # 自身在词表1中也返回(匹配示例中right的输出规则)
    if target_word in wl1_set and target_word not in synonyms:
        synonyms.append(target_word)
    return synonyms

# 按要求格式输出
for word in word_list_2:
    syn_result = get_matched_synonyms(word)
    print(f"synonym for {word}:")
    for syn in syn_result:
        print(f"'{syn}'\n")
效果说明

上述代码运行后会完全匹配你给出的期望输出格式,如果需要覆盖更多领域同义词,只需要在custom_synonym_map中补充对应关系即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:06:02