Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use vkimbris/e5-small-ru-laws-qa with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("vkimbris/e5-small-ru-laws-qa")
sentences = [
"Как внедрить в информационную систему новые правила предоставления тарифных льгот в соответствии с ратифицированным протоколом от 12 декабря 2008 года?",
" \nРОССИЙСКАЯ ФЕДЕРАЦИЯ\n \nФЕДЕРАЛЬНЫЙ ЗАКОН\n \nО ратификации Протокола о предоставлении тарифных льгот\n \nПринят Государственной Думой 20 ноября 2009 года\nОдобрен Советом Федерации 25 ноября 2009 года\n \nРатифицировать Протокол о предоставлении тарифных льгот, подписанный в городе Москве 12 декабря 2008 года.\n \nПрезидент Российской Федерации Д.Медведев\n \nМосква, Кремль\n28 ноября 2009 года\n№ 302-ФЗ\n ",
" \nРОССИЙСКАЯ ФЕДЕРАЦИЯ\n \nФЕДЕРАЛЬНЫЙ ЗАКОН\n \nО внесении изменения в статью 22 Федерального закона \"О государственной гражданской службе Российской Федерации\"\n \nПринят Государственной Думой 29 января 2010 года\nОдобрен Советом Федерации 3 февраля 2010 года\n \nВнести в часть 3 статьи 22 Федерального закона <ref nd=\"102088054\"> от 27 июля 2004 года № 79-ФЗ </ref> \"О государственной гражданской службе Российской Федерации\" (Собрание законодательства Российской Федерации, 2004, № 31, ст. 3215) изменение, заменив слова \"указом Президента Российской Федерации\" словами \"нормативным актом государственного органа\".\n \nПрезидент Российской Федерации Д.Медведев\n \nМосква, Кремль\n14 февраля 2010 года\n№ 9-ФЗ\n ",
" \nРОССИЙСКАЯ ФЕДЕРАЦИЯ\n \nФЕДЕРАЛЬНЫЙ ЗАКОН\n \nО ратификации Соглашения об определении таможенной стоимости товаров, перемещаемых через таможенную границу таможенного союза\n \nПринят Государственной Думой 10 декабря 2008 года\nОдобрен Советом Федерации 17 декабря 2008 года\n \nРатифицировать Соглашение об определении таможенной стоимости товаров, перемещаемых через таможенную границу таможенного союза, подписанное в городе Москве 25 января 2008 года.\n \nПрезидент Российской Федерации Д.Медведев\n \nМосква, Кремль\n22 декабря 2008 года\n№ 258-ФЗ\n "
]
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}) with Transformer model: 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("vkimbris/e5-small-ru-laws-qa")
# Run inference
sentences = [
'Какие основные этапы рассмотрения и принятия прошел Договор о дружбе между РФ и Украиной перед его ратификацией в 1999 году?',
' \nРОССИЙСКАЯ ФЕДЕРАЦИЯ\n \nФЕДЕРАЛЬНЫЙ ЗАКОН\n \nО ратификации Договора о дружбе, сотрудничестве и партнерстве между Российской Федерацией и Украиной\n \nПринят Государственной Думой 25 декабря 1998 года\nОдобрен Советом Федерации 17 февраля 1999 года\n \nРатифицировать Договор о дружбе, сотрудничестве и партнерстве между Российской Федерацией и Украиной, подписанный в городе Киеве 31 мая 1997 года.\n \nПрезидент Российской Федерации Б.Ельцин\n \nМосква, Кремль\n2 марта 1999 года\n№ 42-ФЗ\n ',
' \nРОССИЙСКАЯ ФЕДЕРАЦИЯ\n \nФЕДЕРАЛЬНЫЙ ЗАКОН\n \nО ратификации Договора о дружбе и сотрудничестве между Российской Федерацией и Республикой Молдова\n \nПринят Государственной Думой 5 апреля 2002 года\nОдобрен Советом Федерации 23 апреля 2002 года\n \nРатифицировать Договор о дружбе и сотрудничестве между Российской Федерацией и Республикой Молдова, подписанный в городе Москве 19 ноября 2001 года.\n \nПрезидент Российской Федерации В.Путин\n \nМосква, Кремль\n29 апреля 2002 года\n№ 43-ФЗ\n ',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# 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 |
|---|---|---|
Как я могу определить, какие финансовые операции бывшего СССР с Непалом подлежат урегулированию согласно данному Соглашению? |
|
|
Какие изменения планируется внести в систему взаимодействия государств-членов ШОС в рамках Региональной антитеррористической структуры после ратификации данного Протокола? |
|
|
Какие изменения в организационной структуре и распределении полномочий необходимо внести в информационную систему Министерства сельского хозяйства РФ после освобождения Волкова А.В. от должности? |
|
|
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Какие процедуры взаимодействия мне необходимо учесть при проектировании информационной системы для обработки правовых запросов между воинскими формированиями РФ и органами Киргизской Республики? |
|
|
Как определить потребности в материально-техническом оснащении для русскоязычных общеобразовательных учреждений в перечисленных городах Таджикистана? |
|
|
Какие объекты и элементы системы необходимо учесть при анализе процесса использования 929 Государственного летно-испытательного центра на территории Республики Казахстан? |
|
|
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
overwrite_output_dir: Trueeval_strategy: epochper_device_train_batch_size: 256learning_rate: 0.0002warmup_steps: 20seed: 21load_best_model_at_end: Trueoverwrite_output_dir: Truedo_predict: Falseeval_strategy: epochprediction_loss_only: Trueper_device_train_batch_size: 256per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 0.0002weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 3max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.0warmup_steps: 20log_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: 21data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Falsefp16: 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: Trueignore_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: Nonehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_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: 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: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Validation Loss |
|---|---|---|
| 1.0 | 10 | 0.2208 |
| 2.0 | 20 | 0.1234 |
| 3.0 | 30 | 0.1267 |
@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