最先进的文本嵌入
项目描述
Sentence Transformers:使用BERT & Co.进行多语言句子、段落和图像嵌入
此框架提供了一种简单的方法来计算句子、段落和图像的密集向量表示。这些模型基于BERT / RoBERTa / XLM-RoBERTa等转换器网络,并在各种任务中实现了最先进的性能。文本嵌入在向量空间中,使得相似文本更接近,并可以使用余弦相似度高效地找到。
我们提供超过100种语言的最新预训练模型,针对各种应用场景进行了微调。
此外,该框架允许您轻松地进行自定义嵌入模型的高级调整,以在您特定的任务上实现最佳性能。
有关完整文档,请参阅 www.SBERT.net。
安装
我们推荐使用 Python 3.8+,PyTorch 1.11.0+,以及 transformers v4.34.0+。
使用pip安装
pip install -U sentence-transformers
使用conda安装
conda install -c conda-forge sentence-transformers
从源代码安装
或者,您也可以从仓库克隆最新版本,并直接从源代码安装
pip install -e .
PyTorch与CUDA
如果您想使用GPU / CUDA,您必须安装与匹配CUDA版本的PyTorch。有关如何安装PyTorch的详细信息,请参阅PyTorch - Get Started。
入门指南
请参阅文档中的Quickstart。
首先下载一个预训练模型。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-MiniLM-L6-v2")
然后将一些句子提供给模型。
sentences = [
"The weather is lovely today.",
"It's so sunny outside!",
"He drove to the stadium.",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# => (3, 384)
这样就已经完成了。现在我们有一个包含嵌入的numpy数组,每个文本一个。我们可以使用这些来计算相似度。
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.6660, 0.1046],
# [0.6660, 1.0000, 0.1411],
# [0.1046, 0.1411, 1.0000]])
预训练模型
我们为超过100种语言提供了一份预训练模型列表。一些模型是通用模型,而其他模型则针对特定用途生成嵌入。通过只需传递模型名称即可加载预训练模型: SentenceTransformer('model_name')
。
训练
此框架允许您微调自己的句子嵌入方法,以便您获得特定任务的句子嵌入。您有多种选择,以获得针对特定任务的完美句子嵌入。
有关如何训练自己的嵌入模型,请参阅训练概述。我们提供了如何在不同数据集上训练模型的各种示例。
一些亮点包括
- 支持包括BERT、RoBERTa、XLM-R、DistilBERT、Electra、BART等在内的各种transformer网络
- 多语言和多任务学习
- 训练期间评估以找到最佳模型
- 20+ 损失函数,允许根据语义搜索、释义挖掘、语义相似度比较、聚类、三元组损失、对比损失等进行模型调整。
应用示例
您可以使用此框架进行
以及许多其他用例。
有关所有示例,请参阅examples/applications。
开发环境
在您的机器上克隆仓库(或分支)后,在虚拟环境中运行
python -m pip install -e ".[dev]"
pre-commit install
要测试您的更改,运行
pytest
引用与作者
如果您觉得这个仓库很有帮助,请随意引用我们的出版物Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}
如果您使用的是多语言模型,请随意引用我们的出版物Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation
@inproceedings{reimers-2020-multilingual-sentence-bert,
title = "Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2020",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/2004.09813",
}
请参阅Publications以了解我们集成到SentenceTransformers中的不同出版物。
维护者:Tom Aarsen,🤗 Hugging Face
https://www.ukp.tu-darmstadt.de/
如果出现问题(不应该出现),或者如果您有进一步的问题,请不要犹豫,打开一个问题。
此存储库包含实验性软件,仅为了提供相关出版物额外的背景细节而发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
散列 for sentence_transformers-3.1.1-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | c73bf6f17e3676bb9372a6133a254ebfb5907586b470f2bac5a840c64c3cf97e |
|
MD5 | ffc6ca553894769b3e09334d7a26f40e |
|
BLAKE2b-256 | 750c0bbbf03748c3c7c69f41f016b14cbee946cbd8880d0fb91a05c6f7b7a176 |