제3장: 데이터 형식 표준

弘益人間 (홍익인간) - 널리 인간을 이롭게 하라
언어 데이터의 표준화는 모든 인류가 자신의 언어 유산에 접근하고 보존할 수 있도록 하는 기반입니다. WIA-LANG-001 표준은 이러한 철학을 기술적으로 구현한 것입니다.

1. 데이터 형식 표준의 필요성

멸종위기 언어를 디지털로 보존하는 과정에서 가장 중요한 것은 데이터의 일관성과 상호운용성입니다. 전 세계적으로 7,000개 이상의 언어가 존재하며, 이 중 약 40%가 멸종 위기에 처해 있습니다. 각 언어마다 고유한 특성이 있지만, 디지털 보존을 위해서는 표준화된 데이터 형식이 필수적입니다.

WIA-LANG-001 표준은 언어학자, 개발자, 커뮤니티 구성원들이 협력하여 언어 데이터를 수집, 저장, 공유할 수 있도록 설계되었습니다. 이 표준은 JSON, XML, RDF와 같은 현대적인 데이터 형식을 기반으로 하며, 언어 특유의 메타데이터를 포함할 수 있는 확장 가능한 구조를 제공합니다.

1.1 언어 데이터의 구성 요소

멸종위기 언어 데이터는 다음과 같은 핵심 요소로 구성됩니다:

2. WIA-LANG JSON 데이터 형식

WIA-LANG-001 표준의 기본 데이터 형식은 JSON (JavaScript Object Notation)입니다. JSON은 읽기 쉽고, 프로그래밍 언어에 독립적이며, 웹 기술과의 호환성이 뛰어나 언어 보존 프로젝트에 이상적입니다.

2.1 기본 언어 엔트리 구조

{
  "wiaLangVersion": "1.0",
  "metadata": {
    "languageCode": "ISO-639-3",
    "languageName": "언어명",
    "endangermentLevel": "critically_endangered",
    "speakerCount": 150,
    "region": {
      "country": "대한민국",
      "province": "제주특별자치도",
      "coordinates": {
        "latitude": 33.4996,
        "longitude": 126.5312
      }
    },
    "lastUpdated": "2025-12-29T00:00:00Z",
    "contributors": [
      {
        "name": "김언어",
        "role": "언어학자",
        "affiliation": "WIA 언어보존연구소"
      }
    ],
    "license": "CC-BY-SA-4.0",
    "philosophy": "弘益人間"
  },
  "lexicon": [
    {
      "id": "word-001",
      "lemma": "어머니",
      "translation": "mother",
      "partOfSpeech": "noun",
      "pronunciation": {
        "ipa": "ʌmʌni",
        "audioUrl": "https://archive.wia.org/audio/word-001.mp3",
        "audioHash": "sha256:abc123..."
      },
      "semantics": {
        "definition": "여성 부모를 일컫는 말",
        "culturalContext": "전통적으로 가족의 중심 역할",
        "synonyms": ["엄마", "모친"],
        "examples": [
          {
            "sentence": "어머니께서 말씀하셨다",
            "translation": "Mother said",
            "audioUrl": "https://archive.wia.org/audio/ex-001.mp3"
          }
        ]
      },
      "etymology": {
        "origin": "고대 한국어 '어미'에서 유래",
        "cognates": ["日本語: 母 (haha)", "中文: 母 (mǔ)"]
      }
    }
  ],
  "grammar": {
    "wordOrder": "SOV",
    "hasGender": false,
    "hasCase": true,
    "hasTone": false,
    "morphology": {
      "type": "agglutinative",
      "features": ["honorifics", "particles"]
    }
  }
}

2.2 데이터 필드 설명

필드명 타입 필수여부 설명
wiaLangVersion String 필수 WIA-LANG 표준 버전
metadata Object 필수 언어 메타데이터 정보
languageCode String 필수 ISO 639-3 언어 코드
endangermentLevel Enum 필수 멸종위기 등급 (safe, vulnerable, endangered, critically_endangered, extinct)
lexicon Array 필수 어휘 목록
pronunciation Object 선택 발음 정보 (IPA, 오디오 등)
grammar Object 선택 문법 구조 정보

3. 멸종위기 등급 분류 체계

UNESCO와 Ethnologue의 분류를 기반으로 한 WIA-LANG-001의 멸종위기 등급 분류는 다음과 같습니다:

등급 영어명 화자 수 세대 전승 조치 필요성
안전 (Safe) Safe 100,000명 이상 모든 세대가 사용 모니터링
취약 (Vulnerable) Vulnerable 10,000-100,000명 대부분의 아이들이 배움 교육 프로그램 권장
위기 (Endangered) Endangered 1,000-10,000명 부모 세대만 사용 긴급 문서화 필요
심각한 위기 (Critically Endangered) Critically Endangered 100-1,000명 조부모 세대만 사용 즉각적인 보존 조치
사멸 (Extinct) Extinct 0명 전승 중단 역사적 복원 연구

4. 오디오 데이터 표준

언어 보존에서 오디오 녹음은 필수적입니다. WIA-LANG-001은 다음과 같은 오디오 데이터 표준을 권장합니다:

