SLawEmbed / README.md
Padajno's picture
Update README.md
b93aab1 verified
metadata
tags:
  - sentence-transformers
  - sentence-similarity
  - feature-extraction
  - dense
  - generated_from_trainer
  - dataset_size:1174
  - loss:MatryoshkaLoss
  - loss:MultipleNegativesRankingLoss
widget:
  - source_sentence: >-
      Sodišče sme na prošnjo obsojenca odločiti, da se obsodba izbriše iz
      kazenske evidence in da obsojenec velja za neobsojenega, če je potekla
      polovica z zakonom določenega roka, po poteku katerega se obsodba izbriše,
      če obsojenec v tem času ni storil novega kaznivega dejanja. Pri odločanju
      o izbrisu upošteva sodišče vedenje obsojenca po prestani kazni, naravo
      kaznivega dejanja in druge okoliščine, pomembne za izbris obsodbe.
    sentences:
      - >-
        Če dan izročitve stvari kupcu ni določen, mora prodajalec izročiti stvar
        v roku 15 dni po sklenitvi pogodbe, glede na naravo stvari in na druge
        okoliščine.
      - >-
        Upravljalci, ki so subjekti javnega sektorja, za namene raziskovanja
        posredujejo osebne podatke po tarifi, določeni za raziskovalne
        storitve. 
      - >-
        Sodišče po uradni dolžnosti izbriše obsodbo iz kazenske evidence, če
        storilec že dalj časa ni izvršil kaznivega dejanja, pri tem pa prav tako
        upošteva vedenje obsojenca po prestani kazni, naravo kaznivega dejanja
        in druge okoliščine, pomembne za izbris obsodbe.
  - source_sentence: >-
      V okviru trženja ali podobne druge poslovne dejavnosti se ne smejo
      zahtevati,

      pridobiti ali nadalje obdelovati biometrični osebni podatki v zamenjavo za
      določene storitve,

      četudi so te storitve za posameznika, na katerega se nanašajo osebni
      podatki, brezplačne.
    sentences:
      - >
        Upravljavec videonadzora ni dolžan obvestiti policije, če posnetek
        pokaže nevaren dogodek.
      - >-
        Za obdelave osebnih podatkov na področju varnosti države pristojni organ
        s področja varnosti države pripravi oceno učinka s smiselno uporabo
        določb tega člena. Ocena učinka je za potrebe nadzorov javno dostopna.
      - >-
        Osebe zasebnega prava lahko zahtevajo, pridobivajo ali nadalje
        obdelujejo biometrične osebne v zameno za določene storitve in blago,
        pod pogojem, da se storitve izvajajo za posameznika brezplačno.
  - source_sentence: (3) Prepoved odtujitve ali obremenitve se lahko časovno omeji.
    sentences:
      - |-
        Z ustanovitvijo hipoteke na stavbni pravici upnik hkrati 
        pridobi tudi zastavno pravico na terjatvi imetnika stavbnih
        pravic za plačilo nadomestila.
      - >-
        V postopkih pred nadzornim organom ni dopustna stranska udeležba, kot jo
        določa zakon, ki ureja splošni civilni postopek.
      - 'Prepoved odtujitve mora biti časovno omejena. '
  - source_sentence: >-
      (1) Več oseb ima solastninsko pravico na nerazdeljeni stvari (solastniki),
      če je delež vsakega izmed njih določen v sorazmerju s celoto (idealni
      delež).
    sentences:
      - >-
        Javni shodi so brezpogojno dovoljeni in vsakršna njihova prepoved ali
        preprečitev se kaznuje.
      - >-
        Posnetki videonadzora morajo se hranijo trajno, če kapacitete hranilnika
        tega ne dopuščajo, pa se hranijo eno leto in se po tem izbrišejo. 
      - >-
        Več oseb ima solastninsko pravico na nerazdeljeni stvari (solastniki),
        vendar le če je delež vsakega izmed njih nedoločen vse do delitve. 
  - source_sentence: >-
      (1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).

      (2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek
      koga drugega, ki

      ima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).
    sentences:
      - >-
        V postopkih pred nadzornim organom ni dopustna stranska udeležba, kot jo
        določa zakon, ki ureja splošni civilni postopek.
      - Posameznik lahko isto stvar istočasno poseduje neposredno in posredno.
      - >-
        Sodišče nikoli ne more odločati o poslu, ki presega redno upravljanje,
        brez soglasja vseh solastnikov.
