Windows Anaconda使用Sentence-BERT获取句子向量

1、安装Anaconda:

Anaconda是一个流行的Python数据科学平台,它包含了许多科学计算和数据分析的库,包括transformers和sentence_transformers。虽然不是必需的,但使用Anaconda可以简化环境管理和依赖安装的过程。

可以从Anaconda官网下载并安装Anaconda。

下载地址:Download Now | Anaconda

2、创建虚拟环境(推荐):

为了避免不同项目之间的依赖冲突,建议为每个项目创建一个独立的虚拟环境。如果已经安装了Anaconda,可以使用以下命令创建虚拟环境:

复制代码
conda create --name sentence_bert_env python=3.8

激活名称为 sentence_bert_env 的虚拟环境:

复制代码
conda activate sentence_bert_env

3、安装必要的包:

在虚拟环境中,通过pip安装transformers和sentence_transformers库:

复制代码
pip install transformers sentence_transformers

默认情况下,pip 会从 pypi 的官方服务器下载包,这可能会因为网络问题导致速度较慢。可以切换到国内的镜像源来加速下载。

复制代码
pip install transformers sentence-transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
常用国内镜像源

有时 pip 缓存可能会导致安装失败或变慢。可以清理缓存后重新安装:

复制代码
pip cache purge
pip install transformers sentence-transformers -i https://pypi.tuna.tsinghua.edu.cn/simple

4、加载预训练模型:

从sentence_transformers库中选择合适的预训练模型。例如,可以使用以下python代码新建load_model.py加载一个名为all-MiniLM-L6-v2的预训练模型,

复制代码
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')

网络不好会下载失败,这时候可以先下载好,在指定模型的路径(推荐)

官方下载地址:https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2

官方打不开可以用这个地址:Index of /reimers/sentence-transformers/v0.2/

复制代码
from sentence_transformers import SentenceTransformer
model_path = r"D:\models\all-MiniLM-L6-v2"
model = SentenceTransformer(model_path)

不同模型文件所需空间

模型名称 大小
all-MiniLM-L6-v2 ~90MB
paraphrase-MiniLM-L6-v2 ~90MB
bert-base-uncased ~440MB
roberta-base ~440MB
distilbert-base-uncased ~250MB

5、准备输入数据:

将要处理的句子整理成一个列表,作为模型的输入。例如:

复制代码
sentences = ['This is a beautiful day.', 'I love spending time with my family.']

6、获取句子向量表示:

使用加载的模型对输入句子进行编码,得到每个句子的向量表示。这些向量能够捕捉句子的语义信息,可以用于后续的各种NLP任务。例如:

复制代码
embeddings = model.encode(sentences)

for sentence, embedding in zip(sentences, embeddings):
    print(f"Sentence: {sentence}")
    print(f"Embedding: {embedding[:5]}... (维度: {len(embedding)})")

这将输出一个二维数组,其中包含了输入句子的向量表示。

完整的python代码:

复制代码
# 从sentence transformers中SentenceTransformer 模块
from sentence_transformers import SentenceTransformer

# 替换为你的本地模型路径
model_path = r"D:\models\all-MiniLM-L6-v2"
# 加载模型
model = SentenceTransformer(model_path)

# 测试模型
sentences = ['This is a beautiful day.', 'I love spending time with my family.']
embeddings = model.encode(sentences)

# 输出模型向量
for sentence, embedding in zip(sentences, embeddings):
    print(f"Sentence: {sentence}")
    print(f"Embedding: {embedding[:5]}... (维度: {len(embedding)})")

执行代码:

复制代码
 python load_model.py

7、应用向量表示:

根据具体任务需求,使用得到的句子向量进行后续处理。例如,在文本相似度计算任务中,可以使用余弦相似度等度量方法来计算两个句子向量之间的相似度;在文本分类任务中,可以将句子向量输入到分类器中进行预测。

通过以上步骤,就能够在Windows系统上成功使用Sentence-BERT来处理自然语言处理任务。

有了向量数据就可以在elasticsearch中实现相识度搜索,可以使用es提供的knn进行相似度搜索,实现相似度推荐系统功能。

还有一点就是,不同的预训练模型计算出来的向量也是不一样的,如果使用中文的话,需要专门找中文的预训练模型把语句转为向量。

es文档:

向量字段类型:Dense vector field type | Elasticsearch Guide 8.6 | Elastic

查询语法:k-nearest neighbor (kNN) search | Elasticsearch Guide 8.6 | Elastic

参考文章:

Anaconda介绍、安装及使用保姆级教程-腾讯云开发者社区-腾讯云

解决Sentence Transformers中all-minilm-l6-v2等模型下载问题-CSDN博客

相关推荐
云和数据.ChenGuang21 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
西西木科技丨Shopify开发机构1 天前
CalDigit TS4案例:AI产品图的Shopify整站接入与验收
人工智能·shopify·独立站
2601_965448871 天前
AI视频制作:做系列节气民俗视频音色不统一,AI 音色克隆省事的方法
人工智能·机器学习·音视频
美狐美颜SDK开放平台1 天前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
HRaitest1 天前
秋招技术岗招聘提效:三类 AI 招聘方案的技术底层与选型逻辑
大数据·人工智能·求职招聘·ai-native
天远数科1 天前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
车软学堂1 天前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
海盗12341 天前
AI 新闻日报 10-28:Atria Dawn 完整版开源、Cursor Agent SDK 转正、Genie 4 实时世界模型
人工智能·机器人·开源·人工智能aigc
志尊宝1 天前
AI原生前端开发(035):AI时代的工程化最佳实践总结
人工智能·ai-native
冬奇Lab1 天前
一天一个开源项目(第251篇):Claude SEO —— 装进 Claude Code 的 SEO 审计团队,26 个子技能 + 19 个专家 Agent 并行体检网站
人工智能·开源