Sentence transformers:修订间差异
跳到导航
跳到搜索
无编辑摘要 |
无编辑摘要 |
||
第16行: | 第16行: | ||
print(cos_sim) | print(cos_sim) | ||
tensor([[0.8960]]) | # result | ||
tensor([[0.1019]])</small> | <nowiki>tensor([[0.8960]])</nowiki> | ||
<nowiki>tensor([[0.1019]])</nowiki></small> | |||
=== 向量搜索 === | |||
<small>import pandas as pd | |||
df = pd.read_csv("demo.txt", sep="#",header=None, names=["sentence"]) | |||
from sentence_transformers import SentenceTransformer | |||
model = SentenceTransformer('uer/sbert-base-chinese-nli') | |||
sentences = df['sentence'].tolist() | |||
sentence_embeddings = model.encode(sentences) | |||
import faiss | |||
dimension = sentence_embeddings.shape[1] | |||
index = faiss.IndexFlatL2(dimension) | |||
index.add(sentence_embeddings) | |||
topK = 5 | |||
search = model.encode(["宠物猫"]) | |||
D, I = index.search(search, topK) | |||
df['sentence'].iloc[I[0]] | |||
# result | |||
6 猫是一种小型哺乳动物,被视为宠物。 | |||
3 鸡是一种小型哺乳动物,下蛋用。 | |||
4 桌子是一种家俱,放东西、吃饭使用。 | |||
7 狗是一种常见的宠物,被用作伴侣动物。 | |||
5 椅子是一种家俱,人坐。 | |||
Name: sentence, dtype: object | |||
>>> | |||
>>> D | |||
<nowiki>array([[341.92676, 638.62585, 787.46716, 848.5363 , 861.7328 ]], dtype=float32)</nowiki> | |||
>>> I | |||
<nowiki>array([[6, 3, 4, 7, 5]])</nowiki> | |||
# demo.txt | |||
大米是一种食品,通常煮饭吃。 | |||
马是一种大型哺乳动物,可以在战场上。 | |||
驴是一种大中型哺乳动物,拉磨使用。 | |||
鸡是一种小型哺乳动物,下蛋用。 | |||
桌子是一种家俱,放东西、吃饭使用。 | |||
椅子是一种家俱,人坐。 | |||
猫是一种小型哺乳动物,被视为宠物。 | |||
狗是一种常见的宠物,被用作伴侣动物</small> | |||
[[分类:Develop]] | [[分类:Develop]] | ||
[[分类:AI]] | [[分类:AI]] | ||
[[分类:Python]] | [[分类:Python]] |
2024年7月1日 (一) 15:02的版本
sentence-transformer(SBERT) 框架提供了一种简便的方法来计算句子和段落的向量表示(也称为句子嵌入),是用于访问、使用和训练最先进的文本和图像嵌入模型的首选 Python 模块。它可用于模型计算嵌入或使用交叉编码器模型计算相似性,包括语义搜索、语义文本相似性和释义挖掘。
超过 5,000 个预先训练的 Sentence Transformer 模型可供 Hugging Face 立即使用,其中包括 Massive Text Embeddings Benchmark(MTEB) 排行榜中的许多最先进的模型。此外,使用 Sentence Transformer 可以轻松训练或微调您自己的模型,使您能够为特定用例创建自定义模型。
Sentence Transformers 由 UKPLab 创建,由 Hugging Face 维护。
同种语义句向量对比
from sentence_transformers import SentenceTransformer, util model = SentenceTransformer('distiluse-base-multilingual-cased') emb1 = model.encode('Natural language processing is a hard task for human') emb2 = model.encode('自然语言处理对于人类来说是个困难的任务') emb3 = model.encode('猫是一种小型哺乳动物,被视为宠物。') cos_sim = util.pytorch_cos_sim(emb1, emb2) print(cos_sim) cos_sim = util.pytorch_cos_sim(emb1, emb3) print(cos_sim)
# result tensor([[0.8960]]) tensor([[0.1019]])
向量搜索
import pandas as pd df = pd.read_csv("demo.txt", sep="#",header=None, names=["sentence"]) from sentence_transformers import SentenceTransformer model = SentenceTransformer('uer/sbert-base-chinese-nli') sentences = df['sentence'].tolist() sentence_embeddings = model.encode(sentences) import faiss dimension = sentence_embeddings.shape[1] index = faiss.IndexFlatL2(dimension) index.add(sentence_embeddings) topK = 5 search = model.encode(["宠物猫"]) D, I = index.search(search, topK) df['sentence'].iloc[I[0]]
# result 6 猫是一种小型哺乳动物,被视为宠物。 3 鸡是一种小型哺乳动物,下蛋用。 4 桌子是一种家俱,放东西、吃饭使用。 7 狗是一种常见的宠物,被用作伴侣动物。 5 椅子是一种家俱,人坐。 Name: sentence, dtype: object >>> >>> D array([[341.92676, 638.62585, 787.46716, 848.5363 , 861.7328 ]], dtype=float32) >>> I array([[6, 3, 4, 7, 5]])
# demo.txt 大米是一种食品,通常煮饭吃。 马是一种大型哺乳动物,可以在战场上。 驴是一种大中型哺乳动物,拉磨使用。 鸡是一种小型哺乳动物,下蛋用。 桌子是一种家俱,放东西、吃饭使用。 椅子是一种家俱,人坐。 猫是一种小型哺乳动物,被视为宠物。 狗是一种常见的宠物,被用作伴侣动物