rmihaylov commited on
Commit
632772f
1 Parent(s): 6017b60

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +87 -0
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
+ ```