4.1 오디오 파일 형식 및 품질 기준

{
  "audio": {
    "format": "FLAC",
    "bitDepth": 24,
    "sampleRate": 48000,
    "channels": 2,
    "duration": 3.5,
    "recordingDate": "2025-12-29",
    "equipment": {
      "microphone": "Shure SM7B",
      "recorder": "Zoom H6",
      "environment": "controlled_studio"
    },
    "speaker": {
      "id": "speaker-042",
      "age": 68,
      "gender": "female",
      "nativeSpeaker": true,
      "dialectRegion": "제주도 서귀포"
    },
    "transcription": {
      "orthographic": "이디 오라",
      "ipa": "idi oɾa",
      "translation": "come here",
      "notes": "제주 방언 특유의 명령형"
    },
    "checksum": "sha256:def456...",
    "archiveUrl": "https://archive.wia.org/audio/rec-042.flac",
    "waveformUrl": "https://archive.wia.org/waveform/rec-042.png"
  }
}

4.2 권장 오디오 형식

5. 실전 예제: 제주어 데이터 입력

제주어는 UNESCO가 지정한 심각한 멸종위기 언어입니다. 다음은 제주어 단어를 WIA-LANG-001 형식으로 입력하는 실제 예제입니다:

const jejuLanguageData = {
  "wiaLangVersion": "1.0",
  "metadata": {
    "languageCode": "jje",
    "languageName": "제주어",
    "englishName": "Jeju Language",
    "endangermentLevel": "critically_endangered",
    "speakerCount": 5000,
    "region": {
      "country": "대한민국",
      "province": "제주특별자치도",
      "coordinates": {
        "latitude": 33.4996,
        "longitude": 126.5312
      }
    },
    "lastUpdated": "2025-12-29T12:00:00Z",
    "contributors": [
      {
        "name": "강영봉",
        "role": "제주어 연구자",
        "affiliation": "제주대학교 국어문화원"
      }
    ],
    "license": "CC-BY-SA-4.0",
    "philosophy": "弘益人間 - 제주어 보존을 통한 문화유산 계승"
  },
  "lexicon": [
    {
      "id": "jeju-001",
      "lemma": "하르방",
      "translation": "할아버지",
      "englishTranslation": "grandfather",
      "partOfSpeech": "noun",
      "pronunciation": {
        "ipa": "haɾɯbaŋ",
        "audioUrl": "https://archive.wia.org/jeju/audio/001.flac",
        "audioHash": "sha256:1a2b3c..."
      },
      "semantics": {
        "definition": "남성 조부를 일컫는 제주 방언",
        "culturalContext": "제주 돌하르방의 '하르방'이 이 단어에서 유래",
        "synonyms": ["할으방", "한라방"],
        "examples": [
          {
            "sentence": "하르방이 말씀하시다",
            "translation": "할아버지가 말씀하시다",
            "englishTranslation": "Grandfather is speaking",
            "audioUrl": "https://archive.wia.org/jeju/audio/ex-001.flac"
          }
        ]
      },
      "etymology": {
        "origin": "중세 한국어 '한아비'에서 변형",
        "historicalForms": ["한라방", "할으방"]
      }
    },
    {
      "id": "jeju-002",
      "lemma": "혼저옵서예",
      "translation": "어서오세요",
      "englishTranslation": "welcome",
      "partOfSpeech": "interjection",
      "pronunciation": {
        "ipa": "hond͡ʑʌops͈ʌje",
        "audioUrl": "https://archive.wia.org/jeju/audio/002.flac",
        "audioHash": "sha256:4d5e6f..."
      },
      "semantics": {
        "definition": "손님을 맞이하는 제주어 인사말",
        "culturalContext": "제주도 관광 명소에서 널리 사용되는 환영 인사",
        "usage": "격식있는 상황에서 사용",
        "examples": [
          {
            "sentence": "가게에 들어서니 주인이 '혼저옵서예'라고 인사했다",
            "translation": "Entering the store, the owner greeted with 'Welcome'",
            "audioUrl": "https://archive.wia.org/jeju/audio/ex-002.flac"
          }
        ]
      }
    }
  ],
  "grammar": {
    "wordOrder": "SOV",
    "hasGender": false,
    "hasCase": true,
    "hasTone": false,
    "morphology": {
      "type": "agglutinative",
      "features": [
        "honorifics",
        "particles",
        "unique_verbal_endings"
      ]
    },
    "uniqueFeatures": [
      "표준어와 다른 어휘 체계",
      "독특한 음운 현상 (ㅗ > ㅜ 변화)",
      "고유한 존댓말 체계"
    ]
  }
};

// 데이터 검증 함수
function validateWIALangData(data) {
  const requiredFields = [
    'wiaLangVersion',
    'metadata',
    'metadata.languageCode',
    'metadata.endangermentLevel'
  ];

  for (const field of requiredFields) {
    const value = field.split('.').reduce((obj, key) => obj?.[key], data);
    if (!value) {
      throw new Error(`필수 필드 누락: ${field}`);
    }
  }

  // 멸종위기 등급 검증
  const validLevels = [
    'safe',
    'vulnerable',
    'endangered',
    'critically_endangered',
    'extinct'
  ];

  if (!validLevels.includes(data.metadata.endangermentLevel)) {
    throw new Error('유효하지 않은 멸종위기 등급');
  }

  console.log('✓ 데이터 검증 완료');
  return true;
}

