优化表达方式学习

This commit is contained in:
LuiKlee
2025-12-16 11:38:56 +08:00
parent 8c451e42fb
commit c3e2e713ef
9 changed files with 526 additions and 260 deletions

View File

@@ -0,0 +1,36 @@
# 表达相似度计算策略
本文档说明 `calculate_similarity` 的实现与配置,帮助在质量与性能间做权衡。
## 总览
- 支持两种路径:
1) **向量化路径(默认优先)**TF-IDF + 余弦相似度(依赖 `scikit-learn`
2) **回退路径**`difflib.SequenceMatcher`
- 参数 `prefer_vector` 控制是否优先尝试向量化,默认 `True`
- 依赖缺失或文本过短时,自动回退,无需额外配置。
## 调用方式
```python
from src.chat.express.express_utils import calculate_similarity
sim = calculate_similarity(text1, text2) # 默认优先向量化
sim_fast = calculate_similarity(text1, text2, prefer_vector=False) # 强制使用 SequenceMatcher
```
## 依赖与回退
- 可选依赖:`scikit-learn`
- 缺失时自动回退到 `SequenceMatcher`,不会抛异常。
- 文本过短(长度 < 2时直接回退避免稀疏向量噪声
## 适用建议
- 文本较长对鲁棒性/语义相似度有更高要求保持默认向量化优先)。
- 环境无 `scikit-learn` 或追求极简依赖调用时设置 `prefer_vector=False`
- 高并发性能敏感可在调用点酌情关闭向量化或加缓存
## 返回范围
- 相似度范围始终在 `[0, 1]`
- 空字符串 `0.0`完全相同 `1.0`
## 额外建议
- 若需更强语义能力可替换为向量数据库或句向量模型需新增依赖与配置)。
- 对热路径可增加缓存按文本哈希或限制输入长度以控制向量维度与内存