-
Cosine Similarity(余弦相似度):
- 侧重点:衡量向量之间的夹角相似度。
- 原理:计算向量间的余弦值,值越接近1表示越相似,值越接近-1表示越不相似,0表示正交(不相关)。
- 适用场景:用于衡量向量的方向和相似性,尤其适用于处理高维稀疏向量。
-
import numpy as np from sklearn.metrics.pairwise import cosine_similarity def cosine_similarity_method(vec1, vec2): vec1 = np.array(vec1).reshape(1, -1) vec2 = np.array(vec2).reshape(1, -1) similarity = cosine_similarity(vec1, vec2) return similarity[0][0]
-
Euclidean Distance(欧几里得距离):
- 侧重点:衡量向量之间的空间距离。
- 原理:计算向量之间的欧几里得距离,即直线距离。
- 适用场景:用于测量向量之间的物理距离,适用于低维稠密向量。
-
import numpy as np from scipy.spatial.distance import euclidean def euclidean_distance_method(vec1, vec2): return euclidean(vec1, vec2)
-
Jaccard Similarity(Jaccard相似度):
- 侧重点:衡量集合之间的相似性。
- 原理:计算两个集合的交集与并集的比值,值越接近1表示越相似,值越接近0表示越不相似。
- 适用场景:适用于处理文本或其他类型的集合数据,用于衡量集合之间的相似性。
-
def jaccard_similarity_method(set1, set2): intersection = len(set1.intersection(set2)) union = len(set1.union(set2)) similarity = intersection / union if union != 0 else 0 return similarity
-
Word Mover’s Distance(词移距离,WMD):
- 侧重点:衡量文本之间的语义距离。
- 原理:基于词向量的语义相似度计算,通过计算从一个文本转移到另一个文本所需的最小词汇移动距离。
- 适用场景:适用于文本相似性比较,尤其是处理语义相似性问题。
-
import gensim from nltk.tokenize import word_tokenize def wmd_similarity_method(doc1, doc2, model): doc1_tokens = word_tokenize(doc1) doc2_tokens = word_tokenize(doc2) similarity = model.wv.wmdistance(doc1_tokens, doc2_tokens) return similarity
[NLP]基于向量距离相似度整理
于 2023-07-26 17:34:18 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)