File size: 28,808 Bytes
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8e3e99d
 
 
 
 
 
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cbc9da9
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2b82572
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
3166640
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6f4734
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8e3e99d
 
 
 
 
 
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cbc9da9
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2b82572
6a38202
 
 
 
 
 
 
 
 
 
 
 
 
 
3166640
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6f4734
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6a38202
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
/* LEADBOARD ๋ฌธ์ž์—ด ์‚ฌ์ „.
 *
 * ๋ฌธ์ž์—ด์€ ์ „๋ถ€ ์—ฌ๊ธฐ์—๋งŒ ๋‘”๋‹ค. ํ™”๋ฉด ์ฝ”๋“œ์— ํ•œ๊ตญ์–ด๊ฐ€ ์„ž์ด๋ฉด ์˜์–ดํŒ์ด ์กฐ์šฉํžˆ ๋’ค์ฒ˜์ง„๋‹ค.
 * ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค - ์˜๋ฌธ ์ถ•์•ฝํ˜•(don't) ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์„ ๋Š์–ด ์‚ฌ์ „ ์ „์ฒด๋ฅผ
 * ๋ฌด๋„ˆ๋œจ๋ฆฐ ์ „๋ก€๊ฐ€ ์žˆ๋‹ค. ์ถ•์•ฝํ˜•์€ ํ’€์–ด ์“ด๋‹ค.
 */
