--- inference: false pipeline_tag: sentence-similarity language: - bg license: mit datasets: - oscar - chitanka - wikipedia tags: - torch --- # ROBERTA BASE (cased) trained on private Bulgarian-English parallel data This is a Multilingual Roberta model. It could be used for creating embeddings of Bulgarian sentences. Using the ideas from [Sentence-BERT](https://arxiv.org/abs/2004.09813), the training is based on the idea that a translated sentence should be mapped to the same location in the vector space as the original sentence. This model is cased: it does make a difference between bulgarian and Bulgarian. It was trained on private Bulgarian-English parallel data. Then, it was compressed via [progressive module replacing](https://arxiv.org/abs/2002.02925). ### How to use Here is how to use this model in PyTorch: ```python >>> import scipy >>> import torch >>> from transformers import AutoModel, AutoTokenizer >>> >>> model = AutoModel.from_pretrained('rmihaylov/roberta-base-nli-stsb-theseus-bg') >>> tokenizer = AutoTokenizer.from_pretrained('rmihaylov/roberta-base-nli-stsb-theseus-bg') >>> >>> def embed(text): >>> inputs = tokenizer.encode_plus(text, return_tensors='pt') >>> outputs = model(**inputs) >>> sequence_output = outputs[0] >>> input_mask_expanded = inputs['attention_mask'].unsqueeze(-1).expand(sequence_output.size()).float() >>> embeddings = torch.sum(sequence_output * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9) >>> return embeddings.detach().numpy()[0] >>> >>> >>> query_embedding = embed("Какви са съставките на бисквитките?") >>> >>> questions = [ >>> "Какво е бисквитка?", >>> "От какво са направени бисквитките?", >>> "Използват ли в Англия думата бисквитки?", >>> "Къде се правят бисквитките?", >>> "Какви видове бисквитки има?", >>> "Къде човек може да купи бисквитки?", >>> "Откъде дойде думата бисквитка?", >>> "Кое е чудовището на бисквитките?", >>> "Как да си направите бисквитки у дома?", >>> "Колко калории има типичната бисквитка?", >>> "Какви напитки вървят добре с бисквитките?", >>> "Бисквитките наричат ли се също сладки?" >>> ] >>> >>> corpus, corpus_embeddings = [], [] >>> for question in questions: >>> embedding = embed(question) >>> corpus.append(question) >>> corpus_embeddings.append(embedding) >>> >>> distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, "cosine")[0] >>> >>> results = zip(range(len(distances)), distances) >>> results = sorted(results, key=lambda x: x[1]) >>> >>> print([[corpus[idx].strip(), (1.0 - distance)] for idx, distance in results]) [['От какво са направени бисквитките?', 0.9855158537034977], ['Къде се правят бисквитките?', 0.9774093134195002], ['Какви видове бисквитки има?', 0.9766014240577192], ['Използват ли в Англия думата бисквитки?', 0.9446492058523037], ['Кое е чудовището на бисквитките?', 0.9269786184641834], ['Къде човек може да купи бисквитки?', 0.9268900421152592], ['Какво е бисквитка?', 0.9188155080718263], ['Бисквитките наричат ли се също сладки?', 0.9060368627614406], ['Откъде дойде думата бисквитка?', 0.9048309659657036], ['Какви напитки вървят добре с бисквитките?', 0.890836765118977], ['Как да си направите бисквитки у дома?', 0.8878968487540497], ['Колко калории има типичната бисквитка?', 0.8652821650136402]] ```