Sentest
这是一个基于BERT的句子转换器模型,用于计算句子相似度和语义搜索任务。
下载量 18
发布时间 : 2/14/2025
模型简介
该模型在QQP_triplets数据集上微调,可将句子和段落映射到768维密集向量空间,适用于语义文本相似度、语义搜索、复述挖掘、文本分类和聚类等任务。
模型特点
高效句子嵌入
将句子转换为768维密集向量,保留语义信息
高准确度相似度计算
在测试集上达到98.83%的余弦准确率
长文本支持
最大支持512个标记的输入序列
模型能力
语义文本相似度计算
语义搜索
复述挖掘
文本分类
文本聚类
使用案例
问答系统
相似问题匹配
识别用户提问与知识库问题的语义相似度
高准确度匹配相似问题
信息检索
语义搜索
根据查询语义而非关键词匹配返回结果
提升搜索结果相关性
🚀 基于google-bert/bert-base-uncased的句子转换器
这是一个基于 sentence-transformers 框架,从 google-bert/bert-base-uncased 微调而来的模型。它能够将句子和段落映射到一个768维的密集向量空间,可用于语义文本相似度计算、语义搜索、释义挖掘、文本分类、聚类等任务。
🚀 快速开始
直接使用(Sentence Transformers)
首先,安装 Sentence Transformers 库:
pip install -U sentence-transformers
然后,你可以加载这个模型并进行推理:
from sentence_transformers import SentenceTransformer
# 从 🤗 Hub 下载
model = SentenceTransformer("palusi/sentest")
# 运行推理
sentences = [
'How can I open my computer if I forget my password?',
'I forget my PC password what should I do to open it?',
'I forgot my security code on my Nokia 206 how can I unlock it?',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# 获取嵌入向量的相似度分数
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
✨ 主要特性
- 多用途:可用于语义文本相似度计算、语义搜索、释义挖掘、文本分类、聚类等多种自然语言处理任务。
- 微调模型:基于
google-bert/bert-base-uncased
进行微调,能更好地适应特定任务。 - 高准确率:在
sentest
数据集上的余弦准确率达到 0.9883。
📦 安装指南
若要使用该模型,需安装 Sentence Transformers 库,可通过以下命令进行安装:
pip install -U sentence-transformers
📚 详细文档
模型详情
模型描述
属性 | 详情 |
---|---|
模型类型 | 句子转换器 |
基础模型 | google-bert/bert-base-uncased |
最大序列长度 | 512 个词元 |
输出维度 | 768 维 |
相似度函数 | 余弦相似度 |
训练数据集 | qqp_triplets |
语言 | 英语 |
模型来源
- 文档:Sentence Transformers 文档
- 仓库:GitHub 上的 Sentence Transformers
- Hugging Face:Hugging Face 上的 Sentence Transformers
完整模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
评估
指标
三元组
- 数据集:
sentest
- 使用
TripletEvaluator
进行评估
指标 | 值 |
---|---|
余弦准确率 | 0.9883 |
训练详情
训练数据集
qqp_triplets
- 数据集:qqp_triplets,版本为 f475d9c
- 大小:101,762 个训练样本
- 列:
anchor
、positive
和negative
- 基于前 1000 个样本的近似统计信息:
锚点 正样本 负样本 类型 字符串 字符串 字符串 详情 - 最小值:6 个词元
- 平均值:13.96 个词元
- 最大值:54 个词元
- 最小值:5 个词元
- 平均值:13.99 个词元
- 最大值:52 个词元
- 最小值:6 个词元
- 平均值:14.49 个词元
- 最大值:73 个词元
- 样本:
锚点 正样本 负样本 Who are Mona Punjabi?
Who are Mona punjabis?
Why are Punjabis so proud of their Punjabi-hood?
What are some of the best books on/by Bill Gates?
What are the best books of Bill Gates?
Are there any films about Bill Gates?
Where can I get best pasta in Bangalore?
Where can I get best pasta in Bangalore ?
Where can I get best street food in Bangalore?
- 损失函数:
TripletLoss
,参数如下:{ "distance_metric": "TripletDistanceMetric.EUCLIDEAN", "triplet_margin": 5 }
评估数据集
qqp_triplets
- 数据集:qqp_triplets,版本为 f475d9c
- 大小:101,762 个评估样本
- 列:
anchor
、positive
和negative
- 基于前 1000 个样本的近似统计信息:
锚点 正样本 负样本 类型 字符串 字符串 字符串 详情 - 最小值:6 个词元
- 平均值:13.99 个词元
- 最大值:61 个词元
- 最小值:6 个词元
- 平均值:13.76 个词元
- 最大值:49 个词元
- 最小值:6 个词元
- 平均值:14.75 个词元
- 最大值:78 个词元
- 样本:
锚点 正样本 负样本 How do l study efficiently?
How do you study effectively?
Why can't I study efficiently?
How do you commit suicide?
What is the easiest way to commite suicide?
What is a way to commit suicide and not damaging your organs so that they can be donated?
How do you learn to speak a foreign language?
What is the quickest way a person can learn to speak a new language fluently?
What's the easiest foreign language for a native English speaker, living in America, to learn to speak?
- 损失函数:
TripletLoss
,参数如下:{ "distance_metric": "TripletDistanceMetric.EUCLIDEAN", "triplet_margin": 5 }
训练超参数
非默认超参数
eval_strategy
:按步数评估per_device_train_batch_size
:16per_device_eval_batch_size
:16learning_rate
:2e-05weight_decay
:0.01num_train_epochs
:1warmup_ratio
:0.1fp16
:Trueload_best_model_at_end
:Truepush_to_hub
:Truehub_model_id
:palusi/sentestbatch_sampler
:无重复采样
所有超参数
点击展开
overwrite_output_dir
:Falsedo_predict
:Falseeval_strategy
:stepsprediction_loss_only
:Trueper_device_train_batch_size
:16per_device_eval_batch_size
:16per_gpu_train_batch_size
:Noneper_gpu_eval_batch_size
:Nonegradient_accumulation_steps
:1eval_accumulation_steps
:Nonetorch_empty_cache_steps
:Nonelearning_rate
:2e-05weight_decay
:0.01adam_beta1
:0.9adam_beta2
:0.999adam_epsilon
:1e-08max_grad_norm
:1.0num_train_epochs
:1max_steps
:-1lr_scheduler_type
:linearlr_scheduler_kwargs
:{}warmup_ratio
:0.1warmup_steps
:0log_level
:passivelog_level_replica
:warninglog_on_each_node
:Truelogging_nan_inf_filter
:Truesave_safetensors
:Truesave_on_each_node
:Falsesave_only_model
:Falserestore_callback_states_from_checkpoint
:Falseno_cuda
:Falseuse_cpu
:Falseuse_mps_device
:Falseseed
:42data_seed
:Nonejit_mode_eval
:Falseuse_ipex
:Falsebf16
:Falsefp16
:Truefp16_opt_level
:O1half_precision_backend
:autobf16_full_eval
:Falsefp16_full_eval
:Falsetf32
:Nonelocal_rank
:0ddp_backend
:Nonetpu_num_cores
:Nonetpu_metrics_debug
:Falsedebug
:[]dataloader_drop_last
:Falsedataloader_num_workers
:0dataloader_prefetch_factor
:Nonepast_index
:-1disable_tqdm
:Falseremove_unused_columns
:Truelabel_names
:Noneload_best_model_at_end
:Trueignore_data_skip
:Falsefsdp
:[]fsdp_min_num_params
:0fsdp_config
:{'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap
:Noneaccelerator_config
:{'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed
:Nonelabel_smoothing_factor
:0.0optim
:adamw_torchoptim_args
:Noneadafactor
:Falsegroup_by_length
:Falselength_column_name
:lengthddp_find_unused_parameters
:Noneddp_bucket_cap_mb
:Noneddp_broadcast_buffers
:Falsedataloader_pin_memory
:Truedataloader_persistent_workers
:Falseskip_memory_metrics
:Trueuse_legacy_prediction_loop
:Falsepush_to_hub
:Trueresume_from_checkpoint
:Nonehub_model_id
:palusi/sentesthub_strategy
:every_savehub_private_repo
:Nonehub_always_push
:Falsegradient_checkpointing
:Falsegradient_checkpointing_kwargs
:Noneinclude_inputs_for_metrics
:Falseinclude_for_metrics
:[]eval_do_concat_batches
:Truefp16_backend
:autopush_to_hub_model_id
:Nonepush_to_hub_organization
:Nonemp_parameters
:auto_find_batch_size
:Falsefull_determinism
:Falsetorchdynamo
:Noneray_scope
:lastddp_timeout
:1800torch_compile
:Falsetorch_compile_backend
:Nonetorch_compile_mode
:Nonedispatch_batches
:Nonesplit_batches
:Noneinclude_tokens_per_second
:Falseinclude_num_input_tokens_seen
:Falseneftune_noise_alpha
:Noneoptim_target_modules
:Nonebatch_eval_metrics
:Falseeval_on_start
:Falseuse_liger_kernel
:Falseeval_use_gather_object
:Falseaverage_tokens_across_devices
:Falseprompts
:Nonebatch_sampler
:no_duplicatesmulti_dataset_batch_sampler
:proportional
训练日志
轮次 | 步数 | 训练损失 | 验证损失 | sentest 余弦准确率 |
---|---|---|---|---|
-1 | -1 | - | - | 0.8806 |
0.0983 | 500 | 2.5691 | - | - |
0.1965 | 1000 | 1.2284 | 0.6712 | 0.9645 |
0.2948 | 1500 | 0.8769 | - | - |
0.3930 | 2000 | 0.7151 | 0.4490 | 0.9787 |
0.4913 | 2500 | 0.6506 | - | - |
0.5895 | 3000 | 0.5855 | 0.3519 | 0.9848 |
0.6878 | 3500 | 0.5397 | - | - |
0.7860 | 4000 | 0.4998 | 0.3079 | 0.9871 |
0.8843 | 4500 | 0.4885 | - | - |
0.9825 | 5000 | 0.483 | 0.288 | 0.9883 |
- 加粗行表示保存的检查点。
框架版本
- Python:3.11.11
- Sentence Transformers:3.4.1
- Transformers:4.48.2
- PyTorch:2.5.1+cu124
- Accelerate:1.3.0
- Datasets:3.2.0
- Tokenizers:0.21.0
📄 许可证
文档中未提及相关许可证信息。
🔧 技术细节
该模型基于 google-bert/bert-base-uncased
进行微调,使用 TripletLoss
损失函数进行训练。在训练过程中,使用了三元组数据,通过最小化锚点与正样本之间的距离,同时最大化锚点与负样本之间的距离,来学习句子的嵌入表示。模型的输出是一个 768 维的向量,可用于计算句子之间的相似度。
📄 引用
BibTeX
Sentence Transformers
@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",
}
TripletLoss
@misc{hermans2017defense,
title={In Defense of the Triplet Loss for Person Re-Identification},
author={Alexander Hermans and Lucas Beyer and Bastian Leibe},
year={2017},
eprint={1703.07737},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Jina Embeddings V3
Jina Embeddings V3 是一个多语言句子嵌入模型,支持超过100种语言,专注于句子相似度和特征提取任务。
文本嵌入
Transformers 支持多种语言

J
jinaai
3.7M
911
Ms Marco MiniLM L6 V2
Apache-2.0
基于MS Marco段落排序任务训练的交叉编码器模型,用于信息检索中的查询-段落相关性评分
文本嵌入 英语
M
cross-encoder
2.5M
86
Opensearch Neural Sparse Encoding Doc V2 Distill
Apache-2.0
基于蒸馏技术的稀疏检索模型,专为OpenSearch优化,支持免推理文档编码,在搜索相关性和效率上优于V1版本
文本嵌入
Transformers 英语

O
opensearch-project
1.8M
7
Sapbert From PubMedBERT Fulltext
Apache-2.0
基于PubMedBERT的生物医学实体表征模型,通过自对齐预训练优化语义关系捕捉
文本嵌入 英语
S
cambridgeltl
1.7M
49
Gte Large
MIT
GTE-Large 是一个强大的句子转换器模型,专注于句子相似度和文本嵌入任务,在多个基准测试中表现出色。
文本嵌入 英语
G
thenlper
1.5M
278
Gte Base En V1.5
Apache-2.0
GTE-base-en-v1.5 是一个英文句子转换器模型,专注于句子相似度任务,在多个文本嵌入基准测试中表现优异。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.5M
63
Gte Multilingual Base
Apache-2.0
GTE Multilingual Base 是一个多语言的句子嵌入模型,支持超过50种语言,适用于句子相似度计算等任务。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.2M
246
Polybert
polyBERT是一个化学语言模型,旨在实现完全由机器驱动的超快聚合物信息学。它将PSMILES字符串映射为600维密集指纹,以数值形式表示聚合物化学结构。
文本嵌入
Transformers

P
kuelumbus
1.0M
5
Bert Base Turkish Cased Mean Nli Stsb Tr
Apache-2.0
基于土耳其语BERT的句子嵌入模型,专为语义相似度任务优化
文本嵌入
Transformers 其他

B
emrecan
1.0M
40
GIST Small Embedding V0
MIT
基于BAAI/bge-small-en-v1.5模型微调的文本嵌入模型,通过MEDI数据集与MTEB分类任务数据集训练,优化了检索任务的查询编码能力。
文本嵌入
Safetensors 英语
G
avsolatorio
945.68k
29
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98