答案:Python中无内置similarity函数,常用difflib、fuzzywuzzy、sklearn和自定义方法计算字符串或向量相似度,需根据数据类型选择合适方式。

Python 中没有内置的 similarity 函数,但“相似度计算”是常见需求,通常通过第三方库或自定义函数实现。以下介绍几种常用的文本或数据相似度计算方法及其使用方式。
1. 使用 difflib 计算字符串相似度
Python 标准库中的 difflib 提供了 SequenceMatcher 类,可用于比较两个字符串的相似度。示例代码:
from difflib import SequenceMatcherdef get_similarity(a, b): return SequenceMatcher(None, a, b).ratio()
sim = get_similarity("我喜欢学习", "我爱学习") print(sim) # 输出:0.888...
ratio() 返回 0 到 1 之间的浮点数,值越接近 1 表示越相似。
2. 使用 fuzzywuzzy 库进行模糊匹配
fuzzywuzzy 是一个流行的字符串匹配库,基于 Levenshtein 距离计算相似度。安装:
立即学习“Python免费学习笔记(深入)”;
pip install fuzzywuzzy python-levenshtein使用示例:
使用原生js ES6实现的分类标签tab切换显示图片预览特效接口。动态设置图片文本获取,实现分类图片tab切换特效。调用下面函数即可 new $isg_Img({data:数据, curType: 初始显示分类, parasitifer: 定位符 });
sim = fuzz.ratio("北京天安门", "北京天安门广场") print(sim) # 输出:80 或类似值
还支持部分匹配、排序匹配等: fuzz.partial_ratio("天安门", "北京天安门广场") # 更关注子串匹配
3. 使用 sklearn 计算向量相似度(如余弦相似度)
对于文本向量化后的数据,常用 cosine_similarity 计算相似度。示例:
from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similaritytexts = ["我喜欢编程", "我热爱写代码", "他喜欢打游戏"]
向量化
vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(texts)
计算相似度
sim = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2]) print(sim[0][0]) # 第一句和第二句的余弦相似度
4. 自定义杰卡德相似度(Jaccard Similarity)
适用于集合之间的相似性比较,比如分词后的文本。示例:
def jaccard_similarity(a, b): set_a = set(a) set_b = set(b) intersection = set_a.intersection(set_b) union = set_a.union(set_b) return len(intersection) / len(union) if union else 0sim = jaccard_similarity("我爱学习".split(), "我爱运动".split()) print(sim) # 输出:0.333...
基本上就这些常见的“similarity”实现方式。根据你的数据类型(字符串、文本、向量)选择合适的方法即可。注意:没有统一的 similarity 函数,需明确场景再选工具。










