Python 庫 包 sentence-transformers

sentence-transformers 是一個非常流行的 Python 庫,專門用于將文本(句子、段落、文檔)轉換為高質量的語義向量(嵌入)。它基于 Transformer 架構(如 BERT、RoBERTa、DistilBERT 等) 的預訓練模型,并在大量語義相似性數據上進行了微調,能夠捕捉句子之間的深層語義關系。


📦 什么是 sentence-transformers

  • 項目地址:https://www.sbert.net/
  • 作者:Nils Reimers 和 Iryna Gurevych(德國達姆施塔特工業大學)
  • 主要功能
    • 將文本轉化為稠密向量(sentence embeddings)
    • 支持多種語言
    • 支持多任務學習和跨語言檢索
  • 底層依賴:基于 PyTorch 和 HuggingFace Transformers

🧠 主要用途

場景描述
文本相似度計算判斷兩個句子是否語義相似(例如問答系統中的答案匹配)
聚類對大量文本進行自動聚類(如新聞分類、評論分組)
信息檢索基于語義的搜索,而非關鍵詞匹配
語義搜索 / 向量數據庫結合 FAISS、Annoy 等庫構建高效的語義搜索引擎
無監督/弱監督學習在沒有標簽的情況下提取語義特征進行下游任務

🚀 安裝方式

pip install sentence-transformers

?? 注意:安裝前確保你已經安裝了 PyTorch,否則可以使用 torch extra:

pip install sentence-transformers[torch]

🧪 使用示例

示例1:加載模型并編碼句子

from sentence_transformers import SentenceTransformer# 加載預訓練模型(首次運行會自動下載)
model = SentenceTransformer('all-MiniLM-L6-v2')# 待編碼的句子
sentences = ["這是一個示例句子。","另一個句子用來測試。","這兩句話看起來不太一樣。"
]# 編碼成向量(每個句子變成一個固定維度的向量,如 384 維)
embeddings = model.encode(sentences)print(embeddings.shape)  # (3, 384)

示例2:計算兩個句子之間的余弦相似度

from sklearn.metrics.pairwise import cosine_similarity# 計算相似度矩陣
similarity_matrix = cosine_similarity(embeddings)print(similarity_matrix)

輸出是一個 3x3 的矩陣,顯示每對句子之間的語義相似度(值范圍在 [0, 1] 之間)。


示例3:使用 GPU 加速推理

import torchdevice = 'cuda' if torch.cuda.is_available() else 'cpu'
model.to(device)embeddings = model.encode(sentences, device=device)

🌐 支持的模型(推薦)

你可以從 HuggingFace Model Hub 上選擇不同類型的模型,以下是幾個常用的:

模型名稱特點
all-MiniLM-L6-v2輕量級,速度快,適合大多數通用任務
paraphrase-MiniLM-L3-v2更小,適合資源受限環境
all-mpnet-base-v2高性能版本,效果更好但稍慢
multi-qa-mpnet-base-dot-v1適用于問答、檢索任務
distiluse-base-multilingual-cased-v1支持 50+ 種語言,適合多語言場景
LaBSE支持 109 種語言,適合跨語言檢索

🛠? 自定義訓練模型(進階)

如果你有自己的語義匹配任務(如問答、對話理解),可以使用 sentence-transformers 提供的訓練框架進行 fine-tune:

from sentence_transformers import SentenceTransformer, InputExample, losses
from torch.utils.data import DataLoader# 構建訓練樣本
train_examples = [InputExample(texts=["春天來了", "天氣變暖了"], label=0.8),InputExample(texts=["我愛中國", "我是中國人"], label=0.9),...
]# 創建數據加載器
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=16)# 加載模型
model = SentenceTransformer('bert-base-chinese')# 使用余弦相似度損失函數
train_loss = losses.CosineSimilarityLoss(model)# 開始訓練
model.fit(train_objectives=[(train_dataloader, train_loss)],epochs=3,output_path='./my_model/'
)

🔍 常見結合使用的庫

庫名作用
faiss快速構建高維向量索引,用于語義搜索
annoy近似最近鄰搜索,適合內存有限的設備
pandas處理大規模文本數據
transformers獲取原始 Transformer 模型
scikit-learn聚類、降維等后處理

? 總結

功能描述
中文支持??(需使用中文預訓練模型)
多語言支持??(部分模型支持 50~109 種語言)
易用性??(API 簡潔清晰)
可擴展性??(可自定義訓練、結合其他庫)
推薦應用場景語義搜索、文本聚類、相似度判斷、信息檢索

如果你正在做以下工作,建議使用 sentence-transformers

  • 想要做語義級別的文本匹配
  • 不想手動寫特征工程
  • 想快速部署一個語義搜索引擎
  • 想要在無標簽情況下做文本聚類分析

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86952.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《聚類算法》入門--大白話篇:像整理房間一樣給數據分類

一、什么是聚類算法? 想象一下你的衣柜里堆滿了衣服,但你不想一件件整理。聚類算法就像一個聰明的助手,它能自動幫你把衣服分成幾堆:T恤放一堆、褲子放一堆、外套放一堆。它通過觀察衣服的顏色、大小、款式這些特征,把…

AutoGen(五) Human-in-the-Loop(人類在環)實戰與進階:多智能體協作與Web交互全流程(附代碼)

AutoGen Human-in-the-Loop(人類在環)實戰與進階:多智能體協作與Web交互全流程(附代碼) 引言:AI自動化的極限與人類參與的價值 在大模型(LLM)驅動的AI應用開發中,完全自…

并查集 Union-Find

目錄 引言 簡單介紹 淺淺總結 算法圖解 初始化 根節點查找 集合合并 連通性檢查 例題 大概思路 完整代碼: 引言 一個小小的并查集讓我們在ccpc卡了那么久(還有unordered_map,如果不是忘了map自動排序這么一回事也不至于試那么多發),至今仍然心有…

書籍在行列都排好序的矩陣中找數(8)0626

題目: 給定一個有N*M的整型矩陣matrix和一個整數K,matrix的每一行和每一列都是排好序的。實現一個函數,判斷K是否在matrix中。 0 1 2 5 2 3 4 7 4 4 4 8 5 …

深度學習04 卷積神經網絡CNN

卷積神經網絡與人工神經網絡關系與區別 概念 卷積神經網絡(Convolutional Neural Network, CNN)是人工神經網絡(Artificial Neural Network, ANN)的一種特殊形式,兩者在核心思想和基礎結構上存在關聯,但在…

vue基礎之組件通信(VUE3)

文章目錄 前言一、父子組件通信1.父組件向子組件通信2.子組件向父組件通信3.ref父組件直接操作子組件通信。 二、跨代通信1. 跨層級通信2.事件總線通信 總結 前言 vue3的組件通信和vue2相比在語法上會有些差距,且vue3有的通信方式也在功能上比vue2更加完善&#xf…

【RidgeUI AI+系列】中文重復統計器

中文重復統計器 文字重復統計是一個使用文本處理工具, 輸入文本內容并指定最小詞長度后, 就能自動高亮顯示重復的詞。 本教程將會借助AI實現這個應用的開發 頁面腳本編寫 該工具的基礎流程較為清晰:用戶輸入一段文字后,調用提取…

代碼隨想錄|圖論|05島嶼數量(深搜DFS)

leetcode:99. 島嶼數量 題目 題目描述: 給定一個由 1(陸地)和 0(水)組成的矩陣,你需要計算島嶼的數量。島嶼由水平方向或垂直方向上相鄰的陸地連接而成,并且四周都是水域。你可以假設矩陣外均…

數據結構-第二節-堆棧與隊列

一、概念: 堆棧與隊列也是線性表,但是: 堆棧:只能在一個端進行插入刪除,此端稱為棧頂。(特點:后來居上) 隊列:在一端進行插入(隊尾)&#xff0…

HarmonyNext動畫大全02-顯式動畫

