bavincSVA commited on
Commit
42faf5a
1 Parent(s): 5353348

Initial commit

Browse files
README.md ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SVALabs - German Uncased Electra Cross-Encoder
2
+
3
+ In this repository, we present our german, uncased cross-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 cross-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
+ | Model | NDCG@1 | NDCG@5 | NDCG@10 | Recall@1 | Recall@5 | Recall@10 |
23
+ |:-------------------:|:------:|:------:|:-------:|:--------:|:--------:|:---------:|
24
+ | BM25 | 0.1463 | 0.3451 | 0.4097 | 0.1463 | 0.5424 | 0.7415 |
25
+ | BM25(Top 100) +Ours | 0.6410 | 0.7885 | 0.7943 | 0.6410 | 0.8576 | 0.9024 |
26
+
27
+ ### How to Use
28
+
29
+ With ```sentence-transformers``` package (see [UKPLab/sentence-transformers](https://github.com/UKPLab/sentence-transformers) on GitHub for more details):
30
+ ```python
31
+ from sentence_transformers.cross_encoder import CrossEncoder
32
+
33
+ cross_model = CrossEncoder("svalabs/cross-electra-ms-marco-german-uncased-1")
34
+ ```
35
+
36
+ ### Semantic Search Example
37
+ ```python
38
+ import numpy as np
39
+ from sklearn.metrics.pairwise import cosine_similarity
40
+
41
+ K = 3 # number of top ranks to retrieve
42
+
43
+ docs = [
44
+ "Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.",
45
+ "Der Gepard jagt seine Beute.",
46
+ "Wir haben in der Agentur ein neues System für Zeiterfassung.",
47
+ "Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.",
48
+ "Einen Impftermin kann mir der Arzt momentan noch nicht anbieten.",
49
+ "Auf Kreta hat meine Tochter mit Muscheln eine schöne Sandburg gebaut.",
50
+ "Das historische Zentrum (centro storico) liegt auf mehr als 100 Inseln in der Lagune von Venedig.",
51
+ "Um in Zukunft sein Vermögen zu schützen, sollte man andere Investmentstrategien in Betracht ziehen.",
52
+ "Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.",
53
+ "Bei ALDI sind die Bananen gerade im Angebot.",
54
+ "Die Entstehung der Erde ist 4,5 milliarden jahre her.",
55
+ "Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.",
56
+ "DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.",
57
+ ]
58
+
59
+ queries = [
60
+ "dax steigt",
61
+ "dax sinkt",
62
+ "probleme mit knieschmerzen",
63
+ "software für urlaubsstunden",
64
+ "raubtier auf der jagd",
65
+ "alter der erde",
66
+ "wie alt ist unser planet?",
67
+ "wie kapital sichern",
68
+ "supermarkt lebensmittel reduziert",
69
+ "wodurch ist der tyrannosaurus aussgestorben",
70
+ "serien streamen"
71
+ ]
72
+
73
+ # encode each query document pair
74
+ from itertools import product
75
+ combs = list(product(queries, docs))
76
+ outputs = cross_model.predict(combs).reshape((len(queries), len(docs)))
77
+
78
+ # print results
79
+ for i, query in enumerate(queries):
80
+ ranks = np.argsort(-outputs[i])
81
+ print("Query:", query)
82
+ for j, r in enumerate(ranks[:3]):
83
+ print(f"[{j}: {outputs[i, r]: .3f}]", docs[r])
84
+ print("-"*96)
85
+
86
+ ```
87
+
88
+ **Console Output**:
89
+ ```
90
+ Query: dax steigt
91
+ [0: 7.676] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
92
+ [1: 0.821] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
93
+ [2: -9.905] Um in Zukunft sein Vermögen zu schützen, sollte man andere Investmentstrategien in Betracht ziehen.
94
+ ------------------------------------------------------------------------------------------------
95
+ Query: dax sinkt
96
+ [0: 8.079] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
97
+ [1: -0.491] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
98
+ [2: -9.224] Um in Zukunft sein Vermögen zu schützen, sollte man andere Investmentstrategien in Betracht ziehen.
99
+ ------------------------------------------------------------------------------------------------
100
+ Query: probleme mit knieschmerzen
101
+ [0: 6.753] Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.
102
+ [1: -5.866] Einen Impftermin kann mir der Arzt momentan noch nicht anbieten.
103
+ [2: -9.461] Auf Kreta hat meine Tochter mit Muscheln eine schöne Sandburg gebaut.
104
+ ------------------------------------------------------------------------------------------------
105
+ Query: software für urlaubsstunden
106
+ [0: 1.707] Wir haben in der Agentur ein neues System für Zeiterfassung.
107
+ [1: -10.649] Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.
108
+ [2: -11.280] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
109
+ ------------------------------------------------------------------------------------------------
110
+ Query: raubtier auf der jagd
111
+ [0: 4.596] Der Gepard jagt seine Beute.
112
+ [1: -6.809] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
113
+ [2: -8.392] Das historische Zentrum (centro storico) liegt auf mehr als 100 Inseln in der Lagune von Venedig.
114
+ ------------------------------------------------------------------------------------------------
115
+ Query: alter der erde
116
+ [0: 7.343] Die Entstehung der Erde ist 4,5 milliarden jahre her.
117
+ [1: -7.664] Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.
118
+ [2: -8.020] Das historische Zentrum (centro storico) liegt auf mehr als 100 Inseln in der Lagune von Venedig.
119
+ ------------------------------------------------------------------------------------------------
120
+ Query: wie alt ist unser planet?
121
+ [0: 7.672] Die Entstehung der Erde ist 4,5 milliarden jahre her.
122
+ [1: -9.638] Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.
123
+ [2: -10.251] Auf Kreta hat meine Tochter mit Muscheln eine schöne Sandburg gebaut.
124
+ ------------------------------------------------------------------------------------------------
125
+ Query: wie kapital sichern
126
+ [0: 3.927] Um in Zukunft sein Vermögen zu schützen, sollte man andere Investmentstrategien in Betracht ziehen.
127
+ [1: -8.733] Finanzwerte treiben DAX um mehr als sechs Prozent nach oben Frankfurt/Main gegeben.
128
+ [2: -10.090] Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.
129
+ ------------------------------------------------------------------------------------------------
130
+ Query: supermarkt lebensmittel reduziert
131
+ [0: 3.508] Bei ALDI sind die Bananen gerade im Angebot.
132
+ [1: -10.057] Das historische Zentrum (centro storico) liegt auf mehr als 100 Inseln in der Lagune von Venedig.
133
+ [2: -10.470] DAX dreht ins Minus. Konjunkturdaten und Gewinnmitnahmen belasten Frankfurt/Main.
134
+ ------------------------------------------------------------------------------------------------
135
+ Query: wodurch ist der tyrannosaurus aussgestorben
136
+ [0: 0.079] Die Ära der Dinosaurier wurde vermutlich durch den Einschlag eines gigantischen Meteoriten auf der Erde beendet.
137
+ [1: -10.701] Mein Arzt sagt, dass mir dabei eher ein Orthopäde helfen könnte.
138
+ [2: -11.200] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
139
+ ------------------------------------------------------------------------------------------------
140
+ Query: serien streamen
141
+ [0: 3.392] Auf Netflix gibt es endlich die neue Staffel meiner Lieblingsserie.
142
+ [1: -5.725] Der Gepard jagt seine Beute.
143
+ [2: -8.378] Auf Kreta hat meine Tochter mit Muscheln eine schöne Sandburg gebaut.
144
+ ------------------------------------------------------------------------------------------------
145
+ ```
146
+
147
+ ### Contact
148
+ - Baran Avinc, baran.avinc@sva.de
149
+ - Jonas Grebe, jonas.grebe@sva.de
150
+ - Lisa Stolz, lisa.stolz@sva.de
151
+ - Bonian Riebe, bonian.riebe@sva.de
152
+
153
+ ### References
154
+ - N. Reimers and I. Gurevych (2019), ['Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks'](https://arxiv.org/abs/1908.10084).
155
+ - Payal Bajaj et al. (2018), ['MS MARCO: A Human Generated MAchine Reading COmprehension Dataset'](https://arxiv.org/abs/1611.09268).
156
+ - N. Thakur et al. (2021), ['BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Models'](https://arxiv.org/abs/2104.08663).
157
+ - 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).
158
+ - 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,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "german-nlp-group/electra-base-german-uncased",
3
+ "architectures": [
4
+ "ElectraForSequenceClassification"
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
+ "id2label": {
12
+ "0": "LABEL_0"
13
+ },
14
+ "initializer_range": 0.02,
15
+ "intermediate_size": 3072,
16
+ "label2id": {
17
+ "LABEL_0": 0
18
+ },
19
+ "layer_norm_eps": 1e-12,
20
+ "max_position_embeddings": 512,
21
+ "model_type": "electra",
22
+ "num_attention_heads": 12,
23
+ "num_hidden_layers": 12,
24
+ "pad_token_id": 0,
25
+ "position_embedding_type": "absolute",
26
+ "sbert_ce_default_activation_function": "torch.nn.modules.linear.Identity",
27
+ "summary_activation": "gelu",
28
+ "summary_last_dropout": 0.1,
29
+ "summary_type": "first",
30
+ "summary_use_proj": true,
31
+ "transformers_version": "4.6.1",
32
+ "type_vocab_size": 2,
33
+ "vocab_size": 32767
34
+ }
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3312cbd22c86f1211948aad314d68c581a008f213e909a950222700f0bf35add
3
+ size 444919241
special_tokens_map.json ADDED
@@ -0,0 +1 @@
 
1
+ {"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"}
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
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}
vocab.txt ADDED
The diff for this file is too large to render. See raw diff