Create README.md
Browse files
README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
inference: false
|
| 3 |
+
pipeline_tag: sentence-similarity
|
| 4 |
+
language:
|
| 5 |
+
- bg
|
| 6 |
+
license: mit
|
| 7 |
+
datasets:
|
| 8 |
+
- oscar
|
| 9 |
+
- chitanka
|
| 10 |
+
- wikipedia
|
| 11 |
+
tags:
|
| 12 |
+
- torch
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
# ROBERTA BASE (cased) trained on private Bulgarian-English parallel data
|
| 16 |
+
This is a Multilingual Roberta model. It could be used for creating embeddings of Bulgarian sentences.
|
| 17 |
+
|
| 18 |
+
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.
|
| 19 |
+
|
| 20 |
+
This model is cased: it does make a difference between bulgarian and Bulgarian.
|
| 21 |
+
|
| 22 |
+
It was trained on private Bulgarian-English parallel data.
|
| 23 |
+
|
| 24 |
+
### How to use
|
| 25 |
+
|
| 26 |
+
Here is how to use this model in PyTorch:
|
| 27 |
+
|
| 28 |
+
```python
|
| 29 |
+
>>> import scipy
|
| 30 |
+
>>> import torch
|
| 31 |
+
>>> from transformers import AutoModel, AutoTokenizer
|
| 32 |
+
>>>
|
| 33 |
+
>>> model = AutoModel.from_pretrained('rmihaylov/roberta-base-nli-stsb-bg')
|
| 34 |
+
>>> tokenizer = AutoTokenizer.from_pretrained('rmihaylov/roberta-base-nli-stsb-bg')
|
| 35 |
+
>>>
|
| 36 |
+
>>> def embed(text):
|
| 37 |
+
>>> inputs = tokenizer.encode_plus(text, return_tensors='pt')
|
| 38 |
+
>>> outputs = model(**inputs)
|
| 39 |
+
>>> sequence_output = outputs[0]
|
| 40 |
+
>>> input_mask_expanded = inputs['attention_mask'].unsqueeze(-1).expand(sequence_output.size()).float()
|
| 41 |
+
>>> embeddings = torch.sum(sequence_output * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
|
| 42 |
+
>>> return embeddings.detach().numpy()[0]
|
| 43 |
+
>>>
|
| 44 |
+
>>>
|
| 45 |
+
>>> query_embedding = embed("Какви са съставките на бисквитките?")
|
| 46 |
+
>>>
|
| 47 |
+
>>> questions = [
|
| 48 |
+
>>> "Какво е бисквитка?",
|
| 49 |
+
>>> "От какво са направени бисквитките?",
|
| 50 |
+
>>> "Използват ли в Англия думата бисквитки?",
|
| 51 |
+
>>> "Къде се правят бисквитките?",
|
| 52 |
+
>>> "Какви видове бисквитки има?",
|
| 53 |
+
>>> "Къде човек може да купи бисквитки?",
|
| 54 |
+
>>> "Откъде дойде думата бисквитка?",
|
| 55 |
+
>>> "Кое е чудовището на бисквитките?",
|
| 56 |
+
>>> "Как да си направите бисквитки у дома?",
|
| 57 |
+
>>> "Колко калории има типичната бисквитка?",
|
| 58 |
+
>>> "Какви напитки вървят добре с бисквитките?",
|
| 59 |
+
>>> "Бисквитките наричат ли се също сладки?"
|
| 60 |
+
>>> ]
|
| 61 |
+
>>>
|
| 62 |
+
>>> corpus, corpus_embeddings = [], []
|
| 63 |
+
>>> for question in questions:
|
| 64 |
+
>>> embedding = embed(question)
|
| 65 |
+
>>> corpus.append(question)
|
| 66 |
+
>>> corpus_embeddings.append(embedding)
|
| 67 |
+
>>>
|
| 68 |
+
>>> distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, "cosine")[0]
|
| 69 |
+
>>>
|
| 70 |
+
>>> results = zip(range(len(distances)), distances)
|
| 71 |
+
>>> results = sorted(results, key=lambda x: x[1])
|
| 72 |
+
>>>
|
| 73 |
+
>>> print([[corpus[idx].strip(), (1.0 - distance)] for idx, distance in results])
|
| 74 |
+
|
| 75 |
+
[['Какви видове бисквитки има?', 0.9749538412820795],
|
| 76 |
+
['От какво са направени бисквитките?', 0.9720467855849998],
|
| 77 |
+
['Къде се правят бисквитките?', 0.9622582076645853],
|
| 78 |
+
['Какво е бисквитка?', 0.9352896865855094],
|
| 79 |
+
['Използват ли в Англия думата бисквитки?', 0.8981422328370646],
|
| 80 |
+
['Откъде дойде думата бисквитка?', 0.8955433698658758],
|
| 81 |
+
['Кое е чудовището на бисквитките?', 0.8902666858687854],
|
| 82 |
+
['Бисквитките наричат ли се също сладки?', 0.8839303534407483],
|
| 83 |
+
['Какви напитки вървят добре с бисквитките?', 0.8582087653310524],
|
| 84 |
+
['Къде човек може да купи бисквитки?', 0.8570532540073935],
|
| 85 |
+
['Колко калории има типичната бисквитка?', 0.8387529949080176],
|
| 86 |
+
['Как да си направите бисквитки у дома?', 0.8243675958097614]]
|
| 87 |
+
```
|