pipeline_tag: sentence-similarity
library_name: sentence-transformers
metrics:
  - pearson_cosine
  - spearman_cosine
model-index:
  - name: SentenceTransformer
    results:
      - task:
          type: semantic-similarity
          name: Semantic Similarity
        dataset:
          name: validation dev
          type: validation-dev
        metrics:
          - type: pearson_cosine
            value: 0.07191992786363605
            name: Pearson Cosine
          - type: spearman_cosine
            value: 0.019280573682247046
            name: Spearman Cosine

SentenceTransformer

This is a sentence-transformers model trained. 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.

Model Details

This model has been specifically finetuned for contradiction retrieval! It is therefore not suitable for regular similarity-based retrieval!

Model Description

  • Model Type: Sentence Transformer
  • Maximum Sequence Length: 8192 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'ModernBertModel'})
  (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})
)

Usage

Direct Usage (Sentence Transformers)

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 = [
    '(1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).\n(2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek koga drugega, ki\nima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).',
    'Posameznik lahko isto stvar istočasno poseduje neposredno in posredno.',
    'Sodišče nikoli ne more odločati o poslu, ki presega redno upravljanje, brez soglasja vseh solastnikov.',
]
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.5774, 0.4022],
#         [0.5774, 1.0000, 0.2455],
#         [0.4022, 0.2455, 1.0000]])

Evaluation

Metrics

Semantic Similarity

Metric Value
pearson_cosine 0.0719
spearman_cosine 0.0193

Training Details

Training Dataset

