#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 测试分层匹配模块 """ import asyncio import json from pathlib import Path import sys project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) from lib.hierarchical_match_analyzer import hierarchical_match async def test_hierarchical_match(): """测试分层匹配功能""" print("=== 测试分层匹配模块 ===\n") # 测试案例1: 标签匹配(应该匹配成功) print("测试案例1: 标签完全匹配") print("-" * 50) current_features_1 = ["猫咪", "拟人化", "搞笑"] persona_combo_1 = [ {"特征名称": "猫咪", "所属分类": ["宠物情感", "实质"]}, {"特征名称": "被拿捏住的无奈感", "所属分类": ["宠物关系主导", "宠物情感", "实质"]} ] print(f"当前特征: {current_features_1}") print(f"人设组合: {[f['特征名称'] for f in persona_combo_1]}") print("\n正在匹配...") result_1 = await hierarchical_match(current_features_1, persona_combo_1) print(f"\n结果:") print(f" 匹配层级: {result_1['匹配层级']}") print(f" 匹配结果: {result_1['匹配结果']}") print(f" 最终得分: {result_1['最终得分']}") print(f" 说明: {result_1['综合说明']}") # 测试案例2: 第一层分类匹配 print("\n\n测试案例2: 第一层分类匹配") print("-" * 50) current_features_2 = ["立冬", "教资查分", "时间巧合"] persona_combo_2 = [ {"特征名称": "节后返工场景", "所属分类": ["职场状态", "实质"]}, {"特征名称": "打工", "所属分类": ["职场状态", "实质"]} ] print(f"当前特征: {current_features_2}") print(f"人设组合: {[f['特征名称'] for f in persona_combo_2]}") print(f"人设分类: {list(set(c for f in persona_combo_2 for c in f['所属分类']))}") print("\n正在匹配...") result_2 = await hierarchical_match(current_features_2, persona_combo_2) print(f"\n结果:") print(f" 匹配层级: {result_2['匹配层级']}") print(f" 匹配结果: {result_2['匹配结果']}") print(f" 最终得分: {result_2['最终得分']}") print(f" 说明: {result_2['综合说明']}") # 测试案例3: 第二层上位分类匹配 print("\n\n测试案例3: 第二层上位分类匹配(完全不相关)") print("-" * 50) current_features_3 = ["科技产品", "功能介绍"] persona_combo_3 = [ {"特征名称": "猫孩子", "所属分类": ["宠物亲子化", "宠物情感", "实质"]}, {"特征名称": "被拿捏住的无奈感", "所属分类": ["宠物关系主导", "宠物情感", "实质"]} ] print(f"当前特征: {current_features_3}") print(f"人设组合: {[f['特征名称'] for f in persona_combo_3]}") print(f"人设分类: {list(set(c for f in persona_combo_3 for c in f['所属分类']))}") print("\n正在匹配...") result_3 = await hierarchical_match(current_features_3, persona_combo_3) print(f"\n结果:") print(f" 匹配层级: {result_3['匹配层级']}") print(f" 匹配结果: {result_3['匹配结果']}") print(f" 最终得分: {result_3['最终得分']}") print(f" 说明: {result_3['综合说明']}") # 保存详细结果 print("\n\n=== 保存详细结果 ===") output_file = Path("test_hierarchical_match_results.json") results = { "测试案例1_标签匹配": result_1, "测试案例2_第一层分类匹配": result_2, "测试案例3_第二层上位分类匹配": result_3 } with open(output_file, "w", encoding="utf-8") as f: json.dump(results, f, ensure_ascii=False, indent=2) print(f"详细结果已保存到: {output_file}") if __name__ == "__main__": asyncio.run(test_hierarchical_match())