a-menu commited on
Commit
3513e26
1 Parent(s): 3eee874

Update spaCy pipeline

Browse files
.gitattributes CHANGED
@@ -33,3 +33,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ fr_arches_ner-any-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
37
+ tok2vec/model filter=lfs diff=lfs merge=lfs -text
38
+ vocab/key2row filter=lfs diff=lfs merge=lfs -text
39
+ vocab/strings.json filter=lfs diff=lfs merge=lfs -text
40
+ vocab/vectors filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ tags:
3
+ - spacy
4
+ - token-classification
5
+ language:
6
+ - fr
7
+ model-index:
8
+ - name: fr_arches_ner
9
+ results:
10
+ - task:
11
+ name: NER
12
+ type: token-classification
13
+ metrics:
14
+ - name: NER Precision
15
+ type: precision
16
+ value: 0.6778376222
17
+ - name: NER Recall
18
+ type: recall
19
+ value: 0.7156697557
20
+ - name: NER F Score
21
+ type: f_score
22
+ value: 0.6962401393
23
+ ---
24
+ | Feature | Description |
25
+ | --- | --- |
26
+ | **Name** | `fr_arches_ner` |
27
+ | **Version** | `0.0.0` |
28
+ | **spaCy** | `>=3.6.1,<3.7.0` |
29
+ | **Default Pipeline** | `tok2vec`, `ner`, `entity_punctuation_removal` |
30
+ | **Components** | `tok2vec`, `ner`, `entity_punctuation_removal` |
31
+ | **Vectors** | 500000 keys, 500000 unique vectors (300 dimensions) |
32
+ | **Sources** | n/a |
33
+ | **License** | n/a |
34
+ | **Author** | [n/a]() |
35
+
36
+ ### Label Scheme
37
+
38
+ <details>
39
+
40
+ <summary>View label scheme (15 labels for 1 components)</summary>
41
+
42
+ | Component | Labels |
43
+ | --- | --- |
44
+ | **`ner`** | `CHRONOLOGIE`, `DECOR`, `EDIFICE`, `ESPECE`, `GPE`, `ID`, `LIEUDIT_SITE`, `LOC`, `MATERIAU`, `MOBILIER`, `ORG`, `PERSONNE`, `PEUPLE_CULTURE`, `STRUCTURE`, `TECHNIQUE_STYLE` |
45
+
46
+ </details>
47
+
48
+ ### Accuracy
49
+
50
+ | Type | Score |
51
+ | --- | --- |
52
+ | `ENTS_F` | 69.62 |
53
+ | `ENTS_P` | 67.78 |
54
+ | `ENTS_R` | 71.57 |
55
+ | `TOK2VEC_LOSS` | 63436.09 |
56
+ | `NER_LOSS` | 246059.83 |
config.cfg ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [paths]
2
+ train = "train.spacy"
3
+ dev = "dev.spacy"
4
+ vectors = "fr_core_news_lg"
5
+ init_tok2vec = null
6
+
7
+ [system]
8
+ gpu_allocator = null
9
+ seed = 0
10
+
11
+ [nlp]
12
+ lang = "fr"
13
+ pipeline = ["tok2vec","ner","entity_punctuation_removal"]
14
+ batch_size = 1000
15
+ disabled = []
16
+ before_creation = null
17
+ after_creation = null
18
+ after_pipeline_creation = null
19
+ tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}
20
+
21
+ [components]
22
+
23
+ [components.entity_punctuation_removal]
24
+ factory = "entity_punctuation_removal"
25
+
26
+ [components.ner]
27
+ factory = "ner"
28
+ incorrect_spans_key = null
29
+ moves = null
30
+ scorer = {"@scorers":"spacy.ner_scorer.v1"}
31
+ update_with_oracle_cut_size = 100
32
+
33
+ [components.ner.model]
34
+ @architectures = "spacy.TransitionBasedParser.v2"
35
+ state_type = "ner"
36
+ extra_state_tokens = false
37
+ hidden_width = 64
38
+ maxout_pieces = 2
39
+ use_upper = true
40
+ nO = null
41
+
42
+ [components.ner.model.tok2vec]
43
+ @architectures = "spacy.Tok2VecListener.v1"
44
+ width = ${components.tok2vec.model.encode.width}
45
+ upstream = "*"
46
+
47
+ [components.tok2vec]
48
+ factory = "tok2vec"
49
+
50
+ [components.tok2vec.model]
51
+ @architectures = "spacy.Tok2Vec.v2"
52
+
53
+ [components.tok2vec.model.embed]
54
+ @architectures = "spacy.MultiHashEmbed.v2"
55
+ width = ${components.tok2vec.model.encode.width}
56
+ attrs = ["NORM","PREFIX","SUFFIX","SHAPE"]
57
+ rows = [5000,1000,2500,2500]
58
+ include_static_vectors = true
59
+
60
+ [components.tok2vec.model.encode]
61
+ @architectures = "spacy.MaxoutWindowEncoder.v2"
62
+ width = 256
63
+ depth = 8
64
+ window_size = 1
65
+ maxout_pieces = 3
66
+
67
+ [corpora]
68
+
69
+ [corpora.dev]
70
+ @readers = "spacy.Corpus.v1"
71
+ path = ${paths.dev}
72
+ max_length = 0
73
+ gold_preproc = false
74
+ limit = 0
75
+ augmenter = null
76
+
77
+ [corpora.train]
78
+ @readers = "spacy.Corpus.v1"
79
+ path = ${paths.train}
80
+ max_length = 0
81
+ gold_preproc = false
82
+ limit = 0
83
+ augmenter = null
84
+
85
+ [training]
86
+ dev_corpus = "corpora.dev"
87
+ train_corpus = "corpora.train"
88
+ seed = ${system.seed}
89
+ gpu_allocator = ${system.gpu_allocator}
90
+ dropout = 0.1
91
+ accumulate_gradient = 1
92
+ patience = 1600
93
+ max_epochs = 0
94
+ max_steps = 20000
95
+ eval_frequency = 200
96
+ frozen_components = []
97
+ annotating_components = []
98
+ before_to_disk = null
99
+ before_update = null
100
+
101
+ [training.batcher]
102
+ @batchers = "spacy.batch_by_words.v1"
103
+ discard_oversize = false
104
+ tolerance = 0.2
105
+ get_length = null
106
+
107
+ [training.batcher.size]
108
+ @schedules = "compounding.v1"
109
+ start = 100
110
+ stop = 1000
111
+ compound = 1.001
112
+ t = 0.0
113
+
114
+ [training.logger]
115
+ @loggers = "spacy.ConsoleLogger.v1"
116
+ progress_bar = false
117
+
118
+ [training.optimizer]
119
+ @optimizers = "Adam.v1"
120
+ beta1 = 0.9
121
+ beta2 = 0.999
122
+ L2_is_weight_decay = true
123
+ L2 = 0.01
124
+ grad_clip = 1.0
125
+ use_averages = false
126
+ eps = 0.00000001
127
+ learn_rate = 0.001
128
+
129
+ [training.score_weights]
130
+ ents_f = 1.0
131
+ ents_p = 0.0
132
+ ents_r = 0.0
133
+ ents_per_type = null
134
+
135
+ [pretraining]
136
+
137
+ [initialize]
138
+ vectors = ${paths.vectors}
139
+ init_tok2vec = ${paths.init_tok2vec}
140
+ vocab_data = null
141
+ lookups = null
142
+ before_init = null
143
+ after_init = null
144
+
145
+ [initialize.components]
146
+
147
+ [initialize.tokenizer]
entity_punctuation_removal.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import spacy
2
+ from spacy.language import Language
3
+ import regex
4
+
5
+
6
+ @Language.component("entity_punctuation_removal")
7
+
8
+
9
+ def entity_punctuation_removal(doc):
10
+ # On liste nos entités
11
+ ents = list(doc.ents)
12
+
13
+ i = 0
14
+ while i < len(ents):
15
+ current_ent = ents[i]
16
+
17
+ # On attrape l'entité si :
18
+ # - Elle consiste en un unique signe de ponctuation
19
+ # - Et que son tag IOB est B (début d'entité)
20
+ # - Et qu'elle n'est pas suivie par une entité de tag IOB I (suite d'entité) OU qu'elle n'est suivie par aucun token
21
+ # Si l'entité est attrapée, elle est supprimée du doc
22
+ if i + 1 < len(ents) and regex.match(r'^\p{P}$', current_ent.text) and current_ent.root.ent_iob_ == "B" :
23
+ ents.pop(i)
24
+ elif i == len(ents) - 1 and regex.match(r'^\p{P}$', current_ent.text) and current_ent.root.ent_iob_ == "B" :
25
+ ents.pop(i)
26
+ else:
27
+ i += 1
28
+
29
+ # On met à jour le doc avec les entités modifiées
30
+ doc.ents = tuple(ents)
31
+
32
+ return doc
33
+
34
+ Language.component("entity_punctuation_removal", func=entity_punctuation_removal)
fr_arches_ner-any-py3-none-any.whl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7e42c101b766cc100c041e3e898d6565703687e9f2a20a14809f77aef3a11ca8
3
+ size 587844207
meta.json ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "lang":"fr",
3
+ "name":"arches_ner",
4
+ "version":"0.0.0",
5
+ "description":"",
6
+ "author":"",
7
+ "email":"",
8
+ "url":"",
9
+ "license":"",
10
+ "spacy_version":">=3.6.1,<3.7.0",
11
+ "spacy_git_version":"458bc5f45",
12
+ "vectors":{
13
+ "width":300,
14
+ "vectors":500000,
15
+ "keys":500000,
16
+ "name":"fr_vectors"
17
+ },
18
+ "labels":{
19
+ "tok2vec":[
20
+
21
+ ],
22
+ "ner":[
23
+ "CHRONOLOGIE",
24
+ "DECOR",
25
+ "EDIFICE",
26
+ "ESPECE",
27
+ "GPE",
28
+ "ID",
29
+ "LIEUDIT_SITE",
30
+ "LOC",
31
+ "MATERIAU",
32
+ "MOBILIER",
33
+ "ORG",
34
+ "PERSONNE",
35
+ "PEUPLE_CULTURE",
36
+ "STRUCTURE",
37
+ "TECHNIQUE_STYLE"
38
+ ]
39
+ },
40
+ "pipeline":[
41
+ "tok2vec",
42
+ "ner",
43
+ "entity_punctuation_removal"
44
+ ],
45
+ "components":[
46
+ "tok2vec",
47
+ "ner",
48
+ "entity_punctuation_removal"
49
+ ],
50
+ "disabled":[
51
+
52
+ ],
53
+ "performance":{
54
+ "ents_f":0.6962401393,
55
+ "ents_p":0.6778376222,
56
+ "ents_r":0.7156697557,
57
+ "ents_per_type":{
58
+ "STRUCTURE":{
59
+ "p":0.5348226018,
60
+ "r":0.6840336134,
61
+ "f":0.6002949853
62
+ },
63
+ "GPE":{
64
+ "p":0.6465201465,
65
+ "r":0.8609756098,
66
+ "f":0.7384937238
67
+ },
68
+ "ORG":{
69
+ "p":0.6923076923,
70
+ "r":0.5142857143,
71
+ "f":0.5901639344
72
+ },
73
+ "CHRONOLOGIE":{
74
+ "p":0.6940966011,
75
+ "r":0.7548638132,
76
+ "f":0.7232059646
77
+ },
78
+ "LOC":{
79
+ "p":0.7228915663,
80
+ "r":0.447761194,
81
+ "f":0.5529953917
82
+ },
83
+ "LIEUDIT_SITE":{
84
+ "p":0.5875,
85
+ "r":0.4585365854,
86
+ "f":0.5150684932
87
+ },
88
+ "PEUPLE_CULTURE":{
89
+ "p":0.2692307692,
90
+ "r":0.4666666667,
91
+ "f":0.3414634146
92
+ },
93
+ "MATERIAU":{
94
+ "p":0.6987951807,
95
+ "r":0.7341772152,
96
+ "f":0.7160493827
97
+ },
98
+ "TECHNIQUE_STYLE":{
99
+ "p":0.6875,
100
+ "r":0.5770491803,
101
+ "f":0.6274509804
102
+ },
103
+ "MOBILIER":{
104
+ "p":0.7508939213,
105
+ "r":0.6992230855,
106
+ "f":0.724137931
107
+ },
108
+ "ID":{
109
+ "p":0.7455673759,
110
+ "r":0.8368159204,
111
+ "f":0.7885607126
112
+ },
113
+ "EDIFICE":{
114
+ "p":0.4090909091,
115
+ "r":0.4090909091,
116
+ "f":0.4090909091
117
+ },
118
+ "ESPECE":{
119
+ "p":0.8,
120
+ "r":0.4285714286,
121
+ "f":0.5581395349
122
+ },
123
+ "PERSONNE":{
124
+ "p":0.7832167832,
125
+ "r":0.7943262411,
126
+ "f":0.7887323944
127
+ },
128
+ "DECOR":{
129
+ "p":0.3538461538,
130
+ "r":0.4423076923,
131
+ "f":0.3931623932
132
+ }
133
+ },
134
+ "tok2vec_loss":634.3608600097,
135
+ "ner_loss":2460.5982992177
136
+ },
137
+ "requirements":[
138
+
139
+ ]
140
+ }
ner/cfg ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "moves":null,
3
+ "update_with_oracle_cut_size":100,
4
+ "multitasks":[
5
+
6
+ ],
7
+ "min_action_freq":1,
8
+ "learn_tokens":false,
9
+ "beam_width":1,
10
+ "beam_density":0.0,
11
+ "beam_update_prob":0.0,
12
+ "incorrect_spans_key":null
13
+ }
ner/model ADDED
Binary file (183 kB). View file
 
