跳转到主要内容

最先进的文本嵌入

项目描述

HF Models GitHub - License PyPI - Python Version PyPI - Package Version Docs - GitHub.io

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/

如果出现问题(不应该出现),或者如果您有进一步的问题,请不要犹豫,打开一个问题。

此存储库包含实验性软件,仅为了提供相关出版物额外的背景细节而发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

sentence_transformers-3.1.1.tar.gz (191.6 kB 查看散列)

上传时间 源代码

构建分发

sentence_transformers-3.1.1-py3-none-any.whl (245.3 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面