// 데이터 내보내기
function exportToWIAFormat(data, filename) {
  const jsonString = JSON.stringify(data, null, 2);

  // 파일 저장 (Node.js 환경)
  const fs = require('fs');
  fs.writeFileSync(filename, jsonString, 'utf-8');

  console.log(`데이터가 ${filename}에 저장되었습니다.`);
  console.log(`파일 크기: ${jsonString.length} bytes`);
  console.log(`어휘 항목 수: ${data.lexicon.length}`);
}

// 사용 예시
try {
  validateWIALangData(jejuLanguageData);
  exportToWIAFormat(jejuLanguageData, 'jeju-language-v1.json');
} catch (error) {
  console.error('오류 발생:', error.message);
}

6. XML 및 RDF 대안 형식

JSON 외에도 WIA-LANG-001은 XML과 RDF 형식을 지원합니다. 특히 RDF는 링크드 데이터와의 통합에 유용합니다.

6.1 XML 형식 예제

<?xml version="1.0" encoding="UTF-8"?>
<wiaLang version="1.0">
  <metadata>
    <languageCode>jje</languageCode>
    <languageName>제주어</languageName>
    <endangermentLevel>critically_endangered</endangermentLevel>
    <philosophy>弘益人間</philosophy>
  </metadata>
  <lexicon>
    <entry id="jeju-001">
      <lemma>하르방</lemma>
      <translation lang="ko">할아버지</translation>
      <translation lang="en">grandfather</translation>
      <pronunciation ipa="haɾɯbaŋ">
        <audio src="https://archive.wia.org/jeju/audio/001.flac"/>
      </pronunciation>
    </entry>
  </lexicon>
</wiaLang>

7. 데이터 품질 관리

WIA-LANG-001 표준은 데이터 품질을 보장하기 위해 다음과 같은 검증 메커니즘을 제공합니다:

장 요약

  1. 데이터 형식 표준화의 중요성: WIA-LANG-001은 전 세계 멸종위기 언어 데이터를 일관되게 저장하고 공유하기 위한 표준 형식을 제공하며, JSON, XML, RDF 등 다양한 형식을 지원합니다.
  2. 구조화된 메타데이터: 언어 코드, 멸종위기 등급, 화자 수, 지리적 정보, 기여자 정보 등을 포함한 풍부한 메타데이터 구조를 통해 언어 데이터의 맥락을 완전히 보존할 수 있습니다.
  3. 다층적 언어 정보: 어휘(lexicon), 발음(pronunciation), 문법(grammar), 의미(semantics), 문화적 맥락(cultural context) 등 언어의 모든 측면을 포괄적으로 기록할 수 있는 구조를 제공합니다.
  4. 오디오 데이터 표준: FLAC 무손실 형식을 기본으로 하는 고품질 오디오 녹음 표준과 함께, 화자 정보, 녹음 환경, 전사 정보를 체계적으로 관리하는 방법을 제시합니다.
  5. 데이터 품질 보장: 스키마 검증, 필수 필드 확인, 참조 무결성 검사 등 다양한 품질 관리 메커니즘을 통해 데이터의 신뢰성과 일관성을 유지합니다.
  6. 弘益人間 철학 구현: 표준화된 데이터 형식을 통해 언어 데이터를 널리 공유하고, 연구자와 커뮤니티가 협력하여 인류의 언어 유산을 보존할 수 있는 기반을 마련합니다.

복습 질문

  1. WIA-LANG-001 데이터 형식에서 필수적으로 포함되어야 하는 메타데이터 필드 5가지를 나열하고, 각각의 역할을 설명하시오.
  2. UNESCO의 멸종위기 언어 분류 체계에서 "Critically Endangered" 등급의 특징은 무엇이며, 어떤 보존 조치가 필요한가요?
  3. 제주어와 같은 멸종위기 언어를 WIA-LANG JSON 형식으로 기록할 때, 어휘 항목(lexicon entry)에 포함되어야 할 주요 구성 요소를 설명하시오.
  4. 언어 보존을 위한 오디오 녹음에서 보존용(Archival)과 배포용(Distribution) 형식의 차이점은 무엇이며, 각각 어떤 상황에서 사용되나요?
  5. JSON 형식 외에 XML이나 RDF를 사용하는 것이 유리한 경우는 언제인지, 구체적인 사용 사례를 들어 설명하시오.
  6. 데이터 품질 관리를 위한 검증 메커니즘 중 '참조 무결성(Referential Integrity)' 검사가 중요한 이유는 무엇이며, 어떤 문제를 예방할 수 있나요?
  7. 弘益人間 철학이 WIA-LANG-001 데이터 형식 표준 설계에 어떻게 반영되어 있는지, 구체적인 예를 들어 설명하시오.