Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use dhammanana/Tipitaka_MiniLM-L12 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("dhammanana/Tipitaka_MiniLM-L12")
sentences = [
"ime kho, sāriputta, dasa buddhakārakā dhammā’’ti.",
"these, sāriputta, are the ten qualities that make a buddha.”",
"lust, strong lust, strong mental lust accompanied by the view of annihilationism—this is called \"craving for cessation.\"",
"the two of ten powers, and upanisā, aññatitthiya, bhūmija;"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2. It maps sentences & paragraphs to a 384-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': 'BertModel'})
(1): Pooling({'embedding_dimension': 384, 'pooling_mode': 'mean', '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 = [
'anāpatti hi so rukkho, hoti ekakulassa ce.',
'there is indeed no offense if that tree belongs to a single family.',
'there are four kinds of purity: purity of instruction, purity of restraint, purity of seeking, and purity of reflection.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[ 1.0000, 0.8338, -0.1214],
# [ 0.8338, 1.0000, -0.1454],
# [-0.1214, -0.1454, 1.0000]])
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| modality | text | text |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
tasi alaṅkāre, bhūvādi. |
tasi [is used] in the sense of adorning; it belongs to the bhūvādi group. |
evaṃ phussena yutto māso phusso, maghāya yutto māso māgho, phagguniyā yutto māso phagguno, cittāya yutto māso citto, visākhāya yutto māso vesākho, jeṭṭhāya yutto māso jeṭṭho, uttarāsāḷhāya yutto māso āsāḷho, āsāḷhī vā, savaṇena yutto māso sāvaṇo, sāvaṇī. |
similarly, a month conjoined with phussa (pusya) is phusso; a month conjoined with maghā is māgho; a month conjoined with phaggunī (phalgunī) is phagguno; a month conjoined with cittā is citto; a month conjoined with visākhā is vesākho; a month conjoined with jeṭṭhā (jyesthā) is jeṭṭho; a month conjoined with uttarāsāḷhā (uttarāṣāḍhā) is āsāḷho or āsāḷhī; a month conjoined with savaṇa (śravaṇa) is sāvaṇo or sāvaṇī. |
īādimhi-akari, kari, saṅkhari, abhisaṅkhari, akubbi, kubbi, akrubbi, krubbi, akayiri, kayiri, akaruṃ, karuṃ, saṅkharuṃ, abhi, saṅkharuṃ, akariṃsu, kariṃsu, saṅkhariṃsu, abhisaṅkhariṃsu, akubbiṃsu, kubbiṃsu, akrubbiṃsu, krubbiṃsu, akayiriṃsu, kayiriṃsu, akayiruṃ, kayiruṃ. |
in the past tense (ī-ādi): akari, kari, saṅkhari, abhisaṅkhari, akubbi, kubbi, akrubbi, krubbi, akayiri, kayiri, akaruṃ, karuṃ, saṅkharuṃ, abhisaṅkharuṃ, akariṃsu, kariṃsu, saṅkhariṃsu, abhisaṅkhariṃsu, akubbiṃsu, kubbiṃsu, akrubbiṃsu, krubbiṃsu, akayiriṃsu, kayiriṃsu, akayiruṃ, kayiruṃ. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false,
"directions": [
"query_to_doc"
],
"partition_mode": "joint",
"hardness_mode": null,
"hardness_strength": 0.0
}
per_device_train_batch_size: 64num_train_epochs: 1per_device_eval_batch_size: 64multi_dataset_batch_sampler: round_robinper_device_train_batch_size: 64num_train_epochs: 1max_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: 64prediction_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: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}deepspeed: 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 |
|---|---|---|
| 0.0379 | 500 | 2.8581 |
| 0.0758 | 1000 | 0.8063 |
| 0.1137 | 1500 | 0.4569 |
| 0.1516 | 2000 | 0.2829 |
| 0.1895 | 2500 | 0.1918 |
| 0.2274 | 3000 | 0.1640 |
| 0.2653 | 3500 | 0.1384 |
| 0.3032 | 4000 | 0.1248 |
| 0.3411 | 4500 | 0.1068 |
| 0.3790 | 5000 | 0.0975 |
| 0.4169 | 5500 | 0.0925 |
| 0.4548 | 6000 | 0.0888 |
| 0.4926 | 6500 | 0.0825 |
| 0.5305 | 7000 | 0.0800 |
| 0.5684 | 7500 | 0.0713 |
| 0.6063 | 8000 | 0.0734 |
| 0.6442 | 8500 | 0.0729 |
| 0.6821 | 9000 | 0.0646 |
| 0.7200 | 9500 | 0.0676 |
| 0.7579 | 10000 | 0.0633 |
| 0.7958 | 10500 | 0.0595 |
| 0.8337 | 11000 | 0.0589 |
| 0.8716 | 11500 | 0.0567 |
| 0.9095 | 12000 | 0.0594 |
| 0.9474 | 12500 | 0.0542 |
| 0.9853 | 13000 | 0.0559 |
@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{oord2019representationlearningcontrastivepredictive,
title={Representation Learning with Contrastive Predictive Coding},
author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
year={2019},
eprint={1807.03748},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/1807.03748},
}