| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/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())
|