ner/moves ADDED
@@ -0,0 +1 @@
 
 
1
+ ��moves��{"0":{},"1":{"MOBILIER":24870,"STRUCTURE":23884,"CHRONOLOGIE":21745,"ID":20721,"MATERIAU":11489,"GPE":4094,"TECHNIQUE_STYLE":3857,"LIEUDIT_SITE":3672,"PERSONNE":2710,"DECOR":2038,"LOC":1686,"ORG":1596,"ESPECE":1310,"EDIFICE":1216,"PEUPLE_CULTURE":757},"2":{"MOBILIER":24870,"STRUCTURE":23884,"CHRONOLOGIE":21745,"ID":20721,"MATERIAU":11489,"GPE":4094,"TECHNIQUE_STYLE":3857,"LIEUDIT_SITE":3672,"PERSONNE":2710,"DECOR":2038,"LOC":1686,"ORG":1596,"ESPECE":1310,"EDIFICE":1216,"PEUPLE_CULTURE":757},"3":{"MOBILIER":24870,"STRUCTURE":23884,"CHRONOLOGIE":21745,"ID":20721,"MATERIAU":11489,"GPE":4094,"TECHNIQUE_STYLE":3857,"LIEUDIT_SITE":3672,"PERSONNE":2710,"DECOR":2038,"LOC":1686,"ORG":1596,"ESPECE":1310,"EDIFICE":1216,"PEUPLE_CULTURE":757},"4":{"MOBILIER":24870,"STRUCTURE":23884,"CHRONOLOGIE":21745,"ID":20721,"MATERIAU":11489,"GPE":4094,"TECHNIQUE_STYLE":3857,"LIEUDIT_SITE":3672,"PERSONNE":2710,"DECOR":2038,"LOC":1686,"ORG":1596,"ESPECE":1310,"EDIFICE":1216,"PEUPLE_CULTURE":757,"":1},"5":{"":1}}�cfg��neg_key�
repartition.txt ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Corpus train:
2
+
3
+ CIF_antique_C001185_BD.conll
4
+ BFC_neo_F200449601_BD.conll
5
+ BFC_proto_F101604_01.conll
6
+ BFC_paleo_CB09001802_01.conll
7
+ BFC_moderne_F114238.conll
8
+ ARA_neo_F102890_01.conll
9
+ ARA_paleo_F125492_01.conll
10
+ ARA_contempo_F110732.conll
11
+ ARA_med_F108171.conll
12
+ BFC_med_F106159.conll
13
+ ARA_antique_F120714.conll
14
+ CIF_proto_F004820.conll
15
+ CIF_neo_C102845.conll
16
+ CIF_contempo_F115347.conll
17
+ CIF_moderne_C106097.conll
18
+ CIF_med_F148315_BD.conll
19
+
20
+
21
+ Corpus dev:
22
+
23
+ CIF_paleo_F110854.conll
24
+ BFC_contempo_F123602.conll
25
+ ARA_proto_F128240.conll
26
+
27
+
28
+ Corpus test:
29
+
30
+ BFC_antique_CB09003002.conll
31
+ ARA_moderne_F114296.conll
resultats_post_ponct.json ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "token_acc":1.0,
3
+ "token_p":1.0,
4
+ "token_r":1.0,
5
+ "token_f":1.0,
6
+ "ents_p":0.7385135135,
7
+ "ents_r":0.7481177276,
8
+ "ents_f":0.7432845971,
9
+ "ents_per_type":{
10
+ "PERSONNE":{
11
+ "p":0.8863636364,
12
+ "r":0.8387096774,
13
+ "f":0.861878453
14
+ },
15
+ "GPE":{
16
+ "p":0.4850299401,
17
+ "r":0.7941176471,
18
+ "f":0.6022304833
19
+ },
20
+ "LIEUDIT_SITE":{
21
+ "p":0.32,
22
+ "r":0.2424242424,
23
+ "f":0.275862069
24
+ },
25
+ "CHRONOLOGIE":{
26
+ "p":0.8034188034,
27
+ "r":0.752,
28
+ "f":0.7768595041
29
+ },
30
+ "STRUCTURE":{
31
+ "p":0.7475649351,
32
+ "r":0.7150621118,
33
+ "f":0.730952381
34
+ },
35
+ "ORG":{
36
+ "p":0.65,
37
+ "r":0.4482758621,
38
+ "f":0.5306122449
39
+ },
40
+ "LOC":{
41
+ "p":0.6875,
42
+ "r":0.431372549,
43
+ "f":0.5301204819
44
+ },
45
+ "TECHNIQUE_STYLE":{
46
+ "p":0.7205882353,
47
+ "r":0.6805555556,
48
+ "f":0.7
49
+ },
50
+ "ID":{
51
+ "p":0.8164291702,
52
+ "r":0.855887522,
53
+ "f":0.8356928357
54
+ },
55
+ "MATERIAU":{
56
+ "p":0.6729131175,
57
+ "r":0.7274401473,
58
+ "f":0.6991150442
59
+ },
60
+ "EDIFICE":{
61
+ "p":0.3913043478,
62
+ "r":0.75,
63
+ "f":0.5142857143
64
+ },
65
+ "PEUPLE_CULTURE":{
66
+ "p":0.0,
67
+ "r":0.0,
68
+ "f":0.0
69
+ },
70
+ "MOBILIER":{
71
+ "p":0.7248322148,
72
+ "r":0.7081967213,
73
+ "f":0.7164179104
74
+ },
75
+ "DECOR":{
76
+ "p":0.2040816327,
77
+ "r":0.3846153846,
78
+ "f":0.2666666667
79
+ },
80
+ "ESPECE":{
81
+ "p":0.625,
82
+ "r":0.5555555556,
83
+ "f":0.5882352941
84
+ }
85
+ },
86
+ "speed":17108.4619219715
87
+ }
tok2vec/cfg ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+
3
+ }
tok2vec/model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d9da4a07dd47786095e49afeabd31cbfff7f79a0019aeaa6f6f48dbc38a068c8
3
+ size 34434008
tokenizer ADDED
The diff for this file is too large to render. See raw diff
 
vocab/key2row ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d310125304022a2ff941d0224a09dc113048bc06a6d2bc1d551a163cb789c85c
3
+ size 6868181
vocab/lookups.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:76be8b528d0075f7aae98d6fa57a6d3c83ae480a8469e668d7b0af968995ac71
3
+ size 1
vocab/strings.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e9a2c495d7976654419f316e3ec3cab68e1a0a9dab9bd96d001f10eac940f6cb
3
+ size 10647622
vocab/vectors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:055541ce7b97e6d7bc98e75678cf1e58c71c962c1e77ebc674b7247e3ffb75b8
3
+ size 600000128
vocab/vectors.cfg ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "mode":"default"
3
+ }