simCSE句子向量表示(1)-使用transformers API

SimCSE
SimCSE: Simple Contrastive Learning of Sentence Embeddings.
Gao, T., Yao, X., & Chen, D. (2021). SimCSE: Simple Contrastive Learning of Sentence Embeddings. arXiv preprint arXiv:2104.08821.

1、huggingface官网下载模型

官网手动下载:princeton-nlp/sup-simcse-bert-base-uncased
在这里插入图片描述
也可以使用代码下载

import os
from transformers import AutoTokenizer, AutoModel# 模型名称和本地路径
model_name = "princeton-nlp/sup-simcse-bert-base-uncased"
local_model_path = "./local-simcse-model"# 如果本地路径不存在,则下载模型
if not os.path.exists(local_model_path):os.makedirs(local_model_path)# 下载并保存分词器和模型tokenizer = AutoTokenizer.from_pretrained(model_name)tokenizer.save_pretrained(local_model_path)model = AutoModel.from_pretrained(model_name)model.save_pretrained(local_model_path)

使用代码下载,我这边一直报错,提醒网络不好
OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like princeton-nlp/sup-simcse-bert-base-uncased is not the path to a directory containing a file named config.json.
Checkout your internet connection or see how to run the library in offline mode at ‘https://huggingface.co/docs/transformers/installation#offline-mode’.

2、模型下载后保存到本地文件夹

我保存在文件夹:local-simcse-model
在这里插入图片描述

3、使用api生成句子向量

安装sentence_transformers

pip install transformers
pip install datasets
pip install sentence-transformers

使用预训练模型生成句子向量

from sentence_transformers import SentenceTransformer, utilmodel_name = "princeton-nlp/sup-simcse-bert-base-uncased"  # 也可以使用其他预训练模型,如 unsup-simcse-bert-base-uncased
local_model_path = "./local-simcse-model"
# 使用sentence-transformers库加载模型
# model = SentenceTransformer(model_name)
model = SentenceTransformer(local_model_path) # 换成本地模型存放路径# 示例句子
# sentences = ["This is a sentence.", "This is another sentence."]
sentences = ["NLP算法工程师", "自然语言处理算法工程师", "计算机视觉算法工程师", "大模型算法工程师", "JAVA开发", "平面设计师"]# 生成句子嵌入
embeddings = model.encode(sentences, convert_to_tensor=True)
print(embeddings.shape) # torch.Size([6, 768])# 计算句子之间的余弦相似性
cosine_similarities = util.pytorch_cos_sim(embeddings, embeddings)
print(cosine_similarities)

tensor([[1.0000, 0.8721, 0.8471, 0.8261, 0.7557, 0.6945],
[0.8721, 1.0000, 0.9919, 0.9431, 0.7118, 0.7626],
[0.8471, 0.9919, 1.0000, 0.9512, 0.6979, 0.7743],
[0.8261, 0.9431, 0.9512, 1.0000, 0.6806, 0.8203],
[0.7557, 0.7118, 0.6979, 0.6806, 1.0000, 0.6376],
[0.6945, 0.7626, 0.7743, 0.8203, 0.6376, 1.0000]])
可见,
"NLP算法工程师"和"自然语言处理算法工程师"之间的相似度是0.8721,
"NLP算法工程师"和"计算机视觉算法工程师"之间的相似度是0.8471,
"NLP算法工程师"和"大模型算法工程师"之间的相似度是0.8261,
"NLP算法工程师"和"JAVA开发"之间的相似度是 0.7557,
"NLP算法工程师"和"平面设计师"之间的相似度是0.6945,
……

参考

  • Bert中的词向量各向异性具体什么意思啊?
  • 文本表达:解决BERT中的各向异性方法总结
  • 无监督对比学习SIMCSE理解和中文实验操作
  • 文本表达进击:从Bert-flow到Bert-white、SimCSE
  • 文本表达:SimCSE、ESimCSE对比与实践
  • SimCSE、ESimCSE-GitHub实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合操作进阶:关于移除列表元素的那点事

介绍 日常开发中,难免会对集合中的元素进行移除操作,如果对这方面不熟悉的话,就可能遇到 ConcurrentModificationException,那么,如何优雅地进行元素删除?以及其它方式为什么不行? 数据初始化…

国内类似ChatGPT的大模型应用有哪些?发展情况如何了

第一部分:几个容易混淆的概念 很多人,包括很多粉丝的科技博主,经常把ChatGPT和预训练大模型混为一谈,因此有必要先做一个澄清。预训练大语言模型属于预训练大模型的一类,而ChatGPT、文心一言又是预训练大语言模型的一个…

node基础-持续更新

node基础 1.node模块2.node环境搭建3.fs模块4.ES模块和CommonJS模块4.1 更改后缀名4.2 package.json配置支持es模块4.3 变量别名4.4 CommonJS模块 5.打造自己的脚手架工具5.1创建自定义全局指令5.2 使用commander处理--help参数5.3 处理自定义指令5.4 逻辑代码模块化拆分5.5 命…

