Re-design!

[정보디자인] 한글 자소 빈도와 키보드 히트맵

無異 2014. 10. 2. 10:16
한글날을 맞이하여 한글키보드와 관련해 사내 메일로 주고 받았던 주제들을 모아서 정리해보려고 합니다. 우선 한글 터치 키보드 디자인에 대한 얘기입니다. 터치스크린을 채용한 폰이 나오면서부터 10키에서 벗어난 새로운 한글 자판의 배열을 고민하기 시작했습니다. 자판의 여러 시안을 만들어보긴 했는데 문제는 어떤게 좋은지 평가하기가 어려웠습니다. 매번 사람들에게 테스트 해보게 할 수 도 없고, 한 두번 사용해서는 제대로된 평가를 할 수 없으니까요. 익숙한 자판이 더 편하니까 충분히 숙달 되기 전에는 비교가 어렵습니다. 그래서 자판의 효율을 간단히 평가할 수 있도록 키의 배열과 빈도를 시각화 할 수 있는 heatmap 생성 툴을 만들었습니다.


한글 자소 빈도

휴대폰 자판의 경우 새로운 방식의 한글 자판을 소개할 때 기존의 천지인이나 나랏글보다 타수가 줄었다는 것을 많이들 강조합니다. 하지만 타수를 제대로 비교하려면 자소의 빈도를 함께 고려해야 합니다. 많이 쓰이지 않는 자소의 타수가 한 두번 주는것보다는 자주 입력해야하는 자소를 쉽게 칠 수 있어야 실제 어느정도 타수가 줄어들었는지 효과를 알 수 있습니다.

영어나 라틴어 계통 언어의 자소 빈도에 대한 연구는 많이 되어 있어 위키백과만 찾아도 자료가 잘 정리되어 있습니다. 하지만 한글의 자소 빈도는 공개된 자료를 얻기 어렵습니다.

자소 빈도는 분석을 위한 표본 문장을 어떻게 선정하느냐에 따라 차이가 납니다. 우리말에는 ㅊㅋㅌㅍ 같은 거센소리 자음이 많이 쓰이지 않지만 외래어를 전문용어로 많이 사용하는 분야의 서적에서는 빈도가 높겠지요. 그래서 보통 어휘의 편향이 적을 것이라고 생각되는 교과서 같은 책을 표본으로 분석하는 경우가 많습니다.

하지만 휴대폰 자판을 만드는게 목적이니까 문어체보다는 휴대폰에서 사용하는 문자 메시지 같은 구어체 문장을 표본으로 삼는게 보다 적합할거라고 생각합니다. 휴대폰으로 논문을 쓸 건 아니잖아요. 충분한 양의 다수 사용자의 문자를 수집하는건 프라이버시 문제로 어렵기 때문에 대신 트위터를 표본으로 사용하기로 했습니다.

트위터 stream API 를 이용해서 한글 트윗 2 만여개에서 60 만자 정도를 수집해서 자소를 분리했습니다. 충분히 많지는 않지만 절반인 30만자로 분석했을때와 빈도 변화가 거의 없었으니까 적절한 크기라고 생각됩니다.

한글은 초성 19 자 중성 21 자 종성 27 자(+ null 받침 없음)의 조합으로 구성되어 있습니다. 훈민정음에서는 더 다양한 자소의 결합이 가능했지만 현대 우리말에서는 이렇게 19*21*28 = 11172 자의 조합만을 허용하고 있습니다. 유니코드에는 이 조합의 순서대로 한글에 코드값을 부여하고 있는데, 이 규칙을 이용해서 반대로 각 자소를 간단히 분리할 수 있습니다.


트윗에서 영어나 숫자 특수기호등을 빼고 한글만을 분리해서 음절을 초성,중성,종성으로 나누고 각각의 빈도를 구합니다.



이렇게 구한 자소의 빈도별 순위는 아래와 같습니다. 보다 자세한 자소 빈도표 원본은 공유한 구글 문서를 참고하세요.


한글 자소빈도 by 무이 via 한글 트윈 자소 분석

초성에서는 o이 압도적으로 많고 ㄱㅅㅈㄷㄴ 순입니다. 받침에서는 ㄴ이 가장 많고 ㄹㅇㄱㅁ 순이고요. 받침없이 초성+종성 으로만 이루어진 글자가 56% 정도입니다.
원래 한글에서 모음없이 자음만 달랑있는 글자는 온전한 음절이 아닙니다만 요즘엔 그런 초성체가 많이 보입니다. 휴대폰에서 글자 입력이 귀찮으니까 이런 사용행태가 나온 것 같은데요. 분석한 트윗에서는 13%가 이런 초성체를 사용하고 있습니다. 그 중에 형태를 이용한 이모티콘으로 사용하는 경우도 있긴 하지만요. 가장 많이 사용되는 초성체는 역시나 ㅋㅋ인데요.정상적인 한글 문장에서 ㅋ의 빈도는 1.6%밖에 되지 않지만 이런 초성체를 포함하면 5.1%로 3배이상 높아집니다. 전 이런거 싫어해서 무시할까 했는데 :) 다행히 초성체를 포함하더라도 빈도 순위에 영향을 미치는 자소는 ㅋ 밖에 없었습니다. ㅎㅎ도 많이 사용하는데 ㅋ는 그냥 쓰는게 아니라 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 처럼 미친듯이 연이어 쓰는 경우가 많거든요. :)



