iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
佛心分享-IT 人自學之術

學習 LLM系列 第 7

Day 7 詞向量與句子向量的練習

  • 分享至 

  • xImage
  •  
  1. 安裝
!pip install -q sentence-transformers
  1. 載入模型
from sentence_transformers import SentenceTransformer
#英文模型
model_en = SentenceTransformer("all-MiniLM-L6-v2")
#中文 / 多語模型
model_zh = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

https://ithelp.ithome.com.tw/upload/images/20250921/20169173tj2HiFwWKR.png
3. 產生句子向量

sentences = [
    "我喜歡打棒球",
    "棒球是一項很受歡迎的運動",
    "我昨天去超市買了牛奶"
]

#轉換成 embeddings (每句會得到一個向量,通常是 384 維或 768 維)
embeddings = model_zh.encode(sentences)

print("句子數量:", len(embeddings))
print("每個向量的維度:", embeddings.shape)
print("第一句向量前 10 維:", embeddings[0][:10])

https://ithelp.ithome.com.tw/upload/images/20250921/20169173ZM477Hr39H.png
4. 計算相似度

from sentence_transformers.util import cos_sim

sim_matrix = cos_sim(embeddings, embeddings)
print("相似度矩陣:")
print(sim_matrix)

https://ithelp.ithome.com.tw/upload/images/20250921/20169173SEwOBQmELH.png
5. 印出比較結果

from sentence_transformers import util


#先把 embeddings 轉成 tensor,這樣才能用 cos_sim
import torch
embeddings_tensor = torch.tensor(embeddings)


#計算相似度矩陣
sim_matrix = util.cos_sim(embeddings_tensor, embeddings_tensor)


#兩兩比較
for i in range(len(sentences)):
    for j in range(i+1, len(sentences)):
        score = sim_matrix[i][j].item()  # 取相似度數值
        print(f"「{sentences[i]}」 vs 「{sentences[j]}」 相似度: {score:.4f}")

https://ithelp.ithome.com.tw/upload/images/20250921/20169173WbyRN5LkG4.png


上一篇
Day 6 了解詞向量與嵌入
下一篇
Day 8 微調 (Fine-tuning) vs 提示 (Prompting)
系列文
學習 LLM8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言