如何将TS-SS计算结果转换为0-1区间的相似度指标?
问题解答:TS-SS距离转相似度指标的方法及公式可行性
一、公式S = 1 / (1.1 ** D)是否可行?
完全可行,原因如下:
- 符合距离转相似度的核心逻辑:TS-SS值(D)越小,代表答案与参考答案越相似,转换后的相似度(S)越接近1;D越大则S越趋近0,和你原有的余弦相似度趋势完全匹配。
- 从你提供的测试数据来看,该公式转换后的结果和余弦相似度数值接近,能够满足自动评分的需求——评分场景不需要绝对精准的数值映射,只要相对排序和分值区间符合预期即可。
- 你也可以根据自己的核心数据点微调底数(比如把1.1换成1.19),让转换结果更贴合你在意的余弦相似度对应值,比如针对D=1.455对应S=0.77的情况,用
1/(1.19**D)就能得到几乎完全匹配的结果。
二、正确的转换方法建议
1. 基于现有数据做曲线拟合(精准匹配)
你已经有TS-SS和余弦相似度的多组对应数据,可以用非线性最小二乘法拟合合适的映射函数,常用的函数类型包括:
- 指数型:
S = e^(-b*D)(边界条件:D=0时S=1,符合你的数据) - 幂函数型:
S = 1 / (1 + k*D)^n - 混合型:比如结合指数和线性项的函数
拟合后得到的函数会比手动找的公式更精准,能让转换结果和原余弦相似度的匹配度更高。
2. 反向推导TS-SS的逆函数(最优解)
既然TS-SS计算过程中用到了余弦相似度,如果你能找到TS-SS的完整计算公式(比如原始论文、开源实现细节),可以直接推导它的逆函数,也就是从TS-SS值反推出对应的相似度,这是最精准的转换方式——相当于直接还原TS-SS背后的相似性逻辑。
3. 简化方案(快速落地)
如果不需要极致精准,直接用你找到的S = 1 / (1.1 ** D)即可,或者根据你的测试数据微调底数,快速适配自动评分的需求。
内容的提问来源于stack exchange,提问作者newtocoding
相关产品推荐
相关产品推荐

