SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'XLMRobertaModel'})
(1): Pooling({'word_embedding_dimension': 1024, '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()
)pip install -U sentence-transformers1from sentence_transformers import SentenceTransformer
2
3# Download from the 🤗 Hub
4model = SentenceTransformer("CaesArdi/Indo-Law-v2")
5# Run inference
6sentences = [
7 'query: Apa saja syarat agar perbuatan permusuhan terhadap golongan agama bisa dipidana?',
8 'passage: Syaratnya adalah perbuatan permusuhan tersebut dilakukan di muka umum dan ditujukan kepada agama, kepercayaan, atau golongan tertentu atas dasar keyakinan mereka di Indonesia. (Pasal 300 KUHP)',
9 'passage: Syaratnya adalah perbuatan permusuhan tersebut dilakukan di muka umum dan ditujukan kepada kelompok tertentu atas dasar ras, kebangsaan, etnis, warna kulit, atau jenis kelamin. (Pasal 242 KUHP)',
10]
11embeddings = model.encode(sentences)
12print(embeddings.shape)
13# [3, 1024]
14
15# Get the similarity scores for the embeddings
16similarities = model.similarity(embeddings, embeddings)
17print(similarities)
18# tensor([[1.0000, 0.7404, 0.4978],
19# [0.7404, 1.0000, 0.6977],
20# [0.4978, 0.6977, 1.0000]])val and testTripletEvaluator| Metric | val | test |
|---|---|---|
| cosine_accuracy | 0.9478 | 0.9143 |
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
query: Ada orang yang merekam percakapan rahasia lalu mengunggahnya ke YouTube, kena pasal berapa? | passage: Mengunggah hasil perekaman percakapan rahasia ke YouTube termasuk menyiarkan atau menyebarluaskan hasil perekaman transmisi informasi elektronik yang tidak publik, diancam penjara paling lama 10 tahun atau denda kategori M. (Pasal 288 ayat (2) KUHP) | passage: Mengunggah konten pornografi ke YouTube termasuk menyiarkan pornografi melalui media, diancam penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP) |
query: Apakah aparat kepolisian yang melakukan penyadapan sesuai prosedur hukum bisa dipidana? | passage: Tidak dipidana, karena ketentuan pidana penyadapan informasi elektronik tidak berlaku bagi orang yang melaksanakan ketentuan peraturan perundang-undangan atau melaksanakan perintah jabatan sesuai Pasal 31 dan Pasal 32. (Pasal 288 ayat (3) KUHP) | passage: Tidak dipidana, karena orang yang melakukan kajian terhadap ajaran komunisme/marxisme-leninisme untuk kepentingan ilmu pengetahuan juga mendapat pengecualian dari pidana. (Pasal 188 ayat (6) KUHP) |
query: Apa bedanya menyadap percakapan elektronik dengan menyebarkan konten porno lewat internet? | passage: Menyadap percakapan elektronik berfokus pada mengakses transmisi yang tidak bersifat publik secara ilegal, diancam penjara paling lama 10 tahun atau denda kategori M, sedangkan menyebarkan pornografi diancam penjara 6 bulan sampai 10 tahun. (Pasal 288 ayat (1) KUHP) | passage: Menyebarkan konten porno lewat internet adalah memproduksi, menyebarluaskan, atau menyediakan pornografi melalui media elektronik, diancam penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP) |
MultipleNegativesRankingLoss with these parameters:
1{
2 "scale": 20.0,
3 "similarity_fct": "cos_sim",
4 "gather_across_devices": false,
5 "directions": [
6 "query_to_doc"
7 ],
8 "partition_mode": "joint",
9 "hardness_mode": null,
10 "hardness_strength": 0.0
11}anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
query: Apa hukumannya kalau ada yang mencatat seluruh percakapan di grup chat yang bersifat rahasia? | passage: Mencatat transmisi informasi elektronik atau dokumen elektronik yang tidak bersifat publik secara melawan hukum dapat dipidana penjara paling lama 10 tahun atau denda paling banyak kategori M. (Pasal 288 ayat (1) KUHP) | passage: Merekam atau memperbanyak konten pornografi yang kemudian disebarluaskan melalui grup chat dapat dipidana penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP) |
query: Apa saja syarat supaya penyadapan komunikasi elektronik bisa dipidana? | passage: Syaratnya adalah perbuatan dilakukan secara melawan hukum, berupa mendengarkan, merekam, membelokkan, mengubah, menghambat, dan/atau mencatat transmisi informasi atau dokumen elektronik yang tidak bersifat publik. (Pasal 288 ayat (1) KUHP) | passage: Syaratnya adalah melakukan perbuatan memproduksi, memperbanyak, menyebarluaskan, menyiarkan, mengimpor, mengekspor, menawarkan, menjual, menyewakan, atau menyediakan konten pornografi. (Pasal 407 ayat (1) KUHP) |
query: Kalau cuma menawarkan konten porno tanpa menjualnya, apakah tetap bisa dipidana? | passage: Ya, menawarkan pornografi sudah cukup untuk dipidana dengan penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP) | passage: Ya, menghambat atau mencatat transmisi informasi elektronik yang tidak publik tanpa izin sudah cukup untuk dipidana penjara paling lama 10 tahun atau denda kategori M. (Pasal 288 ayat (1) KUHP) |
MultipleNegativesRankingLoss with these parameters:
1{
2 "scale": 20.0,
3 "similarity_fct": "cos_sim",
4 "gather_across_devices": false,
5 "directions": [
6 "query_to_doc"
7 ],
8 "partition_mode": "joint",
9 "hardness_mode": null,
10 "hardness_strength": 0.0
11}per_device_train_batch_size: 16num_train_epochs: 10learning_rate: 2e-05warmup_steps: 0.1fp16: Trueeval_strategy: stepsper_device_eval_batch_size: 16batch_sampler: no_duplicatesper_device_train_batch_size: 16num_train_epochs: 10max_steps: -1learning_rate: 2e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0.1optim: 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: 1.0label_smoothing_factor: 0.0bf16: Falsefp16: Truebf16_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: trackioeval_strategy: stepsper_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_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: 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.9304 | - |
| 0.4167 | 10 | 1.0580 | 0.4615 | 0.9304 | - |
| 0.8333 | 20 | 0.6129 | 0.2930 | 0.9478 | - |
| 1.25 | 30 | 0.4159 | 0.2436 | 0.9478 | - |
| 1.6667 | 40 | 0.2591 | 0.2074 | 0.9652 | - |
| 2.0833 | 50 | 0.2382 | 0.1992 | 0.9478 | - |
| 2.5 | 60 | 0.1013 | 0.2022 | 0.9565 | - |
| 2.9167 | 70 | 0.1238 | 0.2143 | 0.9478 | - |
| 3.3333 | 80 | 0.1051 | 0.2236 | 0.9565 | - |
| 3.75 | 90 | 0.0828 | 0.2214 | 0.9478 | - |
| 4.1667 | 100 | 0.0654 | 0.2213 | 0.9565 | - |
| 4.5833 | 110 | 0.0350 | 0.2294 | 0.9565 | - |
| 5.0 | 120 | 0.0548 | 0.2424 | 0.9565 | - |
| 5.4167 | 130 | 0.0754 | 0.2319 | 0.9565 | - |
| 5.8333 | 140 | 0.0437 | 0.2283 | 0.9478 | - |
| 6.25 | 150 | 0.0578 | 0.2381 | 0.9478 | - |
| 6.6667 | 160 | 0.0217 | 0.2441 | 0.9478 | - |
| 7.0833 | 170 | 0.0516 | 0.2446 | 0.9478 | - |
| 7.5 | 180 | 0.0230 | 0.2380 | 0.9478 | - |
| 7.9167 | 190 | 0.0151 | 0.2441 | 0.9478 | - |
| 8.3333 | 200 | 0.0265 | 0.2485 | 0.9478 | - |
| 8.75 | 210 | 0.0212 | 0.2509 | 0.9478 | - |
| 9.1667 | 220 | 0.0410 | 0.2492 | 0.9478 | - |
| 9.5833 | 230 | 0.0136 | 0.2476 | 0.9478 | - |
| 10.0 | 240 | 0.0104 | 0.2466 | 0.9478 | - |
| -1 | -1 | - | - | 0.9478 | 0.9143 |
1@inproceedings{reimers-2019-sentence-bert,
2 title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
3 author = "Reimers, Nils and Gurevych, Iryna",
4 booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
5 month = "11",
6 year = "2019",
7 publisher = "Association for Computational Linguistics",
8 url = "https://arxiv.org/abs/1908.10084",
9}1@misc{oord2019representationlearningcontrastivepredictive,
2 title={Representation Learning with Contrastive Predictive Coding},
3 author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
4 year={2019},
5 eprint={1807.03748},
6 archivePrefix={arXiv},
7 primaryClass={cs.LG},
8 url={https://arxiv.org/abs/1807.03748},
9}