사용자:Yes0song/다지모/한자입력기
- 이 내용의 원본은 한사적의 한자입력기연구에 있습니다.
한자혼용과 한문을 주로 입력하는 한국어 사용자를 위한 한자 데이터 정리방법과 입력기에 관한 저의 생각을 정리해 보았습니다.
한자 데이터
[편집]한자에 관련된 데이터베이스를 모아보았습니다.
알아두어야 할 것
[편집]저작권
[편집]한자의 훈, 음은 한국어의 일부이므로 어느 누구도 저작권을 주장할 수 없다. MS IME의 한자 데이터나, 네이버 사전의 한자 데이터를 추출해서 사용하더라도 저작권 위반이라 볼 수 없습니다. MS IME의 한자 정렬 방법이나, 네이버 한자 사전의 한자의 기원 설명 등은 해당 당사자가 저작권을 가지고 있으나, 가장 중요한 내용인 한자의 훈, 음 그 자체로는 저작권법 상 저작물이 아닙니다.
libhangul의 한자 데이터
[편집]libhangul은 열린 한글 프로젝트에서 만든 한글 처리 라이브러리이며, 리눅스의 scim, nabi와 Windows의 새나루에서 사용중이다.
- 다운로드 : 가장 최신 버전인 libhangul-0.0.4.tar.gz 파일을 다운 받으면 된다.
hanja.txt
[편집]libhangul의 한자 데이터는 "data/hanja/hanja.txt"에 위치한다.
가:仮:假의 略字 가:价: 가:伽:절 가 가:佉: 가:佳:아름다울 가 (생략...) 가가:假家: 가가대소:呵呵大笑: 가가호호:家家戶戶:
- 각 열은 :(콜론)으로 나누어져 있으며, "한글 / 한자 / 음과 훈"으로 구성되어 있다.
- 각 행은 한글 가나다 순으로 정렬되어 있다.
- 행이 #으로 시작하는 부분은 주석이다.
한자한글변환 프로젝트
[편집]한자한글변환 프로젝트는 한자와 한글을 서로 변환하기 위한 데이터베이스를 구측하는 프로젝트이다.
- 다운로드 : 가장 최신 버전인 hanja-0.0.6.tar.gz 파일을 다운받으면 된다.
파일의 형식
[편집]dic0.txt
[편집]不 不 串 串 丹 丹 亂 亂 了 了
- 각 열은 Tab으로 나누어져 있으며, "한중일 호환용 한자 / 한중일 통합 한자"순으로 구성되어 있다.
- 각 행은 유니코드와 동일한 순서로 정렬되어 있다.
- #으로 시작하는 행은 주석이다.
dic1.txt ~ dic5.txt
[편집]一 일 丁 정 丂 교 七 칠 丄 상 丅 하
- 각 열은 Tab으로 나누어져 있으며, "한자 / 한글" 순으로 구성되어 있다.
- 각 행은 유니코드와 동일한 순서로 정렬되어 있다.
- #으로 시작하는 행은 주석이다.
파일의 종류
[편집]- dic0.txt : "한중일 호환 한자"를 "한중일 통합 한자"로 변환하기 위한 표이다.
- dic1.txt : 두음법칙이 적용되지 않은 "한중일 통합 한자", "한중일 통합 한자 확장 A", "한중일 호환용 한자"의 대표음 목록이다.
- dic2.txt : "한중일 통합 한자"와 "한중일 통합 한자 확장 A"의 유니코드 대표음 목록이다.
- dic3.txt : "한중일 호환용 한자"의 유니코드 대표음 목록이다.
- dic4.txt : libhangul에서 추출한 한자어 목록이다. 정규화 알고리즘이 적용되어 있다.
- dic5.txt : 한자한글변환기에서 정확성을 높이기 위한 한자 목록이다. (유니코드 대표음은 아니나, 자주 사용되는 음을 담았다)
국립국어원의 6개 사전의 표제어 목록 DB
[편집]윈본은 국립국어원의 표준국어대사전 자료집에서 다운받을 수 있습니다.
- txt파일로 변환된 것을 받으려면 아래 파일을 다운받으시기 바랍니다. UTF-8로 인코딩 되어 있습니다.
README.txt
[편집]kordic.txt 파일은 국립국어원 "표준국어대사전 자료"의 "6개 사전의 표제어 목록 DB"에서 추출한 자료입니다. 옛한글은 첫가끝 코드로 변환하였으며, UTF-8 인코딩으로 저장하였습니다. 각 열은 아래 설명에 있는 num, lemma, lemindex, kum, min, sam, uri, nor, seo, origin순으로 정렬되어 있으며, 각 열은 Tab으로 구분되어 있습니다. 이 자료는 저작권이 어디에도 속하지 않은 "Public Domain" 입니다. == 국립국어원의 설명 == 연구원에서 오려 붙인 6개 사전의 목록을 관리하던 파일입니다. 6개 사전은 금성출판사, 민중서림, 삼성출판사, 한글학회에서 나온 우리말 큰사전과 북한에서 간행된 조선말사 전(1962), 조선말대사전(1992)입니다. 원래 폭스프로(foxpro)에서 파일로 작성된 것이지만 지금은 이 파일을 읽기가 쉽지 않아 액세스(access)로 전환한 것입니다. 입력한 후 제대로 수정을 하지 않았기 때문에 오류가 많습니다. 주의하시기 바랍니다. 그리고 액세스 파일로 전환하는 중에 일부 옛글자들은 깨져서 무슨 글자인지 알 수 없게 되었습니다. 또한 불필요한 필드는 삭제했습니다. 각 필드의 내용은 다음과 같습니다. - num : 관리를 위해 각 단어별로 붙여둔 번호를 기록한 필드입니다. 자모는 영문자로 구분하고 뒤에 숫자로 각 단어를 구분하였습니다. - lemma : 표제어를 수록한 필드입니다. 사전에 나오는 기호를 그대로 사용하였는데 띄어쓰기가 된 단어에는 공백 대신 "$"를 넣었습니다. 동음이의어는 사전을 오려 붙인 순서대로 원내에서 번호로 구분하였습니다. - lemindex : lemma 필드의 내용 중에서 각종 기호를 삭제하고 한글과 숫자만 남긴 필드입니다. 인덱스나 검색을 위해 만든 필드입니다. - kum, min, sam, uri, nor, seo : 사전별로 표제어의 수록 여부를 기록한 필드입니다.(1:주표제어, 2:부표제어) - origin : 원어를 기록한 필드입니다. 나중에 추가했기 때문에 원어 정보가 기록되지 않은 경우도 있습니다.
kordic.txt
[편집]A-000011 ㄱ01 ㄱ01 A-000012 ㄱ02 ㄱ02 1 1 1 1 A-000013 -ㄱ03 ㄱ03 1 A-000014 -ㄱ까 ㄱ까 1 A-000015 ㄱㄴㄷ-순 ㄱㄴㄷ순 1 1 A-000016 ㄱㄴㄷ-차례 ㄱㄴㄷ차례 1 1 A-000017 ㄱㄴ-순 ㄱㄴ순 1 1 1 1 -順 (...생략)
lemma
[편집]- lemma : 표제어를 수록한 필드입니다. 사전에 나오는 기호를 그대로 사용하였는데 띄어쓰기가 된 단어에는 공백 대신 "$"를 넣었습니다.
- 기호
- $ : 이 부분은 띄어쓰기하는 것이 원칙이며, 띄어쓰기를 하지 않는 것을 허용한다는 의미입니다.
- - : 형태소를 구분하는 기호입니다.
- : : 앞 글자가 장음임을 나타냅니다.
- (숫자) : 동음이의어를 구분하기 위한 숫자입니다.
- 문제점
- 일부 옛한글이 �로 깨져 나오는 오류가 있습니다.
origin
[편집]- origin : 원어를 기록한 필드입니다. 나중에 추가했기 때문에 원어 정보가 기록되지 않은 경우도 있습니다.
- 원어는 한자와 로마자 2가지 종류가 있습니다.
- 한자어와 고유어가 합성된 경우, 고유어 부분은 -로 생략되어 있습니다.
- 일부 글자에 @기호가 들어가 있는데, @의 앞글자가 한자이나, 기술적 문제로 인해 한글로 입력한 경우를 뜻합니다.
- 문제점 : 일부 글자에 &기호가 들어가 있는데, 이 부분은 데이터가 깨진 부분입니다.
hanja_big
[편집]이 파일은 국립국어원의 6개 사전의 표제어 목록 DB을 KLDP redneval님께서 정리한 자료입니다.[1]
파일 종류;
- hanja_big.txt_type1 : Type 3가 아니면서, 한자의 글자수와 한글의 글자수가 똑같은 경우.
- hanja_big.txt_type1 : Type 3가 아니면서, 한글의 글자수가 더 적은 경우. 단어에 순우리말 또는 외래어가 들어갔거나 또는 그 밖의 이유로.
- hanja_big.txt_type1 : 단어가 1:1 매칭이 되지 않는 경우. 하나의 한글단어에 한자가 여러 단어가 존재함.
한자 데이터의 정리
[편집]한글 입력기는 한글을 입력 후 한자키를 눌렀을 때 빈도순으로 정리된 한자에서 선택 할 수 있도록 해 줍니다. 따라서 데이터를 다음과 같이 정리 할 필요가 있습니다.
- 한글 : 한자 및 한자어를 한글로 쓴 것
- 한자 : 변환될 한자 및 한자어
- 의미 : 한자와 한자어의 뜻
- 빈도 : 한자와 한자어의 빈도
이체자 정리
[편집]대한민국의 한자는 다음과 같은 문제로 많은 이체자들이 발생합니다.
- 대한민국에서 몇몇 한자와 몇몇 한자어는 복수의 한자 표기를 인정합니다.
- 유니코드에 제대로 맵핑이 되지 않아. KS표준과, 상용한자와, 본자(本字)가 따로따로인 경우가 많습니다.
- 여러개의 음을 가진 한자를 처리하기 위해, 한중일 호환용 한자를 사용하는 경우가 대부분인데, 잘못된 코드로 되어 있는 경우가 많습니다.
해결 방법
[편집]제가 생각하는 해결 방법은 이렇습니다.
이체자의 경우는 검색사이트등을 이용하여, 빈도가 가장 높은 한자로 통일힌다.- 데이터베이스는 유니코드 정규화 알고리즘을 적용하여, 모든 한자를 한중일 통합 한자로 통일한다.
hanja big 파일 정리
[편집]Type 2
[편집]Type2는 Type 3가 아니면서, 단어에 순우리말 또는 외래어가 들어갔거나 또는 그 밖의 이유로 한글의 글자수가 더 적은 경우 입니다. 입력기에 사용하기 위해서는 글자수가 부족한 부분에 한글을 채워줄 필요가 있습니다.
- 예 : 가나다순:順 → 가나다순:가나다順
이를 위해 비어있는 한글을 채워줄 스크립트를 작성할 필요가 있습니다.
Type 3
[편집]Type 3은 단어가 1:1 매칭이 되지 않는 경우. 하나의 한글단어에 한자가 여러 단어가 존재하는 경우입니다.
저는 검색사이트등을 이용하여, 빈도가 가장 높은 한자를 택하는 것이 가장 좋은 방법이라고 생각합니다.
한자 빈도 조사
[편집]한자 빈도 조사를 위한 스크립트가 필요합니다.
최종 완성된 데이터
[편집]최종 완성된 데이터는 다른 용도로 사용할 수 있도록 빈도가 포함된 것과, 입력기에 사용하기 위한 단순히 빈도순으로 정렬한 것으로 구분하는 것이 좋을 것 같습니다.
예를 들자면 빈도가 포함된 데이터는 이런식으로 되어 있을 것이고:
신:臣:신하 신:3000 신:莘:약이름 신:20 신:新:새로울 신:15000
실제 입력기에서 사용할 데이터는 이것을 빈도순으로 정리한 후, 마지막 부분의 빈도 숫자를 제거한 것이 될 것입니다.
신:新:새로울 신 신:臣:신하 신 신:莘:약이름 신
입력기
[편집]기본 입력 방법
[편집]한자를 입력하는 방법은 현재 SCIM에서 사용하는 방법이 가장 편리한 방법이라고 생각합니다.
한글 모드
[편집]- 한글 입력 후, 한자키나, F9를 누르면 한자 목록이 뜨며, 이 중에서 원하는 한자를 선택해서 입력합니다.
한자 입력 모드
[편집]- 한글을 입력하면 실시간으로 한자 목록이 뜨며, 방향키와 엔터로 한자를 선택하여 입력합니다.
- 숫자키로도 선택할 수가 있다면 좀더 편리한 입력이 가능할 것입니다.
이체자와 한중일 호환용 한자
[편집]- 모든 한자 데이터가 한중일 통합 한자로 되어 있으므로, 실제로 많이 사용하는 "한중일 호환용 한자"를 입력할 수 있도록 하기 위해서, 입력기상에서 이를 변환할 수 있도록 하는 기능이 필요합니다.
- KS표준과, 상용한자, 본자(本字) 중 어떤 한자로 입력할 것인지 선택하는 기능이 있다면, 좀 더 다양한 용도로 사용할 수 있을 것입니다.
- 위의 기능을 위해 제가 생각하는 방법은 다음과 같습니다.
- 입력기에서 한자 이체자 처리를 위한 간단한 번역기(1:1 치환 방식)를 제공합니다.
- 사용자는 여러개의 번역용 데이터베이스 중 하나를 선택할 수 있도록 합니다.
- 사용자가 임으로 작성한 데이터베이스를 쉽게 추가할 수 있도록 합니다.
관련 링크
[편집]관련 도구
[편집]관련 사이트
[편집]- KLDP의 관련 글
- 한중일 호환용 한자 (위키백과)