평가 코퍼스 설계 프레임워크
버전: 1.0
상태: 초안
목적: 유효하고 신뢰할 수 있으며 언어학적으로 의미 있는 번역 품질 평가를 도출하는 평가 코퍼스를 구축하기 위한 체계적인 방법론이에요. 이 문서는 Champollion 평가 데이터셋을 설계, 구축, 유지 관리하는 방법에 대한 단일 진실 공급원(source of truth)이에요.
1. 설계 원칙
1.1 — 왜 공개 벤치마크를 쓰지 않나요?
공개 병렬 코퍼스(FLORES+, Tatoeba, WMT 테스트 셋, OPUS)는 개발과 디버깅용으로 사용할 수 있지만 공식 리더보드 평가에서는 제외돼요. 그 이유는 간단해요:
오염(Contamination). 프런티어 LLM은 방대한 웹 스크랩 데이터로 학습돼요. 공개적으로 존재해 온 병렬 텍스트라면 — 특히 큐레이션되고 널리 인용된 벤치마크 데이터셋이라면 — 학습 데이터에 포함되어 있을 가능성이 높아요. GPT-4o를 FLORES+로 평가했을 때 chrF++ 85점을 받는다면, "모델이 번역을 잘한다"와 "모델이 이 특정 문장 쌍을 암기했다"를 구별할 수 없어요. 이는 이론적인 우려가 아니에요 — 연구를 통해 MT 벤치마크에서 측정 가능한 오염 효과가 입증되었어요.
Champollion에게 이 문제가 특히 중요한 이유는:
- 저희 리더보드는 주로 LLM 기반 방법을 비교해요
- 저희의 가치 제안은 정직하고 엄격한 평가예요
- 저희의 대상 사용자(언어 공동체)는 이 점수를 기반으로 배포 결정을 내려요
1.2 — 핵심 요구사항
모든 Champollion 평가 코퍼스는 다음을 충족해야 해요:
| 요구사항 | 근거 |
|---|---|
| 인간 작성 | 합성 데이터 금지. 모든 원문과 참조 번역은 인간이 작성해야 해요. LLM은 정렬과 포맷팅을 보조할 수 있지만 절대 콘텐츠를 생성할 수 없어요. |
| 병렬 형태로 공개되지 않음 | 원문은 공개될 수 있고, 참조 번역도 공개될 수 있지만, 특정한 쌍 짓기는 다운로드 가능한 병렬 코퍼스로 존재해서는 안 돼요. |
| 출처 추적 | 모든 항목은 출처가 문서화되어야 해요: 원본 문서, 번역자, 라이선스, 날짜. |
| 언어학적 기반 | 커버리지는 무작위 샘플링이 아니라 유형론적 특징에 의해 결정되어야 해요. |
| 도메인 계층화 | 항목은 통제된 표현으로 정의된 텍스트 도메인에 걸쳐 있어야 해요. |
| 난이도 계층화 | 항목은 구조적 복잡성을 기준으로 난이도 등급(1~5)이 부여되어야 해요. |
| 버전 관리 | 코퍼스 버전은 콘텐츠 해시로 관리돼요. 점수는 동일한 버전 내에서만 비교할 수 있어요. |
| 공동체 검토 가능 | 참조 번역은 언어 공동체 구성원이 검토할 수 있어야 해요. |
2. 원문 선택
2.1 — 도메인 분류 체계
Champollion은 학술적 연습이 아니라 실제 배포 상황을 위한 번역을 평가해요. 도메인 분류 체계는 번역 사용자가 마주치는 실제 텍스트 유형을 반영해요:
| 도메인 | 코드 | 설명 | 예시 출처 |
|---|---|---|---|
| 소프트웨어 UI | ui | 버튼 레이블, 메뉴 항목, 오류 메시지, 툴팁, 온보딩 플로우 | 오픈소스 앱 문자열, 문서 포털 |
| 공식/행정 | admin | 정부 문서, 법적 고지, 양식, 정책 성명 | 공공 정부 간행물, 지방자치단체 문서 |
| 교육 | edu | 교과서 콘텐츠, 수업 자료, 교육용 텍스트 | 출판된 교육 자료, 교사용 지침서 |
| 서사/문학 | lit | 이야기, 문화 텍스트, 구술 역사 전사 | 출판된 책, 문화 아카이브(허가받은 경우) |
| 대화 | conv | 대화, 채팅형 교류, 비공식 서면 커뮤니케이션 | 출판된 대화 코퍼스, 시나리오, 인터뷰 전사 |
| 기술 | tech | API 문서, README 파일, 기술 사양 | 오픈소스 프로젝트 문서 |
| 건강/의료 | health | 환자 대상 의료 정보, 공중 보건 메시지 | 정부 보건 간행물 |
| 뉴스/저널리즘 | news | 뉴스 기사, 보도자료, 시사 | 공동체 신문, 원주민 미디어 매체 |
2.2 — 도메인 분포
표준 평가 코퍼스는 다음 분포를 목표로 해야 해요. 정확한 비율은 대상 공동체에 가장 관련성 높은 텍스트 유형에 따라 언어 쌍마다 달라질 수 있어요:
| 도메인 | 목표 % | 근거 |
|---|---|---|
| 소프트웨어 UI | 25% | champollion CLI 사용자의 주요 배포 상황 |
| 공식/행정 | 15% | 법적 영향을 미치는 고위험 번역 |
| 교육 | 15% | 언어 부흥을 위한 핵심 사용 사례 |
| 서사/문학 | 10% | 문화적 뉘앙스와 문학적 어조를 테스트 |
| 대화 | 10% | 비공식 어조와 자연스러운 화법 패턴을 테스트 |
| 기술 | 10% | 정밀성과 용어 일관성을 테스트 |
| 건강/의료 | 10% | 고위험, 도메인 특화 어휘를 테스트 |
| 뉴스/저널리즘 | 5% | 현대 어휘와 중립적 어조를 테스트 |
2.3 — 원문 선택 기준
새 코퍼스를 위한 원문을 선택할 때:
-
라이선스 호환성. 원문은 평가 코퍼스에서의 사용을 허용하는 라이선스 하에 있어야 해요. CC BY, CC BY-SA, 또는 퍼블릭 도메인을 선호해요. 라이선스를 문서화하세요.
-
최신성. 지난 10년 이내에 출판된 텍스트를 선호해요. 언어는 진화하니까요 — 특히 기술, 거버넌스, 의학과 관련된 어휘는 더욱 그래요.
-
어조 다양성. 각 도메인 내에서 서로 다른 격식 수준의 텍스트를 찾으세요. 정부 보도자료(격식)와 정부 소셜 미디어 게시물(비격식)은 둘 다
admin도메인이지만 어조는 달라요. -
문화적 관련성. 원주민 언어와 소수 언어의 경우, 우연히 병렬로 존재하는 텍스트보다 공동체에 중요한 텍스트 — 토지 관리 문서, 해당 언어로 된 교육 자료, 문화 보존 텍스트 — 를 우선시하세요.
-
기계 번역된 원본 금지. 원본을 Google Translate에 돌린 후 사후 편집하여 "병렬" 문서를 만들었다면, 이는 참조 번역으로 받아들일 수 없어요. 참조는 독립적인 인간 번역이어야 해요.
3. 난이도 계층 시스템
3.1 — 계층 정의
모든 항목은 (방법에 따라 달라지는) 번역 난이도가 아니라 원문의 구조적 복잡성을 기준으로 난이도 등급(1~5)이 부여돼요.
| 계층 | 레이블 | 구조적 특징 |
|---|---|---|
| 1 | 초급 | 단순 문장. 단일 절. 현재 시제. 일반적인 어휘. 관용구 없음. 내포 구조 없음. |
| 2 | 중급 | 복합 문장. 접속사로 연결된 두 개의 절. 과거/미래 시제. 일부 도메인 어휘. |
| 3 | 고급 | 복잡한 문장. 종속절, 관계절. 혼합 시제. 도메인 특화 용어. 수동태. |
| 4 | 전문가 | 다중 내포 절. 법률/기술 어조. 조건 구조. 추상적 개념. 문화적 참조. |
| 5 | 극도 | 다중의 동시적 난제를 가진 밀도 높은 산문: 중첩된 종속, 모호한 대명사 참조, 문화적 관용구, 혼합 어조, 희귀 어휘. |
3.2 — 언어학적 기반의 난이도 요인
구조적 복잡성을 넘어, 난이도는 원문과 대상 언어 사이의 유형론적 거리에 따라 조정돼요. 이 요인들은 WALS 유형론적 특징과 언어 카드의 분류 데이터에서 가져온 거예요:
| 요인 | 낮은 난이도 | 높은 난이도 |
|---|---|---|
| 어순 | 동일한 기본 어순(예: SVO→SVO) | 다른 기본 어순(예: SVO→SOV) |
| 형태론적 유형 | 유사한 유형(예: 분석어→분석어) | 다른 유형(예: 분석어→포합어) |
| 문법적 성 | 동일한 체계 또는 성 없음 | 원문에 성이 없고 대상에 복잡한 성이 있음 |
| 경어/어조 | 어조 표시 없음 | 대상에 복잡한 어조 체계가 있음(예: 일본어, 한국어) |
| 문자 | 동일한 문자 | 다른 문자(음역 필요) |
| 유정성 | 유정성 구별 없음 | 대상에 유정성 기반 일치가 있음(예: 크리어) |
| 증거성 | 증거성 없음 | 대상이 정보 출처를 문법적으로 표시함 |
3.3 — 계층 분포
표준 코퍼스는 대략 다음을 가져야 해요:
| 계층 | 목표 % | 근거 |
|---|---|---|
| 1 | 15% | 기준선 확립 — 나쁜 방법도 이 정도는 처리할 수 있어야 해요 |
| 2 | 25% | 일상적이고 실용적인 번역 |
| 3 | 30% | 방법의 품질 차이가 드러나는 지점 |
| 4 | 20% | 좋은 방법과 훌륭한 방법을 구분 |
| 5 | 10% | 천장 테스트 — 이를 잘 처리할 방법은 극히 드물어요 |
4. 참조 번역 품질
4.1 — 번역자 요구사항
참조 번역은 다음과 같은 인간이 작성해야 해요:
- 대상 언어의 유창한 화자(L1 또는 그에 준함)
- 원문과 대상 언어 모두에 대한 문해력
- 해당 텍스트의 도메인에 대한 도메인 인식(건강 텍스트는 의료 번역자 등)
- 독립성 — 번역자는 번역 중에 동일한 텍스트에 대한 어떤 MT 출력에도 접근해서는 안 돼요
4.2 — 번역 브리핑
모든 번역자는 다음을 포함하는 브리핑을 받아요:
- 사용할 어조(격식, 대화체 등)
- 대상 독자(일반 대중, 전문가, 어린이 등)
- 언어 공동체에 특화된 용어 관례
- 명시적 지침: "단어가 아니라 의미를 번역하세요. 자연스럽게 들리는 번역이 직역보다 더 가치 있어요."
4.3 — 품질 보증
-
이중 번역. 이상적으로는 각 항목이 서로 다른 번역자에 의한 두 개의 독립적인 참조 번역을 가져요. 이것이 불가능한 경우, 계층 4~5에 대해 이중 번역을 우선시하세요.
-
공동체 검토. 참조 번역은 그 번역을 작성하지 않은 최소 한 명의 추가 화자가 검토해야 해요.
-
허용 가능한 변형. 각 참조에 대해 알려진 허용 가능한 변형(어순, 정서법 관례, 방언 형태)을 문서화하세요. 이것들은
equivalent_match_rate메트릭에 반영돼요.
4.4 — 나쁜 참조란 무엇인가
| 문제 | 평가를 무효화하는 이유 |
|---|---|
| 기계 번역 후 사후 편집 | 사후 편집은 MT 구조를 보존해요; 더 자연스러운 번역을 생성하는 방법에 불이익을 줘요 |
| 유창한 화자가 아닌 학습자가 번역 | 참조에 오류가 있어 올바른 MT 출력에 불이익을 줄 수 있어요 |
| 지나친 직역 | 자연스러운 번역이 직역 참조에 비해 낮은 점수를 받아요 |
| 모호한 원문에 대한 단일한 유효 해석 | 유효한 대안적 해석에 불이익을 줘요 |
5. 오염 방지
5.1 — 오염 위협 모델
| 위협 | 설명 | 완화책 |
|---|---|---|
| 학습 데이터 중첩 | LLM이 병렬 코퍼스로 학습됨 | 병렬 코퍼스를 공개적으로 게시하지 않기 |
| 퓨샷 누출 | 방법 작성자가 평가 항목을 퓨샷 예시로 사용 | 핑거프린트 검사: 프롬프트에 포함된 항목을 탐지하고 표시 |
| 간접 오염 | 원문이 LLM 학습 데이터에 존재(단일 언어) | 허용 가능 — 단일 언어 원문은 예상되는 거예요. 쌍 짓기가 새로워야 해요. |
| 크라우드 오염 | 공동체 검토자가 항목을 공개적으로 공유 | 라이선스 조건이 병렬 코퍼스의 재배포를 금지 |
5.2 — 코퍼스 비밀 등급
| 등급 | 가시성 | 용도 |
|---|---|---|
| 공개 개발 셋 | 완전 공개 | 방법 개발, 디버깅, 회귀 테스트. 점수는 리더보드에 게시되지 않아요. |
| 홀드아웃 평가 셋 | 원문은 공개, 참조는 비공개 | 공식 리더보드 평가. 방법은 원문을 받고 번역을 반환하며, 채점은 서버 측에서 이루어져요. 참조는 방법에 절대 노출되지 않아요. |
| 골드 스탠더드 셋 | 완전 비공개, 공동체 통제 | 공동체 검증 평가. 거버넌스 조직이 관리해요. "Community Validated" 검증 등급에 사용돼요. |
5.3 — 순환 정책
평가 코퍼스는 주기적으로 순환되어야 해요:
- 코퍼스가 12개월 동안 사용된 후, 대체 코퍼스 구축을 시작하세요
- 오래된 코퍼스를 "개발 셋" 상태(공개)로 은퇴시키세요
- 새 코퍼스를 "홀드아웃 평가 셋"으로 승격시키세요
- 이는 고정된 목표에 대한 반복적 최적화를 통한 점진적 오염을 방지해요
6. 코퍼스 구축 워크플로
6.1 — 단계별 프로세스
Step 1: Language Pair Selection
└─ Identify target language, read language card
└─ Review typological features (WALS), contact influences, scripts
└─ Identify which difficulty factors apply
Step 2: Source Text Curation
└─ Identify candidate source documents per domain
└─ Verify licenses
└─ Extract candidate sentences/segments
└─ Classify by domain and preliminary difficulty tier
Step 3: Segment Selection
└─ Sample segments to match domain distribution (§2.2)
└─ Sample segments to match difficulty distribution (§3.3)
└─ Ensure linguistic phenomenon coverage (§6.2)
└─ Target minimum corpus size (§6.3)
Step 4: Reference Translation
└─ Assign segments to qualified translators
└─ Provide translation brief
└─ Collect translations
└─ Dual-translate Tier 4–5 entries
Step 5: Quality Assurance
└─ Community review of references
└─ Document acceptable variants
└─ Flag and resolve disagreements
Step 6: Metadata & Packaging
└─ Assign final difficulty tiers
└─ Add provenance metadata per entry
└─ Content-hash the corpus for versioning
└─ Package as corpus JSON per harness spec
Step 7: Registration
└─ Register in Supabase datasets table
└─ Add to ATTRIBUTION.md if new sources used
└─ Document in arena website
6.2 — 언어 현상 커버리지
모든 코퍼스는 언어 쌍과 관련된 특정 언어 현상을 테스트하는 항목을 포함해야 해요. 이것들은 언어 카드의 linguisticChallenges와 contactInfluences 필드에서 가져온 거예요:
보편적 현상(모든 언어 쌍):
- 대명사 해소(모호한 선행사)
- 부정(단일, 이중, 범위)
- 양화사(전부, 일부, 없음, 대부분)
- 시간 표현(상대적 날짜, 기간)
- 명명된 개체(사람, 장소, 조직)
- 숫자와 측정값
- 목록과 열거
쌍 특화 현상(언어 카드에서):
- 포합어 대상의 경우: 복잡한 동사 형태론, 포합
- 성을 가진 대상의 경우: 성 일치, 중립적/포괄적 참조
- SOV 대상의 경우: 절 말미 동사, 후치사
- 성조 언어의 경우: 성조 의존적 의미 구별
- 경어 언어의 경우: 어조 표지, 사회적 맥락
- 접촉 언어의 경우: 코드 스위칭 경계, 차용어 통합
6.3 — 최소 코퍼스 크기
통계적 신뢰성을 위해서는 최소 항목 수가 필요해요. 이는 페어드 부트스트랩 신뢰구간 요구사항(significance.py에서)을 기반으로 해요:
| 목적 | 최소 항목 수 | 권장 |
|---|---|---|
| 개발 셋 | 50 | 100~200 |
| 홀드아웃 평가 셋 | 100 | 200~500 |
| 골드 스탠더드 셋 | 200 | 500+ |
| 도메인당 최소 | 10 | 25+ |
| 계층당 최소 | 10 | 20+ |
왜 평가에 최소 100개인가요? 약 100개 미만의 항목으로는 페어드 부트스트랩 유의성 검정(1,000회 리샘플링)이 약 5 chrF++ 점수보다 작은 차이를 신뢰성 있게 탐지할 수 없어요. 200개 이상의 항목으로는 p<0.05에서 약 2점 차이를 탐지할 수 있어요.
7. 코퍼스 JSON 형식
모든 코퍼스 항목은 하니스 사양을 따라요:
{
"id": "edtekla-dev-v1-042",
"source": "The school board will meet on Tuesday to discuss the new curriculum.",
"reference": "ᑭᓯᑭᓄᐦᐊᒫᑐᐏᓐ ᑲ ᐃᔑ ᐱᒥᐸᔨᐦᑕᐦᒃ ᑭᔅᑭᓄᐦᐊᒫᑐᐏᓇ ᐁ ᐃᔑ ᒫᒥᑐᓀᔨᐦᑕᐦᒃ ᐅᔥᑭ ᑭᔅᑭᓄᐦᐊᒫᑫᐏᓂᔭ ᓂᔓ ᑭᔑᑲᐤ",
"acceptable_variants": [
"ᑭᔅᑭᓄᐦᐊᒫᑐᐏᓐ ᓂᔓ ᑭᔑᑲᐤ ᑲ ᐃᔑ ᒫᒥᑐᓀᔨᐦᑕᐦᒃ ᐅᔥᑭ ᑭᔅᑭᓄᐦᐊᒫᑫᐏᓂᔭ"
],
"domain": "edu",
"difficulty": 3,
"phenomena": ["temporal_expression", "named_entity", "future_tense"],
"provenance": {
"source_doc": "EdTeKLA Module 4, Unit 7",
"source_license": "CC BY-NC-SA 4.0",
"translator": "anonymous-speaker-001",
"translator_qualification": "L1 Plains Cree, certified translator",
"translation_date": "2025-11-15",
"reviewer": "anonymous-speaker-002",
"review_date": "2025-12-01"
}
}
8. 게이밍 방지 조치
8.1 — 코퍼스 무결성
| 조치 | 구현 |
|---|---|
| 콘텐츠 해싱 | 코퍼스 버전 = 정렬된 항목 ID + 참조의 SHA-256. 모든 수정은 새 버전을 생성해요. |
| 항목 핑거프린팅 | 각 항목은 콘텐츠에서 파생된 ID를 가져요. 누군가 수정된 코퍼스에 대해 결과를 제출하면 핑거프린트가 일치하지 않아요. |
| 홀드아웃 적용 | 공식 평가에서 방법은 원문만 받아요. 참조는 절대 노출되지 않아요. 채점은 서버 측에서 이루어져요. |
| 순환 일정 | 코퍼스는 고정된 목표에 대한 장기적 최적화를 방지하기 위해 매년 순환해요. |
8.2 — 제출 무결성
| 조치 | 구현 |
|---|---|
| 결정론적 핑거프린트 | 실행 구성(모델, 온도, 프롬프트, 코퍼스 버전)이 해시돼요. 동일한 구성은 동일한 핑거프린트를 생성해요. |
| 체리피킹 탐지 | 제출자는 최고의 실행만이 아니라 모든 실행을 공개해야 해요. 동일한 핑거프린트를 가진 다중 제출은 표시돼요. |
| 오염 검사 | 평가 항목이 방법의 프롬프트나 코칭 데이터에 그대로 나타나면 제출이 자격을 박탈당해요. |
9. 기존 코퍼스
9.1 — EDTeKLA 개발 셋 v1
| 속성 | 값 |
|---|---|
| ID | edtekla-dev-v1 |
| 쌍 | EN → CRK (Plains Cree, SRO) |
| 항목 | 404 (master_corpus.json: 골드 62 + 교과서 342); 사용 가능 총 548 |
| 도메인 | 교육 (100%) |
| 계층 | 1~5 (항목 감사에 따라 분포 TBD) |
| 라이선스 | CC BY-NC-SA 4.0 |
| 상태 | 개발 셋 (공개) |
한계: 단일 도메인(교육만). 도메인 계층화 없음. 계층 할당은 감사가 필요할 수 있어요. 작은 코퍼스 크기가 유의성 검정의 통계적 검정력을 제한해요.
9.2 — 계획된 코퍼스
| 코퍼스 | 쌍 | 상태 | 소유자 |
|---|---|---|---|
| EN → TL (Filipino) 커스텀 코퍼스 | EN → TL | 계획됨 | 프로젝트 소유자 |
| EN → CRK 홀드아웃 셋 | EN → CRK | 향후 (공동체 파트너 필요) | 공동체 거버넌스 조직 |
10. 언어 카드 통합
코퍼스 프레임워크는 언어 카드 시스템과 통합돼요:
-
도메인 선택은 카드의
linguisticChallenges에 의해 결정돼요 — 언어에 고유한 난제(포합, 성조, 유정성)가 있는 경우, 코퍼스는 이를 테스트하는 항목을 포함해야 해요. -
난이도 보정은 카드의
classification을 사용해요 — 원문과 대상 어족 사이의 유형론적 거리가 "어려움"을 구성하는 요소에 영향을 줘요. -
어조 커버리지는 카드의
registers를 사용해요 — 언어에 정의된 어조(formal-filipino, taglish-professional, taglish-casual)가 있는 경우, 코퍼스는 각 어조 수준의 항목을 포함해야 해요. -
접촉 영향 테스트는 카드의
contactInfluences을 사용해요 — 차용 계층이 많은 언어(Filipino: 스페인어 + 영어 + 아랍어)의 경우, 방법이 차용어를 올바르게 처리하는지 아니면 과도하게 번역하는지를 테스트하는 항목을 포함하세요. -
문자 처리는 카드의
scripts[]을 사용해요 — 다중 문자 언어(Serbian: 키릴 문자 + 라틴 문자)의 경우, 올바른 문자 선택을 테스트하는 항목을 포함하세요.
참고 자료
- Champollion Scoring Specification — 모든 메트릭, 합성 가중치, 품질 등급을 정의
- Champollion Benchmark Specification — 평가 프로토콜, 코퍼스 형식, 데이터 주권
- WALS (World Atlas of Language Structures) — 유형론적 특징 데이터베이스
- Glottolog — 언어 분류 단일 진실 공급원
- ISO 639-3 — 언어 식별 표준
- EdTeKLA — 첫 번째 평가 코퍼스의 출처
이 문서는 살아있는 사양이에요. 새로운 코퍼스가 구축되고 교훈을 얻을 때마다 업데이트하세요.