diff --git a/app.py b/app.py index b3754ea4..73547c11 100755 --- a/app.py +++ b/app.py @@ -11141,16 +11141,38 @@ def get_events_by_mainline(): ungrouped_events = [] def find_concept_hierarchy(concept_name): - """查找概念的层级信息(支持模糊匹配)""" - # 精确匹配 + """查找概念的层级信息(支持多种匹配方式)""" + if not concept_name: + return None + + # 1. 精确匹配 if concept_name in concept_hierarchy_map: return concept_hierarchy_map[concept_name] - # 模糊匹配 + # 2. 去掉常见前缀后缀再匹配 + # 例如 "消费电子-玄玑感知系统" -> "消费电子" + concept_clean = concept_name.replace('-', ' ').replace('_', ' ').split()[0] if '-' in concept_name or '_' in concept_name else concept_name + if concept_clean in concept_hierarchy_map: + return concept_hierarchy_map[concept_clean] + + # 3. 包含匹配(双向) for key in concept_hierarchy_map: if concept_name in key or key in concept_name: return concept_hierarchy_map[key] + # 4. 关键词匹配 - 提取关键词进行匹配 + # 例如 "华为鸿蒙" 能匹配到包含 "华为" 或 "鸿蒙" 的 hierarchy + keywords_to_check = ['华为', '鸿蒙', '特斯拉', '比亚迪', '英伟达', '苹果', '小米', + 'AI', '机器人', '光伏', '储能', '锂电', '芯片', '半导体', + '无人机', '低空', '汽车', '医药', '消费电子', '算力', 'GPU', + '大模型', '智能体', 'DeepSeek', 'KIMI', '固态电池'] + for kw in keywords_to_check: + if kw in concept_name: + # 找 hierarchy 中包含这个关键词的 + for key in concept_hierarchy_map: + if kw in key: + return concept_hierarchy_map[key] + return None for event in events: