快速搭建sentence_transformer方法

sentence transformer模型可以將句子進行Embedding。這里使用docker快速構建一個sentence transformer環境,小試牛刀。

準備鏡像

這里Docker的安裝就不介紹了,我們使用Dockerfile來構建我們的鏡像,Dockerfile內容如下:

FROM python:3.10-slimWORKDIR /appRUN pip install transformers \&& pip3 install torch --index-url https://download.pytorch.org/whl/cpu \&& pip install sentence-transformers \&& pip install Flask

Dockerfile里面的內容很簡單,主要是安裝pytorch以及sentence-transformers

構建鏡像:docker build -t ddy_sentence_transformer .

下載模型

在官網https://www.sbert.net/的介紹中,通過下面的方式使用模型,如果模型不存在,則會自動下載:

from sentence_transformers import SentenceTransformermodel = SentenceTransformer("hkunlp/instructor-large")

然而在使用的過程中,發現根本下載不下來,因此使用離線的方式下載模型,在https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/v0.2/中,找到我們需要的模型然后下載。

這里我們使用較小的模型,distiluse-base-multilingual-cased-v1.zip,模型支持中文。

將模型進行解壓,得到:0_Transformer 1_Pooling 2_Dense config.json modules.json

構建一個簡單的demo

新建一個main.py用于測試sentence_transformer:

from flask import Flask, request, jsonify
from sentence_transformers import SentenceTransformer, utilapp = Flask(__name__)
model = SentenceTransformer('/app/distiluse-base-multilingual-cased-v1')def encode_text(texts):    # Encode the texts and convert to listembeddings = model.encode(texts, convert_to_tensor=True, show_progress_bar=False)embeddings_list = embeddings.tolist()return embeddings_list@app.route('/cal_distance', methods=['POST'])
def cal_distance():params = request.jsonsentence_1 = params['sentence_1']sentence_2 = params['sentence_2']embedding_1 = encode_text([sentence_1])[0]embedding_2 = encode_text([sentence_2])[0]distance = util.pytorch_cos_sim(embedding_1, embedding_2)print('sentence_1:', sentence_1, '|| sentence_2:' , sentence_2 , '===distance:', distance)return jsonify({'status': 'ok'})
if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

程序的主要作用就是判斷兩句話的相似度

運行程序

docker run \-p 5000:5000 \-v /home/my_user/lib/ddy/sentence_transformer/distiluse-base-multilingual-cased-v1/:/app/distiluse-base-multilingual-cased-v1/ \-v /home/my_user/lib/ddy/sentence_transformer/code/main.py:/app/ \--name ddy \ddy_sentence_transformer \python -u main.py

測試

data = {"sentence_1": '教師', "sentence_2": '老師'}
requests.post('http://10.26.120.58:5000/cal_distance', json=data)

可以看出程序的輸出結果:

sentence_1: 教師 || sentence_2: 老師 ===distance: tensor([[0.9625]])

可以看出來相似性還挺高的。

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

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

相關文章

pytorch——貓狗識別

貓狗識別 訓練模型導入需要的包數據加載數據預處理加載數據集并返回對應的圖像和標簽提取標簽信息創建訓練和測試的數據加載器圖像分類CNN的卷積神經網絡模型MYVGG的卷積神經網絡模型AlexNet的卷積神經網絡模型 訓練過程測試過程定義了一個主函數 測試模型導入需要的庫加載之前…

無線模塊應用晶振SG5032VAN

隨著物聯網(IoT)和無線通信技術的迅速發展,無線模塊已經成為各種智能設備的重要組成部分。在無線模塊中,選擇高性能的時鐘源對于確保系統的穩定性和可靠性至關重要。愛普生SG5032VAN是一款LVDS差分晶振,作為一款高性能…

WINUI——Behavior(行為)小結

前言 在使用MVVM進行WINUI或WPF開發時,Command在某些時候并不能滿足邏輯與UI分離的要求。這時肯定就需要其它技術的支持,Behavior就是一種。在WPF中是有Behavior直接支持的,轉到WINUI后,相對有一些麻煩,于是在此記錄之…

Enscape 4.1.0 軟件安裝教程+離線資源庫

軟件介紹 Enscape 是專門為建筑、規劃、景觀及室內設計師打造的渲染產品,無需導入導出文件,在常用的軟件內部即可看到逼真的渲染效果。 你無需了解記憶各種參數的用法,一切都是傻瓜式的一鍵渲染,你可以把精力更多地投入到設計中…

歸并排序——二路歸并排序

目錄 1、簡述 2、復雜度 3、穩定性 4、例子 1、簡述 二路歸并排序(Merge Sort)是一種基于分治法的排序算法,通過將數組遞歸地拆分成兩部分,分別排序后再合并,從而實現整個數組的有序。二路歸并排序具有穩定性和高…

ElementUI之el-tooltip顯示多行內容

ElementUI之el-tooltip顯示多行內容 文章目錄 ElementUI之el-tooltip顯示多行內容1. 多行文本實現2. 實現代碼3. 展示效果 1. 多行文本實現 展示多行文本或者是設置文本內容的格式,使用具名 slot 分發content,替代tooltip中的content屬性。 2. 實現代碼 …

Sui主網升級至V1.26.2版本

Sui主網現已升級至V1.26.2版本,同時Sui協議升級至48版本。 其他升級要點如下所示: 協議 #17881 Sui原生隨機性功能現在已在測試網啟用。 索引器 #17649 JSON-RPC:現在JSON-RPC在查詢時將返回正確的幣種元數據和總供應量信息。 索引器…

【圖像處理與機器視覺】灰度變化與空間濾波

基礎 空間域與變換域 空間域:認為是圖像本身,對于空間域的操作就是對圖像中的像素直接進行修改 變換域:變換系數處理,不直接對于圖像的像素進行處理 鄰域 圖像中某點的鄰域被認為是包含該點的小區域,也被稱為窗口 …

在IDEA中使用Git在將多次commit合并為一次commit

案例: 我想要將master分支中的 測試一、測試二、測試三三次commit合并為一次commit 1. 點擊Git 2. 雙擊點擊commit所在的分支 3. 右鍵要合并的多個commit中的第一次提交的commit 4. 點擊右鍵后彈出的菜單中的Interactively Rebase From Here選項 5. 點擊測試二…

常用Linux命令的具體使用示例

文件操作類: ls -l: 列出當前目錄下所有文件和目錄的詳細信息。cd /home: 切換到/home目錄。pwd: 顯示當前工作目錄的完整路徑。cp source.txt destination.txt: 將source.txt文件復制到destination.txt。mv oldname.txt newname.txt: 將文件oldname.txt重命名為ne…

MySQL排序操作

025排序操作 select .. from .. order by 字段 asc/descselect empno, ename, sal from emp order by sal asc;asc 不寫的話,默認升序 多個字段排序 查詢員工的編號、姓名、薪資,按照薪資升序排列,如果薪資相同的,再按照姓名升…

二叉樹的順序結構(堆的實現)

前言 普通的二叉樹是不適合用數組來存儲的,因為可能會存在大量的空間浪費。而完全二叉樹更適合使用順序結 構存儲。 現實中我們通常把堆 ( 一種二叉樹 ) 使用順序結構的數組來存儲,需要注意的是這里的堆和操作系統 虛擬進程地址空間中的堆是兩回事&…

問題:8255A的端口A工作在方式2時,使用端口C的______作為與CPU和外部設備的聯絡信號。 #媒體#經驗分享#其他

問題:8255A的端口A工作在方式2時,使用端口C的______作為與CPU和外部設備的聯絡信號。 參考答案如圖所示

郵件安全證書,保障通信安全的必備利器

在數字通信日益普及的今天,電子郵件的安全性越來越受到人們的關注。郵件安全證書,作為保障郵件通信安全的重要工具,逐漸走進了大眾的視野。本文將為大家揭秘郵件安全證書,解答關于它的常見問題,幫助大家更好地了解和使…

學習好困-合理調整下

學習時感到困倦是一種常見現象,可能由多種因素引起,如環境、身體狀況、學習方法等。以下是一些原因及其解決方法: 可能的原因 環境因素: - 光線不足:昏暗的環境容易讓人感到疲倦。 - 空氣不流通:缺乏…

浮點數的精度和精度丟失,如何規避,有簡單操作

在日常工作中,如果做財務軟件相關肯定會遇到這種問題,憑證金額表面上看是相等的,但程序運算出的結果卻是FALSE。 例如:驗證憑證金額借方總金額是否等于貸方總金額? 直接sum(借方分錄金額1.1借方分錄金額2.…

RK3568技術筆記之一 RK3568總體介紹

RK3568是瑞芯微開發出一款很好用的芯片。我先把ROCKCHIP的原廠信息搬過來看看。 首先聲明一下,這篇文章里的資訊版權歸瑞芯微電子股份有限公司。畢竟是我轉過來的嘛。 我自己的心得,版權就歸我啦。 主要特性 Quad-core Cortex-A55 up to 2.0GHzMali-G…

認識HTTP狀態碼(status code)

目錄 1、200 OK(訪問成功)👇 2、404 Not Found (沒有找到資源)👇 3、403 Forbidden (訪問拒絕)👇 4、405 Method Not Allowed👇 6、504 Gateway Timeout…

CV Method:經典CNN Backbone總結

文章目錄 前言一、ResNet二、ResNeXt三、Res2Net四、SeNet五、ResNeSt六、DenseNet七、CSPNetPytorch Model Code總結 前言 Backbone作為一切深度學習任務的基礎,不論是理論還是實際應用都有重要的意義,本文針對經典Backbone進行總結,這些Ba…

[word] word怎樣轉換成pdf #職場發展#經驗分享#職場發展

word怎樣轉換成pdf word怎樣轉換成pdf?word格式是辦公中常會用到的格式,word格式編輯好了要想轉換成pdf格式再來傳輸的話需要怎么操作呢?小編這就給大家分享下操作方法,一起來學習下吧! 1、安裝得力PDF轉換器&#x…