Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use S13v3n-2/scoring-camembert-v5 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("S13v3n-2/scoring-camembert-v5")
sentences = [
"Avoir un esprit pratique et une curiosité pour les objets techniques",
"Rédiger des actes juridiques et documents légaux professionnels",
"Maîtriser la suite Adobe (Photoshop, Illustrator, InDesign)",
"Conduire une analyse concurrentielle et benchmark de marché"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from almanach/camembert-base. 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': 512, 'do_lower_case': False, 'architecture': 'CamembertModel'})
(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})
)
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("S13v3n-2/scoring-camembert-v5")
# Run inference
sentences = [
"Déployer des modèles d'IA en production avec MLOps",
'Conduire des études de marché qualitatives et quantitatives',
"Déployer des modèles d'IA en production avec MLOps",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.0748, 1.0000],
# [0.0748, 1.0000, 0.0748],
# [1.0000, 0.0748, 1.0000]])
eval-referentielEmbeddingSimilarityEvaluator| Metric | Value |
|---|---|
| pearson_cosine | 0.9834 |
| spearman_cosine | 0.8957 |
sentence1, sentence2, and score| sentence1 | sentence2 | score | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence1 | sentence2 | score |
|---|---|---|
Être curieux et pratiquer une veille active dans son domaine |
Élaborer une stratégie de communication corporate cohérente |
0.4 |
Posséder un esprit pratique et aimer les travaux manuels techniques |
Analyser et interpréter des contrats et textes juridiques complexes |
0.1 |
Programmer en Python ou R pour l'analyse de données |
Effectuer une veille digitale et identifier les tendances émergentes |
0.1 |
CosineSimilarityLoss with these parameters:{
"loss_fct": "torch.nn.modules.loss.MSELoss"
}
sentence1, sentence2, and score| sentence1 | sentence2 | score | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence1 | sentence2 | score |
|---|---|---|
S'intéresser aux arts visuels, au design et à l'esthétique |
Programmer en Python, Java ou JavaScript avec bonnes pratiques |
0.4 |
Conduire des études de marché qualitatives et quantitatives |
Élaborer et suivre les budgets prévisionnels et contrôler les écarts |
0.1 |
Faire preuve de rigueur et de précision dans son travail |
Conduire des études de marché qualitatives et quantitatives |
0.4 |
CosineSimilarityLoss with these parameters:{
"loss_fct": "torch.nn.modules.loss.MSELoss"
}
eval_strategy: stepsper_device_train_batch_size: 64per_device_eval_batch_size: 64num_train_epochs: 5warmup_ratio: 0.1fp16: Trueload_best_model_at_end: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 64per_device_eval_batch_size: 64per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_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: 5max_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: Truefp16_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}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 | Validation Loss | eval-referentiel_spearman_cosine |
|---|---|---|---|---|
| 0.2817 | 20 | 0.1849 | - | - |
| 0.5634 | 40 | 0.0464 | - | - |
| 0.7042 | 50 | - | 0.0242 | 0.7628 |
| 0.8451 | 60 | 0.0285 | - | - |
| 1.1268 | 80 | 0.0156 | - | - |
| 1.4085 | 100 | 0.0092 | 0.0067 | 0.8870 |
| 1.6901 | 120 | 0.0064 | - | - |
| 1.9718 | 140 | 0.0049 | - | - |
| 2.1127 | 150 | - | 0.0030 | 0.8930 |
| 2.2535 | 160 | 0.0031 | - | - |
| 2.5352 | 180 | 0.0027 | - | - |
| 2.8169 | 200 | 0.0039 | 0.0026 | 0.8957 |
| 3.0986 | 220 | 0.0054 | - | - |
| 3.3803 | 240 | 0.0039 | - | - |
| 3.5211 | 250 | - | 0.0023 | 0.8956 |
| 3.6620 | 260 | 0.0018 | - | - |
| 3.9437 | 280 | 0.0027 | - | - |
| 4.2254 | 300 | 0.002 | 0.0020 | 0.8957 |
| 4.5070 | 320 | 0.0027 | - | - |
| 4.7887 | 340 | 0.0023 | - | - |
| 4.9296 | 350 | - | 0.0019 | 0.8957 |
@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",
}
Base model
almanach/camembert-base