SentenceTransformer
This is a sentence-transformers model trained on the csv dataset. It maps sentences & paragraphs to a 384-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
Model Details
Model Description
- Model Type: Sentence Transformer
- Maximum Sequence Length: 512 tokens
- Output Dimensionality: 384 dimensions
- Similarity Function: Cosine Similarity
- Training Dataset:
- csv
Model Sources
- Documentation: Sentence Transformers Documentation
- Repository: Sentence Transformers on GitHub
- Hugging Face: Sentence Transformers on Hugging Face
Full Model Architecture
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Normalize()
)
Usage
Direct Usage (Sentence Transformers)
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("nwachuks/MedEmbed-base-v0.1-finetuned")
# Run inference
sentences = [
'1. Participants who have an HLA-matched sibling who is able and willing to donate bone marrow. Patients with a HLA-matched unrelated donor are not excluded.',
'Individuals with an HLA-matched sibling, ready and capable of donating bone marrow, are eligible to participate.',
'Eligible candidates have no history of smoking or using tobacco products.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
Evaluation
Metrics
Triplet
- Datasets:
ai-job-validation,ai-job-testandai-job-test - Evaluated with TripletEvaluator
| Metric | ai-job-validation | ai-job-test |
|---|---|---|
| cosine_accuracy | 0.9483 | 0.9474 |
Training Details
Training Dataset
csv
- Dataset: csv
- Size: 8,049 training samples
- Columns: eligibility_criteria, positives, normal_negatives, and hard_negatives
- Approximate statistics based on the first 1000 samples:
eligibility_criteria positives normal_negatives hard_negatives type string string string string details min: 5 tokensmean: 29.1 tokensmax: 194 tokens min: 6 tokensmean: 25.87 tokensmax: 114 tokens min: 4 tokensmean: 14.31 tokensmax: 66 tokens min: 6 tokensmean: 21.45 tokensmax: 179 tokens - Samples:
eligibility_criteria positives normal_negatives hard_negatives 3. Extracted or missing upper permanent tooth/teeth (except for third molars). One or more missing or extracted upper permanent teeth (excluding third molars) is required. A history of braces does not affect eligibility. No gaps in the upper permanent teeth (excluding third molars) are allowed. 1. Patient is intolerant of existing therapy(ies) known to provide clinical benefit for their condition Existing therapies that benefit the patient's condition are not tolerated by the patient. The patient has no contraindications for MRI scans. The patient does not exhibit intolerance towards established therapies that benefit their condition. 1. Apparently healthy adult of 18 to 45 years of age. Individuals with no known health issues, aged between 18 and 45. Participants who have undergone a major surgical procedure in the past year. Participants with known health issues, despite being younger than 18 or older than 45. - Loss: MultipleNegativesRankingLoss with these parameters:
{ "scale": 20.0, "similarity_fct": "cos_sim" }
Evaluation Dataset
csv
- Dataset: csv
- Size: 1,006 evaluation samples
- Columns: eligibility_criteria, positives, normal_negatives, and hard_negatives
- Approximate statistics based on the first 1000 samples:
eligibility_criteria positives normal_negatives hard_negatives type string string string string details min: 4 tokensmean: 28.38 tokensmax: 230 tokens min: 5 tokensmean: 25.18 tokensmax: 156 tokens min: 4 tokensmean: 13.96 tokensmax: 67 tokens min: 6 tokensmean: 20.65 tokensmax: 129 tokens - Samples:
eligibility_criteria positives normal_negatives hard_negatives 1. Age of the patients is 40 years or older. Participants must be aged 40 years or more. Participants must have a history of diabetes mellitus. Participants must be under 40 years old. 12. Patients taking narcotics prior to elective colorectal surgery Individuals with narcotic use before undergoing elective colorectal surgery. Participants with a flu shot before the influenza season. Participants taking narcotics following, rather than before, elective colorectal surgery. 10. Intends to initiate a weight reduction program during the study Plans to start a diet regimen over the course of the study. Has no plans to start a new exercise routine during the study. Refuses to start any weight reduction program during the study. - Loss: MultipleNegativesRankingLoss with these parameters:
{ "scale": 20.0, "similarity_fct": "cos_sim" }
Training Hyperparameters
Non-Default Hyperparameters
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 2e-05num_train_epochs: 5warmup_ratio: 0.1batch_sampler: no_duplicates
All Hyperparameters
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.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 5max_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: Falsefp16_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: Falseignore_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: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_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: 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
Training Logs
| Epoch | Step | Training Loss | Validation Loss | ai-job-validation_cosine_accuracy | ai-job-test_cosine_accuracy |
|---|---|---|---|---|---|
| -1 | -1 | - | - | 0.7018 | - |
| 0.7937 | 100 | 0.8566 | 0.3594 | 0.8837 | - |
| 1.5873 | 200 | 0.3644 | 0.2623 | 0.9235 | - |
| 2.3810 | 300 | 0.2665 | 0.2278 | 0.9404 | - |
| 3.1746 | 400 | 0.2186 | 0.2131 | 0.9463 | - |
| 3.9683 | 500 | 0.1928 | 0.2038 | 0.9503 | - |
| 4.7619 | 600 | 0.177 | 0.2014 | 0.9483 | - |
| -1 | -1 | - | - | 0.9483 | 0.9474 |
Framework Versions
- Python: 3.9.22
- Sentence Transformers: 4.1.0
- Transformers: 4.52.3
- PyTorch: 2.7.0+cu126
- Accelerate: 1.5.2
- Datasets: 3.6.0
- Tokenizers: 0.21.1
Citation
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",
}
MultipleNegativesRankingLoss
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}