window.T = {
ko: {
  htmlLang: "ko",
  title: "LEADBOARD โ€” ์‹ ์•ฝ ์˜ˆ์ธก ๋„๊ตฌ ์‹œํ—˜๋Œ€",
  navSpec: "๊ทœ๊ฒฉ",
  login: "HF ๋กœ๊ทธ์ธ", logout: "๋กœ๊ทธ์•„์›ƒ",
  langBtn: "EN",

  heroKicker: "AI ์‹ ์•ฝ ๊ฐœ๋ฐœ ๋ฒค์น˜๋งˆํฌ",
  heroTag: "์‹ ์•ฝ ์˜ˆ์ธก ๋„๊ตฌ๋ฅผ<br>๋ถ„์•ผ๋ณ„๋กœ, ๋™์ผํ•œ ๊ธฐ์ค€์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค",
  heroLede: "๋ณธ ์‹œํ—˜๋Œ€๋Š” ์ •๋‹ต์„ ๋ฐฐํฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  <b>ํ•™์Šตํ•˜์ง€ ์•Š์€ ๊ธฐ์ค€์„ </b>๊ณผ " +
            "<b>ํ•ด๋‹น ์ข…๋ชฉ์˜ ์‹คํ—˜์‹ค ๊ฐ„ ์žฌํ˜„ ์˜ค์ฐจ</b>๋ฅผ ์‚ฌ์ „์— ๊ณต์‹œํ•˜์—ฌ, ๋ณด๊ณ ๋œ ์„ฑ๋Šฅ์ด " +
            "์ธก์ • ํ•œ๊ณ„ ๋Œ€๋น„ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ํŒ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.",

  statBoards: "๊ฐœ์„ค ๋ถ€๋ฌธ", statCompounds: "ํ…Œ์ŠคํŠธ ํ™”ํ•ฉ๋ฌผ", statFields: "๋ถ„์•ผ",
  statClauses: "๊ทœ๊ฒฉ ์กฐํ•ญ", statPlanned: "๊ณ„ํš ๋ถ€๋ฌธ",

  secLeaders: "๋ถ€๋ฌธ๋ณ„ 1์œ„",
  secLeadersLead: "๊ฐ ๋ถ€๋ฌธ์˜ ํ˜„์žฌ ์„ ๋‘์ž…๋‹ˆ๋‹ค. ์ฐธ๊ฐ€ ์ œ์ถœ์ด ์—†๋Š” ๋ถ€๋ฌธ์€ ๋น„์›Œ ๋‘ก๋‹ˆ๋‹ค โ€” ๊ธฐ์ค€์„ ์€ ๋„˜์–ด์•ผ ํ•  ์„ ์ด์ง€ ์šฐ์Šน์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.",
  thBoard: "๋ถ€๋ฌธ", thBest: "1์œ„", thScore: "์ ์ˆ˜", thVs: "๊ธฐ์ค€์„  ๋Œ€๋น„", thN: "ํ…Œ์ŠคํŠธ",
  noLeader: "์•„์ง ์—†์Œ",
  leadersEmpty: n => `${n}๊ฐœ ๋ถ€๋ฌธ ๋ชจ๋‘ ์ฐธ๊ฐ€ ์ œ์ถœ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.`,
  leadersSome: (a, b) => `${b}๊ฐœ ๋ถ€๋ฌธ ์ค‘ ${a}๊ฐœ์— ์„ ๋‘๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.`,
  secBrowse: "๋ถ„์•ผ", secBrowseLead: "๋ถ„์•ผ๋ฅผ ์„ ํƒํ•˜๋ฉด ์†Œ์† ๋ถ€๋ฌธ์˜ ์ˆœ์œ„ํ‘œ์™€ ์ œ์ถœ ์ฐฝ๊ตฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.",
  secEvidence: "์ธก์ • ํ•œ๊ณ„ ์ง€ํ˜•",
  secEvidenceLead: "๊ฐ€๋กœ์ถ•์€ <b>๊ธฐ์ค€์„  ์˜ค์ฐจ รท ์‹คํ—˜ ์žฌํ˜„ ์˜ค์ฐจ</b>์ž…๋‹ˆ๋‹ค. 1.0 ์— ๊ทผ์ ‘ํ• ์ˆ˜๋ก " +
                   "๋ชจ๋ธ์„ ๊ฐœ์„ ํ•ด๋„ <b>์ธก์ •์˜ ์‚ฐํฌ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ผ</b>์— ๊ฐ€๊นŒ์›Œ์ง‘๋‹ˆ๋‹ค.",
  secMethod: "์ฑ„์  ๊ทœ๊ฒฉ 8๊ฐœ ์กฐํ•ญ",
  secMethodLead: "์ฐธ๊ฐ€์ž์—๊ฒŒ ๋ถ€๊ณผํ•˜๋Š” ์š”๊ฑด์ด ์•„๋‹ˆ๋ผ, ์ฑ„์ ์ž๊ฐ€ ์Šค์Šค๋กœ์—๊ฒŒ ๋ถ€๊ณผํ•˜๋Š” ์ œ์•ฝ์ž…๋‹ˆ๋‹ค.",
  secData: "๋ฐ์ดํ„ฐ์™€ ๋ผ์ด์„ ์Šค",

  terrLeft: "์‹คํ—˜ ์˜ค์ฐจ ์•ˆ์ชฝ", terrRight: "๋ชจ๋ธ ์˜ค์ฐจ๊ฐ€ ๋” ํผ",
  insideCount: n => `${n}๊ฐœ ๋ถ€๋ฌธ์ด 1.3๋ฐฐ ์•ˆ์ชฝ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.`,
  lostNote: n => `<b>${n}๊ฐœ ๋ถ€๋ฌธ์—์„œ ํ•™์Šต ๊ธฐ์ค€์„ ์ด ์ƒ์ˆ˜ ์˜ˆ์ธก์— ๋ฏธ๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.</b> ` +
      "ํ•™์Šตํ•˜์ง€ ์•Š์€ ์˜ˆ์ธก์ด ๋” ์ •ํ™•ํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๊ธฐ์ค€์„ ์„ ์ˆœ์œ„ํ‘œ์— ์ƒ์ฃผ์‹œํ‚ค์ง€ " +
      "์•Š์œผ๋ฉด(3์กฐ) ์ด ์‚ฌ์‹ค์€ ์–ด๋–ค ์ง€ํ‘œ์—๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",

  openN: n => `${n} ๊ฐœ์„ค`, prep: "์ค€๋น„ ์ค‘",
  cardBoards: (o, p) => `๋ถ€๋ฌธ ${o}/${p}`,
  cardCompounds: n => `${n} ํ™”ํ•ฉ๋ฌผ`,

  clauses: [
    ["์ •๋‹ต์€ ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š”๋‹ค", "๋ถ€๋ฌธ๋งˆ๋‹ค ๋ถ„ํ•  ๋“ฑ๊ธ‰๊ณผ ์ •๋‹ต ๋“ฑ๊ธ‰์„ ๊ณต์‹œํ•œ๋‹ค"],
    ["์ ์ˆ˜๋งˆ๋‹ค ๋‘ ๊ฐœ์˜ ์ง€๋ฌธ", "๋ฐ์ดํ„ฐ ํŒ๋ณธ๊ณผ ์ฑ„์  ์ฝ”๋“œ์˜ SHA-256 ์„ ๊ฐ์ธํ•œ๋‹ค"],
    ["๊ธฐ์ค€์„ ์€ ์ˆœ์œ„ํ‘œ์—์„œ ๋‚ด๋ ค๊ฐ€์ง€ ์•Š๋Š”๋‹ค", "์ƒ์ˆ˜ ์˜ˆ์ธก ยท ์ตœ๊ทผ์ ‘ ์ด์›ƒ ยท Morgan+LightGBM ์˜๊ตฌ ๋“ฑ์žฌ"],
    ["์‹คํ—˜ ์˜ค์ฐจ๋ฅผ ์‚ฌ์ „ ๊ณต์‹œํ•œ๋‹ค", "๋™์ผ ํ™”ํ•ฉ๋ฌผ์˜ ๋…ผ๋ฌธ ๊ฐ„ ์ธก์ • ์ฐจ์ด๋กœ ์‚ฐ์ถœํ•œ๋‹ค"],
    ["๋ˆ„์ถœ์€ ๋งค ์ œ์ถœ๋งˆ๋‹ค ๊ฒ€์‚ฌํ•œ๋‹ค", "์ •๋‹ต๊ณผ ์†Œ์ˆ˜ ์ž๋ฆฌ๊นŒ์ง€ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์˜ ๊ณผ๋ฐ€๋„๋ฅผ ๊ณต์‹œํ•œ๋‹ค"],
    ["๊ฒฐ๊ณผ ์ œ์ถœ๊ณผ ๋ชจ๋ธ ์ œ์ถœ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค", "์ง์ ‘ ์žฌ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•œ ์ œ์ถœ์—๋งŒ [๊ฒ€์ฆ๋จ]์„ ๋ถ€์—ฌํ•œ๋‹ค"],
    ["๋ฏธ์‚ฐ์ถœ์€ 0์ ์ด ์•„๋‹ˆ๋‹ค", "์ธก์ •ํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ๊ณผ ์ธก์ •ํ•˜์—ฌ ๋‚˜์œ ๊ฒƒ์€ ๋‹ค๋ฅด๋‹ค"],
    ["๋ฐ˜๋ณต ์ œ์ถœ๋กœ ์ˆœ์œ„๊ฐ€ ์˜ค๋ฅด์ง€ ์•Š๋Š”๋‹ค", "Ladder ยท Blum &amp; Hardt, ICML 2015"]
  ],

  all: "์ „์ฒด",
  tabRank: "์ˆœ์œ„", tabSubmit: "์ œ์ถœ", tabInfo: "๋ถ€๋ฌธ ์ •๋ณด",
  thRank: "#", thMethod: "๋ฐฉ๋ฒ•", thUser: "์ œ์ถœ์ž", thLeak: "๋ˆ„์ถœ", thGrade: "๋“ฑ๊ธ‰",
  baseline: "๊ธฐ์ค€์„ ", submitted: "์ œ์ถœ๋จ", verified: "๊ฒ€์ฆ๋จ", reference: "์ฐธ์กฐ ๋„๊ตฌ",
  leakHigh: "์กฐํšŒ ํ”์ ", leakElev: "๊ทผ์ ‘ ๊ณผ๋ฐ€",
  noiseNote: v => `<b>์‹คํ—˜ ์žฌํ˜„ ์˜ค์ฐจ ${v}.</b> ์ด ํญ ์•ˆ์˜ ์ฐจ์ด๋Š” ์ˆœ์œ„ ์ฐจ์ด๋กœ ์ฃผ์žฅํ•˜์ง€ ` +
      "์•Š์Šต๋‹ˆ๋‹ค (4์กฐ). ๊ธฐ์ค€์„  3์ข…์€ ์ˆœ์œ„ํ‘œ์—์„œ ๋‚ด๋ ค๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค (3์กฐ).",
  noEntries: "์ฐธ๊ฐ€ ์ œ์ถœ์ด ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. ํ‘œ์— ํ‘œ์‹œ๋œ ๊ฒƒ์€ ๊ธฐ์ค€์„ ์ž…๋‹ˆ๋‹ค.",
  updated: t => `์ˆœ์œ„ ๊ฐฑ์‹  ${t}`,

  gradeH: "๋“ฑ๊ธ‰", holdoutH: "ํ™€๋“œ์•„์›ƒ", noiseH: "์‹คํ—˜ ์žฌํ˜„ ์˜ค์ฐจ", baseH: "๊ธฐ์ค€์„ ",
  splitGrade: "๋ถ„ํ•  ๋“ฑ๊ธ‰", answerGrade: "์ •๋‹ต ๋“ฑ๊ธ‰",
  gradeNote: {
    T: "์‹œ๊ฐ„ ๋ถ„ํ•  โ€” ์ตœ์ดˆ ๋ณด๊ณ  ์—ฐ๋„ ๊ธฐ์ค€. ๊ธฐ์ค€์ผ ์ดํ›„ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ํ™”ํ•ฉ๋ฌผ๋งŒ ํ‰๊ฐ€ํ•œ๋‹ค",
    S: "์Šค์บํด๋“œ ๋ถ„ํ•  โ€” ๊ณจ๊ฒฉ์ด ํ›ˆ๋ จ์— ์—†๋Š” ํ™”ํ•ฉ๋ฌผ๋งŒ ํ‰๊ฐ€ํ•œ๋‹ค",
    P1: "์ •๋‹ต์ด ๊ณต๊ฐœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•œ๋‹ค. ์กฐํšŒ ๋ฐฉ์–ด๋Š” 8์กฐ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค",
    P2: "์›์ž๋ฃŒ๋Š” ๊ณต๊ฐœ์ง€๋งŒ ์„ ๋ณ„๊ณผ ํ™˜์‚ฐ์ด ๋ณธ ํŒ๋ณธ์„ ๊ตฌ์„ฑํ•œ๋‹ค. ๊ณต๊ฐœ DB ์กฐํšŒ๋กœ๋Š” ๋™์ผ ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค",
    P3: "ํŒŒํŠธ๋„ˆ๋กœ๋ถ€ํ„ฐ ์ œ๊ณต๋ฐ›์€ ๋ฏธ๊ณตํ‘œ ์‹ค์ธก",
    P4: "๋ถ€๋ฌธ ๊ฐœ์„ค ์ดํ›„ ์ƒ์„ฑ๋œ ์ธก์ •. ๊ฐœ์„ค ์‹œ์ ์— ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค"
  },
  kSource: "์ถœ์ฒ˜", kCut: "๋ถ„ํ•  ๊ธฐ์ค€์ผ", kTrainTest: "ํ›ˆ๋ จ / ํ…Œ์ŠคํŠธ",
  kOverlap: "๊ตฌ์กฐ ๊ฒน์นจ", kThr: "๋ถ„๋ฅ˜ ์ž„๊ณ„", kSha: "๋ฐ์ดํ„ฐ ์ง€๋ฌธ", kLicense: "๋ผ์ด์„ ์Šค",
  cutNote: "์ตœ์ดˆ ๋ณด๊ณ  ์—ฐ๋„ ๊ธฐ์ค€", overlapNote: "0 (์‹œ๊ฐ„ ๋ถ„ํ•  ์ •์˜์ƒ)",
  posRate: p => `์–‘์„ฑ ${p}%`,
  noisePairs: (p, c) => `๋น„๊ต์Œ ${p} ยท ํ™”ํ•ฉ๋ฌผ ${c}`,
  noiseDesc: "๋™์ผ ํ™”ํ•ฉ๋ฌผ์„ <b>์„œ๋กœ ๋‹ค๋ฅธ ๋…ผ๋ฌธ</b>์—์„œ ์ธก์ •ํ•œ ๊ฐ’์˜ ์ฐจ์ด",
  noiseSd: "๋‹จ์ผ ์ธก์ • ํ‘œ์ค€ํŽธ์ฐจ ์ถ”์ •",
  nearNote: (p, hi) => `๋ถ„๋ฅ˜ ์ž„๊ณ„์„ ์—์„œ ์‹คํ—˜ ์˜ค์ฐจ 1 ํ‘œ์ค€ํŽธ์ฐจ ์•ˆ์— ์žˆ๋Š” ํ…Œ์ŠคํŠธ ํ™”ํ•ฉ๋ฌผ์ด ` +
      `<b>${p}%</b> ์ž…๋‹ˆ๋‹ค. ` + (hi ? "์žฌ์ธก์ • ์‹œ ๋ผ๋ฒจ์ด ๋ฐ˜์ „๋  ์ˆ˜ ์žˆ์–ด <b>ํšŒ๊ท€๋ฅผ ์ฃผ์ง€ํ‘œ</b>๋กœ ๋‘ก๋‹ˆ๋‹ค."
                                    : "๋ถ„๋ฅ˜ ์ง€ํ‘œ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."),
  beatsYes: "ํ•™์Šต ๊ธฐ์ค€์„ ์ด ์ƒ์ˆ˜ ์˜ˆ์ธก์„ ์ƒํšŒํ–ˆ์Šต๋‹ˆ๋‹ค.",
  beatsNo: "<b>ํ•™์Šต ๊ธฐ์ค€์„ ์ด ์ƒ์ˆ˜ ์˜ˆ์ธก์— ๋ฏธ๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.</b> ํ•™์Šตํ•˜์ง€ ์•Š์€ ์˜ˆ์ธก์ด ๋” ์ •ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค.",
  noiseFloorRow: "์‹คํ—˜ ์˜ค์ฐจ ๋ฐ”๋‹ฅ",

  step1: "ํ…Œ์ŠคํŠธ์…‹ ์ˆ˜๋ น", step2: "์˜ˆ์ธก ์ œ์ถœ", step3: "์ปจํ…Œ์ด๋„ˆ ์ œ์ถœ (์„ ํƒ)",
  step1d: n => `ํ™”ํ•ฉ๋ฌผ <b>${n}๊ฐœ</b>์˜ ๊ตฌ์กฐ(SMILES)๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ์€ ๋ณธ ์„œ๋ฒ„์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.`,
  licLine: "ChEMBL ํŒŒ์ƒ ยท CC BY-SA 3.0 โ€” ์žฌ๋ฐฐํฌ ์‹œ ์ถœ์ฒ˜์™€ ๋™์ผ ๋ผ์ด์„ ์Šค๋ฅผ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.",
  dl: "ํ…Œ์ŠคํŠธ์…‹ ๋‚ด๋ ค๋ฐ›๊ธฐ",
  fMethod: "๋ฐฉ๋ฒ• ์ด๋ฆ„", fMethodH: "์ˆœ์œ„ํ‘œ์— ํ‘œ์‹œ๋  ๋ช…์นญ",
  fTrain: "ํ•™์Šต์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ", fTrainH: "5์กฐ ๋ˆ„์ถœ ๊ฒ€์‚ฌ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค",
  fPred: "์˜ˆ์ธก๊ฐ’", fPredH: "JSON ๋˜๋Š” CSV (compound_id, prediction)",
  fPredAx: n => `์ด ๋ถ€๋ฌธ์€ ์ถ•์ด ${n}๊ฐœ๋‹ค โ€” ํ™”ํ•ฉ๋ฌผ๋งˆ๋‹ค ์ˆซ์ž ${n}๊ฐœ์งœ๋ฆฌ ๋ฐฐ์—ด์„ JSON ์œผ๋กœ ์˜ฌ๋ฆฐ๋‹ค`,
  drop: "ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค ๋†“๊ฑฐ๋‚˜ ํด๋ฆญํ•˜์—ฌ ์„ ํƒ",
  send: "์ œ์ถœ", needLogin: "์ œ์ถœํ•˜๋ ค๋ฉด HF ๊ณ„์ • ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.",
  step3d: "๋ชจ๋ธ๊ณผ ์ถ”๋ก  ํ™˜๊ฒฝ์„ ํ•จ๊ป˜ ์ œ์ถœํ•˜๋ฉด ์ง์ ‘ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋™์ผ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  " +
          "[๊ฒ€์ฆ๋จ]์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค (6์กฐ).",
  ladderNote: (v, c) => `<b>8์กฐ.</b> ๋ฐ˜๋ณต ์ œ์ถœ๋กœ๋Š” ์ˆœ์œ„๊ฐ€ ์˜ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง์ „ ์ตœ๊ณ  ์ ์ˆ˜๋ฅผ ` +
      `์‹คํ—˜ ์˜ค์ฐจ <b>${v}</b> ์ด์ƒ ๊ฐœ์„ ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ƒˆ ์ ์ˆ˜๊ฐ€ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค. ์ผ์ผ ์ œ์ถœ ํ•œ๋„ ${c}ํšŒ.`,
  accepted: id => `์ ‘์ˆ˜ ์™„๋ฃŒ ยท ์ œ์ถœ ๋ฒˆํ˜ธ ${id}`,
  parseFail: m => `์˜ˆ์ธก๊ฐ’์„ ํ•ด์„ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: ${m}`,
  sending: n => `${n}๊ฐœ ํ•ญ๋ชฉ ์ „์†ก ์ค‘`,
  emptyCat: "๋ณธ ๋ถ„์•ผ๋Š” ์•„์ง ๊ฐœ์„ค๋œ ๋ถ€๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค.",
  loadFail: "ํ™”๋ฉด์„ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.",
  dataNote: "๋ชจ๋“  ๋ถ€๋ฌธ์€ ChEMBL_37 ์—์„œ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ์ตœ์ดˆ ๋ณด๊ณ  ์—ฐ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹œ๊ฐ„ ๋ถ„ํ• ํ–ˆ์Šต๋‹ˆ๋‹ค. " +
            "๋ฐฐํฌ๋˜๋Š” ํ…Œ์ŠคํŠธ์…‹์€ ๊ตฌ์กฐ๋งŒ ํฌํ•จํ•˜๋ฉฐ ๋ผ๋ฒจ์€ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  srcLabel: "๋ฐ์ดํ„ฐ ์ถœ์ฒ˜",

  sib: "์ž๋งค ์‹œํ—˜๋Œ€",
  sibOdc: "AI๊ฐ€ ์ฐพ์•„๋‚ธ ์‹ ์•ฝ ํ›„๋ณด ๋ฌผ์งˆ์„ ๊ณ„์‚ฐ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค",
  sibOmc: "์ „๊ณ ์ฒด ๋ฐฐํ„ฐ๋ฆฌ ์‹ ์†Œ์žฌ๋ฅผ ์ฐพ๋Š” ์‹œํ—˜๋Œ€์ž…๋‹ˆ๋‹ค",

  secWhy: "์™œ ๋งŒ๋“ค์—ˆ๋Š”๊ฐ€",
  why1: "AI๊ฐ€ ์‹ ์•ฝ ํ›„๋ณด๋ฅผ ์Ÿ์•„๋‚ด๋Š” ๋งŒํผ, ๊ทธ ํ›„๋ณด๋ฅผ ํŒ์ •ํ•˜๋Š” <b>์˜ˆ์ธก ๋„๊ตฌ</b>๋„ ์Ÿ์•„์ง‘๋‹ˆ๋‹ค. " +
        "ํก์ˆ˜ ยท ๋Œ€์‚ฌ ยท ๋…์„ฑ ยท ํ‘œ์  ๊ฒฐํ•ฉ๋งˆ๋‹ค ๋„๊ตฌ๊ฐ€ ์ˆ˜์‹ญ ๊ฐœ์”ฉ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ๋„๊ตฌ๋“ค์˜ " +
        "์„ฑ๋Šฅ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๊ธฐ ๋…ผ๋ฌธ์—์„œ, ์ž๊ธฐ๊ฐ€ ๊ณ ๋ฅธ ๋ฐ์ดํ„ฐ๋กœ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. " +
        "<b>๊ฐ™์€ ๋ฌธ์ œ๋กœ ์žฐ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋น„๊ต๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.</b>",
  why2: "2026๋…„ 2์›”, ๋„๋ฆฌ ์“ฐ์ด๋Š” ADMET ๋ฆฌ๋”๋ณด๋“œ 22๊ฐœ ์ข…๋ชฉ์˜ ์ƒ์œ„ ๋ชจ๋ธ์„ ์ „์ˆ˜ ๊ฒ€์ฆํ•œ ๊ฒฐ๊ณผ๊ฐ€ " +
        "๋ณด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ฆ ๋Œ€์ƒ 66๊ฐœ ์ค‘ ์™„์ „ํžˆ ์žฌํ˜„๋œ ๊ฒƒ์€ 3๊ฐœ์˜€๊ณ , ํ…Œ์ŠคํŠธ์…‹์— ๋งž์ถ˜ ๋ชจ๋ธ์€ " +
        "22๊ฐœ ์ข…๋ชฉ ์ค‘ 10๊ฐœ์—์„œ 3์œ„ ์•ˆ์— ์ง„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์„ค๊ณ„๋ฅผ ์ •์งํ•˜๊ฒŒ ๊ตฌ์„ฑํ•œ ๋ชจ๋ธ์€ 2๊ฐœ์˜€์Šต๋‹ˆ๋‹ค.",
  why3: "๋ฌธ์ œ๋Š” ํŠน์ • ์—ฐ๊ตฌ์‹ค์ด ์•„๋‹ˆ๋ผ <b>์‹œํ—˜ ๋ฐฉ์‹</b>์ž…๋‹ˆ๋‹ค. " +
        "์ •๋‹ต์„ ํ•จ๊ป˜ ๋ฐฐํฌํ•˜๋Š” ์‹œํ—˜์€, ์•„๋ฌด๋ฆฌ ์„ฑ์‹คํžˆ ์น˜๋Ÿฌ๋„ ์˜ˆ์ธก๋ ฅ๊ณผ ๋…ธ์ถœ์„ ๋ถ„๋ฆฌํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.",
  whyCite: "Koleiev ์™ธ, Critical Assessment of ML models for ADMET Prediction in TDC leaderboards, bioRxiv 2026",

  secFound: "๋ณธ ์‹œํ—˜๋Œ€๊ฐ€ ์‹ค์ธกํ•œ ๊ฒƒ",
  secFoundLead: "์•„๋ž˜๋Š” ์ธ์šฉ์ด ์•„๋‹ˆ๋ผ ๋ณธ ์‹œํ—˜๋Œ€๊ฐ€ 19๊ฐœ ๋ถ€๋ฌธ์—์„œ ์ง์ ‘ ์‚ฐ์ถœํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.",
  ratioLabel: "์˜ค์ฐจ รท ์‹คํ—˜์˜ค์ฐจ",
  found1t: "๋ถ„ํ•  ๋ฐฉ์‹๋งŒ์œผ๋กœ AUROC ๊ฐ€ 0.21 ์ด๋™ํ•œ๋‹ค",
  found1d: "๋™์ผ ๋ฐ์ดํ„ฐ ยท ๋™์ผ ๋ชจ๋ธ(Morgan+LightGBM ๊ธฐ๋ณธ๊ฐ’) ยท ๋™์ผ ํ…Œ์ŠคํŠธ ๋น„์œจ์—์„œ ๋ถ„ํ• ๋งŒ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. " +
           "hERG ๊ธฐ์ค€ ๋ฌด์ž‘์œ„ ๋ถ„ํ•  0.818 โ†’ ์‹œ๊ฐ„ ๋ถ„ํ•  0.606. " +
           "<b>๋ถ„ํ•  ๋ฐฉ์‹์ด ๊ณต์‹œ๋˜์ง€ ์•Š์€ ์ˆœ์œ„ํ‘œ์˜ ์ˆ˜์น˜๋Š” ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.</b>",
  found2t: "19๊ฐœ ๋ถ€๋ฌธ ์ค‘ 7๊ฐœ์—์„œ ํ•™์Šต ๊ธฐ์ค€์„ ์ด ์ƒ์ˆ˜ ์˜ˆ์ธก์— ๋ฏธ๋‹ฌํ–ˆ๋‹ค",
  found2d: "ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ์ค‘์•™๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋‚ด๋†“๋Š” ์˜ˆ์ธก์ด ํ•™์Šตํ•œ ๋ชจ๋ธ๋ณด๋‹ค ์ •ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. " +
           "๊ธฐ์ค€์„ ์„ ์ˆœ์œ„ํ‘œ์— ์ƒ์ฃผ์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด ์ด ์‚ฌ์‹ค์€ ์–ด๋–ค ์ง€ํ‘œ์—๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  found3t: "๋ชจ๋ธ ์˜ค์ฐจ๊ฐ€ ์‹คํ—˜ ์˜ค์ฐจ์˜ 0.91 ~ 2.79 ๋ฐฐ ๊ตฌ๊ฐ„์— ์žˆ๋‹ค",
  found3d: "๋™์ผ ํ™”ํ•ฉ๋ฌผ์„ ์„œ๋กœ ๋‹ค๋ฅธ ๋…ผ๋ฌธ์—์„œ ์ธก์ •ํ•œ ๊ฐ’์˜ ์ฐจ์ด๋กœ ๊ฐ ๋ถ€๋ฌธ์˜ ์‹คํ—˜ ์žฌํ˜„ ์˜ค์ฐจ๋ฅผ " +
           "์‚ฐ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. 7๊ฐœ ๋ถ€๋ฌธ์€ ๊ทธ ์˜ค์ฐจ์˜ 1.3๋ฐฐ ์•ˆ์ชฝ์— ์žˆ์Šต๋‹ˆ๋‹ค.",

  secHow: "์ฐธ์—ฌ ๋ฐฉ๋ฒ•",
  how1t: "ํ…Œ์ŠคํŠธ์…‹์„ ๋ฐ›์Šต๋‹ˆ๋‹ค",
  how1d: "๋ถ€๋ฌธ์„ ์„ ํƒํ•˜๋ฉด ํ™”ํ•ฉ๋ฌผ ๊ตฌ์กฐ(SMILES)์™€ ์‹๋ณ„์ž๋งŒ ๋‹ด๊ธด ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค. " +
         "๋ผ๋ฒจ์€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋ณธ ์„œ๋ฒ„์—๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  how2t: "์›ํ•˜๋Š” ๋„๊ตฌ๋กœ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค",
  how2d: "์ž์ฒด ๋ชจ๋ธ ยท ์ƒ์šฉ ๋„๊ตฌ ยท ๊ณต๊ฐœ ๊ฐ€์ค‘์น˜ ยท ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ˜ ๊ณ„์‚ฐ ๋ฌด์—‡์ด๋“  ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. " +
         "ํ•™์Šต์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ธฐ์žฌํ•ด ์ฃผ์‹ญ์‹œ์˜ค (5์กฐ ๋ˆ„์ถœ ๊ฒ€์‚ฌ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค).",
  how3t: "์˜ˆ์ธก๊ฐ’์„ ์ œ์ถœํ•˜๋ฉด ์ž๋™ ์ฑ„์ ๋ฉ๋‹ˆ๋‹ค",
  how3d: "JSON ๋˜๋Š” CSV ๋กœ ์˜ฌ๋ฆฌ๋ฉด ์ฑ„์  ยท ๋ˆ„์ถœ ๊ฒ€์‚ฌ ยท ์ง€๋ฌธ ๊ฐ์ธ์ด ์ž๋™ ์ˆ˜ํ–‰๋˜๊ณ , " +
         "๊ธฐ์ค€์„  3์ข… ๋ฐ ์‹คํ—˜ ์˜ค์ฐจ์™€ ํ•จ๊ป˜ ์ˆœ์œ„ํ‘œ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.",

  secMetric: "์ฑ„์  ๊ธฐ์ค€",
  mMae: "์ฃผ์ง€ํ‘œ. ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ธก๊ฐ’์˜ ํ‰๊ท  ์ ˆ๋Œ€ ์˜ค์ฐจ์ž…๋‹ˆ๋‹ค. ๋‚ฎ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค.",
  mAuroc: "๋ถ„๋ฅ˜ ์ง€ํ‘œ. ์ž„๊ณ„์„  ์œ„์•„๋ž˜๋ฅผ ๊ฐ€๋ฅด๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค. 0.5 ๋Š” ๋ฌด์ž‘์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.",
  mPrauc: "์–‘์„ฑ์ด ๋“œ๋ฌธ ๋ถ€๋ฌธ์—์„œ AUROC ๋ณด๋‹ค ์‹คํƒœ๋ฅผ ์ž˜ ๋“œ๋Ÿฌ๋ƒ…๋‹ˆ๋‹ค.",
  mNoise: "๋™์ผ ํ™”ํ•ฉ๋ฌผ์˜ ๋…ผ๋ฌธ ๊ฐ„ ์ธก์ • ์ฐจ์ด๋กœ ์‚ฐ์ถœํ•œ ์žฌํ˜„ ์˜ค์ฐจ์ž…๋‹ˆ๋‹ค. ์ด ํญ ์•ˆ์˜ ์ฐจ์ด๋Š” ์ˆœ์œ„๋กœ ์ธ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  mRatio: "์ตœ์„  ๊ธฐ์ค€์„  ์˜ค์ฐจ รท ์‹คํ—˜ ์˜ค์ฐจ. 1.0 ์— ๊ทผ์ ‘ํ•˜๋ฉด ์ธก์ • ํ•œ๊ณ„์— ๋„๋‹ฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.",
  mLeak: "์˜ˆ์ธก๊ฐ’์ด ์‹ค์ธก๊ฐ’๊ณผ ์†Œ์ˆ˜ ์ž๋ฆฌ๊นŒ์ง€ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์˜ ๋ฐ€๋„์ž…๋‹ˆ๋‹ค. ์˜๋„๋ฅผ ํŒ์ •ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์‹ค๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.",

  secOwn: "์ œ์ถœ๋ฌผ์˜ ์ทจ๊ธ‰",
  own1: "<b>์ œ์ถœํ•œ ์˜ˆ์ธก๊ฐ’์€ ์ œ์ถœ์ž์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.</b> VIDRAFT ๋Š” ์ฑ„์ ๊ณผ ์ˆœ์œ„ํ‘œ ํ‘œ์‹œ์— ํ•„์š”ํ•œ " +
        "๋ฒ”์œ„์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐœ๋ณ„ ์ œ์ถœ์„ ์ž์‚ฌ ํŒŒ์ดํ”„๋ผ์ธ์— ํˆฌ์ž…ํ•˜์ง€ ์•Š๊ณ  ์ œ3์ž์—๊ฒŒ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  own2: "๋‹ค๋งŒ <b>๋ถ€๋ฌธ ๋‹จ์œ„ ์ง‘๊ณ„</b>๋Š” ๊ณต๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ์ „ ์ œ์ถœ์˜ ํ•ฉ์˜ ์˜ˆ์ธก, ๋ชจ๋“  ๋ฐฉ๋ฒ•์ด " +
        "์‹คํŒจํ•œ ํ™”ํ•ฉ๋ฌผ ๋ชฉ๋ก, ์ ‘๊ทผ๋ฒ•๋ณ„ ์„ฑ๋Šฅ ์ง€ํ˜• ๋“ฑ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ์ œ์ถœ์ž์˜ ์˜ˆ์ธก๊ฐ’์€ ์‹๋ณ„๋˜์ง€ ์•Š์œผ๋ฉฐ, " +
        "์ง‘๊ณ„ ๊ฒฐ๊ณผ๋Š” ์ฐธ๊ฐ€์ž๋ฅผ ํฌํ•จํ•œ ๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.",
  own3: "๋ฐฉ๋ฒ• ์ด๋ฆ„๊ณผ ์ˆœ์œ„๋Š” ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋‚˜ ๊ฐ€์ค‘์น˜๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",

  secOpen: "๊ฐœ์„ค ์˜ˆ์ •",
  openLead: "๊ฐ ๋ถ€๋ฌธ์€ ํ™€๋“œ์•„์›ƒ๊ณผ ์‹คํ—˜ ์˜ค์ฐจ๊ฐ€ ํ™•๋ณด๋œ ๋’ค์— ์—ฝ๋‹ˆ๋‹ค. ํ™•๋ณด๋˜์ง€ ์•Š์€ ๋ถ€๋ฌธ์€ ์—ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
  learnMore: "์ž์„ธํžˆ",

  tabGuide: "์ฐธ์—ฌ ๊ฐ€์ด๋“œ",
  gdIntro: "์˜ˆ์ธก ๋„๊ตฌ๋ฅผ ์ฒ˜์Œ ๋งŒ๋“œ์‹ ๋‹ค๋ฉด ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. " +
           "์ง์ ‘ ์ฝ”๋”ฉํ•˜์…”๋„ ๋˜๊ณ , ์•„๋ž˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์–ธ์–ด๋ชจ๋ธ์— ๊ทธ๋Œ€๋กœ ๋ถ™์—ฌ ๋„ฃ์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค.",
  gdWhat: "๋ฌด์—‡์„ ๋งŒ๋“œ๋Š”๊ฐ€",
  gdWhatD: "ํ™”ํ•ฉ๋ฌผ ๊ตฌ์กฐ(SMILES)๋ฅผ ๋ฐ›์•„ <b>๊ฐ’ ํ•˜๋‚˜</b>๋ฅผ ๋‚ด๋†“๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. " +
           "๊ทธ ๊ฐ’์ด ์‹ค์ธก๊ณผ ์–ผ๋งˆ๋‚˜ ๊ฐ€๊นŒ์šด์ง€๋กœ ์ฑ„์ ํ•ฉ๋‹ˆ๋‹ค.",
  gdPrompt: "์–ธ์–ด๋ชจ๋ธ์šฉ ํ”„๋กฌํ”„ํŠธ",
  gdPromptD: "์•„๋ž˜๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•ด Claude ยท GPT ยท Gemini ๋“ฑ์— ๋ถ™์—ฌ ๋„ฃ์œผ์‹ญ์‹œ์˜ค. " +
             "์ด ๋ถ€๋ฌธ์˜ ๊ฐ’์ด ์ด๋ฏธ ์ฑ„์›Œ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.",
  gdCopy: "๋ณต์‚ฌ", gdCopied: "๋ณต์‚ฌ๋จ",
  gdStarter: "๋ฐ”๋กœ ๋Œ๋ ค๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ผˆ๋Œ€",
  gdStarterD: "์ง์ ‘ ์งœ์‹œ๋ ค๋ฉด ์ด ๋ผˆ๋Œ€์—์„œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ํ›ˆ๋ จ ์ž๋ฃŒ๋ฅผ ๋ฐ›์•„ ์ง€๋ฌธ์„ ๋งŒ๋“ค๊ณ  " +
              "๋ชจ๋ธ์„ ํ•™์Šตํ•ด ์ œ์ถœ ํŒŒ์ผ๊นŒ์ง€ ์”๋‹ˆ๋‹ค.",
  gdRules: "์ง€์ผœ์•ผ ํ•  ๊ฒƒ",
  gdR1: "๊ธฐ์ค€์ผ ์ดํ›„ ์ตœ์ดˆ ๋ณด๊ณ ๋œ ํ™”ํ•ฉ๋ฌผ์€ ํ•™์Šต์— ์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์ด ํ…Œ์ŠคํŠธ์…‹์ž…๋‹ˆ๋‹ค.",
  gdR2: "๊ฐ™์€ ํ™”ํ•ฉ๋ฌผ์ด ์—ฌ๋Ÿฌ ๋…ผ๋ฌธ์— ์žˆ์œผ๋ฉด InChIKey ๋กœ ์ ‘์–ด ์ค‘์•™๊ฐ’์„ ์“ฐ์‹ญ์‹œ์˜ค. " +
        "๋ฌธ์ž์—ด๋กœ ์ ‘์œผ๋ฉด ๊ฐ™์€ ๋ถ„์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.",
  gdR3: "์ •๋‹ต์„ ์กฐํšŒํ•ด ์ฑ„์šฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜ˆ์ธก๊ฐ’์ด ์‹ค์ธก๊ณผ ์†Œ์ˆ˜ ์ž๋ฆฌ๊นŒ์ง€ ์ผ์น˜ํ•˜๋Š” ๋ฐ€๋„๋ฅผ " +
        "๊ฒ€์‚ฌํ•ด ์ˆœ์œ„ํ‘œ์— ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.",
  gdR4: "๋ฐฉ๋ฒ•์—๋Š” ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ง€๋ฌธ+ํŠธ๋ฆฌ ยท ๊ทธ๋ž˜ํ”„ ์‹ ๊ฒฝ๋ง ยท ์‚ฌ์ „ํ•™์Šต ๋ชจ๋ธ ยท ๋ฌผ๋ฆฌ ๊ณ„์‚ฐ " +
        "๋ฌด์—‡์ด๋“  ์ข‹์Šต๋‹ˆ๋‹ค.",
  gdTarget: "๋„˜์–ด์•ผ ํ•  ์„ ",
  gdTargetD: "๊ธฐ์ค€์„ ์„ ๋„˜์ง€ ๋ชปํ•˜๋ฉด ์ˆœ์œ„ํ‘œ์—์„œ ๊ทธ ์•„๋ž˜์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.",
},

en: {
  htmlLang: "en",
  title: "LEADBOARD โ€” Benchmark for Drug Prediction Tools",
  navSpec: "spec",
  login: "Sign in with HF", logout: "Sign out",
  langBtn: "ํ•œ๊ตญ์–ด",

  heroKicker: "AI Drug Discovery Benchmark",
  heroTag: "One yardstick, per discipline,<br>for drug prediction tools",
  heroLede: "We do not release the answer key. Instead we publish, in advance, " +
            "<b>baselines that learned nothing</b> and <b>the inter-laboratory reproducibility " +
            "of each endpoint</b> โ€” so that any reported score can be judged against the " +
            "measurement limit itself.",

  statBoards: "open boards", statCompounds: "test compounds", statFields: "disciplines",
  statClauses: "spec clauses", statPlanned: "planned boards",

  secLeaders: "Current leaders",
  secLeadersLead: "The leading entry on each board. Boards without an entrant are left blank โ€” a baseline is a line to cross, not a winner.",
  thBoard: "Board", thBest: "Leader", thScore: "Score", thVs: "vs baseline", thN: "Test",
  noLeader: "none yet",
  leadersEmpty: n => `All ${n} boards are awaiting their first entry.`,
  leadersSome: (a, b) => `${a} of ${b} boards have a leader.`,
  secBrowse: "Disciplines",
  secBrowseLead: "Select a discipline to reach its boards, leaderboards and submission desk.",
  secEvidence: "Measurement-limit landscape",
  secEvidenceLead: "The axis is <b>baseline error divided by experimental error</b>. " +
                   "The closer to 1.0, the more that further tuning amounts to " +
                   "<b>predicting measurement scatter</b>.",
  secMethod: "Eight clauses the scorer imposes on itself",
  secMethodLead: "These are not requirements placed on entrants. They are constraints we accept.",
  secData: "Data and licence",

  terrLeft: "inside experimental error", terrRight: "model error larger",
  insideCount: n => `${n} boards sit within 1.3x.`,
  lostNote: n => `<b>On ${n} boards the trained baseline failed to beat constant prediction.</b> ` +
      "A prediction that learned nothing was more accurate. Without baselines resident on the " +
      "leaderboard (clause 3), this fact appears in no metric.",

  openN: n => `${n} open`, prep: "in preparation",
  cardBoards: (o, p) => `boards ${o}/${p}`,
  cardCompounds: n => `${n} compounds`,

  clauses: [
    ["The answer key is not distributed", "Each board declares its split grade and answer grade"],
    ["Every score carries two fingerprints", "SHA-256 of the data revision and of the scoring code"],
    ["Baselines never leave the table", "Constant, nearest-neighbour and Morgan+LightGBM stay resident"],
    ["Experimental error is published first", "Derived from cross-publication measurements of the same compound"],
    ["Leakage is screened on every submission", "We report the density of predictions matching labels to the decimal"],
    ["Result submission and model submission are distinct", "Only re-executed submissions receive [verified]"],
    ["An unmeasured axis is not a zero", "Failing to measure differs from measuring a poor result"],
    ["Repeated submission does not raise rank", "Ladder ยท Blum &amp; Hardt, ICML 2015"]
  ],

  all: "All",
  tabRank: "Leaderboard", tabSubmit: "Submit", tabInfo: "Board detail",
  thRank: "#", thMethod: "Method", thUser: "Entrant", thLeak: "Leakage", thGrade: "Grade",
  baseline: "baseline", submitted: "submitted", verified: "verified", reference: "reference tool",
  leakHigh: "lookup trace", leakElev: "near-exact density",
  noiseNote: v => `<b>Experimental error ${v}.</b> Differences within this band are not ` +
      "claimed as rank differences (clause 4). The three baselines stay resident (clause 3).",
  noEntries: "No entrant submissions yet. The rows shown are baselines.",
  updated: t => `Leaderboard updated ${t}`,

  gradeH: "Grades", holdoutH: "Holdout", noiseH: "Experimental error", baseH: "Baselines",
  splitGrade: "Split grade", answerGrade: "Answer grade",
  gradeNote: {
    T: "Time split by year of first report. Only compounds first reported after the cut are scored",
    S: "Scaffold split. Only compounds whose scaffold is absent from training are scored",
    P1: "The answer exists in a public database. Clause 8 carries the defence against lookup",
    P2: "The source is public, but selection and unit conversion define this revision. " +
        "Querying the public database does not reproduce these values",
    P3: "Unpublished measurements provided by a partner",
    P4: "Measured after the board opened. It did not exist at opening"
  },
  kSource: "Source", kCut: "Split year", kTrainTest: "Train / test",
  kOverlap: "Structure overlap", kThr: "Classification threshold", kSha: "Data fingerprint",
  kLicense: "Licence",
  cutNote: "by year of first report", overlapNote: "0 (by construction of the time split)",
  posRate: p => `positives ${p}%`,
  noisePairs: (p, c) => `${p} pairs ยท ${c} compounds`,
  noiseDesc: "Difference between measurements of the same compound in <b>different publications</b>",
  noiseSd: "Estimated single-measurement SD",
  nearNote: (p, hi) => `<b>${p}%</b> of test compounds lie within one experimental SD of the ` +
      "classification threshold. " + (hi ? "Labels there can invert on re-measurement, so " +
      "<b>regression is the primary metric</b>." : "Classification metrics are reported alongside."),
  beatsYes: "The trained baseline beat constant prediction.",
  beatsNo: "<b>The trained baseline failed to beat constant prediction.</b> " +
           "A prediction that learned nothing was more accurate.",
  noiseFloorRow: "experimental error floor",

  step1: "Obtain the test set", step2: "Submit predictions", step3: "Submit a container (optional)",
  step1d: n => `Structures (SMILES) for <b>${n} compounds</b>. No labels โ€” they do not exist on this server.`,
  licLine: "Derived from ChEMBL ยท CC BY-SA 3.0 โ€” retain attribution and the same licence on redistribution.",
  dl: "Download test set",
  fMethod: "Method name", fMethodH: "as it will appear on the leaderboard",
  fTrain: "Training data used", fTrainH: "used for the clause 5 leakage screen",
  fPred: "Predictions", fPredH: "JSON or CSV (compound_id, prediction)",
  fPredAx: n => `This board has ${n} axes โ€” upload JSON with an array of ${n} numbers per compound`,
  drop: "Drop a file here, or click to choose",
  send: "Submit", needLogin: "Signing in with a Hugging Face account is required to submit.",
  step3d: "Submit the model with its inference environment and we re-execute it, confirm the " +
          "same numbers, and mark it [verified] (clause 6).",
  ladderNote: (v, c) => `<b>Clause 8.</b> Repeated submission does not raise rank. A new score is ` +
      `released only when it improves on your previous best by more than the experimental error ` +
      `<b>${v}</b>. Daily limit ${c}.`,
  accepted: id => `Accepted ยท submission ${id}`,
  parseFail: m => `Could not parse the predictions: ${m}`,
  sending: n => `sending ${n} entries`,
  emptyCat: "No boards are open in this discipline yet.",
  loadFail: "The page could not be loaded.",
  dataNote: "Every board is built from ChEMBL_37 and split by year of first report. " +
            "Distributed test sets contain structures only; labels are not included.",
  srcLabel: "Data source",

  sib: "Sister benchmarks",
  sibOdc: "Computational validation of AI-generated drug candidates",
  sibOmc: "A benchmark for solid-state battery materials",

  secWhy: "Why this exists",
  why1: "As AI produces drug candidates, it also produces the <b>prediction tools</b> that judge " +
        "them. Absorption, metabolism, toxicity, target binding โ€” each has dozens of tools. " +
        "Yet their performance is reported by their own authors, on data of their own choosing. " +
        "<b>They were not measured on the same problem, so the comparison does not hold.</b>",
  why2: "In February 2026 an audit of the top-ranked models across 22 endpoints of a widely used " +
        "ADMET leaderboard was published. Of 66 models examined, three reproduced fully. Models " +
        "deliberately tuned on the public test set reached the top three on 10 of 22 endpoints; " +
        "the same design built honestly reached it on two.",
  why3: "The fault lies not with any laboratory but with <b>the format of the examination</b>. " +
        "A test distributed together with its answer key cannot separate predictive power from exposure.",
  whyCite: "Koleiev et al., Critical Assessment of ML models for ADMET Prediction in TDC leaderboards, bioRxiv 2026",

  secFound: "What this benchmark measured",
  secFoundLead: "These are not citations. They were produced here, across 19 boards.",
  ratioLabel: "error / experimental error",
  found1t: "The split alone moves AUROC by 0.21",
  found1d: "Same data, same model (Morgan+LightGBM at defaults), same test fraction โ€” only the split " +
           "changed. On hERG: random split 0.818, time split 0.606. " +
           "<b>A leaderboard that does not declare its split cannot be compared against.</b>",
  found2t: "On 7 of 19 boards the trained baseline failed to beat constant prediction",
  found2d: "Returning the training median outperformed a trained model. Without baselines resident " +
           "on the leaderboard, this fact appears in no metric.",
  found3t: "Model error sits between 0.91x and 2.79x the experimental error",
  found3d: "Each board carries an experimental error derived from measurements of the same compound " +
           "in different publications. Seven boards lie within 1.3x of that error.",

  secHow: "How to take part",
  how1t: "Obtain the test set",
  how1d: "Choose a board and download a file containing structures (SMILES) and identifiers only. " +
         "No labels are included, and none exist on this server.",
  how2t: "Predict with any tool you like",
  how2d: "Proprietary models, commercial tools, open weights, physics-based calculation โ€” all are " +
         "permitted. We impose no restriction. Only declare the data you trained on, which is used " +
         "for the clause 5 leakage screen.",
  how3t: "Submit predictions for automatic scoring",
  how3d: "Upload JSON or CSV. Scoring, leakage screening and fingerprinting run automatically, and " +
         "the result appears on the leaderboard beside the three baselines and the experimental error.",

  secMetric: "What is scored",
  mMae: "Primary metric. Mean absolute error against the measured value. Lower is better.",
  mAuroc: "Classification metric. Ability to separate above and below the threshold. 0.5 equals chance.",
  mPrauc: "More informative than AUROC where positives are rare.",
  mNoise: "Reproducibility derived from cross-publication measurements of the same compound. " +
          "Differences within this band are not recognised as rank differences.",
  mRatio: "Best baseline error divided by experimental error. Approaching 1.0 means the measurement " +
          "limit has been reached.",
  mLeak: "Density of predictions matching the measured value to the decimal. We do not adjudicate " +
         "intent; we report the fact.",

  secOwn: "How submissions are handled",
  own1: "<b>Your predictions remain yours.</b> VIDRAFT uses them only as required for scoring and " +
        "leaderboard display. Individual submissions are not fed into our own pipeline and are not " +
        "provided to third parties.",
  own2: "We may publish <b>board-level aggregates</b> โ€” a consensus prediction across all entries, " +
        "the compounds every method failed, the performance landscape by approach. Individual " +
        "predictions are not identifiable in these, and the aggregates are released to everyone, " +
        "entrants included.",
  own3: "Method names and ranks are public. We do not ask for model internals or weights.",

  secOpen: "Opening next",
  openLead: "A board opens only once its holdout and experimental error are established. " +
            "Boards without them are not opened.",
  learnMore: "Detail",

  tabGuide: "Guide",
  gdIntro: "If this is your first predictor, follow the steps below. Write it yourself, " +
           "or paste the prompt into a language model as it is.",
  gdWhat: "What you are building",
  gdWhatD: "A function that takes a structure (SMILES) and returns <b>one number</b>. " +
           "We score how close that number is to the measured value.",
  gdPrompt: "Prompt for a language model",
  gdPromptD: "Copy the whole block into Claude, GPT, Gemini or similar. " +
             "The values for this board are already filled in.",
  gdCopy: "Copy", gdCopied: "Copied",
  gdStarter: "A skeleton you can run",
  gdStarterD: "If you would rather write it yourself, start here. It pulls the training data, " +
              "builds fingerprints, fits a model and writes the submission file.",
  gdRules: "Rules to observe",
  gdR1: "Do not train on compounds first reported on or after the split year. That is the test set.",
  gdR2: "Fold duplicate measurements by InChIKey and take the median. Folding by SMILES string " +
        "leaves the same molecule in several times.",
  gdR3: "Do not fill predictions by looking up the answer. We measure how many predictions match " +
        "the measured value to the decimal and show it on the leaderboard.",
  gdR4: "There is no restriction on method. Fingerprints and trees, graph networks, pretrained " +
        "models, physics-based calculation โ€” all are fine.",
  gdTarget: "Lines to cross",
  gdTargetD: "A submission that does not clear a baseline is shown below it on the leaderboard.",
}
};