SlideShare a Scribd company logo
1 of 41
Download to read offline
공감세미나
한글 자모 분석 원리
JAVACAFE
김흥래
공감세미나발표자
김흥래 (Naver Business Platform)
자바카페 커뮤니티의 운영진이다.
심심할 틈 없이 신기술이 쏟아지는 IT와 사랑에 빠진 개발자로,
개발자간의 소통과 교류를 즐긴다.
현재 네이버 비즈니스 플랫폼에서 다양한 서비스를 개발하고 있다.
hrkim3468@gmail.com
공감세미나한글 표기법
예) 가방
“가”라는 음절과 “방"이라는 2개의 음절도 이루어짐.
한글 한 글자를 “음절”이라고 합니다.
공감세미나한글 표기법
자음 (14개)
ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ
모음 (10개)
ㅏ, ㅑ, ㅓ, ㅕ, ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ
하나의 음절은 “자음”과 “모음”으로 나눠집니다.
이를 자모(Jamo)라고 부릅니다.
공감세미나한글 표기법
자음 (16개)
ㄲ, ㄳ, ㄵ, ㄶ, ㄸ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅃ, ㅄ, ㅆ, ㅉ
모음 (11개)
ㅐ, ㅒ, ㅔ, ㅖ, ㅘ, ㅙ, ㅚ, ㅝ, ㅞ, ㅟ, ㅢ
기본 자모외에 겹자모도 존재합니다.
공감세미나한글 표기법
한글 기본자모와 겹자모를 모두 합치면
다음과 같습니다.
자음 (30개)
ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ,
ㅍ, ㅎ
ㄲ, ㄳ, ㄵ, ㄶ, ㄸ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ,
ㅃ, ㅄ, ㅆ, ㅉ
모음 (21개)
ㅏ, ㅑ, ㅓ, ㅕ, ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ
ㅐ, ㅒ, ㅔ, ㅖ, ㅘ, ㅙ, ㅚ, ㅝ, ㅞ, ㅟ, ㅢ
공감세미나한글 표기법
한글은 자음과 모음을 조합해서
다양한 음절(글자)을 표현 할 수 있습니다.
예) 가방
첫번째 음절 “가” : 자음(ㄱ) + 모음(ㅏ)
두번째 음절 “방“ : 자음(ㅂ) + 모음(ㅏ) + 자음(ㅇ)
공감세미나한글 표기법
하나의 음절(글자)은 다시금
초성, 중성, 종성으로 나눠질 수 있습니다.
예) 가방
첫번째 음절 “가” : 초성(ㄱ) + 중성(ㅏ)
두번째 음절 “방“ : 초성(ㅂ) + 중성(ㅏ) + 종성(ㅇ)
공감세미나한글 표기법
반대로 초성, 중성, 종성을 조합하면
하나의 음절(글자)을 만들 수 있습니다.
초성
ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ (19개)
중성
ㅏㅒㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ (21개)
종성
ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ (27개) + 예외1개
공감세미나한글 표기법
이러한 방식으로 조합해서 만들 수 있는
글자의 수는 총 11,172자 입니다.
한글로 표현 가능한 글자 수
초성(19개) * 중성(21개) * 종성(28개) = 11,172 자
공감세미나한글 유니코드
기술의 발달로 인해 컴퓨터로 처리하기 위해서
한글의 디지털 처리 기술이 필요해 졌습니다.
공감세미나한글 유니코드
한글을 컴퓨터로 처리하기 위해서
다양한 코드 처리 기법이 발전해 나갔습니다.
N바이트 한글 코드
- 한글을 풀어쓰듯이 자음과 모음을 1바이트로 처리
- 11,172개의 글자를 모두 표현 가능
- 음절을 이루는 각각의 코드가 다르므로 문자를 비교하거나 Sort 불가
예)
나 => ㄴ ㅏ (2byte)
가방 => ㄱ ㅏ ㅂ ㅏ ㅇ (5byte)
공감세미나한글 유니코드
한글을 컴퓨터로 처리하기 위해서
다양한 코드 처리 기법이 발전해 나갔습니다.
3바이트 조합형 코드
- 글자 한 음절을 초성, 중성, 종성으로 나눠서 처리
- 11,172개의 글자를 모두 표현 가능
- 항상 3바이트를 사용하므로 비효율적
예)
나 => ㄴ ㅏ (3byte)
가방 => ㄱ ㅏ (3byte), ㅂ ㅏ ㅇ (3byte)
공감세미나한글 유니코드
한글을 컴퓨터로 처리하기 위해서
다양한 코드 처리 기법이 발전해 나갔습니다.
KSC5601 (1987 완성형 코드)
- 정부 주도형으로 표준화
- 글자를 음절 단위로 순서대로 배치
- 각각의 음절은 고유의 2바이트 코드값을 가진다.
- 첫번째, 두번째 바이트를 사용할 수 없어 표현 가능한 코드는 94 * 94
(8836) 뿐이다.
- 11,172개의 글자를 모두 표현할 수 없다.
공감세미나한글 유니코드
한글을 컴퓨터로 처리하기 위해서
다양한 코드 처리 기법이 발전해 나갔습니다.
KSC5601 (1992 조합형 코드)
- KSC5601 (1987 완성형 코드)에서 전체 글자를 표현할 수 없는 문제점 때
문에 추가로 제정된 국가 표준
- 글자를 조합형으로 표현 (초성, 중성, 종성)
- 11,172개의 글자를 모두 표현할 수 있다.
그렇다면 한글 국가 표준이 2개?
공감세미나한글 유니코드
한글 표현을 위한 국내 표준인 KSC5601은 Ascii Code 기반으로
동작합니다.
1991년에 전세계 언어 표기법에 대한 Unicode 1.0이 국제 표준
으로 제정되었는데 이때 KSC5601이 포함되어 Unicode 기반의
국제 표준으로써 한글 처리 방식이 제공되고 있습니다.
Unicode에 포함된 한글 표기방식은 조합형 표기법과 완성형 표
기법이 모두 존재합니다.
공감세미나한글 유니코드
Unicode는 최초 제정 후 많은 업데이트를 거쳐서
2019년 현재 Unicode 12.0으로 제공되고 있습니다.
공감세미나한글 유니코드
https://unicode.org/charts/
공감세미나한글 유니코드
https://unicode.org/charts/
공감세미나한글 유니코드
한글 자모
(조합형)
한글 음절
(완성형)
- 표현 가능한 모든 글자를 처리할 수 있습니다.
- 한글 자모와 한글 음절은 상호 변환이 가능합니다.
- 완성형 음절의 코드를 적절한 공식으로 쪼개면 각각 초성, 중성, 종성의 코드가
됩니다.
한글 호환형 자모
공감세미나한글 유니코드
공감세미나한글 자모 (조합형)
공감세미나한글 자모 (조합형)
초성 (19자)
공감세미나한글 자모 (조합형)
중성 (21자)
공감세미나한글 자모 (조합형)
종성 (28자) 27자 + 빈값 (0x0000)
공감세미나한글 음절 (완성형)
공감세미나한글 음절 (완성형)
초성 ‘ㄱ'의 경우
중성 ‘ㅏ'로 정의된 글자수 : 28자
(종성 28자)
총 중성 수는 21자이므로
초성 ‘ㄱ‘으로 정의된 글자수 : 588자
(28 * 21)
총 초성 수는 19자이므로
정의된 모든 글자수 : 11,172자
공감세미나한글 음절 (완성형)
한글로
표현 가능한
11,172자
모두 정의
공감세미나한글 호환형 자모
자모가 왜 이중으로 정의되어 있을까?
(이건 잠시 뒤에서…)
공감세미나조합형 완성형 상호변환
https://www.unicode.org/versions/Unicode12.0.0/ch03.pdf
공감세미나조합형 완성형 상호변환
https://www.unicode.org/versions/Unicode12.0.0/ch03.pdf
공감세미나조합형 완성형 상호변환
https://www.unicode.org/versions/Unicode12.0.0/ch03.pdf
공감세미나조합형 완성형 상호변환
공감세미나조합형 완성형 상호변환
공감세미나조합형 완성형 상호변환
공감세미나조합형 완성형 상호변환
공감세미나조합형 완성형 상호변환
공감세미나Java Normalizer
공감세미나Java Normalizer
공감세미나Java Normalizer
한글 호환형 자모 재등장!
공감세미나
Thank You

