Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use check2207/alqac_VNTeamVN_embedding with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("check2207/alqac_VNTeamVN_embedding")
sentences = [
"Cho phép truyền bá tôn giáo và thực hiện các nghi lễ tôn giáo trong cơ sở giáo dục của hệ thống giáo dục quốc dân và tổ chức chính trị, đúng hay sai?",
"Luật Luật Tố tụng hành chính - 138 : 3. Sau khi các đương sự trình bày xong, Thẩm phán xem xét các ý kiến, giải quyết các đề nghị của đương sự quy định tại khoản 2 Điều này; trường hợp đương sự vắng mặt thì Tòa án thông báo kết quả phiên họp cho họ.",
"Luật Luật Giáo dục - 20 : Không truyền bá tôn giáo trong cơ sở giáo dục\n\nKhông truyền bá tôn giáo, tiến hành các lễ nghi tôn giáo trong cơ sở giáo dục của hệ thống giáo dục quốc dân, cơ quan nhà nước, tổ chức chính trị, tổ chức chính trị - xã hội và lực lượng vũ trang nhân dân.",
"Luật Luật Giáo dục - 44 : 4. Cơ sở giáo dục phổ thông, cơ sở giáo dục nghề nghiệp, cơ sở giáo dục đại học khi thực hiện các chương trình giáo dục thường xuyên phải bảo đảm nhiệm vụ giáo dục, đào tạo của mình, chỉ thực hiện chương trình quy định tại điểm d khoản 1 Điều 43 của Luật này khi được cơ quan quản lý nhà nước về giáo dục có thẩm quyền cho phép."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from AITeamVN/Vietnamese_Embedding. It maps sentences & paragraphs to a 1024-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: 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()
)
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 = [
'Thẩm phán có nhiệm vụ xem xét về tính hợp pháp của văn bản hành chính, hành vi hành chính có liên quan đến quyết định hành chính, hành vi hành chính bị kiện và đề nghị Chánh án Tòa án kiến nghị với cơ quan, cá nhân có thẩm quyền xem xét văn bản hành chính, hành vi hành chính đó theo quy định của pháp luật đúng hay sai?',
'Luật Luật Tố tụng hành chính - 38 : 8. Quyết định đưa vụ án hành chính ra xét xử;',
'Luật Luật Tố tụng hành chính - 113 : Trách nhiệm giải quyết đề nghị về việc kiến nghị sửa đổi, bổ sung hoặc bãi bỏ văn bản quy phạm pháp luật\n\nTrong thời hạn 10 ngày kể từ ngày nhận được văn bản đề nghị quy định tại Điều 111 của Luật này thì Chánh án Tòa án có thẩm quyền kiến nghị phải xem xét và xử lý như sau:',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Người nghiện ma túy từ đủ 18 tuổi trở lên bị áp dụng biện pháp xử lý hành chính đưa vào cơ sở cai nghiện bắt buộc theo quy định của Luật Xử lý vi phạm hành chính khi bị phát hiện sử dụng chất ma túy một cách trái phép trong thời gian cai nghiện ma túy tự nguyện, đúng hay sai? |
Luật Luật Phòng, chống ma túy - 32 : Đối tượng bị áp dụng biện pháp xử lý hành chính đưa vào cơ sở cai nghiện bắt buộc |
Luật Luật Phòng, chống ma túy - 22 : 1. Xét nghiệm chất ma túy trong cơ thể được thực hiện đối với người thuộc trường hợp sau đây: |
Quan hệ hôn nhân và gia đình có yếu tố nước ngoài là quan hệ hôn nhân và gia đình mà ít nhất một bên tham gia là người nước ngoài, người Việt Nam định cư ở nước ngoài, đúng hay sai? |
Luật Luật Hôn nhân và gia đình - 3 : 12. Yêu sách của cải trong kết hôn là việc đòi hỏi về vật chất một cách quá đáng và coi đó là điều kiện để kết hôn nhằm cản trở việc kết hôn tự nguyện của nam, nữ. |
Luật Luật Hôn nhân và gia đình - 123 : Thẩm quyền giải quyết các vụ việc hôn nhân và gia đình có yếu tố nước ngoài |
Trường hợp thông tin trong Sổ hộ khẩu còn hiệu lực có thông tin khác với thông tin trong Cơ sở dữ liệu về cư trú thì sử dụng thông tin trong Cơ sở dữ liệu về cư trú, đúng hay sai? |
Luật Luật Cư trú - 38 : 3. Kể từ ngày Luật này có hiệu lực thi hành, Sổ hộ khẩu, Sổ tạm trú đã được cấp vẫn được sử dụng và có giá trị như giấy tờ, tài liệu xác nhận về cư trú theo quy định của Luật này cho đến hết ngày 31 tháng 12 năm 2022. |
Luật Luật Cư trú - 8 : 3. Được khai thác thông tin về cư trú của mình trong Cơ sở dữ liệu quốc gia về dân cư; được cơ quan đăng ký cư trú trong cả nước không phụ thuộc vào nơi cư trú của mình xác nhận thông tin về cư trú khi có yêu cầu. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
per_device_train_batch_size: 16gradient_accumulation_steps: 4num_train_epochs: 10warmup_steps: 100bf16: Truegradient_checkpointing: Truegradient_checkpointing_kwargs: {'use_reentrant': False}overwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 4eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-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.0warmup_steps: 100log_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: Falsebf16: Truefp16: 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}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_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: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Truegradient_checkpointing_kwargs: {'use_reentrant': False}include_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: 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: Trueprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss |
|---|---|---|
| 4.1739 | 50 | 0.5589 |
| 8.3478 | 100 | 0.0883 |
@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}
}