bavincSVA commited on
Commit
6ebf0e8
1 Parent(s): 4048b13

Initial commit

Browse files
0_Transformer/config.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "german-nlp-group/electra-base-german-uncased",
3
+ "architectures": [
4
+ "ElectraModel"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "embedding_size": 768,
8
+ "hidden_act": "gelu",
9
+ "hidden_dropout_prob": 0.1,
10
+ "hidden_size": 768,
11
+ "initializer_range": 0.02,
12
+ "intermediate_size": 3072,
13
+ "layer_norm_eps": 1e-12,
14
+ "max_position_embeddings": 512,
15
+ "model_type": "electra",
16
+ "num_attention_heads": 12,
17
+ "num_hidden_layers": 12,
18
+ "pad_token_id": 0,
19
+ "position_embedding_type": "absolute",
20
+ "summary_activation": "gelu",
21
+ "summary_last_dropout": 0.1,
22
+ "summary_type": "first",
23
+ "summary_use_proj": true,
24
+ "transformers_version": "4.6.1",
25
+ "type_vocab_size": 2,
26
+ "vocab_size": 32767
27
+ }
0_Transformer/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e85402a181a4f658ccdcdec705661fe19bd867cb8da8dd4244205799f740ca81
3
+ size 442549029
0_Transformer/sentence_bert_config.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "max_seq_length": 300,
3
+ "do_lower_case": false
4
+ }
0_Transformer/special_tokens_map.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"}
0_Transformer/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
0_Transformer/tokenizer_config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"do_lower_case": true, "unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]", "tokenize_chinese_chars": true, "strip_accents": false, "special_tokens_map_file": null, "full_tokenizer_file": null, "max_len": 512, "name_or_path": "german-nlp-group/electra-base-german-uncased", "do_basic_tokenize": true, "never_split": null}
0_Transformer/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
1_Pooling/config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "word_embedding_dimension": 768,
3
+ "pooling_mode_cls_token": false,
4
+ "pooling_mode_mean_tokens": true,
5
+ "pooling_mode_max_tokens": false,
6
+ "pooling_mode_mean_sqrt_len_tokens": false
7
+ }
README.md ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SVALabs - German Uncased Electra Bi-Encoder
2
+
3
+ In this repository, we present our german, uncased bi-encoder for Passage Retrieval.
4
+
5
+ This model was trained on the basis of the german electra uncased model from the [german-nlp-group](https://huggingface.co/german-nlp-group/electra-base-german-uncased) and finetuned as a bi-encoder for Passage Retrieval using the [sentence-transformers](https://github.com/UKPLab/sentence-transformers) package.
6
+ For this purpose, we translated the [MSMARCO-Passage-Ranking](https://github.com/microsoft/MSMARCO-Passage-Ranking) dataset using the [fairseq-wmt19-en-de](https://github.com/pytorch/fairseq/tree/master/examples/wmt19) translation model.
7
+
8
+ ### Model Details
9
+
10
+ | | Description or Link |
11
+ |---|---|
12
+ |**Base model** | [```german-nlp-group/electra-base-german-uncased```](https://huggingface.co/german-nlp-group/electra-base-german-uncased) |
13
+ |**Finetuning task**| Passage Retrieval / Semantic Search |
14
+ |**Source dataset**| [```MSMARCO-Passage-Ranking```](https://github.com/microsoft/MSMARCO-Passage-Ranking) |
15
+ |**Translation model**| [```fairseq-wmt19-en-de```](https://github.com/pytorch/fairseq/tree/master/examples/wmt19) |
16
+
17
+ ### Performance
18
+
19
+ We evaluated our model on the [GermanDPR testset](https://deepset.ai/germanquad) and followed the benchmark framework of [BEIR](https://github.com/UKPLab/beir).
20
+ In order to compare our results, we conducted an evaluation on the same test data with BM25 and presented the results in the table below.
21
+
22
+
23
+ | Model | NDCG@1 | NDCG@5 | NDCG@10 | Recall@1 | Recall@5 | Recall@10 |
24
+ |:-------:|:--------:|:--------:|:---------:|:--------:|:----------:|:-----------:|
25
+ | BM25 | 0.1463 | 0.3451 | 0.4097 | 0.1463 | 0.5424 | 0.7415 |
26
+ | Ours | 0.4624 | 0.6218 | 0.6425 | 0.4624 | 0.7581 | 0.8205 |
27
+
28
+
29
+
30
+ ### How to Use
31
+
32
+ With ```sentence-transformers``` package (see [UKPLab/sentence-transformers](https://github.com/UKPLab/sentence-transformers) on GitHub for more details):
33
+ ```python
34
+ from sentence_transformers import SentenceTransformer
35
+
36
+ bi_model = SentenceTransformer("svalabs/bi-electra-ms-marco-german-uncased-1")
37
+ ```
38
+
39
+ ### Semantic Search Example
40
+ ```python
41
+ import numpy as np
42
+ from sklearn.metrics.pairwise import cosine_similarity
43
+
44
+ K = 3 # number of top ranks to retrieve
45
+
46
+ # specify documents and queries
47
+ docs = [
48
+ "Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.",
49
+ "Der Gepard jagt seine Beute.",
50
+ "Wir haben in der Agentur ein neues System für Zeiterfassung.",
51
+ "Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.",
52
+ "Einen Impftermin kann mir der Arzt momentan noch nicht anbieten.",
53
+ "Auf Kreta hat meine Tochter mit Muscheln eine schöne Sandburg gebaut.",
54
+ "Das historische Zentrum (centro storico) liegt auf mehr als 100 Inseln in der Lagune von Venedig.",
55
+ "Um in Zukunft sein Vermögen zu schützen, sollte man andere Investmentstrategien in Betracht ziehen.",
56
+ "Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.",
57
+ "Bei ALDI sind die Bananen gerade im Angebot.",
58
+ "Die Entstehung der Erde ist 4,5 milliarden jahre her.",
59
+ "Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.",
60
+ "DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.",
61
+ ]
62
+
63
+ queries = [
64
+ "dax steigt",
65
+ "dax sinkt",
66
+ "probleme mit knieschmerzen",
67
+ "software für urlaubsstunden",
68
+ "raubtier auf der jagd",
69
+ "alter der erde",
70
+ "wie alt ist unser planet?",
71
+ "wie kapital sichern",
72
+ "supermarkt lebensmittel reduziert",
73
+ "wodurch ist der tyrannosaurus aussgestorben",
74
+ "serien streamen"
75
+ ]
76
+
77
+ # encode documents and queries
78
+ features_docs = bi_model.encode(docs)
79
+ features_queries = bi_model.encode(queries)
80
+
81
+ # compute pairwise cosine similarity scores
82
+ sim = cosine_similarity(features_queries, features_docs)
83
+
84
+ # print results
85
+ for i, query in enumerate(queries):
86
+ ranks = np.argsort(-sim[i])
87
+ print("Query:", query)
88
+ for j, r in enumerate(ranks[:K]):
89
+ print(f"[{j}: {sim[i, r]: .3f}]", docs[r])
90
+ print("-"*96)
91
+ ```
92
+
93
+ **Console Output**:
94
+ ```
95
+ Query: dax steigt
96
+ [0: 0.811] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
97
+ [1: 0.719] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
98
+ [2: 0.218] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
99
+ ------------------------------------------------------------------------------------------------
100
+ Query: dax sinkt
101
+ [0: 0.815] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
102
+ [1: 0.719] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
103
+ [2: 0.243] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
104
+ ------------------------------------------------------------------------------------------------
105
+ Query: probleme mit knieschmerzen
106
+ [0: 0.237] Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.
107
+ [1: 0.209] Das historische Zentrum (centro storico) liegt auf mehr als 100 Inseln in der Lagune von Venedig.
108
+ [2: 0.182] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
109
+ ------------------------------------------------------------------------------------------------
110
+ Query: software für urlaubsstunden
111
+ [0: 0.478] Wir haben in der Agentur ein neues System für Zeiterfassung.
112
+ [1: 0.208] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
113
+ [2: 0.190] Bei ALDI sind die Bananen gerade im Angebot.
114
+ ------------------------------------------------------------------------------------------------
115
+ Query: raubtier auf der jagd
116
+ [0: 0.599] Der Gepard jagt seine Beute.
117
+ [1: 0.264] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
118
+ [2: 0.159] Auf Kreta hat meine Tochter mit Muscheln eine schöne Sandburg gebaut.
119
+ ------------------------------------------------------------------------------------------------
120
+ Query: alter der erde
121
+ [0: 0.705] Die Entstehung der Erde ist 4,5 milliarden jahre her.
122
+ [1: 0.413] Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.
123
+ [2: 0.262] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
124
+ ------------------------------------------------------------------------------------------------
125
+ Query: wie alt ist unser planet?
126
+ [0: 0.441] Die Entstehung der Erde ist 4,5 milliarden jahre her.
127
+ [1: 0.335] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
128
+ [2: 0.302] Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.
129
+ ------------------------------------------------------------------------------------------------
130
+ Query: wie kapital sichern
131
+ [0: 0.547] Um in Zukunft sein Vermögen zu schützen, sollte man andere Investmentstrategien in Betracht ziehen.
132
+ [1: 0.331] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
133
+ [2: 0.143] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
134
+ ------------------------------------------------------------------------------------------------
135
+ Query: supermarkt lebensmittel reduziert
136
+ [0: 0.455] Bei ALDI sind die Bananen gerade im Angebot.
137
+ [1: 0.362] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
138
+ [2: 0.345] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
139
+ ------------------------------------------------------------------------------------------------
140
+ Query: wodurch ist der tyrannosaurus aussgestorben
141
+ [0: 0.457] Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.
142
+ [1: 0.216] Der Gepard jagt seine Beute.
143
+ [2: 0.195] Die Entstehung der Erde ist 4,5 milliarden jahre her.
144
+ ------------------------------------------------------------------------------------------------
145
+ Query: serien streamen
146
+ [0: 0.570] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
147
+ [1: 0.361] Wir haben in der Agentur ein neues System für Zeiterfassung.
148
+ [2: 0.282] Bei ALDI sind die Bananen gerade im Angebot.
149
+ ------------------------------------------------------------------------------------------------
150
+ ```
151
+
152
+ ### Contact
153
+ - Baran Avinc, [email protected]
154
+ - Jonas Grebe, [email protected]
155
+ - Lisa Stolz, [email protected]
156
+ - Bonian Riebe, [email protected]
157
+
158
+ ### References
159
+ - N. Reimers and I. Gurevych (2019), ['Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks'](https://arxiv.org/abs/1908.10084).
160
+ - Payal Bajaj et al. (2018), ['MS MARCO: A Human Generated MAchine Reading COmprehension Dataset'](https://arxiv.org/abs/1611.09268).
161
+ - N. Thakur et al. (2021), ['BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Models'](https://arxiv.org/abs/2104.08663).
162
+ - T. Möller, J. Risch and M. Pietsch (2021), ['GermanQuAD and GermanDPR: Improving Non-English Question Answering and Passage Retrieval'](https://arxiv.org/abs/2104.12741).
163
+ - Hofstätter et al. (2021), ['Improving Efficient Neural Ranking Models with Cross-Architecture Knowledge Distillation'](https://arxiv.org/abs/2010.02666)
config.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "__version__": "1.2.0"
3
+ }
modules.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "idx": 0,
4
+ "name": "0",
5
+ "path": "0_Transformer",
6
+ "type": "sentence_transformers.models.Transformer"
7
+ },
8
+ {
9
+ "idx": 1,
10
+ "name": "1",
11
+ "path": "1_Pooling",
12
+ "type": "sentence_transformers.models.Pooling"
13
+ }
14
+ ]