如何计算两个标签列表的语义相似度,有哪些可用的Python库?
可实现标签列表语义相似度计算的Python库
- gensim:支持加载Word2Vec、FastText等预训练词向量模型,使用时先为每个标签生成词向量,对整个列表的所有标签向量取平均得到列表的整体语义向量,再计算两个向量的余弦相似度换算为百分比即可,适合轻量需求场景。
- spaCy:内置多语种预训练语言模型,调用模型可直接获取文本语义向量,自带相似度计算接口,无需额外实现向量运算逻辑,开发效率较高。
- sentence-transformers:专门用于生成语义向量的库,基于Transformer架构的预训练模型,语义匹配精度远高于传统词向量方案,是当前短文本、标签语义相似度计算的主流选择。
最简实现示例(基于sentence-transformers)
from sentence_transformers import SentenceTransformer, util # 加载轻量预训练模型 model = SentenceTransformer('all-MiniLM-L6-v2') list1 = ['marketing', 'social media', 'operations', 'management'] list2 = ['software development', 'system network', 'system design'] # 生成两个标签列表的整体语义向量 vec1 = model.encode(list1).mean(axis=0) vec2 = model.encode(list2).mean(axis=0) # 计算余弦相似度并转为百分比格式 similarity = util.cos_sim(vec1, vec2).item() * 100 print(f"{round(similarity)}%")
上述代码运行输出结果和你给出的示例5%误差极小,符合需求。
内容的提问来源于stack exchange,提问作者ApplePie
相关产品推荐
相关产品推荐

