Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
9
This is a sentence-transformers model finetuned from aubmindlab/bert-base-arabertv02. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
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})
)
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 = [
'هل توجد مخازن في الجهاز الهضمي',
'1 إطلاق الماء والأحماض والإنزيمات والمخازن بواسطة الجهاز الهضمي والأعضاء الملحقة في تجويف الجهاز الهضمي. 2 الامتصاص. 3 حركة الجزيئات العضوية الصغيرة ، والإلكتروليتات ، والفيتامينات ، والمياه عبر ظهارة الجهاز الهضمي وإلى الدم والجهاز الليمفاوي والجهاز الهضمي (وتسمى أيضًا القناة الهضمية أو الجهاز الهضمي). 1 الجهاز الهضمي عبارة عن أنبوب مستمر يمتد من الفم إلى فتحة الشرج. 2 ويشمل الأعضاء التالية: 3 فم. 4 بلعوم. 5 مريء. 6 بطن. 7 ـ الأمعاء الدقيقة. 8 الأمعاء الغليظة.',
'بي دي إف. نص. أصلي. الإنسان كائن معقد لأن الإنسان يتكون من تريليونات من الخلايا والكثير من الأجهزة والأعضاء ، ومن بعض الأجهزة الرئيسية أجهزة الدورة الدموية والجهاز الهيكلي والجهاز الهضمي والجهاز العصبي والجهاز التنفسي. نص. أصلي. الإنسان كائن حي معقد لأن الإنسان يتكون من تريليونات من الخلايا والكثير من الأجهزة والأعضاء ، ومن بعض الأجهزة الرئيسية أجهزة الدورة الدموية والجهاز الهيكلي والجهاز الهضمي والجهاز العصبي والجهاز التنفسي.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
ar-nli-devTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.738 |
| dot_accuracy | 0.295 |
| manhattan_accuracy | 0.763 |
| euclidean_accuracy | 0.708 |
| max_accuracy | 0.763 |
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 2e-05num_train_epochs: 1warmup_ratio: 0.1fp16: Truebatch_sampler: no_duplicatesoverwrite_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: 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: 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: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_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: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | ar-nli-dev_max_accuracy |
|---|---|---|---|
| 0 | 0 | - | 0.763 |
| 0.0640 | 100 | 1.2212 | - |
| 0.1280 | 200 | 0.4768 | - |
| 0.1919 | 300 | 0.4315 | - |
| 0.2559 | 400 | 0.3696 | - |
| 0.3199 | 500 | 0.3762 | - |
| 0.3839 | 600 | 0.327 | - |
| 0.4479 | 700 | 0.3332 | - |
| 0.5118 | 800 | 0.3227 | - |
| 0.5758 | 900 | 0.3311 | - |
| 0.6398 | 1000 | 0.2997 | - |
| 0.7038 | 1100 | 0.2991 | - |
| 0.7678 | 1200 | 0.2823 | - |
| 0.8317 | 1300 | 0.2663 | - |
| 0.8957 | 1400 | 0.2776 | - |
| 0.9597 | 1500 | 0.2651 | - |
@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",
}
@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}
}
Base model
aubmindlab/bert-base-arabertv02