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