iPad里的图片如何导出 iPad的照片如何管理

我们的设备中充满了各种重要的照片和视频,特别是iPad,作为苹果公司的一款强大的平板电脑,它不仅能够捕捉生活中的精彩瞬间,还可以存储和展示我们珍贵的回忆。然而,随着照片数量的不断增加,有效地管理和导出…

对boot项目拆分成cloud项目的笔记

引言:这里我用的是新版本的技术栈 spring-boot-starter-parent >3.2.5 mybatis-spring-boot-starter >3.0.3 mybatis-plus-boot-starter >3.5.5 spring-cloud-dependencies …

JVMの内存泄漏内存溢出案例分析

1、内存溢出 内存溢出指的是程序在申请内存时,没有足够的内存可供分配,导致无法满足程序的内存需求,常见的内存溢出情况包括堆内存溢出(Heap Overflow)和栈溢出(Stack Overflow): …

AI去衣技术中的几何着色:揭秘数字时尚的魔法

在数字化时代,人工智能(AI)正以前所未有的速度改变我们的生活,从智能家居到自动驾驶汽车,再到个性化医疗。然而,AI的影响远不止于此。它正在重塑我们对艺术、设计和时尚的理解。特别是在数字时尚领域&#…

Unity打包Webgl端进行 全屏幕自适应

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一:修改 index.html二:将非移动端设备,canvas元素的宽度和高度会设置为100%。三:修改style.css总结 下载地址&#x…

Solidity学习-投票合约示例

以下的合约有一些复杂,但展示了很多Solidity的语言特性。它实现了一个投票合约。 当然,电子投票的主要问题是如何将投票权分配给正确的人员以及如何防止被操纵。 我们不会在这里解决所有的问题,但至少我们会展示如何进行委托投票,…

《java数据结构》--详解Map和Set

概念 Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。在之前我们常见的搜索方式一般有两种: 一种是直接遍历,这种方法的时间复杂度为O(N),如果元素比较多的话效率会十分低下另一种是…

Leecode---动态规划---打家劫舍 / 乘积最大子数组

动态规划法: 思路: (1)状态定义:dp[i]代表前i家能偷盗的最大金额 (2)状态初始化:如果只有一家,只能偷这家dp[0]nums[0];如果有两家,因为是连通的&…

看图猜成语微信小程序源码

后台可以自行设置关卡、等级、也可以一键部署, 开通流量主之后实现躺赚,你懂得。 个人号也可以开通,审核一次性必过。 类目选择 教育,源码仅供您参考! 源码下载 https://download.csdn.net/download/huayula/8938579…

【计算机毕业设计】基于SSM+Vue的网上花店系统【源码+lw+部署文档】

目录 目 录 1 绪论 1.1 选题背景 1.2 选题意义 1.3 研究内容 2 系统开发技术 2.1 Java语言 2.2 SSM框架 2.3 MYSQL数据库 2.4 Vue框架 3 系统分析 3.1可行性研究 3.1.1经济可行性 3.1.2时间可行性 3.1.3操作可行性 3.2系统性能分析 3.2.1系统易用性 3.2.2系统健壮性 3.2.3系统…

电脑没电关机,wsl和docker又挂了,附解决过程

如题,开了个会没带笔记本电源,点啊弄关机后docker打不开,我以为是docker坏了,结果docker报错: An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or…

【蓝桥杯国赛】双指针

适用于以下的情境: ① 数组 / 字符串中,有多少个满足情况的连续区间。 ② 数组 / 字符串,合并。 【第十三届pythonB组试题:近似gcd】 1. 题目描述 2. 难度:⭐⭐⭐⭐ 3. 思考分析: 具体参考&#xff…

依据SAM大模型识别的英国农田(农业田野)边界(FIBOA)矢量数据集

简介 fiboa 是一项旨在提高农田边界数据互操作性和相关农业数据的合作计划。最近推出的 fiboa 不仅仅是一个规范,它还是一个全面的系统,包括符合规范的数据、不断完善规范的讨论以及积极促进其发展的活跃社区。本项目的重点是促进创建更多有关田地边界和…

黑马程序员——Spring框架——day03

目录: AOP AOP简介 问题导入AOP简介和作用【理解】AOP的应用场景为什么要学AOPAOP入门案例【重点】 问题导入AOP入门案例思路分析AOP入门案例实现AOP中的核心概念AOP工作流程【理解】 问题导入AOP工作流程AOP核心概念在测试类中验证代理对象AOP切入点表达式 问题导…

【python】爬虫记录每小时金价

数据来源: https://www.cngold.org/img_date/ 因为这个网站是数据随时变动的,用requests、BeautifulSoup的方式解析html的话,数据的位置显示的是“--”,并不能取到数据。 所以采用webdriver访问网站,然后从界面上获取…

C语言 指针——函数指针的典型应用:计算定积分

目录 梯形法计算函数的定积分 函数指针的典型应用 梯形法计算函数的定积分 函数指针的典型应用 用函数指针编写计算任意函数定积分的 通用 函数