unicode와 한국어 간단하게 알아보기
1. unicode
다양한 언어처리에서 기본적으로 중요함
전 세계 모든 문자를 일관되게 표현하고 다룰 수 있도록 만들어진 문자 set
문자마다 숫자 하나에 mapping?
character을 보면 알겠지만 웬만한 문자들이 전부 unicode에 대응되어 있음
위 그림에서 보면 U+는 unicode를 뜻하는 접두어이고 AC00은 16진수 code point이며 이것이 1개의 character에 대응됨
2. UTF-8
encoding이란 문자를 컴퓨터에서 저장하거나 처리할 수 있게 이진수로 바꿔주는 작업
현재 가장 많이 쓰이는 encoding방식 중 하나가 UTF-8
문자 타입에 따라 다른 길이의 byte를 할당했음
ASCII는 256개로 character를 제한하면서 영어의 알파벳은 모두 ASCII code로 전부 표현할 수 있음
그러니까 가장 많이 쓰이는 영어 알파벳은 1byte만 있으면 전부 표현할 수 있다는 것
4byte에 이모지도 포함된다는 것이 재밌음
알파벳 뿐만 아니라 유럽계열 언어를 쓰고 싶으면 1byte를 추가해서 2byte로 표현
다른 언어를 쓰는 순간 그만큼 글자 수가 더 필요해서 더 많은 비트가 필요하기 때문이다.
필요할때마다 byte를 추가하여 효율적인 encoding이 가능하게 만들었다
UTF-8은 기본이 1byte를 사용하는거고(~4byte정도까지) UTF-16은 기본이 2byte부터 사용하는거(~4byte정도까지)
3. unicode를 다루는 방법?
python 3부터는 string type을 unicode 표준으로 사용한다고?
ord 함수는 문자를 unicode point로 변환하고
chr 함수는 unicode point를 문자로 변환해줌
위 그림을 보면 ‘A’같은 경우 1byte인 256이내의 65로 표현되고
한글을 표현하려면 3byte까지 가야하니까 ‘가’는 상당히 큰 숫자로 표현되어 있다는 것을 알 수 있다
3byte=24bit인데 2^24=16777216임..
4. unicode와 한국어
한국어는 한자 다음으로 unicode에서 많은 부분을 차지함
한글을 초성, 중성, 종성 각각 1글자로 보면 개수가 그렇게 많지는 않은데
초성+중성+종성으로 만든 예를 들면 간, 난, 단, 란, 락, … 등등이 모두 1글자로 본다면 글자수가 상당히 많아지는데
10000개가 넘어간다고함 이것을 완성형이라고 부름
완성형은 장점은 많은데 개수가 너무 많음
조합형은 조합하여 하나의 글자를 만들 수 있는 경우를 말하는데 직관적으로 len함수를 이용하면 완성형과 조합형의 차이를 볼수있다
완성형은 ‘가’를 1글자로 보고 len함수가 1을 출력하는데 조합형은 ‘가’를 ‘ㄱ’과 ‘ㅏ’의 합으로 보고 len함수가 2를 출력함
눈으로 볼 때는 ‘가’로 동일해서 완성형인지 조합형인지 볼려면 len으로 출력해봐야함
'컴퓨터과학(CS)' 카테고리의 다른 글
floating point와 fixed point 간단하게 (0) | 2024.05.22 |
---|---|
폭포수 모형 vs 프로토타입 모형 vs 나선형 모형 (0) | 2024.04.14 |
컴퓨터 상식 - 소수를 이진수로 표현하면 (0) | 2024.01.03 |
폰 노이만 아키텍처(Von Neumann architecture) (0) | 2024.01.03 |
컴퓨터 운영체제(operating system), 파일 시스템(file system), 터미널환경(console, terminal) (0) | 2024.01.02 |