run_visualizer.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 分类树可视化执行脚本
  5. """
  6. import sys
  7. import os
  8. from pathlib import Path
  9. # 将项目根目录添加到Python路径
  10. project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  11. sys.path.insert(0, project_root)
  12. from src.visualizers.classification_tree_visualizer import visualize_classification_tree
  13. def main():
  14. # 设置路径
  15. base_dir = current_dir
  16. # 必需的文件
  17. optimized_data_path = os.path.join(base_dir, "optimized_clustered_data_gemini-3-pro-preview.json")
  18. posts_dir = base_dir # 当前目录作为帖子目录
  19. # 可选的关联分析文件
  20. dimension_associations_path = os.path.join(base_dir, "dimension_associations_analysis.json")
  21. intra_dimension_associations_path = os.path.join(base_dir, "intra_dimension_associations_analysis.json")
  22. expanded_orthogonal_combinations_path = os.path.join(base_dir, "expanded_orthogonal_combinations.json")
  23. enriched_xuanti_point_map_path = os.path.join(base_dir, "enriched_xuanti_point_map.json")
  24. # 检查必需文件是否存在
  25. if not os.path.exists(optimized_data_path):
  26. print(f"❌ 找不到优化数据文件: {optimized_data_path}")
  27. return
  28. print(f"📂 优化数据文件: {optimized_data_path}")
  29. print(f"📂 帖子目录: {posts_dir}")
  30. # 检查可选文件
  31. if os.path.exists(dimension_associations_path):
  32. print(f"✅ 找到跨维度关联分析数据")
  33. if os.path.exists(intra_dimension_associations_path):
  34. print(f"✅ 找到维度内部关联分析数据")
  35. if os.path.exists(expanded_orthogonal_combinations_path):
  36. print(f"✅ 找到扩展正交组合数据")
  37. if os.path.exists(enriched_xuanti_point_map_path):
  38. print(f"✅ 找到丰富选题点映射数据")
  39. # xuanti_point_map 使用空字典(如果没有外部依赖)
  40. xuanti_point_map = {}
  41. print("\n🚀 开始生成可视化...")
  42. try:
  43. output_path = visualize_classification_tree(
  44. optimized_data_path=optimized_data_path,
  45. posts_dir=posts_dir,
  46. xuanti_point_map=xuanti_point_map,
  47. dimension_associations_path=dimension_associations_path if os.path.exists(dimension_associations_path) else None,
  48. intra_dimension_associations_path=intra_dimension_associations_path if os.path.exists(intra_dimension_associations_path) else None,
  49. expanded_orthogonal_combinations_path=expanded_orthogonal_combinations_path if os.path.exists(expanded_orthogonal_combinations_path) else None,
  50. enriched_xuanti_point_map_path=enriched_xuanti_point_map_path if os.path.exists(enriched_xuanti_point_map_path) else None
  51. )
  52. print(f"\n🎉 可视化完成!")
  53. print(f"📄 输出文件: {output_path}")
  54. print(f"\n💡 请在浏览器中打开: file://{output_path}")
  55. except Exception as e:
  56. print(f"\n❌ 生成可视化失败: {e}")
  57. import traceback
  58. traceback.print_exc()
  59. if __name__ == "__main__":
  60. main()