HarmonyOS NEXT顯式動畫詳解 1. 核心接口 顯式動畫通過animateTo接口實現,主要特點包括: 觸發方式:需主動調用接口觸發動畫 參數配置 : animateTo({duration: 1000, // 動畫時長(ms)curve: Curve.Ease, // 動畫曲線delay: 200…

芯谷科技--高壓降壓型 DC-DC 轉換器D7005

在當今電子設備日益復雜且對電源性能要求極高的背景下,一款高效、穩定的電源管理芯片至關重要。 D7005憑借其卓越的性能和廣泛的應用適配性,成為眾多工程師在設計電源方案時的優選。 產品簡介 D7005 是一款高效、高壓降壓型 DC-DC 轉換器,具…

MySQL的GTID詳解

GTID(Global Transaction Identifier,全局事務標識符)是MySQL 5.6及以上版本引入的重要特性,用于在主從復制環境中唯一標識每個事務,簡化復制管理、故障轉移和數據一致性維護。以下從多維度詳細介紹GTID: …

專題:2025中國游戲科技發展研究報告|附130+份報告PDF、原數據表匯總下載

原文鏈接:https://tecdat.cn/?p42756 本報告匯總解讀基于艾瑞咨詢《2025中國游戲科技發展白皮書》、伽馬數據《2025年1-3月中國游戲產業季度報告》、嘉世咨詢《2025中國單機游戲市場現狀報告》等多份行業研報數據。當《黑神話:悟空》以虛幻引擎5復刻東…

【數據挖掘】數據挖掘綜合案例—銀行精準營銷

要求: 1、根據相關的信息預測通過電話推銷,用戶是否會在銀行進行存款 2、數據bank.csv,約4520條數據,17個屬性值 提示: 17個屬性,分別是年齡,工作類型,婚姻狀況,受教育…

postgresql查看鎖的sql語句

發現一個查看postgresql鎖比較好的sql語句,參考鏈接地址如下 鏈接地址 查看鎖等待sql witht_wait as(select a.mode,a.locktype,a.database,a.relation,a.page,a.tuple,a.classid,a.granted,a.objid,a.objsubid,a.pid,a.virtualtransaction,a.virtualxid,a.trans…

JSON 格式詳解

JSON 格式詳解 隨著互聯網的發展和各種 Web 應用程序的普及,數據交換已經成為了我們日常開發中的重要環節。而在各種數據交換格式中,JSON(JavaScript Object Notation)作為一種輕量級的數據交換格式,以其簡潔、易于閱…

原型設計Axure RP網盤資源下載與安裝教程共享

對于初學者來說,我們熟悉一下其定義:?Axure RP是一款常用的快速原型設計工具?,主要用于創建應用軟件或Web網站的線框圖、流程圖、原型和規格說明文檔,廣泛應用于產品經理、UI/UX設計師等專業領域。?? 主要用戶群體&#xff1…

iframe嵌套 redirect中轉頁面 route跳轉

需求是項目A要使用iframe內嵌項目B的頁面, 由于需要嵌套的頁面很多,每個頁面路徑和參數又各不相同, 所以我們在項目B里做了一個中轉頁面,這樣就能自己掌控項目A傳遞過來的東西了; routes.js 增加一個菜單:…

IP數據報 封裝成 MAC幀 ( 目的MAC地址6B 源MAC地址6B 類型2B 數據部分 FCS校驗和4B )

將 IP 數據報(Internet Protocol Datagram)封裝成 MAC 幀 需要在數據鏈路層添加適當的頭部信息,以便在局域網內進行傳輸。這個過程涉及將網絡層(IP 層)的數據通過數據鏈路層(MAC 層)封裝成適合物…

Note2.4 機器學習:Batch Normalization Introduction

Batch Normalization(批標準化,BN)通過標準化數據的操作,使得損失函數的優化地形(optimization landscape)更加平滑,從而達到更好地訓練效果。BN常用于卷積神經網絡(CNN)…