leadboard / i18n.js
SeaWolf-AI's picture
์ƒ๊ธˆ ์ง‘๊ณ„์—์„œ ์ฃผ์ตœ์ธก ์ œ์ถœ ์ œ์™ธ โ€” ๋ถ€๋ฌธ ์„ ๋‘๋Š” ์ฐธ๊ฐ€์ž ์ค‘ ์ตœ์ƒ์œ„
d781026 verified
Raw History Blame Contribute Delete
31.4 kB
/* 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: "๋ถ„์•ผ๋ฅผ ์„ ํƒํ•˜๋ฉด ์†Œ์† ๋ถ€๋ฌธ์˜ ์ˆœ์œ„ํ‘œ์™€ ์ œ์ถœ ์ฐฝ๊ตฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.",
prizeH: "์ƒ๊ธˆ",
prizeLead: (amt,close)=>`๋งˆ๊ฐ์ผ์— <b>ํ•œ ๋ถ„</b>์—๊ฒŒ ๋ฏธํ™” ${amt}๋‹ฌ๋Ÿฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋งˆ๊ฐ ${close}.`,
prizeRule: (n)=>`<b>1์œ„ ๋ถ€๋ฌธ์„ ๊ฐ€์žฅ ๋งŽ์ด ๊ฐ€์ง„ ํ•œ ๋ถ„</b>๊ป˜ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ฐธ๊ฐ€๋Š” ํ•œ ๋ถ€๋ฌธ์ด๋ฉด ๋˜๊ณ , ๋ช‡ ๊ฐœ๋ฅผ ๋‚ด์…จ๋Š”์ง€๋Š” ๋”ฐ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.<br>๋ถ€๋ฌธ๋งˆ๋‹ค ์ง€ํ‘œ๊ฐ€ ๋‹ฌ๋ผ ์ ์ˆ˜๋ฅผ ํ•ฉ์‚ฐํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ <b>1์œ„ ๋ถ€๋ฌธ์˜ ๊ฐœ์ˆ˜</b>๋กœ ์…‰๋‹ˆ๋‹ค. ๋™์ˆ˜์ด๋ฉด ๋จผ์ € ๋„๋‹ฌํ•œ ๋ถ„์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.`,
statSubs: "์ œ์ถœ",
prizeElig: "",
prizeMissing: (n)=>"",
prizeHost: "๐Ÿ”ธ <b>์ฃผ์ตœ์ธก ์ œ์ถœ(SeaWolf-AI ๋“ฑ)์€ ์ƒ๊ธˆ ์ง‘๊ณ„์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.</b> ํ‘œ์—๋Š” ๋„˜์–ด์•ผ ํ•  ๊ธฐ์ค€์„ ์œผ๋กœ ๋‚จ์ง€๋งŒ, ์ƒ๊ธˆ ์ˆœ์œ„์—์„œ๋Š” ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค โ€” ์–ด๋А ๋ถ€๋ฌธ์˜ ์ƒ๊ธˆ ์„ ๋‘์ธ์ง€๋Š” <b>์ฐธ๊ฐ€์ž ์ค‘ ์ตœ์ƒ์œ„</b>๋กœ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ตœ์ธก์ด ํ‘œ์‹œ์ƒ 1์œ„์—ฌ๋„ ๊ทธ ๋ถ€๋ฌธ์˜ ์ƒ๊ธˆ ์„ ๋‘๋Š” ๊ทธ ๋‹ค์Œ ์ฐธ๊ฐ€์ž์ž…๋‹ˆ๋‹ค.",
prizeNone: "์•„์ง ์ˆ˜์ƒ ํ›„๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ถ€๋ฌธ ํ•˜๋‚˜์—์„œ 1์œ„๋ฅผ ํ•˜๋ฉด ์ด๋ฆ„์ด ์—ฌ๊ธฐ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.",
prizeStanding: "ํ˜„์žฌ ํ›„๋ณด",
prizeFirsts: (n)=>`1์œ„ ${n}๊ฐœ ๋ถ€๋ฌธ`,
starterTag: "์ž…๋ฌธ",
starterLead: "์ฒ˜์Œ์ด์‹œ๋ฉด <b>์ž…๋ฌธ</b> ํ‘œ์‹œ๊ฐ€ ๋ถ™์€ ๋ถ€๋ฌธ๋ถ€ํ„ฐ ๋ณด์„ธ์š”. ์‹œํ—˜์…‹์ด 150~200๊ฐœ๋กœ ์ž‘๊ณ , ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ChEMBL ์กฐํšŒ ํ•œ ๋ฒˆ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.",
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",
prizeH: "Prize",
prizeLead: (amt,close)=>`At the closing date <b>one entrant</b> receives USD ${amt}. Closes ${close}.`,
prizeRule: (n)=>`It goes to <b>the entrant leading the most boards</b>. One board is enough to enter, and how many you submit to is not counted against you.<br>Boards use different metrics, so scores cannot be summed: what counts is <b>the number of boards you lead</b>. Ties go to whoever got there first.`,
statSubs: "submissions",
prizeElig: "",
prizeMissing: (n)=>"",
prizeHost: "๐Ÿ”ธ <b>Host submissions (SeaWolf-AI and others) are excluded from the prize count.</b> They stay on the tables as the line to beat, but for the prize they are treated as absent โ€” a board is led, for prize purposes, by <b>the top entrant</b>. Where a host entry shows first, the prize lead on that board is the next entrant down.",
prizeNone: "No contenders yet. Take first place on any board and your name appears here.",
prizeStanding: "Current contenders",
prizeFirsts: (n)=>`${n} board${n===1?"":"s"} led`,
starterTag: "start here",
starterLead: "New here? Begin with the boards marked <b>start here</b>. Their test sets are 150-200 compounds and the training data comes from a single ChEMBL query.",
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.",
}
};