Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use Pierrax/embeddinggemma-chess-arbiter-fr with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Pierrax/embeddinggemma-chess-arbiter-fr")
sentences = [
"Quelle est la règle concernant promotion ?",
"Des repêchages parmi les participantes de la phase ZID pourront être éventuellement opérés pour la phase finale. \n \nSont qualifiées directement pour la phase finale : \n• \nLa championne et la vice-championne de l’année précédente ; \n• \nLes premières de chacune des catégories de U8F à U20F de l’édition précédente ; \n• \nUne joueuse sélectionnée par le club organisateur ; \n• \nLes joueuses françaises titrées GM, MI, GMF ou MIF ; \n• \nLes deux premières classées dans chacune des catégories féminines du championnat de France Jeunes de la \nsaison en cours. Si elles sont déjà qualifiées, les places reviennent aux suivantes ; \n• \nUne joueuse par ZID choisie par la Ligue, sans obligation d’avoir participé aux phases de qualification. \n \n Le club organisateur peut proposer les candidatures supplémentaires de joueuses de son club et/ou de son comité \ndépartemental à la direction de la compétition pour disputer la finale. \n \n2. Organisation de la compétition \n2.1. Direction de la Compétition \nLa Commission Technique Fédérale nomme le directeur ou la directrice de la compétition. \nLa Direction de la compétition organise dans son ensemble la phase zone interdépartementale ainsi que la finale \n(constitution des groupes par zones géographiques, nomination des organisateurs, collecte et diffusion des résultats \net classements...) \nElle confirme les classements provisoires et établit le classement final qu’elle publie sur le site fédéral.",
"Le non-respect de cet article entraîne un forfait administratif sur l'échiquier concerné et tous ceux qui le suivent. \n3.8. Forfaits sportifs \nDéfinition : voir Règles générales 3.1. \nUne équipe ayant plus de trois membres forfaits (1 en Nationale 3) perd le match sur le score de 3-0 (10-0 de points \nde parties, 5-0 en Nationale 3). \nUne équipe n'ayant pas l'intention de se déplacer ou dans l'impossibilité d'aligner au moins 5 membres (3 en Nationale \n3), doit avertir le club adverse et la direction de son groupe, au moins l'avant-veille du jour fixé pour le match. Toute \néquipe ne se conformant pas à ces prescriptions et provoquant un déplacement inutile, sera tenue de rembourser \nintégralement les frais de déplacement et de séjour occasionnés. La base de calcul des frais de déplacement sera \nétablie par la direction du championnat. \nSauf événement exceptionnel dûment justifié reconnu par la direction du championnat, tout forfait d'une équipe sera \nsanctionné par les amendes suivantes : \n• \n300 € en Top Jeunes ; \n• \n100 € en Nationale 1 ; \n• \n50 € en Nationale 2. \nLe non-paiement des amendes dans le délai fixé entraîne l’exclusion du championnat la saison suivante. \nEn Nationale 1 ou 2, une équipe qui aura déclaré forfait pour trois rencontres pourra être exclue du Championnat de \nFrance Interclubs Jeunes la saison suivante.",
"4.7.3. Lors d’une promotion : lorsque la main du joueur ou de la joueuse a relâché la nouvelle pièce sur la case de \npromotion et que le pion a été retiré de l’échiquier. \n4.8. Un joueur ou une joueuse perd le droit de protester quant à la violation par son adversaire des Articles 4.1 à 4.7, \ndès l’instant où il/elle touche une pièce avec l'intention de la déplacer ou de la prendre. \n4.9. Si un joueur ou une joueuse est dans l'incapacité de déplacer les pièces, il/elle peut fournir un assistant ou une \nassistante, qui doit avoir l’agrément de l'arbitre, pour réaliser cette opération. \nLorsque l’arbitre observe une violation de l'article 4, son intervention est obligatoire, sans attendre que l’adversaire la \nréclame. \nNote de traduction : on considère en compétition que la violation n’est effective que lorsque le joueur ou la joueuse a \nachevé son coup, il n’est pas pertinent de l’interpeller oralement tant qu’il/elle n’a pas appuyé sur sa pendule."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from google/embeddinggemma-300m. It maps sentences & paragraphs to a 768-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': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
(1): Pooling({'word_embedding_dimension': 768, '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): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(4): 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("Pierrax/embeddinggemma-chess-arbiter-fr")
# Run inference
queries = [
"Quel est le contenu de l\u0027article 4.3.2.1 ?",
]
documents = [
"Règlement médical\nFEDERATION FRANÇAISE DES ECHECS\nASSOCIATION DECLAREE CONFORME A LA LOI DU 1er JUILLET 1901- JO du 22 mai 1921\n \n \nCD FFE – 19.08.2022\nB07 – 6/6\n \n \n \n4.3.3 AUT à effet rétroactif \nLes licencié(e)s ne répondant pas à la définition de joueurs de niveau international comme \ndéfini à l’article 4.3.2.1 peuvent, après un contrôle antidopage faire une demande d’AUT \nà effet rétroactif. La demande (ANNEXE) est à adresser dans les 30 jours au médecin fédéral qui \nest tenu au secret professionnel dans les conditions et sous les réserves énoncées aux articles \n226-13 et226-14du code pénal. \n \n5 Surveillance des joueurs et joueuses de niveau international \nConformément à l’article A. 231-3 du code du sport les joueurs et joueuses de niveau \ninternational comme défini à l’article 4.3.2 doivent se soumettre dans les deux mois suivant \nleurs sélections en équipe de France, puis/ou annuellement à : \n\uf0b7 Un examen médical réalisé par un médecin du sport comprenant : \no Un examen clinique avec interrogatoire et examen physique selon les recommandations \nde la Société française de médecine de l'exercice et du sport. \no Un bilan diététique et des conseils nutritionnels. \no Un bilan psychologique visant à dépister des difficultés psychopathologiques pouvant \nêtre liées à la pratique sportive intensive. \n\uf0b7 Un électrocardiogramme de repos. \n \nA la demande du médecin du sport et sous sa responsabilité, les bilans psychologique et \ndiététique peuvent être effectués respectivement par un psychologue clinicien ou un \ndiététicien. \nLes résultats des examens sont transmis au médecin fédéral. \nLa FFE prend en charge financièrement cette surveillance médicale.",
"4.2.2. Tout autre contact physique avec une pièce, à l’exception d’un contact clairement accidentel, doit être \nconsidéré comme intentionnel. \nSelon cette règle, si un joueur ou une joueuse n’a pas dit « j’adoube » ou quelque chose de similaire avant de toucher \nune pièce et que le contact n’est pas accidentel alors la pièce touchée doit être déplacée. \nPar exemple, si les Blancs ont joué 1. Fe2xg5 en soulevant le fou et en retirant le cavalier (ce coup n’est pas possible) \nalors le fou sur e2 doit être déplacé car il a été touché dans l'intention de le déplacer. \n \n4.3. En dehors du cadre précisé par l’Article 4.2 si le joueur ou la joueuse au trait touche sur l’échiquier, avec l’intention \nde déplacer ou de prendre : \n4.3.1. Une ou plusieurs de ses propres pièces, il/elle doit déplacer la première pièce touchée pouvant être \ndéplacée. \n4.3.2. Une ou plusieurs des pièces adverses, il/elle doit prendre la première pièce touchée pouvant être prise. \n4.3.3. Une ou plusieurs pièces de chaque couleur, il/elle doit prendre la première pièce adverse touchée avec sa \npremière pièce touchée ou, si c’est illégal, déplacer ou prendre la première pièce touchée pouvant être déplacée \nou prise. Si on ne peut pas déterminer si c’est une de ses pièces ou une des pièces adverses qui a été touchée en \npremier, alors on considère que c’est sa propre pièce qui a été touchée en premier, avant celle de son adversaire.",
'9.10.3 Obligations de confidentialité\nLes membres de la commission sont tenus à une obligation de confidentialité concernant les informations\ndont ils ont connaissance dans le cadre de leurs missions. Ils sont en outre tenus de s’abstenir de toute dé-\nclaration publique qui serait de nature à remettre en cause leur impartialité.\nRèglement Intérieur de la Fédération Française des Échecs\nPage 19/19',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 768] [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.8131, 0.5536, 0.0916]])
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Que dit l'article 1 ? |
FEDERATION FRANÇAISE DES ECHECS ASSOCIATION DECLAREE CONFORME A LA LOI DU 1ER JUILLET 1901 – JO DU 22 MAI 1921 |
Partie 1:LA D.N.A. et les arbitres |
Quel est le contenu de l'article 1 ? |
FEDERATION FRANÇAISE DES ECHECS ASSOCIATION DECLAREE CONFORME A LA LOI DU 1ER JUILLET 1901 – JO DU 22 MAI 1921 |
Partie 1:LA D.N.A. et les arbitres |
Que dit l'article 9 ? |
Ces organes sont les suivants : |
Elle n’a pas le droit de retirer sa réclamation. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
per_device_train_batch_size: 2gradient_accumulation_steps: 8learning_rate: 2e-05warmup_ratio: 0.1dataloader_drop_last: Truedataloader_num_workers: 2overwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 2per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 8eval_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: 3max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_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: 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: Truedataloader_num_workers: 2dataloader_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: 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: 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: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss |
|---|---|---|
| 0.7435 | 50 | 1.0852 |
| 1.4758 | 100 | 0.455 |
| 2.2082 | 150 | 0.3961 |
| 2.9517 | 200 | 0.2978 |
@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
google/embeddinggemma-300m