你说的 “跟相减一样”,应该是疑惑 cosine - sim(u, v) 里的减号是不是代表减法 ,其实这是个命名小误会,拆成两部分讲清楚:
cosine - sim(u, v) 里的 - 不是数学运算的 “减号”,而是 函数名称的连接符 ,完整含义是 “cosine similarity(余弦相似度)” ,可以简单理解成: cosine_sim(u, v) = 用余弦相似度算法,计算向量 u 和 v 的相似程度
如果写成数学公式,标准符号是:
\(\cos(\theta) = \frac{u \cdot v}{\|u\| \times \|v\|}\)
(这里的 \(\cos(\theta)\) 就是代码里 cosine_sim(u, v) 的数学表达,\(\theta\) 是两个向量的夹角 )
这是 函数命名习惯 导致的:
- 在编程里,为了让名字直观,常用
- 连接单词(比如 cosine_similarity 、sentence_bert ),但它和数学运算的减法 完全没关系 。
- 你可以把
cosine - sim(u, v) 当成一个整体,理解成 “计算 u 和 v 余弦相似度的工具”,别纠结 - 的数学含义~
假设:
- 数学里的减法:
u - v (实实在在的向量相减,结果是新向量 )
- 余弦相似度函数:
cosine_sim(u, v) (计算 u 和 v 的相似度,结果是一个数值,范围 [-1, 1] )
用代码对比更清楚:
import torch
import numpy as np
u = np.array([1, 2])
v = np.array([3, 4])
cosine - sim(u, v) 里的 - 是 命名符号 ,不是数学减法!记住:
- 看到
cosine_sim 或 cosine-sim ,就联想 “余弦相似度” 这个算法;
- 数学里的减法是
u - v ,和余弦相似度的计算逻辑完全不同~
下次再看到类似命名(比如 sentence-bert 、text-classify ),就知道是用 - 连接功能 / 算法名称啦,不用再和数学运算混淆咯 ~