Ruddy commited on
Commit
2f98902
1 Parent(s): 3d3a83a
1_Pooling/config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "word_embedding_dimension": 1024,
3
+ "pooling_mode_cls_token": true,
4
+ "pooling_mode_mean_tokens": false,
5
+ "pooling_mode_max_tokens": false,
6
+ "pooling_mode_mean_sqrt_len_tokens": false
7
+ }
README.md ADDED
@@ -0,0 +1,287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ pipeline_tag: sentence-similarity
3
+ tags:
4
+ - sentence-transformers
5
+ - feature-extraction
6
+ - sentence-similarity
7
+ license: mit
8
+ ---
9
+
10
+ For more details please refer to our github repo: https://github.com/FlagOpen/FlagEmbedding
11
+
12
+ # BGE-M3 ([paper](https://arxiv.org/pdf/2402.03216.pdf), [code](https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/BGE_M3))
13
+
14
+ In this project, we introduce BGE-M3, which is distinguished for its versatility in Multi-Functionality, Multi-Linguality, and Multi-Granularity.
15
+ - Multi-Functionality: It can simultaneously perform the three common retrieval functionalities of embedding model: dense retrieval, multi-vector retrieval, and sparse retrieval.
16
+ - Multi-Linguality: It can support more than 100 working languages.
17
+ - Multi-Granularity: It is able to process inputs of different granularities, spanning from short sentences to long documents of up to 8192 tokens.
18
+
19
+ **Some suggestions for retrieval pipeline in RAG:**
20
+ We recommend to use following pipeline: hybrid retrieval + re-ranking.
21
+ - Hybrid retrieval leverages the strengths of various methods, offering higher accuracy and stronger generalization capabilities.
22
+ A classic example: using both embedding retrieval and the BM25 algorithm.
23
+ Now, you can try to use BGE-M3, which supports both embedding and sparse retrieval.
24
+ This allows you to obtain token weights (similar to the BM25) without any additional cost when generate dense embeddings.
25
+ - As cross-encoder models, re-ranker demonstrates higher accuracy than bi-encoder embedding model.
26
+ Utilizing the re-ranking model (e.g., [bge-reranker](https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/reranker), [cohere-reranker](https://txt.cohere.com/rerank/)) after retrieval can further filter the selected text.
27
+
28
+
29
+ ## News:
30
+ - 2024/3/2: Release unified fine-tuning [example](https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/unified_finetune) and [data](https://huggingface.co/datasets/Shitao/bge-m3-data)
31
+ - 2024/2/6: We release the [MLDR](https://huggingface.co/datasets/Shitao/MLDR) (a long document retrieval dataset covering 13 languages) and [evaluation pipeline](https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB/MLDR).
32
+ - 2024/2/1: **Thanks for the excellent tool from Vespa.** You can easily use multiple modes of BGE-M3 following this [notebook](https://github.com/vespa-engine/pyvespa/blob/master/docs/sphinx/source/examples/mother-of-all-embedding-models-cloud.ipynb)
33
+
34
+
35
+ ## Specs
36
+
37
+ - Model
38
+
39
+ | Model Name | Dimension | Sequence Length | Introduction |
40
+ |:----:|:---:|:---:|:---:|
41
+ | [BAAI/bge-m3](https://huggingface.co/BAAI/bge-m3) | 1024 | 8192 | multilingual; unified fine-tuning (dense, sparse, and colbert) from bge-m3-unsupervised|
42
+ | [BAAI/bge-m3-unsupervised](https://huggingface.co/BAAI/bge-m3-unsupervised) | 1024 | 8192 | multilingual; contrastive learning from bge-m3-retromae |
43
+ | [BAAI/bge-m3-retromae](https://huggingface.co/BAAI/bge-m3-retromae) | -- | 8192 | multilingual; extend the max_length of [xlm-roberta](https://huggingface.co/FacebookAI/xlm-roberta-large) to 8192 and further pretrained via [retromae](https://github.com/staoxiao/RetroMAE)|
44
+ | [BAAI/bge-large-en-v1.5](https://huggingface.co/BAAI/bge-large-en-v1.5) | 1024 | 512 | English model |
45
+ | [BAAI/bge-base-en-v1.5](https://huggingface.co/BAAI/bge-base-en-v1.5) | 768 | 512 | English model |
46
+ | [BAAI/bge-small-en-v1.5](https://huggingface.co/BAAI/bge-small-en-v1.5) | 384 | 512 | English model |
47
+
48
+ - Data
49
+
50
+ | Dataset | Introduction |
51
+ |:----------------------------------------------------------:|:-------------------------------------------------:|
52
+ | [MLDR](https://huggingface.co/datasets/Shitao/MLDR) | Docuemtn Retrieval Dataset, covering 13 languages |
53
+ | [bge-m3-data](https://huggingface.co/datasets/Shitao/bge-m3-data) | Fine-tuning data used by bge-m3 |
54
+
55
+
56
+
57
+ ## FAQ
58
+
59
+ **1. Introduction for different retrieval methods**
60
+
61
+ - Dense retrieval: map the text into a single embedding, e.g., [DPR](https://arxiv.org/abs/2004.04906), [BGE-v1.5](https://github.com/FlagOpen/FlagEmbedding)
62
+ - Sparse retrieval (lexical matching): a vector of size equal to the vocabulary, with the majority of positions set to zero, calculating a weight only for tokens present in the text. e.g., BM25, [unicoil](https://arxiv.org/pdf/2106.14807.pdf), and [splade](https://arxiv.org/abs/2107.05720)
63
+ - Multi-vector retrieval: use multiple vectors to represent a text, e.g., [ColBERT](https://arxiv.org/abs/2004.12832).
64
+
65
+ **2. Comparison with BGE-v1.5 and other monolingual models**
66
+
67
+ BGE-M3 is a multilingual model, and its ability in monolingual embedding retrieval may not surpass models specifically designed for single languages.
68
+ However, we still recommend trying BGE-M3 because of its versatility (support for multiple languages and long texts).
69
+ Moreover, it can simultaneously generate multiple representations, and using them together can enhance accuracy and generalization,
70
+ unlike most existing models that can only perform dense retrieval.
71
+
72
+ In the open-source community, there are many excellent models (e.g., jina-embedding, colbert, e5, etc),
73
+ and users can choose a model that suits their specific needs based on practical considerations,
74
+ such as whether to require multilingual or cross-language support, and whether to process long texts.
75
+
76
+ **3. How to use BGE-M3 in other projects?**
77
+
78
+ For embedding retrieval, you can employ the BGE-M3 model using the same approach as BGE.
79
+ The only difference is that the BGE-M3 model no longer requires adding instructions to the queries.
80
+ For sparse retrieval methods, most open-source libraries currently do not support direct utilization of the BGE-M3 model.
81
+ Contributions from the community are welcome.
82
+
83
+
84
+ In our experiments, we use [Pyserini](https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB/MLDR#hybrid-retrieval-dense--sparse) and Faiss to do hybrid retrieval.
85
+ **Now you can ou can try the hybrid mode of BGE-M3 in [Vespa](https://github.com/vespa-engine/pyvespa/blob/master/docs/sphinx/source/examples/mother-of-all-embedding-models-cloud.ipynb
86
+ ). Thanks @jobergum.**
87
+
88
+
89
+ **4. How to fine-tune bge-M3 model?**
90
+
91
+ You can follow the common in this [example](https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/finetune)
92
+ to fine-tune the dense embedding.
93
+
94
+ If you want to fine-tune all embedding function of m3, you can refer to the [unified_fine-tuning example](https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/unified_finetune)
95
+
96
+
97
+
98
+
99
+
100
+ ## Usage
101
+
102
+ Install:
103
+ ```
104
+ git clone https://github.com/FlagOpen/FlagEmbedding.git
105
+ cd FlagEmbedding
106
+ pip install -e .
107
+ ```
108
+ or:
109
+ ```
110
+ pip install -U FlagEmbedding
111
+ ```
112
+
113
+
114
+
115
+ ### Generate Embedding for text
116
+
117
+ - Dense Embedding
118
+ ```python
119
+ from FlagEmbedding import BGEM3FlagModel
120
+
121
+ model = BGEM3FlagModel('BAAI/bge-m3',
122
+ use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation
123
+
124
+ sentences_1 = ["What is BGE M3?", "Defination of BM25"]
125
+ sentences_2 = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
126
+ "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]
127
+
128
+ embeddings_1 = model.encode(sentences_1,
129
+ batch_size=12,
130
+ max_length=8192, # If you don't need such a long length, you can set a smaller value to speed up the encoding process.
131
+ )['dense_vecs']
132
+ embeddings_2 = model.encode(sentences_2)['dense_vecs']
133
+ similarity = embeddings_1 @ embeddings_2.T
134
+ print(similarity)
135
+ # [[0.6265, 0.3477], [0.3499, 0.678 ]]
136
+ ```
137
+ You also can use sentence-transformers and huggingface transformers to generate dense embeddings.
138
+ Refer to [baai_general_embedding](https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/baai_general_embedding#usage) for details.
139
+
140
+
141
+ - Sparse Embedding (Lexical Weight)
142
+ ```python
143
+ from FlagEmbedding import BGEM3FlagModel
144
+
145
+ model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation
146
+
147
+ sentences_1 = ["What is BGE M3?", "Defination of BM25"]
148
+ sentences_2 = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
149
+ "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]
150
+
151
+ output_1 = model.encode(sentences_1, return_dense=True, return_sparse=True, return_colbert_vecs=False)
152
+ output_2 = model.encode(sentences_2, return_dense=True, return_sparse=True, return_colbert_vecs=False)
153
+
154
+ # you can see the weight for each token:
155
+ print(model.convert_id_to_token(output_1['lexical_weights']))
156
+ # [{'What': 0.08356, 'is': 0.0814, 'B': 0.1296, 'GE': 0.252, 'M': 0.1702, '3': 0.2695, '?': 0.04092},
157
+ # {'De': 0.05005, 'fin': 0.1368, 'ation': 0.04498, 'of': 0.0633, 'BM': 0.2515, '25': 0.3335}]
158
+
159
+
160
+ # compute the scores via lexical mathcing
161
+ lexical_scores = model.compute_lexical_matching_score(output_1['lexical_weights'][0], output_2['lexical_weights'][0])
162
+ print(lexical_scores)
163
+ # 0.19554901123046875
164
+
165
+ print(model.compute_lexical_matching_score(output_1['lexical_weights'][0], output_1['lexical_weights'][1]))
166
+ # 0.0
167
+ ```
168
+
169
+ - Multi-Vector (ColBERT)
170
+ ```python
171
+ from FlagEmbedding import BGEM3FlagModel
172
+
173
+ model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True)
174
+
175
+ sentences_1 = ["What is BGE M3?", "Defination of BM25"]
176
+ sentences_2 = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
177
+ "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]
178
+
179
+ output_1 = model.encode(sentences_1, return_dense=True, return_sparse=True, return_colbert_vecs=True)
180
+ output_2 = model.encode(sentences_2, return_dense=True, return_sparse=True, return_colbert_vecs=True)
181
+
182
+ print(model.colbert_score(output_1['colbert_vecs'][0], output_2['colbert_vecs'][0]))
183
+ print(model.colbert_score(output_1['colbert_vecs'][0], output_2['colbert_vecs'][1]))
184
+ # 0.7797
185
+ # 0.4620
186
+ ```
187
+
188
+
189
+ ### Compute score for text pairs
190
+ Input a list of text pairs, you can get the scores computed by different methods.
191
+ ```python
192
+ from FlagEmbedding import BGEM3FlagModel
193
+
194
+ model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True)
195
+
196
+ sentences_1 = ["What is BGE M3?", "Defination of BM25"]
197
+ sentences_2 = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
198
+ "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]
199
+
200
+ sentence_pairs = [[i,j] for i in sentences_1 for j in sentences_2]
201
+
202
+ print(model.compute_score(sentence_pairs,
203
+ max_passage_length=128, # a smaller max length leads to a lower latency
204
+ weights_for_different_modes=[0.4, 0.2, 0.4])) # weights_for_different_modes(w) is used to do weighted sum: w[0]*dense_score + w[1]*sparse_score + w[2]*colbert_score
205
+
206
+ # {
207
+ # 'colbert': [0.7796499729156494, 0.4621465802192688, 0.4523794651031494, 0.7898575067520142],
208
+ # 'sparse': [0.195556640625, 0.00879669189453125, 0.0, 0.1802978515625],
209
+ # 'dense': [0.6259765625, 0.347412109375, 0.349853515625, 0.67822265625],
210
+ # 'sparse+dense': [0.482503205537796, 0.23454029858112335, 0.2332356721162796, 0.5122477412223816],
211
+ # 'colbert+sparse+dense': [0.6013619303703308, 0.3255828022956848, 0.32089319825172424, 0.6232916116714478]
212
+ # }
213
+ ```
214
+
215
+
216
+
217
+
218
+ ## Evaluation
219
+
220
+
221
+ We compare BGE-M3 with some popular methods, including BM25, openAI embedding, etc.
222
+
223
+ - Multilingual (Miracl dataset)
224
+
225
+ ![avatar](./imgs/miracl.jpg)
226
+
227
+ - Cross-lingual (MKQA dataset)
228
+
229
+ ![avatar](./imgs/mkqa.jpg)
230
+
231
+ - Long Document Retrieval
232
+ - MLDR:
233
+ ![avatar](./imgs/long.jpg)
234
+ Please note that [MLDR](https://huggingface.co/datasets/Shitao/MLDR) is a document retrieval dataset we constructed via LLM,
235
+ covering 13 languages, including test set, validation set, and training set.
236
+ We utilized the training set from MLDR to enhance the model's long document retrieval capabilities.
237
+ Therefore, comparing baselines with `Dense w.o.long`(fine-tuning without long document dataset) is more equitable.
238
+ Additionally, this long document retrieval dataset will be open-sourced to address the current lack of open-source multilingual long text retrieval datasets.
239
+ We believe that this data will be helpful for the open-source community in training document retrieval models.
240
+
241
+ - NarritiveQA:
242
+ ![avatar](./imgs/nqa.jpg)
243
+
244
+ - Comparison with BM25
245
+
246
+ We utilized Pyserini to implement BM25, and the test results can be reproduced by this [script](https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB/MLDR#bm25-baseline).
247
+ We tested BM25 using two different tokenizers:
248
+ one using Lucene Analyzer and the other using the same tokenizer as M3 (i.e., the tokenizer of xlm-roberta).
249
+ The results indicate that BM25 remains a competitive baseline,
250
+ especially in long document retrieval.
251
+
252
+ ![avatar](./imgs/bm25.jpg)
253
+
254
+
255
+ ## Training
256
+ - Self-knowledge Distillation: combining multiple outputs from different
257
+ retrieval modes as reward signal to enhance the performance of single mode(especially for sparse retrieval and multi-vec(colbert) retrival)
258
+ - Efficient Batching: Improve the efficiency when fine-tuning on long text.
259
+ The small-batch strategy is simple but effective, which also can used to fine-tune large embedding model.
260
+ - MCLS: A simple method to improve the performance on long text without fine-tuning.
261
+ If you have no enough resource to fine-tuning model with long text, the method is useful.
262
+
263
+ Refer to our [report](https://arxiv.org/pdf/2402.03216.pdf) for more details.
264
+
265
+
266
+
267
+ ## Acknowledgement
268
+
269
+ Thanks the authors of open-sourced datasets, including Miracl, MKQA, NarritiveQA, etc.
270
+ Thanks the open-sourced libraries like [Tevatron](https://github.com/texttron/tevatron), [Pyserini](https://github.com/castorini/pyserini).
271
+
272
+
273
+
274
+ ## Citation
275
+
276
+ If you find this repository useful, please consider giving a star :star: and citation
277
+
278
+ ```
279
+ @misc{bge-m3,
280
+ title={BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation},
281
+ author={Jianlv Chen and Shitao Xiao and Peitian Zhang and Kun Luo and Defu Lian and Zheng Liu},
282
+ year={2024},
283
+ eprint={2402.03216},
284
+ archivePrefix={arXiv},
285
+ primaryClass={cs.CL}
286
+ }
287
+ ```
colbert_linear.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:19bfbae397c2b7524158c919d0e9b19393c5639d098f0a66932c91ed8f5f9abb
3
+ size 2100674
config.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "",
3
+ "architectures": [
4
+ "XLMRobertaModel"
5
+ ],
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "bos_token_id": 0,
8
+ "classifier_dropout": null,
9
+ "eos_token_id": 2,
10
+ "hidden_act": "gelu",
11
+ "hidden_dropout_prob": 0.1,
12
+ "hidden_size": 1024,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 4096,
15
+ "layer_norm_eps": 1e-05,
16
+ "max_position_embeddings": 8194,
17
+ "model_type": "xlm-roberta",
18
+ "num_attention_heads": 16,
19
+ "num_hidden_layers": 24,
20
+ "output_past": true,
21
+ "pad_token_id": 1,
22
+ "position_embedding_type": "absolute",
23
+ "torch_dtype": "float32",
24
+ "transformers_version": "4.33.0",
25
+ "type_vocab_size": 1,
26
+ "use_cache": true,
27
+ "vocab_size": 250002
28
+ }
config_sentence_transformers.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "__version__": {
3
+ "sentence_transformers": "2.2.2",
4
+ "transformers": "4.33.0",
5
+ "pytorch": "2.1.2+cu121"
6
+ }
7
+ }
imgs/.DS_Store ADDED
Binary file (6.15 kB). View file
 
imgs/bm25.jpg ADDED
imgs/long.jpg ADDED
imgs/miracl.jpg ADDED
imgs/mkqa.jpg ADDED
imgs/nqa.jpg ADDED
long.jpg ADDED
modules.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "idx": 0,
4
+ "name": "0",
5
+ "path": "",
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
+ {
15
+ "idx": 2,
16
+ "name": "2",
17
+ "path": "2_Normalize",
18
+ "type": "sentence_transformers.models.Normalize"
19
+ }
20
+ ]
sentence_bert_config.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "max_seq_length": 8192,
3
+ "do_lower_case": false
4
+ }
sentencepiece.bpe.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cfc8146abe2a0488e9e2a0c56de7952f7c11ab059eca145a0a727afce0db2865
3
+ size 5069051
sparse_linear.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:45c93804d2142b8f6d7ec6914ae23a1eee9c6a1d27d83d908a20d2afb3595ad9
3
+ size 3516
special_tokens_map.json ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": {
3
+ "content": "<s>",
4
+ "lstrip": false,
5
+ "normalized": false,
6
+ "rstrip": false,
7
+ "single_word": false
8
+ },
9
+ "cls_token": {
10
+ "content": "<s>",
11
+ "lstrip": false,
12
+ "normalized": false,
13
+ "rstrip": false,
14
+ "single_word": false
15
+ },
16
+ "eos_token": {
17
+ "content": "</s>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ },
23
+ "mask_token": {
24
+ "content": "<mask>",
25
+ "lstrip": true,
26
+ "normalized": false,
27
+ "rstrip": false,
28
+ "single_word": false
29
+ },
30
+ "pad_token": {
31
+ "content": "<pad>",
32
+ "lstrip": false,
33
+ "normalized": false,
34
+ "rstrip": false,
35
+ "single_word": false
36
+ },
37
+ "sep_token": {
38
+ "content": "</s>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false
43
+ },
44
+ "unk_token": {
45
+ "content": "<unk>",
46
+ "lstrip": false,
47
+ "normalized": false,
48
+ "rstrip": false,
49
+ "single_word": false
50
+ }
51
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:21106b6d7dab2952c1d496fb21d5dc9db75c28ed361a05f5020bbba27810dd08
3
+ size 17098108
tokenizer_config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<s>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "1": {
12
+ "content": "<pad>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "2": {
20
+ "content": "</s>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "250001": {
28
+ "content": "<mask>",
29
+ "lstrip": true,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "3": {
36
+ "content": "<unk>",
37
+ "lstrip": false,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ }
43
+ },
44
+ "bos_token": "<s>",
45
+ "clean_up_tokenization_spaces": true,
46
+ "cls_token": "<s>",
47
+ "eos_token": "</s>",
48
+ "mask_token": {
49
+ "__type": "AddedToken",
50
+ "content": "<mask>",
51
+ "lstrip": true,
52
+ "normalized": true,
53
+ "rstrip": false,
54
+ "single_word": false
55
+ },
56
+ "model_max_length": 8192,
57
+ "pad_token": "<pad>",
58
+ "sep_token": "</s>",
59
+ "sp_model_kwargs": {},
60
+ "tokenizer_class": "XLMRobertaTokenizer",
61
+ "unk_token": "<unk>"
62
+ }