example_compare_phrases.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #!/usr/bin/env python3
  2. """
  3. 演示 text_embedding.compare_phrases() 接口
  4. 返回格式与 semantic_similarity.compare_phrases() 完全一致
  5. """
  6. import asyncio
  7. from lib.text_embedding import compare_phrases
  8. async def main():
  9. print("=" * 60)
  10. print("text_embedding.compare_phrases() 接口演示")
  11. print("返回格式与 semantic_similarity.compare_phrases() 一致")
  12. print("=" * 60)
  13. print()
  14. # ========== 示例 1: 基本使用 ==========
  15. print("示例 1: 基本使用")
  16. print("-" * 60)
  17. result = await compare_phrases("深度学习", "神经网络")
  18. print(f"短语A: 深度学习")
  19. print(f"短语B: 神经网络")
  20. print(f"\n返回结果:")
  21. print(f" 相似度: {result['相似度']}")
  22. print(f" 说明: {result['说明']}")
  23. print()
  24. # ========== 示例 2: 对比不同的短语对 ==========
  25. print("示例 2: 对比不同的短语对")
  26. print("-" * 60)
  27. phrase_pairs = [
  28. ("机器学习", "人工智能"),
  29. ("深度学习", "今天吃饭"),
  30. ("Python编程", "程序设计"),
  31. ("北京", "上海"),
  32. ]
  33. for phrase_a, phrase_b in phrase_pairs:
  34. result = await compare_phrases(phrase_a, phrase_b)
  35. print(f"\n【{phrase_a}】 vs 【{phrase_b}】")
  36. print(f" 相似度: {result['相似度']:.3f}")
  37. print(f" 说明: {result['说明']}")
  38. print()
  39. # ========== 示例 3: 使用不同的计算方法 ==========
  40. print("示例 3: 使用不同的计算方法")
  41. print("-" * 60)
  42. phrase_a = "自然语言处理"
  43. phrase_b = "文本分析"
  44. methods = {
  45. "ai_direct": "AI 直接判断(推荐)",
  46. "cosine": "余弦相似度(基于向量)",
  47. "euclidean": "欧氏距离相似度",
  48. }
  49. print(f"\n短语A: {phrase_a}")
  50. print(f"短语B: {phrase_b}\n")
  51. for method, description in methods.items():
  52. result = await compare_phrases(
  53. phrase_a, phrase_b,
  54. method=method,
  55. dim=128 # 使用较小维度加快测试
  56. )
  57. print(f"{description:30s}")
  58. print(f" 相似度: {result['相似度']:.3f}")
  59. print(f" 说明: {result['说明']}")
  60. print()
  61. # ========== 示例 4: 与 semantic_similarity 的对比 ==========
  62. print("示例 4: 与 semantic_similarity.compare_phrases() 的对比")
  63. print("-" * 60)
  64. print("\n两个接口返回的数据格式完全一致:")
  65. print("""
  66. {
  67. "说明": "相似度判断的理由",
  68. "相似度": 0.85
  69. }
  70. """)
  71. print("\n主要区别:")
  72. print(" semantic_similarity:")
  73. print(" - 只支持 AI 直接判断")
  74. print(" - 专注于语义相似度分析")
  75. print()
  76. print(" text_embedding.compare_phrases:")
  77. print(" - 支持 AI 直接判断 + 多种向量方法")
  78. print(" - 可以选择不同的计算方法")
  79. print(" - 返回格式完全兼容")
  80. print()
  81. # ========== 示例 5: 实际应用 - 批量比较 ==========
  82. print("示例 5: 实际应用 - 批量比较")
  83. print("-" * 60)
  84. target = "机器学习"
  85. candidates = [
  86. "深度学习算法",
  87. "神经网络模型",
  88. "数据分析",
  89. "今天天气",
  90. "人工智能"
  91. ]
  92. print(f"\n目标短语: {target}")
  93. print(f"候选短语: {len(candidates)} 个\n")
  94. results = []
  95. for candidate in candidates:
  96. result = await compare_phrases(target, candidate)
  97. results.append((candidate, result['相似度'], result['说明']))
  98. # 按相似度排序
  99. results.sort(key=lambda x: x[1], reverse=True)
  100. print("相似度排名:")
  101. for i, (phrase, score, explanation) in enumerate(results, 1):
  102. print(f"\n {i}. {phrase} (相似度: {score:.3f})")
  103. print(f" 说明: {explanation}")
  104. print()
  105. print("=" * 60)
  106. print("示例完成!")
  107. print("=" * 60)
  108. if __name__ == "__main__":
  109. asyncio.run(main())