More Related Content

What's hot

Dms 22319 micro project
Dms 22319 micro projectDms 22319 micro project
Dms 22319 micro projectARVIND SARDAR
 
5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere PerformanceJonas Hünig
 
Building a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 MinutesBuilding a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 MinutesGaines Kergosien
 
Lecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeLecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeMubashir Ali
 
Unit 1 introduction to web programming
Unit 1 introduction to web programmingUnit 1 introduction to web programming
Unit 1 introduction to web programmingzahid7578
 
DATA FLOW DIAGRAMS AND USER STORIES.pdf
DATA FLOW DIAGRAMS AND USER STORIES.pdfDATA FLOW DIAGRAMS AND USER STORIES.pdf
DATA FLOW DIAGRAMS AND USER STORIES.pdfRatheshCD
 
Online Book Portal
Online Book PortalOnline Book Portal
Online Book Portallavish19
 
Web Server And Database Server
Web Server And Database ServerWeb Server And Database Server
Web Server And Database ServerMahbubur Rahman
 
Software Testing
Software Testing Software Testing
Software Testing cpjcollege
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 
Music management system
Music management system  Music management system
Music management system Nilesh Padwal
 
Library work breakdown structure
Library work breakdown structureLibrary work breakdown structure
Library work breakdown structureMuhammadUsman1700
 

