| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/usr/bin/env python3
- """
- 对比 semantic_similarity 和 text_embedding 两个模块的接口
- """
- import asyncio
- async def main():
- print("=" * 70)
- print("对比 semantic_similarity 和 text_embedding 两个模块")
- print("=" * 70)
- print()
- # ========== 1. 导入方式对比 ==========
- print("1. 导入方式")
- print("-" * 70)
- print("# semantic_similarity 模块")
- print("from lib.semantic_similarity import compare_phrases")
- print()
- print("# text_embedding 模块(兼容接口)")
- print("from lib.text_embedding import compare_phrases")
- print()
- # ========== 2. 基本使用对比 ==========
- print("2. 基本使用(完全兼容)")
- print("-" * 70)
- print("""
- # 两个模块的基本用法完全相同
- result = await compare_phrases("深度学习", "神经网络")
- # 返回格式完全一致
- {
- "说明": "简明扼要说明理由",
- "相似度": 0.85
- }
- """)
- # ========== 3. 实际对比 ==========
- print("3. 实际效果对比")
- print("-" * 70)
- phrase_a = "机器学习"
- phrase_b = "人工智能"
- print(f"\n测试短语: 【{phrase_a}】 vs 【{phrase_b}】\n")
- # 使用 text_embedding 模块(因为它兼容 semantic_similarity)
- from lib.text_embedding import compare_phrases as compare_phrases_embed
- result = await compare_phrases_embed(phrase_a, phrase_b)
- print("text_embedding.compare_phrases() 结果:")
- print(f" 相似度: {result['相似度']}")
- print(f" 说明: {result['说明']}")
- print()
- # ========== 4. 功能对比 ==========
- print("4. 功能对比")
- print("-" * 70)
- comparison = """
- ┌─────────────────────────────────────────────────────────────────┐
- │ 功能对比表 │
- ├─────────────────────────┬─────────────────┬─────────────────────┤
- │ 功能 │ semantic_sim. │ text_embedding │
- ├─────────────────────────┼─────────────────┼─────────────────────┤
- │ 返回格式 │ {说明, 相似度} │ {说明, 相似度} ✅ │
- │ AI 直接判断 │ ✅ │ ✅ │
- │ 余弦相似度 (向量) │ ❌ │ ✅ │
- │ 欧氏距离 (向量) │ ❌ │ ✅ │
- │ 曼哈顿距离 (向量) │ ❌ │ ✅ │
- │ 文本向量化 (encode) │ ❌ │ ✅ │
- │ 批量处理 │ ❌ │ ✅ │
- │ 缓存机制 │ ✅ │ ✅ │
- │ 多模型支持 │ ✅ │ ✅ │
- └─────────────────────────┴─────────────────┴─────────────────────┘
- """
- print(comparison)
- # ========== 5. 使用场景推荐 ==========
- print("5. 使用场景推荐")
- print("-" * 70)
- recommendations = """
- 【推荐使用 semantic_similarity】
- - 只需要简单的相似度判断
- - 专注于语义分析
- - 不需要向量化功能
- 【推荐使用 text_embedding】
- - 需要文本向量化(encode)
- - 需要多种相似度计算方法
- - 需要批量处理文本
- - 需要兼容 semantic_similarity 的代码
- - 想要更多的灵活性
- 【无缝迁移】
- 如果你之前使用 semantic_similarity.compare_phrases(),
- 可以直接替换为 text_embedding.compare_phrases(),
- 代码无需任何修改!
- # 旧代码
- from lib.semantic_similarity import compare_phrases
- result = await compare_phrases("A", "B")
- # 新代码(只需改导入)
- from lib.text_embedding import compare_phrases
- result = await compare_phrases("A", "B")
- """
- print(recommendations)
- # ========== 6. 扩展功能演示 ==========
- print("6. text_embedding 的扩展功能演示")
- print("-" * 70)
- print("\n6.1 使用不同的计算方法:")
- methods = ["ai_direct", "cosine", "euclidean"]
- for method in methods:
- result = await compare_phrases_embed(
- phrase_a, phrase_b,
- method=method,
- dim=128
- )
- print(f" {method:15s}: 相似度 = {result['相似度']:.3f}")
- print("\n6.2 文本向量化:")
- from lib.text_embedding import encode
- vector = await encode("测试文本", dim=128)
- print(f" 向量维度: {vector.shape}")
- print(f" 向量前5个值: {vector[:5]}")
- print("\n6.3 批量处理:")
- from lib.text_embedding import SentenceModel
- model = SentenceModel(dim=128)
- texts = ["文本1", "文本2", "文本3"]
- vectors = await model.encode(texts)
- print(f" 批量转换 {len(texts)} 个文本")
- print()
- print("=" * 70)
- print("对比完成!")
- print("=" * 70)
- if __name__ == "__main__":
- asyncio.run(main())
|