如何让Python识别CSV中的同义词汇?适配搜索引擎匹配需求
实现同义词双向匹配方案
1. 读取CSV构建双向同义词映射
先把CSV中的同义词对转换成双向映射,让每个词都能快速找到它的所有同义词(包括自身):
import csv def build_synonym_map(csv_file_path): synonym_map = {} with open(csv_file_path, 'r', encoding='utf-8') as file: csv_reader = csv.reader(file) # 遍历每一行同义词对 for row in csv_reader: if len(row) >= 2: # 保留词汇中间的空格,只去除前后多余空格 term1 = row[0].strip() term2 = row[1].strip() # 给term1添加同义词 if term1 not in synonym_map: synonym_map[term1] = {term1} synonym_map[term1].add(term2) # 给term2添加同义词(双向) if term2 not in synonym_map: synonym_map[term2] = {term2} synonym_map[term2].add(term1) return synonym_map
2. 实现搜索同义词匹配逻辑
有了映射表后,就能轻松判断结果列表中的元素是否和查询词属于同一同义词组:
# 初始化同义词映射 synonym_map = build_synonym_map("你的同义词文件.csv") # 示例参数 query = "AA" result_list = ["A", "B", "CC", "D D"] # 筛选匹配的元素:元素在查询词的同义词集合中就算匹配 matched_elements = [elem for elem in result_list if elem in synonym_map.get(query, {query})] print(matched_elements) # 输出:['A']
额外说明
- 如果CSV中存在一行多个同义词的情况(比如三个及以上),可以修改代码把该行所有词汇加入同一同义词集合
- 若查询词不在同义词表中,默认只匹配自身,避免出现KeyError
- 支持带空格的词汇,因为代码只去除了词汇前后的空格,保留了中间的空格
内容的提问来源于stack exchange,提问作者My Car
相关产品推荐
相关产品推荐