What's hot (20)

Dms 22319 micro project
Dms 22319 micro projectDms 22319 micro project
Dms 22319 micro project
 
5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance5 Tweaks für 500 % bessere Performance
5 Tweaks für 500 % bessere Performance
 
Building a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 MinutesBuilding a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 Minutes
 
Vbscript
VbscriptVbscript
Vbscript
 
Lecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeLecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading scheme
 
Unit 1 introduction to web programming
Unit 1 introduction to web programmingUnit 1 introduction to web programming
Unit 1 introduction to web programming
 
DATA FLOW DIAGRAMS AND USER STORIES.pdf
DATA FLOW DIAGRAMS AND USER STORIES.pdfDATA FLOW DIAGRAMS AND USER STORIES.pdf
DATA FLOW DIAGRAMS AND USER STORIES.pdf
 
Online Book Portal
Online Book PortalOnline Book Portal
Online Book Portal
 
Srs for banking system
Srs for banking systemSrs for banking system
Srs for banking system
 
Web Server And Database Server
Web Server And Database ServerWeb Server And Database Server
Web Server And Database Server
 
Software Testing
Software Testing Software Testing
Software Testing
 
Visual Basic Controls ppt
Visual Basic Controls pptVisual Basic Controls ppt
Visual Basic Controls ppt
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 
GCC compiler
GCC compilerGCC compiler
GCC compiler
 
Music management system
Music management system  Music management system
Music management system
 
Unix shell scripts
Unix shell scriptsUnix shell scripts
Unix shell scripts
 
Atm project
Atm projectAtm project
Atm project
 
My ppt
My pptMy ppt
My ppt
 
Library work breakdown structure
Library work breakdown structureLibrary work breakdown structure
Library work breakdown structure
 
Linkers in compiler
Linkers in compilerLinkers in compiler
Linkers in compiler
 

More from 흥래 김

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기흥래 김
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유흥래 김
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기흥래 김
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기흥래 김
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기흥래 김
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2흥래 김
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1흥래 김
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성흥래 김
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression흥래 김
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8흥래 김
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa흥래 김
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
Apache http component
Apache http componentApache http component
Apache http component흥래 김
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포흥래 김
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화흥래 김
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략흥래 김
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava흥래 김
 

More from 흥래 김 (20)

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성
 
3. stream api
3. stream api3. stream api
3. stream api
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
Apache http component
Apache http componentApache http component
Apache http component
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava
 

한글 자모 분석 원리