Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use mzuama/newmodele5 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("mzuama/newmodele5")
sentences = [
"query: Apakah seseorang yang meneliti paham komunisme untuk kepentingan akademik bisa dipidana?",
"passage: Pasal 407 ayat (2) menyatakan bahwa perbuatan memproduksi atau menyebarluaskan pornografi tidak dipidana jika merupakan karya seni, budaya, olahraga, kesehatan, dan/atau ilmu pengetahuan.",
"passage: Pasal 188 ayat (6) menegaskan bahwa tidak dipidana orang yang melakukan kajian terhadap ajaran komunisme/marxisme-leninisme atau paham lain yang bertentangan dengan Pancasila untuk kepentingan ilmu pengetahuan.",
"passage: Pasal 434 ayat (2) menyebutkan bahwa pembuktian kebenaran tuduhan hanya dapat dilakukan jika: (a) hakim memandang perlu memeriksa kebenaran tuduhan untuk mempertimbangkan keterangan terdakwa bahwa perbuatannya demi kepentingan umum atau pembelaan diri, atau (b) pejabat dituduh melakukan suatu hal dalam menjalankan tugas jabatannya."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from intfloat/multilingual-e5-small. 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.
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'BertModel'})
(1): Pooling({'word_embedding_dimension': 384, '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})
(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("mzuama/newmodele5")
# Run inference
sentences = [
'query: Apa bedanya hasutan tidak beragama (pasal 302 ayat 1) dengan pemaksaan berpindah agama (pasal 302 ayat 2)?',
'passage: Pasal 302 membedakan dua perbuatan: ayat (1) mengatur hasutan di muka umum agar seseorang menjadi tidak beragama tanpa unsur kekerasan, diancam penjara paling lama 2 tahun; sedangkan ayat (2) mengatur pemaksaan berpindah agama atau menjadi tidak beragama yang disertai kekerasan atau ancaman kekerasan, diancam lebih berat yaitu penjara paling lama 4 tahun.',
'passage: Pasal 300 mengatur hasutan untuk melakukan permusuhan terhadap agama/kepercayaan di muka umum, dipidana penjara paling lama 3 tahun, berbeda dari Pasal 302 yang mengatur hasutan agar individu meninggalkan agamanya.',
]
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.6511, 0.4119],
# [0.6511, 1.0000, 0.6556],
# [0.4119, 0.6556, 1.0000]])
val and testTripletEvaluator| Metric | val | test |
|---|---|---|
| cosine_accuracy | 1.0 | 1.0 |
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
query: Seseorang membuat dan menjual video porno, pasal apa yang berlaku? |
passage: Pasal 407 ayat (1) berlaku dalam kasus ini karena mengatur bahwa setiap orang yang memproduksi, membuat, memperbanyak, menggandakan, atau memperjualbelikan Pornografi dipidana dengan pidana penjara paling singkat 6 bulan dan paling lama 10 tahun atau pidana denda paling sedikit kategori IV dan paling banyak kategori VI. |
passage: Pasal 482 ayat (1) mengatur tindak pidana pemerasan, yaitu setiap orang yang dengan maksud menguntungkan diri sendiri atau orang lain secara melawan hukum, memaksa orang dengan kekerasan atau ancaman kekerasan untuk memberikan suatu barang atau membuat pengakuan utang, dipidana dengan pidana penjara paling lama 9 tahun. |
query: Berapa hukuman bagi orang yang menyebarkan konten pornografi? |
passage: Pasal 407 ayat (1) menyebutkan bahwa pelaku yang menyebarluaskan atau menyiarkan pornografi diancam pidana penjara paling singkat 6 bulan dan paling lama 10 tahun, atau pidana denda paling sedikit kategori IV dan paling banyak kategori VI. |
passage: Pasal 288 ayat (2) mengatur bahwa setiap orang yang menyiarkan atau menyebarluaskan hasil pembicaraan atau perekaman informasi/dokumen elektronik yang tidak bersifat publik secara melawan hukum, dipidana dengan pidana penjara paling lama 10 tahun atau pidana denda paling banyak kategori M. |
query: Apa saja perbuatan yang termasuk tindak pidana pornografi menurut pasal 407? |
passage: Pasal 407 ayat (1) menyebutkan unsur-unsur perbuatan yang termasuk tindak pidana pornografi, yaitu: memproduksi, membuat, memperbanyak, menggandakan, menyebarluaskan, menyiarkan, mengimpor, mengekspor, menawarkan, memperjualbelikan, menyewakan, atau menyediakan Pornografi. |
passage: Pasal 301 ayat (1) mengatur bahwa setiap orang yang menyiarkan, mempertunjukkan, menempelkan tulisan atau gambar, atau memperdengarkan suatu rekaman berisi tindak pidana ujaran kebencian terhadap agama/kepercayaan dengan maksud agar diketahui umum, dipidana dengan pidana penjara paling lama 5 tahun atau pidana denda paling banyak kategori V. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
query: Apa yang dimaksud dengan tindak pidana pornografi menurut KUHP? |
passage: Pasal 407 mengatur bahwa setiap orang yang memproduksi, membuat, memperbanyak, menggandakan, menyebarluaskan, menyiarkan, mengimpor, mengekspor, menawarkan, memperjualbelikan, menyewakan, atau menyediakan Pornografi, dipidana dengan pidana penjara paling singkat 6 bulan dan paling lama 10 tahun atau pidana denda paling sedikit kategori IV dan paling banyak kategori VI. Perbuatan tersebut tidak dipidana jika merupakan karya seni, budaya, olahraga, kesehatan, dan/atau ilmu pengetahuan. |
passage: Pasal 242 mengatur bahwa setiap orang yang di muka umum menyatakan perasaan permusuhan, kebencian, atau penghinaan terhadap satu atau beberapa golongan atau kelompok penduduk Indonesia berdasarkan ras, kebangsaan, etnis, warna kulit, jenis kelamin, disabilitas mental, atau disabilitas fisik, dipidana dengan pidana penjara paling lama 3 tahun atau pidana denda paling banyak kategori IV. |
query: Apakah seseorang yang meneliti paham komunisme untuk kepentingan akademik bisa dipidana? |
passage: Pasal 188 ayat (6) menegaskan bahwa tidak dipidana orang yang melakukan kajian terhadap ajaran komunisme/marxisme-leninisme atau paham lain yang bertentangan dengan Pancasila untuk kepentingan ilmu pengetahuan. |
passage: Pasal 407 ayat (2) menyatakan bahwa perbuatan memproduksi atau menyebarluaskan pornografi tidak dipidana jika merupakan karya seni, budaya, olahraga, kesehatan, dan/atau ilmu pengetahuan. |
query: Apa bedanya penyadapan biasa dengan penyebaran hasil sadapan menurut pasal 288? |
passage: Pasal 288 membedakan dua perbuatan: ayat (1) mengatur penyadapan itu sendiri yaitu mendengarkan, merekam, atau mencatat transmisi informasi elektronik tidak publik secara melawan hukum, sedangkan ayat (2) mengatur penyebaran hasil sadapan tersebut. Keduanya diancam pidana penjara paling lama 10 tahun atau denda paling banyak kategori M. |
passage: Pasal 434 mengatur tindak pidana fitnah, yaitu jika seseorang yang melakukan pencemaran diberi kesempatan membuktikan kebenaran tuduhannya tetapi tidak dapat membuktikannya dan tuduhan bertentangan dengan yang diketahuinya, dipidana dengan pidana penjara paling lama 3 tahun atau pidana denda paling banyak kategori IV. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 2e-05num_train_epochs: 10warmup_ratio: 0.1warmup_steps: 0.1fp16: Truebatch_sampler: no_duplicatesdo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16gradient_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: 10max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_ratio: 0.1warmup_steps: 0.1log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Trueenable_jit_checkpoint: Falsesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseuse_cpu: Falseseed: 42data_seed: Nonebf16: Falsefp16: Truebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: -1ddp_backend: Nonedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonedisable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Nonegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Truepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_for_metrics: []eval_do_concat_batches: Trueauto_find_batch_size: Falsefull_determinism: Falseddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_num_input_tokens_seen: noneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Trueuse_cache: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | val_cosine_accuracy | test_cosine_accuracy |
|---|---|---|---|---|---|
| -1 | -1 | - | - | 0.9630 | - |
| 1.4286 | 10 | 2.2660 | 1.2204 | 0.9259 | - |
| 2.8571 | 20 | 1.2168 | 0.6739 | 0.9630 | - |
| 4.2857 | 30 | 0.5079 | 0.4612 | 0.9630 | - |
| 5.7143 | 40 | 0.3407 | 0.3541 | 1.0 | - |
| 7.1429 | 50 | 0.2258 | 0.3036 | 1.0 | - |
| 8.5714 | 60 | 0.1868 | 0.2836 | 1.0 | - |
| 10.0 | 70 | 0.1629 | 0.2788 | 1.0 | - |
| -1 | -1 | - | - | 1.0 | 1.0 |
@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
intfloat/multilingual-e5-small