Unnamed Dataset

  • Size: 1,174 training samples
  • Columns: anchor, positive, and label
  • Approximate statistics based on the first 1000 samples:
    anchor positive label
    type string string float
    details
    • min: 2 tokens
    • mean: 152.19 tokens
    • max: 1336 tokens
    • min: 13 tokens
    • mean: 63.45 tokens
    • max: 304 tokens
    • min: 1.0
    • mean: 1.0
    • max: 1.0
  • Samples:
    anchor positive label
    (1) Vsaka stranka v dvostranski pogodbi lahko prenese pogodbo nekomu tretjemu,
    ki postane s tem imetnik vseh njenih pravic in obveznosti iz te pogodbe, če v to privoli druga stranka.
    (2) S prenosom pogodbe preide pogodbeno razmerje med prenositeljem in drugo
    stranko na prevzemnika in drugo stranko takrat, ko druga stranka privoli v prenos; če je dala svojo privolitev vnaprej, pa takrat, ko je o prenosu obveščena.
    (3) Privolitev v prenos pogodbe je veljavna samo, če je dana v obliki, ki jo predpisuje
    zakon za sklenitev prenesene pogodbe.
    (4) Določbe o stranskih pravicah v zvezi s pogodbo o prevzemu dolga se smiselno
    uporabljajo tudi za prenos pogodbe.
    S prenosom pogodbe preide pogodbeno razmerje, pri čemer
    prenositelj jamči, da bo druga stranka izpolnila svoje obveznosti.
    1.0
    (1) Vsaka stranka v dvostranski pogodbi lahko prenese pogodbo nekomu tretjemu,
    ki postane s tem imetnik vseh njenih pravic in obveznosti iz te pogodbe, če v to privoli druga stranka.
    (2) S prenosom pogodbe preide pogodbeno razmerje med prenositeljem in drugo
    stranko na prevzemnika in drugo stranko takrat, ko druga stranka privoli v prenos; če je dala svojo privolitev vnaprej, pa takrat, ko je o prenosu obveščena.
    (3) Privolitev v prenos pogodbe je veljavna samo, če je dana v obliki, ki jo predpisuje
    zakon za sklenitev prenesene pogodbe.
    (4) Določbe o stranskih pravicah v zvezi s pogodbo o prevzemu dolga se smiselno
    uporabljajo tudi za prenos pogodbe.
    S prenosom pogodbe preide pogodbeno razmerje, pri čemer
    prenositelj jamči, da bo druga stranka izpolnila svoje obveznosti.
    1.0
    (1) Za škodo, ki jo povzroči delavec pri delu ali v zvezi z delom tretji osebi, odgovarja pravna ali fizična oseba, pri kateri je delavec delal takrat, ko je bila škoda povzročena, razen če dokaže, da je delavec v danih okoliščinah ravnal tako, kot je bilo treba.
    (2) Oškodovanec ima pravico zahtevati povrnitev škode tudi neposredno od delavca, če je ta škodo povzročil namenoma.
    (3) Kdor je oškodovancu povrnil škodo, ki jo je povzročil delavec namenoma ali iz hude malomarnosti, ima pravico zahtevati od delavca povrnitev plačanega zneska.
    (4) Ta pravica zastara v šestih mesecih od dneva, ko je bila odškodnina plačana.
    (5) Določba prvega odstavka tega člena ne posega v pravila o odgovornosti za škodo, ki izvira od nevarne stvari ali nevarne dejavnosti.
    Oškodovanec lahko vedno zahteva odškonino tako od delodajalca kot od delavca, njuna odgovornost je solidarna. 1.0
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "matryoshka_dims": [
            768
        ],
        "matryoshka_weights": [
            1
        ],
        "n_dims_per_step": -1
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 62 evaluation samples
  • Columns: anchor, positive, and label
  • Approximate statistics based on the first 62 samples:
    anchor positive label
    type string string float
    details
    • min: 2 tokens
    • mean: 105.61 tokens
    • max: 313 tokens
    • min: 22 tokens
    • mean: 63.13 tokens
    • max: 187 tokens
    • min: 1.0
    • mean: 1.0
    • max: 1.0
  • Samples:
    anchor positive label
    (1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).
    (2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek koga drugega, ki
    ima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).
    Posameznik lahko isto stvar istočasno poseduje neposredno in posredno. 1.0
    (1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).
    (2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek koga drugega, ki
    ima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).
    Posameznik lahko isto stvar istočasno poseduje neposredno in posredno. 1.0
    Upravljavec videonadzornega sistema, ki izvaja videonadzor javnih površin, mora v primeru, ko videonadzorni sistem posname dogodek, ki ogroža zdravje ali življenje posameznika, o tem nemudoma obvestiti policijo ali drug pristojni subjekt. Upravljavec videonadzora ni dolžan obvestiti policije, če posnetek pokaže nevaren dogodek.
    1.0
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "matryoshka_dims": [
            768
        ],
        "matryoshka_weights": [
            1
        ],
        "n_dims_per_step": -1
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 16
  • warmup_ratio: 0.1
  • bf16: True
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 16
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 5e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 3
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • use_cpu: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • bf16: True
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: no
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: True
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss Validation Loss validation-dev_spearman_cosine
0.3378 25 - 0.3447 0.0390
0.6757 50 - 0.2570 -0.0466
1.0135 75 - 0.2282 -0.0269
1.3514 100 0.3073 0.1797 0.0677
1.6892 125 - 0.2085 0.0184
2.0270 150 - 0.1725 0.0479
2.3649 175 - 0.1636 0.0183
2.7027 200 0.0371 0.1707 0.0193

Framework Versions

  • Python: 3.10.12
  • Sentence Transformers: 5.1.2
  • Transformers: 4.57.0.dev0
  • PyTorch: 2.9.0+cu128
  • Accelerate: 1.10.1
  • Datasets: 4.1.1
  • Tokenizers: 0.22.1

Citation

BibTeX

Sentence Transformers

@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",
}

MatryoshkaLoss

@misc{kusupati2024matryoshka,
    title={Matryoshka Representation Learning},
    author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
    year={2024},
    eprint={2205.13147},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

MultipleNegativesRankingLoss

@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}
}