Show GN: Typescript – 한/영 키 누르기 귀찮아서 직접 만든 한·영·일 자동 판별 입력기

4 hours ago 5

안녕하세요. 평소에 코딩하다가 슬랙이나 노션으로 넘어갈 때마다 한/영 키 안 눌러서 ⁠dkssudgktpdy⁠ 치고 백스페이스로 지우는 게 하루에도 수십 번씩 반복되다 보니, "그냥 내가 치는 걸 보고 입력기가 알아서 언어를 바꿔주면 안 되나?" 싶어서 직접 입력기를 하나 만들었습니다. 이름은 Typescript인데 마이크로소프트의 그 언어는 아니고요, 말 그대로 타이핑하는 문자 체계(Type + Script)를 알아서 맞춰준다는 뜻으로 지었습니다. 기존에도 오타가 나면 단축키를 눌러서 한/영을 뒤집어주는 프로그램들은 있었지만, 저는 아예 한/영 전환 키나 일본어 전환 키 자체를 머릿속에서 지우고 싶었습니다. 그래서 사후 변환 매크로가 아니라 아예 입력기(IME)로 접근했습니다. 그냥 한/영 키를 건드리지 않고 QWERTY 자판 그대로 쭉 치면, 단어 아래에 점선 밑줄로 현재 입력기가 판단한 결과를 실시간으로 보여주고 스페이스바나 구두점을 누르면 그대로 확정됩니다. 예를 들면 이런 식입니다. dkssudgktpdy, hello world!⁠ -> ⁠안녕하세요, hello world!⁠ dlrjs githubdp commitgkf rjdi⁠ -> ⁠이건 github에 commit할 거야⁠ fltpssn ghkdlxld⁠ -> ⁠리센느 화이팅⁠ kyouhaiitenkidesune⁠ -> ⁠きょうはいいてんきですね⁠ 만들면서 제일 신경 썼던 부분들을 조금 공유해 봅니다. 영단어 뒤에 한국어 조사가 붙는 경우 (⁠githubdp⁠, ⁠commitgkf⁠) 한국 개발자들이 채팅할 때 제일 많이 치는 패턴이 영어 단어 뒤에 조사를 바로 붙여 쓰는 건데, 단순히 단어 단위로만 영/한을 판별하니까 ⁠githubdp⁠가 이상한 오타로 빠지거나 통째로 영어로 남는 문제가 있었습니다. 그래서 단어 뒷부분이 한국어 조사나 어미 패턴(약 30개 정도)이랑 맞고 앞부분이 유효한 영단어면 ⁠github⁠ + ⁠에⁠, ⁠commit⁠ + ⁠할⁠로 쪼개서 변환하는 분리 로직을 앞에 넣었더니 체감 정확도가 훨씬 좋아졌습니다. 판별 방식과 일본어 한자 변환 기본 판별은 글자 3개 단위(Trigram) 출현 확률의 로그 우도 점수랑 영/한 어휘 사전 매칭, 그리고 바로 앞 단어가 어떤 언어였는지를 섞어서 점수를 매깁니다. 일본어의 경우에는 로마자를 가나로 바꾼 뒤, 스페이스바를 누르면 약 39만 개 표제어가 들어있는 IPADI...

Read Entire Article