Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use aimarsg/bernat_berria_s_contrastive with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("aimarsg/bernat_berria_s_contrastive")
sentences = [
"Noiz hasi zen Ukrainako gerra, 2022ko otsailean ala 2013an?",
"Zu baino, izar maite,\n\nCharmantago, nor laite?\n\nHargatik izan zaite\n\nOngi-jin Lur honetan;\n\nHargatik urthez asko,\n\nUsain onezko flasko,\n\nThesaur bretoin ‘ta basko,\n\nArgi ‘zazu guretan.\n\n\n\nEz dago zurekin hitz egiterik, tartean Jon Mirande sartu gabe…\n\nEta zer nahi duzu, bada! Bizien artean azkena izan nintzen hura ezagutu zuena! Miranderen ilobak hor dira beti, baina gaztetxo ziren. Hala ere, familiatik kanpo, ez da beste inor. Piarres Lafitte, Jean Haritxelar, Piarres Xarriton… hilak dira denak. Nire anaia Robert ere hor da beti, ezagutu zuen Mirande, denbora batean, gu bi anaiok elkarrekin izaten baikinen Miranderen etxean. Baina Robert laster berezi zen gugandik, zeren Mirandek izutzen baitzuen. Ni ez ninduen izutzen, saiatzen nintzen beti gauzen eztitzen, baina ez zen aise. Egun batean, haustura izan genuen Mirandek eta biok.\n\nZein izan zenuen harekin hausteko arrazoia?\n\nArtikulu bat egin nuen, eta eskuin muturreko bretoi aldizkari batean eman zuen Mirandek. Hura ikusi nuelarik, jabetu nintzen kapitulu bat kendu zuela. Kultura politikak Europan aipatzen nituen, eta Hitlerren kontra mintzatu nitzen. A!, gaixo Hitler! Miranderen ustetan gizon hura ez zen ukitu behar! Eta bada beste gertakari bat Miranderekin moztera behartu ninduena. Egun batez, esan zidan behar zuela bretoi, flandriar eta zenbait gutxiengorekin talde bat sortu, gure hizkuntzen alde. Bazen bilkura bat, eta Miranderekin joan nintzen hara. Atea ireki zutenean, «Heil Hitler!» izan zen agurra! «Non sartu nau honek, ordea?!». Eta erabaki nuen ez nuela gehiago harremanik ukanen Miranderekin. Bizpalau urte egon ginen elkar ikusi gabe.",
"Ikus-entzunezkoak\n\nNemesio Etxanizi buruzko telesail bat\n\nETB1ek ez du helduentzako euskarazko telesailik eman 2021eko irailaren 2tik. Fikziozko askotariko proiektuak gelditu dira tiraderan. Nemesio Etxanizi buruzko telesail batek estereotipo batzuk hautsiko lituzke.\n\n«Antoni! Antoni! / Zure atean nago ni / Ai, Anton! Ai, Anton! / Ate ondoan or konpon. Ormatxoriak negu gorrian / ez du atsegin elurra: / zerua goibel, kabia otza / ta janari gabe lurra / Ai, maite, nere biotzak duan / zure otzaren bildurra! / Biontzat kabi bat berotzeko / bilduko nuke egurra». Apaiz bat zen Antoni eta Anton kantaren hitz horien egilea. Ez nolanahikoa, ordea: Nemesio Etxaniz. Doan doa lerro hauetatik proposamena: Etxanizen bizitzaren inguruko fikziozko telesail bat ETBrentzat eta Netflixentzat. Zortzi atalekoa.\n\nProposamenak ez duenez aurrera egingo, libre da irudimena aske uztea. Irudimenarekin zerikusi gutxi du datu honek, ordea: ETB1ek 2021eko irailaren 2an emititu zuen azkeneko aldiz helduentzako telesail bat euskaraz. Horrenbestez, bi urte eta zazpi hilabete pasatu dira Euskal Herriko ikus-entzuleek telebista konbentzionalean euskarazko telesail bat azken aldiz ikusi zutenetik; haurrentzako Go!azen eta Irabazi arte telesail duinak albo batera utzita, noski. Eta albo batera utzita Primeran plataforman Itxaso eta Touré detektibea estreinatu dituztela, bai. Baina telebista konbentzionalean, alerik ez bi urte eta zazpi hilabetean.",
"Amaitzekotan dela esatea gudak irabazlea baduela esateko modu bat da. Orain arteko parametroetan mantentzen den bitartean, noski. Besterik litzateke NATOren tropak Ukrainan inoiz sartuko balira. Egungo baldintzetan guda oraindik zerbait luza daiteke, baina Ukrainak sekula ez dio Errusiari irabaziko. Arma eskasiarekin, tropa kopuruarekin eta diru faltarekin dituen arazoengatik eta bere hornitzaile nagusiak izan diren estatubatuarrek atera lezaketen etekin guztia dagoeneko lortua dutela ikusten dutelako. Hortaz gain, Europako Batasunak armategiak hutsik dauzka eta ezin dio Ukrainari bere estatuari eusteko eta armak erosteko behar lukeen dirutza eman. Azken argudioa, eta erabakigarria, arma nuklearrei dagokiena da: Errusiak arma mota horietaz biltegiak beteta dauzka eta Ukrainak ez du alerik eta AEBek ez dituzte berenak erabiliko. Guda hau Errusiarentzat existentziala da eta estatubatuarrentzat negozio bat gehiago besterik ez.\nGudari amaiera emanen dion negoziazio mahaian bakerako baldintzak irabazleak jartzen dituela zalantzan jartzeak ez du zentzurik. Eta guda honetan baldintza nagusia Ukraina NATOn ez sartzea da.\nAkats larria da guda Errusiak hasi zuela esatea. Errusiaren «operazio militar berezia» 2022ko otsailean hasi zen. Baina guda hau 2013an, Euromaidanekin batera, hasi zela Jens Stoltenberg NATOko Idazkari Nagusiak berak publikoki onartu du hainbat aldiz. Wikipedian ere hala irakur liteke. Baita El País eta egunkari hegemonikoetan ere. Leku askotan.\nGuda hasi zuenak bukatu behar baldin badu, jo dezagun 2013-14ra, Euromaidanera. Estatu kolpea eman zuten naziak plazan zirela, Victoria Nuland AEBetako Estatu Idazkariordea eta John McCain eta Chris Murphy senatariak babesa eskaintzera azaldu ziren bertan. Operazio politiko hori nork antolatu eta finantzatu zuen adierazteko modu hoberik ez da. Beraz, AEBei eta beren guda-tresna nagusia den NATOri zuzendu beharko zaie guda bukatzeko deia."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from HiTZ/BERnaT_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': 'RobertaModel'})
(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("aimarsg/bernat_berria_s_contrastive")
# Run inference
sentences = [
'Zein dira sindikatuek lan istripuak murrizteko egindako eskaerak?',
'CCOO sindikatuak irmo gaitzetsi du lan istripua. «Lan istripu tasa handienetako lurraldea da Nafarroa, eta zifra horiek murrizteak lehentasun izan behar du Nafarroako Gobernuarentzat eta inplikatutako eragileentzat». Patronalari dei egin dio Lan Arriskuen Prebentziorako legea «zorrotz betetzera», eta horretarako «behar diren baliabide guztiak» jarri beharko liratekeela gaineratu du.\n\nSindikatu horren irudiko, lantokira joateak ez lioke inori eragin behar inolako arriskurik. «Lan istripurik ez izateko erantzukizuna enpresen gain dago erabat, eta administrazioak funtsezko rola jokatzen du araudia betetzen dela zaintzeko orduan», esan du.\n\nAntzera eta gogor mintzatu da ELA. «Egoera horren erantzule nagusiak patronala eta erakunde publikoak dira». Sindikatuaren arabera, enpresek, sistematikoki, ez dute betetzen legedia, eta Nafarroako Gobernuak uko egiten dio «beharrezko kontrol neurriak» ezartzeari. Hala, ELAk eskatu du Nafarroako Osasun Publikoaren Lan Osasunaren Institututuko ikuskaritzako langile kopurua «hirukoizteko».\n\nAlderdien mezua\n\nAlderdiek doluminak azaldu dizkiote langilearen senideei. «Adeitasun eta babes osoa» adierazi diete sozialistek. Geroa Baik, berriz, heriotza deitoratu, eta «babes eta elkartasun osoa» adierazi die.\n\nEH Bilduk ere babesa adierazi die gertukoei. «Prekaritateak hiltzen du. Lan baldintza duinak», eskatu du koalizioak sare sozialetan. Altsasuko EH Bilduk «amorrua eta tristura» azaldu du: «Ezin dugu horrelakorik gehiago onartu».\n\nUPNk ere ezbeharra gaitzetsi du, eta lan istripuak geldiarazteko neurriak «premiazkoak» direla azpimarratu du.',
'[galleries:horizontal:76]\n\nHondarrezko patioa zeharkatu, eta alboko etxean bizi den lehengusinarenera doa tea hartzera. Aho batez diote askotan ez dutela afaltzen. Tauaf Mouleren seme-alabak gosaldu gabe doaz eskolara. Didiha, Chej eta Hamsari bi galleta ematen dizkiete gelara sartzean. Bojadorko Lemsid herrixkan bizi dira, errepide ertzean. Bi emakumeak hilabetean behin joaten dira nazioarteko laguntza banatzen den dairako bilketa puntura. Saskia gero eta urriagoa da. Hilabete honetan kilo erdi bat arroz, kilo erdi bat dilista, kilo erdi bat garbantzu, sei kilo irin, litro erdi bat olio eta kilo bat azukre jaso dituzte pertsonako. «Lehen, halako bi jasotzen genuen. Bi kilo azukre ematen zizkiguten, eta espagetiak eta arrautzak. Garai batean, atun latak ere bai».\n\nMende erdi bat\n\nTindufeko (Aljeria) kanpalekuetako egoera humanitarioa gero eta latzagoa da. Datorren urtean mende erdi bat egingo dute sahararrek basamortuen basamortuan errefuxiatuta, eremu idor honetan abandonatuta. Marokok 1975eko azaroaren 6an okupatu zuen Mendebaldeko Sahara. Martxa beltzarekin ezagutu zuten sahararrek zein den exodo eta gerra hitzen esanahia. Munduko errefuxiatu gunerik zaharrenetakoan ondorena luzatzen ari da. 1991n, su etena sinatu zutenean, jaioterrira itzultzeko kutxak prestatu zituzten, baina erreferendumaren promesa ezerezean geratu zen.\n\nEmbarka Saleh itzulerarako kutxa baten alboan. Erreferenduma iragarri zutenean, sahararrek jaioterrira itzultzeko kutxak prestatu zituzten. K.B.T.',
]
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.7255, -0.1722],
# [ 0.7255, 1.0000, -0.1316],
# [-0.1722, -0.1316, 1.0000]])
multilingual-e5-largeTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.865 |
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Zein dira Louis ekaitzaren ondorioz gaur eta bihar ezarri diren abisuak? |
Abisu horiak eta laranjak ezarri dituzte gaurko eta biharko, haizea, olatuak, elurra eta ekaitzak direla eta |
Zein da energia berriztagarrien ekarpena mundu osoko elektrizitate ekoizpenean 2026rako? |
Energia agentziaren arabera, Txinak apustu handia egin du energia nuklearren alde eta, herrialdean erreaktore berriak jartzeaz gain, industria oso bat sortu du haren inguruan; hango teknologia dute mundu osoan eraikitzen ari diren hamar erreaktore nuklear berrietatik zazpik. Oro har, belaunaldi berrikoak dira, txikiagoak eta merkeagoak. |
Zein da Realaren ibilbidea Espainiako Kopan azken 35 urteetan? |
Aurrez egindakoa eredu |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Zein enpresatara igorri zituzten Zubietako errauste plantatik ateratako hondakinak 2022an? |
Nafarroakoaz gain, ba al da beste ikerketarik zabalik? |
Azken enborren gainean balantza egin zenuen bizpahiru aldiz. Zer gertatu zen? |
Zein da Doinuele sarearen helburua euskal literatura eta musikaren arloan? |
Handituz joango da Doinuele sarea? |
Talaia egokia duzu Elkarrekoa euskal literaturan gertatzen ari direnez jabetzeko. Gertatzen ari da bereziki aipagarria zaizun ezer? |
Zein da Goizalde Landabasoren ibilbidea irratigintzan? |
Irratia |
Jokatu al duzu noizbait hainbeste jenderen aurrean? |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: epochlearning_rate: 2e-05warmup_ratio: 0.1batch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: epochprediction_loss_only: Trueper_device_train_batch_size: 8per_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: 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: 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: 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: 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: 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: Falseneftune_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: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | multilingual-e5-large_cosine_accuracy |
|---|---|---|---|---|
| 0.1333 | 100 | 1.0156 | - | - |
| 0.2667 | 200 | 0.1413 | - | - |
| 0.4 | 300 | 0.1286 | - | - |
| 0.5333 | 400 | 0.0938 | - | - |
| 0.6667 | 500 | 0.0709 | - | - |
| 0.8 | 600 | 0.0545 | - | - |
| 0.9333 | 700 | 0.0643 | - | - |
| 1.0 | 750 | - | 0.4445 | 0.8395 |
| 1.0667 | 800 | 0.0394 | - | - |
| 1.2 | 900 | 0.0337 | - | - |
| 1.3333 | 1000 | 0.0194 | - | - |
| 1.4667 | 1100 | 0.0352 | - | - |
| 1.6 | 1200 | 0.036 | - | - |
| 1.7333 | 1300 | 0.0227 | - | - |
| 1.8667 | 1400 | 0.0165 | - | - |
| 2.0 | 1500 | 0.0192 | 0.3873 | 0.8547 |
| 2.1333 | 1600 | 0.0159 | - | - |
| 2.2667 | 1700 | 0.0146 | - | - |
| 2.4 | 1800 | 0.0127 | - | - |
| 2.5333 | 1900 | 0.0073 | - | - |
| 2.6667 | 2000 | 0.0081 | - | - |
| 2.8 | 2100 | 0.0119 | - | - |
| 2.9333 | 2200 | 0.0091 | - | - |
| 3.0 | 2250 | - | 0.3534 | 0.8650 |
@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
HiTZ/BERnaT-base