Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use Thunder421/criterion-finetuned-bert with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Thunder421/criterion-finetuned-bert")
sentences = [
"Lead Data Scientist bringing over 8 years of industry experience along with a verified Masters degree. Expert competencies cover Python data ecosystems, custom Pandas metrics, NumPy, and advanced SQL matrices. Proven success track record in building high-dimension feature distributions to trace underlying statistical variations.",
"Seeking a skilled Algo-Trading Research Associate to join our growing team. Key responsibilities include modeling volatile financial vectors to predict historical risk exposure trends. Must be fully comfortable handling tools like Time-series variance tracking analytics, econometric models, and asset liquidity formulas in a fast-paced environment.",
"We are looking for a Infrastructure Platform Architect with a minimum of 4+ years of experience. The core technical stack requirements involve deep knowledge in: OCI Containers, Container Orchestration Engine, AWS Cloud Platform, Terraform, Python3. Must be highly capable of executing product deliverables in a fast paced workspace environment.",
"Seeking a skilled Senior iOS/Android Mobile Developer to join our growing team. Key responsibilities include managing offline caching synchronization pipelines and publishing builds across app marketplaces. Must be fully comfortable handling tools like Swift UI frameworks, core mobile animations, Kotlin, and Gradle scripts in a fast-paced environment."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from sentence-transformers/all-mpnet-base-v2. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for retrieval.
SentenceTransformer(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'MPNetModel'})
(1): Pooling({'embedding_dimension': 768, 'pooling_mode': 'mean', 'include_prompt': True})
(2): Normalize({})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("sentence_transformers_model_id")
# Run inference
sentences = [
'Data Scientist with 1 years working across active teams. Demonstrated technical execution and history background includes: Py3 Engine, PostgreSQL, Theoretical knowledge of ML, GenAI. Seeking an engineering position to scale architectural patterns.',
'We are looking for a Quantitative Analytics Expert with a minimum of 4+ years of experience. The core technical stack requirements involve deep knowledge in: Py3 Engine, Postgres, Machine Learning, GenAI, Amazon Web Services. Must be highly capable of executing product deliverables in a fast paced workspace environment.',
'Seeking a skilled Senior React Native Mobile Architect to join our growing team. Key responsibilities include building robust declarative modular application structures that map perfectly across target runtime layers. Must be fully comfortable handling tools like Mobile UI render optimization configurations, component lifecycles, and component scaling metrics in a fast-paced environment.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.4431, 0.1849],
# [0.4431, 1.0000, 0.4543],
# [0.1849, 0.4543, 1.0000]])
ats-valEmbeddingSimilarityEvaluator| Metric | Value |
|---|---|
| pearson_cosine | 0.946 |
| spearman_cosine | 0.9258 |
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| modality | text | text | |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
Lead Data Scientist bringing over 8 years of industry experience along with a verified Masters degree. Expert competencies cover Python data ecosystems, custom Pandas metrics, NumPy, and advanced SQL matrices. Proven success track record in optimizing complex optimization layers to surface implicit correlation parameters across structures. |
Seeking a skilled Financial Quantitative Portfolio Analyst to join our growing team. Key responsibilities include modeling volatile financial vectors to predict historical risk exposure trends. Must be fully comfortable handling tools like Advanced quantitative modeling systems, predictive alpha signals generation, and mathematical metrics in a fast-paced environment. |
0.8923 |
Gastronomy Chef Specialist bringing over 9 years of industry experience along with a verified Bachelors degree. Expert competencies cover Kitchen management, menu engineering, and food safety protocols. Proven success track record in authoring seasonal menus while maintaining strict cost-of-goods compliance audits. |
Seeking a skilled Statistical Modeling Specialist to join our growing team. Key responsibilities include extracting tabular feature data matrices to surface corporate risk exposures. Must be fully comfortable handling tools like dbt data warehousing modeling, Snowflake, Pandas analytics, and statistical hypothesis tracking in a fast-paced environment. |
0.0229 |
Modern JavaScript Systems Engineer bringing over 7 years of industry experience along with a verified Masters degree. Expert competencies cover TypeScript application scaling, component modular patterns, and performance tuning. Proven success track record in abstracting core layout state patterns into reusable, contextually driven modular hooks. |
Seeking a skilled Cross-Platform Mobile Engineer to join our growing team. Key responsibilities include optimizing responsive visual components to enforce smooth multi-device execution footprints. Must be fully comfortable handling tools like React Native declarative code paradigms, mobile layout state setups, and native bridges in a fast-paced environment. |
0.9061 |
CosineSimilarityLoss with these parameters:{
"loss_fct": "torch.nn.modules.loss.MSELoss",
"cos_score_transformation": "torch.nn.modules.linear.Identity"
}
per_device_train_batch_size: 16num_train_epochs: 4per_device_eval_batch_size: 16multi_dataset_batch_sampler: round_robinper_device_train_batch_size: 16num_train_epochs: 4max_steps: -1learning_rate: 5e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0optim: adamw_torch_fusedoptim_args: Noneweight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 1average_tokens_across_devices: Truemax_grad_norm: 1label_smoothing_factor: 0.0bf16: Falsefp16: Falsebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Nonetorch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneuse_liger_kernel: Falseliger_kernel_config: Noneuse_cache: Falseneftune_noise_alpha: Nonetorch_empty_cache_steps: Noneauto_find_batch_size: Falselog_on_each_node: Truelogging_nan_inf_filter: Trueinclude_num_input_tokens_seen: nolog_level: passivelog_level_replica: warningdisable_tqdm: Falseproject: huggingfacetrackio_space_id: Nonetrackio_bucket_id: Nonetrackio_static_space_id: Noneper_device_eval_batch_size: 16prediction_loss_only: Trueeval_on_start: Falseeval_do_concat_batches: Trueeval_use_gather_object: Falseeval_accumulation_steps: Noneinclude_for_metrics: []batch_eval_metrics: Falsesave_only_model: Falsesave_on_each_node: Falseenable_jit_checkpoint: Falsepush_to_hub: Falsehub_private_repo: Nonehub_model_id: Nonehub_strategy: every_savehub_always_push: Falsehub_revision: Noneload_best_model_at_end: Falseignore_data_skip: Falserestore_callback_states_from_checkpoint: Falsefull_determinism: Falseseed: 42data_seed: Noneuse_cpu: Falseaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedataloader_drop_last: Falsedataloader_num_workers: 0dataloader_pin_memory: Truedataloader_persistent_workers: Falsedataloader_prefetch_factor: Noneremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_static_graph: Noneddp_backend: Noneddp_timeout: 1800fsdp: Nonefsdp_config: Nonedeepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: Nonelocal_rank: -1prompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robinrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | ats-val_spearman_cosine |
|---|---|---|---|
| 1.0 | 425 | - | 0.9177 |
| 1.1765 | 500 | 0.0275 | - |
| 2.0 | 850 | - | 0.9181 |
| 2.3529 | 1000 | 0.0102 | - |
| 3.0 | 1275 | - | 0.9233 |
| 3.5294 | 1500 | 0.0085 | - |
| 4.0 | 1700 | - | 0.9258 |
@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",
}
Base model
sentence-transformers/all-mpnet-base-v2