키보드 Heatmap

자소의 빈도를 알았으니 이제 실제 자판에서의 키 사용 빈도를 구해볼 수 있습니다. 한글 자소와 자판의 키가 1:1 대응이 되지는 않으니 다시 계산해야 합니다. 더 적은 수의 키로 자소를 표현하기 위해서 키를 여러번 누르는 멀티탭 방식과 별도의 변환키를 사용하거나 키의 조합으로 입력하는 방식이 주로 사용됩니다. 멀티탭 방식은 천지인의 자음이나 나랏글의 모음에 사용되고있고 변환키 방식은 쉬프트키나 나랏글의 획추가, 쌍자음키에서 사용되고 있습니다. 요즘은 터치스크린에서는 키를 누르고 네방향으로 밀기(flick) 를 통한 입력도 많이 사용되고 있고요.

자판 배열을 자판에 사용되는 심볼을 이용해서 표시하고
초성,중성,종성 자소의 입력 규칙을 자판의 심볼을 이용해서 정의해 놓으면 그것으로 자판 키의 빈도를 계산하고 빈도에 따라 색을 달리하여 히트맵을 만들 수 있습니다.

두벌식 자판의 사용 빈도는 아래와 같습니다. 영어 자판인 qwerty,dvorak,colemak 자판의 heatmap을 비교한 자료는 온라인 상에서 쉽게 찾을 수 있지만 한글 자판은 처음 보실거에요. 어서 와. 한글 자판 힛맵은 처음이지?
http://lab.pxd.co.kr/heatmap/ 에서 두벌식과 세벌식, 천지인, 나랏글등 여러 키보드 히트맵과 자소별 타수 비교등 보다 자세한 정보를 볼 수 있습니다.

두벌식 자소 빈도 Heatmap by 무이

이렇게 자판 키의 사용 빈도를 시각화한 모형만을 가지고도 자판 설계의 여러 요소를 평가 할 수 있습니다. 진할 수록 키의 사용 빈도가 높고 흰색은 잘 사용되지 않는 키입니다. 우선 학습성을 고려하지 않는다면 어떻게 이 키들을 배열하는게 최선일까요?

다음 단어들을 실제 키보드에서 (폰이나 패드에서 말고요) 타이핑 해보세요.
address, traverse, exaggerate, trade secret, stress test, Easter egg
막 손가락이 꼬일 것 같죠? 키보드는 양손을 사용하라고 만든거니까 양손을 교대로 사용해야(한 손만을 반복해서 사용 하지 않아야) 손에 긴장을 줄여주고 입력 속도도 빨라집니다. 다행히도 한글은 자음과 모음을 조합해서 만드는 글자라서 자음과 모음을 양손으로 분리해 놓는 것만으로 양손 교대 입력이 어느정도 이루어집니다.


한글 자소 빈도와 키조합  L= left shift, R= right shift


qwerty 자판에서는 숫자키를 제외하면 3개의 키줄이 있고 각 줄에 10개의 키가 있어서 소지,약지,중지가 가운데 위 아래 3개의 키를 담당하고 검지가 6개의 키를 담당해서 입력합니다. 손가락을 키보드에 올려놓는 위치를 resting position이라고 하는데 손가락의 움직임이 최소가 되려면 가운데 줄에 손을 올려놓는게 가장 자연스럽겠지요. 그래서 가운데 줄에 빈도가 높은 자소를 배치하면 손가락을 덜 움직이게 되니까 편합니다. 관절의 움직임을 고려하면 아래줄 보다는 윗줄이 치기 쉬우니까 가급적 아랫줄에는 빈도가 낮은 키를 배열합니다. 새끼 손가락이나 약지보다는 힘이 센 검지나 중지에 더 많은 키가 할당되도록 배치하는게 더 수월합니다. 위의 손가락별 타수 빈도를 보면 적절한 듯 보이지만 세벌식은 왼손 새끼 손가락의 할당이 30% ,약지는 15%정도 더 적게 배열되어 있습니다.

아래의 두벌식 자판은 위에서 얘기한 원칙을 보다 잘 따르고 있다는것이 히트맵을 통해 잘 드러납니다. 아래 자판은 북한의 표준 자판입니다. 실제로 북한의 김영민 자판은 우리의 두벌식 KSC5715 보다 20%정도 입력 속도가 빠르다고 합니다. 입력 구조를 바꾸지 않아도, 자소 빈도를 세심하게 고려하는 것 만으로 보다 나은 자판 디자인을 할 수 있습니다.

북한 김영민안

다음에는 이 툴을 활용해서 휴대폰에서 엄지 손가락으로 입력하기에 적합한 자판을 만들어 보도록 하겠습니다.
이어지는 글 : 무이단모음 키보드 (구글단모음 키보드 리디자인)


[참고##정보디자인##]