《우리말샘》

gukhanmun-opendict는 국립국어원 《우리말샘》 JSON 전체 내려받기에서 만든 분유별 사전 스냅숏을 내장합니다.

원본 덤프는 이 저장소에 커밋하지 않습니다. 대신 crates/gukhanmun-opendict/data/ 아래의 네 TSV 파일을 커밋된 정본으로 둡니다. 네 파일은 원본의 senseinfo.type 값인 일반어, 북한어, 방언, 옛말로 나뉩니다.

스냅숏

항목
원본 압축 파일전체 내려받기_우리말샘_json_20260603.zip
덤프 날짜2026-06-03
SHA-256345cfae71f3710cc483975a9af04773985aaaa4ba7ca4855a4bb93f390f63e8e
데이터 licenseCC BY-SA 2.0 KR
분류원본 분류TSV 파일항목 수SHA-256
일반어일반어general.tsv350,33003a744cc783797e09b0e094bf2649718792edcf7e3254a4010994814ad9a16d9
북한어북한어north-korean.tsv34,093cdc67c66b3c5febf870a406188e9621dd3a72654b5e878de1e9fb25b40db6256
방언방언dialect.tsv5,71424547f29e78e2b3bc9a1709294e0030940b46c862e503f2f337c2f5609a801a8
옛말옛말archaic.tsv160f77342de48317faf10a997b156955bf73cad442e36d150a91ed19265fea0bdc

재생성

압축 파일이나 압축을 푼 디렉터리를 놓고 다음 명령을 실행합니다:

cargo run --release -p gukhanmun-opendict --bin gukhanmun-opendict-extract -- \
  ~/Downloads/전체\ 내려받기_우리말샘_json_20260603 \
  --general-output crates/gukhanmun-opendict/data/general.tsv \
  --north-korean-output crates/gukhanmun-opendict/data/north-korean.tsv \
  --dialect-output crates/gukhanmun-opendict/data/dialect.tsv \
  --archaic-output crates/gukhanmun-opendict/data/archaic.tsv

추출기는 단일 JSON 파일, 공식 압축 파일, JSON 디렉터리를 모두 받습니다. 디렉터리 내 항목과 압축 파일 내 항목은 문자열 순서로 처리합니다. 각 분류 TSV는 UTF-8이고 사전 키 순으로 결정적으로 정렬됩니다.

추출 방침

word_unit어휘인 항목 중 original_language_info에서 한자가 있는 검색 키를 만들 수 있는 것만 포함합니다. 독음은 wordinfo.word에서 오며, 동형이의어 번호, 하이픈, ^ 구분자는 제거합니다.

키 생성은 gukhanmun-stdict와 공유하는 로직을 씁니다. 한자 분절은 그대로 키가 되고, 고유어 분절은 한자 주변에 남을 수 있습니다. Beijing[北京] 같은 괄호 속 외래 한자 표기는 보존하지만, 한자가 없는 외래어 분절은 건너뜁니다. 단일 한자 외래어 독음은 Unihan 대체의 한국 한자음 독음을 가리지 않도록 건너뜁니다.

중복 키는 분류 안에서만 해결합니다. 같은 분류에서 먼저 만난 독음이 이깁니다. 그래서 일반어와 북한어 독음은 서로 독립이고, 사용자는 ChainDictionary에서 북한어 사전을 다른 사전보다 앞에 놓아 원하는 우선순위를 만들 수 있습니다.

실행 시 사용법

Rust crate는 분유별 독입 함수를 제공합니다:

  • gukhanmun_opendict::general()
  • gukhanmun_opendict::north_korean()
  • gukhanmun_opendict::dialect()
  • gukhanmun_opendict::archaic()

Rust와 CLI에서 Preset::KoKp는 북한어 사전을 기본으로 포함합니다. JavaScript 바인딩은 어느 프리셋에서도 사전 데이터를 자동으로 불러오지 않습니다. 필요한 분류를 @gukhanmun/opendict-fst@gukhanmun/opendict-cdb에서 불러와 load({ dictionaries: [...] })에 넘기면 됩니다.