python 및 머신러닝 교육, 슬로우캠퍼스


한글 코드값 (유니코드),  초성/중성/종성 분리 방법을 구할 수 있다.


http://en.wikipedia.org/wiki/Korean_language_and_computers


Hangul Syllables Area[edit]

To find Hangul Syl­la­bles in Uni­code, you can apply a sim­ple for­mula. The for­mula and ta­bles are as fol­lows:

[{(initial)×588}+{(medial)×28}+(final)]+44032 (0xAC00)

Initial Jamo[edit]

Medial Jamo[edit]

Final Jamo[edit]

Example[edit]

For ex­am­ple, If you want to find the code­point of “” in Uni­code:

  • The value of ini­tial Jamo ㅎ is 18
  • The value of me­dial Jamo ㅏ is 0
  • The value of final Jamo ㄴ is 4

So, the for­mula will be {(18×588)+(0×28)+4}+44032, and the re­sult is 54620. It means the Uni­code value of 한 is 54620 in dec­i­mal, 한 by the nu­meric char­ac­ter ref­er­ence, and U+D55C in stan­dard Uni­code no­ta­tion.




http://cafe.naver.com/flashdev/38144


예전에 "테너스"라는 필명으로 작성했던 글 "[텍스트를 자유로이 시리즈 1편] 한글을 분리해보자!"의 연재입니다.

 

1편의 내용에서 발췌하면

 

한글은 유니코드로 44032번부터라고 한다.

한글은 초성, 중성, 종성으로 이루어져있으며
초성은 19개 : 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'
중성은 21개 : 'ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ'
종성은 28개 : ' ','ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ'
가 있다. -종성의 0번째는 공백이다.-

 

이것이 한글 조합의 핵심입니다.

각 자음과 모음에는 코드가 할당되는데 일정한 공식으로 조합된 글자의 코드값을 얻어낼 수 있습니다.

예를 들면 "각"은

초성 "ㄱ"

중성 "ㅏ"

종성 "ㄱ"

으로 이루어져 있습니다. 각각을 코드로 바꾸어보면

초성 "ㄱ" -> 0

중성 "ㅏ" -> 0

종성 "ㄱ" -> 1

이와 같이 됩니다.

이것을 다음 공식에 대입하면

 

한글 코드 = 44032 + (초성 * 588) + (중성 * 28) + 종성

 

"각"의 코드값이 나오는 것을 알 수 있습니다.

다음 예제를 실행시켜보세요.

-----------------------------------------------------------------

var 초성=0;
var 중성=0;
var 종성=1;

trace(String.fromCharCode( 44032 + (초성 * 588) + (중성 * 28) + 종성));

----------------------------------------------------------------

결과는 "각"이 됩니다.

 

첨부한 예제 파일인 "타이핑_예제"는 예전에 swf 파일만 올렸던 자료입니다.

원본도 같이 공개하는데 다듬을 시간이 없어서 지저분합니다.

이것을 개량하여 터치 스크린 키보드도 개발이 가능합니다.

 

키보드 입력을 구현하기 위해서는 다섯가지 종류의 합성에 대해 알아야합니다.

첫째, "ㄱ", "ㄴ", "ㅕ" 등과 같이 자음이나 모음 한 자만 입력된 경우의 코드값 구하기

둘째, "가", "러" 등과 같이 종성이 없는 경우

셋째, "각", "쀏" 과 같이 초성, 중성, 종성 모두가 조합된 경우

넷째, "ㅚ" 등과 같이 모음과 모음의 합성

다섯째, "ㄳ", "ㅄ" 등과 같은 자음과 자음의 합성입니다.

 

첫째, 자음의 코드는 다음 공식으로 구합니다.

한글 코드값 = 12593 + 초성코드

모음의 코드는 다음의 공식으로 구합니다.

한글 코드값 = 12623 + 중성코드

 

둘째, 종성없이 자음+모음 형태의 한글의 코드는 다음 공식으로 구합니다.

44032 + (초성 * 588) + (중성 * 28));

초성+중성+종성의 합성 공식에서 종성=0이라고 생각하면 됩니다.

 

셋째, 앞에서 밝혔듯 초성+중성+종성의 합성 공식은 다음과 같습니다.

한글 코드 = 44032 + (초성 * 588) + (중성 * 28) + 종성

 

넷째, 모음과 모음의 합성은 스위치문으로 각 경우마다 처리해야합니다.

가령 코드가 9인 "ㅘ"의 경우 코드가 8인 "ㅗ"와  0인 "ㅏ"의 합성입니다.

 

다섯째, 자음과 자음의 합성 역시 모음+모음의 경우와 같은 방법으로 합성해냅니다.

 

결론........................................................................................................

키보드 입력 인터페이스를 구현하는 경우 위와 같은 다섯가지 경우를 생각해야하며

자음일때 자음을 입력하면 다음 글자로 넘어가고, 자음에 모음을 입력하면 합성해주고

"ㄱ"        "ㄴ"                     "ㄱㄴ"                    "ㄱ"    "ㅓ"                "거"

위와 같은 합성할 수 있으면 합성하고 합성할 수 없는 문자를 입력하면 다음으로 넘기는 등의

처리까지 깔끔하게 해주어야 비로소 한글 입력 인터페이스를 구현할 수 있습니다.

 

한글 조합에 대한 강좌는 이번 강좌로 마무리하겠습니다.

다음엔 색다른 주제로 다시 찾아 뵙겠습니다.

'Data/Text/Knowledge Analysis & Mining > 한글처리' 카테고리의 다른 글

unicode script 목록  (0) 2013.07.31
한글처리 오픈 소스  (0) 2013.07.24

WRITTEN BY
manager@
Data Analysis, Text/Knowledge Mining, Python, Cloud Computing, Platform

,