| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 드론 촬영
- 엘라이x
- 미사카x
- 드론 자격증
- UX튜토리얼
- 로갈리
- 로그 엘라이
- DJI 신제품
- misakax
- 드론
- 드론 초보자
- DJI 드론
- 비행승인
- 드론 촬영허가
- iPadOS
- DJI
- 제주도 자전거 여행
- 제주환상자전거길
- 드론 법규
- 드론 사진
- 픽셀
- 제주도 자전거
- 구글 픽셀
- 드론 비행승인
- 드론 법
- UX디자인
- 드론 서류
- 촬영허가
- 제주도 자전거 종주
- 제주도 자전거 일주
- Today
- Total
테크트리(TechTree)
Making of NewSwipe - Part 5: 내 말버릇을 배우는 키보드와 개인정보 본문
Making of NewSwipe - Part 5: 내 말버릇을 배우는 키보드와 개인정보
Alternative_TechTree 2026. 10. 18. 16:32안녕하세요, Alternative입니다.
2026년 한글날을 맞아, 새로운 한글 입력 시스템 NewSwipe를 출시하였습니다.
https://github.com/TechTree-Alt/NewSwipe
GitHub - TechTree-Alt/NewSwipe: Modern, lightweight, and comfortable Korean Input System.
Modern, lightweight, and comfortable Korean Input System. - TechTree-Alt/NewSwipe
github.com
이번 글에서는 NewSwipe가 사용자의 말버릇을 어떻게 배우는지, 배우는 과정에서 개인정보는 어떻게 다루는지 설명하고자 합니다.
이 글의 내용은 새로운 단어 추천, 자동수정 엔진이 들어가는 NewSwipe 1.5.0 이상의 버전에 해당됩니다. 추후 버전에서 수정될 수 있습니다.
이 글은 Claude Opus 5.5의 도움을 받아 작성하였습니다.
사람마다 말투가 다르다
같은 말을 해도 사람마다 치는 글은 다릅니다. 누구는 "알겠어", 누구는 "알겠습니다", 또 누구는 "ㅇㅋ"라고 칩니다. 자주 부르는 이름, 친구끼리만 쓰는 줄임말, 버릇처럼 붙이는 어미까지 따지면 사전 하나로 모든 사람에게 딱 맞는 추천을 하기는 어렵습니다.
그래서 NewSwipe는 쓸수록 내가 자주 쓰는 말이 앞으로 나오도록 학습합니다. 학습은 처음부터 켜져 있고, 설정의 '추천, 학습 및 완성'에서 끌 수 있습니다.
노트 두 권
NewSwipe의 학습은 노트 두 권에 적어 둔다고 생각하시면 쉽습니다.
첫째 노트에는 사전에 없는 말을 적습니다. 사람 이름, 신조어, 나만 쓰는 줄임말 같은 것들입니다. 여기 적힌 말은 추천과 자동 수정이 "아는 말"로 대합니다.
둘째 노트에는 내가 쓴 말과 횟수를 모두 적습니다. 사전에 원래 있던 말까지 포함해서, 어떤 말을 몇 번 썼는지, 어떤 말 다음에 어떤 말을 썼는지 적습니다. 새 단어를 배우려는 게 아니라, 추천 순서를 내 버릇에 맞추려고 적는 노트입니다.
노트를 얼마나 믿을지도 차츰 달라집니다. 처음 깔았을 때는 노트가 비어 있으니 사전만 믿고, 기록이 쌓일수록 노트를 더 믿습니다. 다만 아무리 많이 써도 절반 넘게는 믿지 않습니다. 버릇이 아무리 뚜렷해도 처음 쓰는 말을 칠 때는 사전이 있어야 하니까요.
노트에 적을 수 있는 양에는 한도가 있어서, 넘치면 한 번만 쓰고 오래 안 쓴 말부터 지웁니다. 한도를 두 배 넘게 늘려 보기도 했는데 추천은 거의 나아지지 않았습니다. 그래서 가볍게 두는 쪽을 골랐습니다.
오타까지 배우면 곤란하다
학습 기능을 만들면서 가장 먼저 부딪힌 문제는 오타까지 배운다는 점이었습니다. 실수로 한 번 친 '안녕하새요'가 노트에 적혀서 다음부터 추천에 뜨면 곤란하겠죠.
처음에는 "사전에 없는 말은 두 번 넘게 써야 추천한다"는 단순한 규칙을 뒀습니다. 똑같은 오타를 두 번 내는 일은 드무니까요. 그런데 이러면 새로 알게 된 사람 이름이나 신조어도 세 번째에야 추천에 떠서 답답했습니다.
그래서 규칙을 바꿨습니다. 한 번 쓴 말도 바로 추천하되, 흔한 단어를 잘못 친 것처럼 보이면 뺍니다. '안녕하새요'는 자동 수정이 '안녕하세요'로 고칠 만한 말이니 오타로 보고 빼고, '짝남'처럼 비슷한 흔한 말이 없으면 바로 추천합니다. 이걸 가려내는 계산이 조금 무거워서, 화면이 느려지지 않게 학습할 때 백그라운드에서 미리 해 둡니다.
조사는 떼고 기억한다
한국어 학습에는 한국어만의 문제가 또 있습니다. '짝남한테', '짝남이야', '짝남이랑'을 따로따로 배우면 같은 말을 세 번 배우는 꼴이고, 정작 '짝남을'은 여전히 모릅니다.
그래서 조사가 붙은 말은 조사를 떼고 '짝남'으로 기억합니다. 그러면 지난 글에서 설명한 조사 붙이기가 돌아가서 짝남이, 짝남을, 짝남한테 등 어느 꼴이든 추천할 수 있습니다.
이것도 생각만큼 간단하지는 않았습니다. '길냥이'를 쳤더니 '이'를 조사로 보고 '길냥'으로 배워서, 추천에 '길냥을', '길냥은' 같은 말이 뜨더라고요. '이·가·도·만'처럼 낱말 끝 글자와 모양이 같은 조사가 말썽이었습니다.
그래서 이런 조사는 바로 떼지 않고, 앞부분을 다른 꼴로도 쓴 적이 있을 때만 뗍니다. '길냥이'만 계속 쓰면 '길냥이' 그대로 배우고, '짝남이'와 '짝남한테'를 둘 다 썼다면 그제야 '짝남'이 한 낱말이라고 판단합니다.
놓치고 있던 말들
그런데도 학습 효과가 기대보다 작아서 원인을 찾아보니, 배워야 할 말을 몇 개 놓치고 있었습니다.
처음에는 스페이스를 누를 때 직전 단어를 배우게 했습니다. 그런데 메신저에서는 문장 끝 단어를 치고 스페이스 없이 바로 보내기를 누르죠. 그러다 보니 "알겠어", "갈게", "했잖아" 같은 문장 끝 반말 어미를 전혀 배우지 못하고 있었습니다. 따지고 보면 메신저 말투가 가장 잘 드러나는 곳이 문장 끝인데 말이죠.
그래서 아래 경우에도 배우도록 고쳤습니다.
- 보내기 버튼을 눌러 입력란이 한꺼번에 비워질 때, 마지막 단어
- ?나 !를 치려고 기호 자판으로 넘어갈 때, 그 앞 단어
- '알겠어ㅋㅋ'처럼 끝에 ㅋㅋ, ㅠㅠ를 붙였을 때는 그걸 떼고 '알겠어'로
고친 뒤 평가 문장을 실제로 쓰듯 이어서 치며 학습시켜 보니, 1,500문장쯤 지나자 키 절약률이 학습 없이 쓸 때보다 7~8%p 높아졌습니다. 예전 학습 방식과 비교해도 1.5~2%p 높았습니다.
내가 쓰는 어미까지
마지막으로 넣은 기능은 내가 자주 쓰는 어미를 배워 다른 말에도 붙이는 기능입니다.
NewSwipe는 사전에 없는 활용형을 만들 때 앱에 들어 있는 어미 목록을 씁니다. 그런데 이 목록에 '줘'는 있어도 '줘서'는 없어서, '보내줘ㅅ'까지 쳐도 '보내줘서'가 뜨지 않았습니다.
그래서 내가 쓴 말을 앞부분과 어미로 나눠 적어 두고, 서로 다른 말 두 개 넘게에 붙여 쓴 어미는 내 어미 목록에 넣게 했습니다. '보여줘서'와 '알려줘서'를 쓴 적이 있으면 '줘서'를 내 어미로 배워서, 처음 치는 '보내줘서'도 추천하는 식입니다. 한 말에서만 본 끝부분은 어미가 아닐 수도 있어서 두 개 넘게 쓰였는지를 봅니다.
효과는 말투에 따라 크게 갈렸습니다. 여러 사람이 쓴 글을 섞어 놓은 평가 문장에서는 +0.1%p로 미미했는데, 한 사람이 같은 말투로 쓴 글로 재 보니 평균 +0.5%p, 말투가 독특한 경우에는 +1.6%p까지 올랐습니다. 말버릇이 뚜렷한 분일수록 덕을 보는 기능입니다.
넣어 봤다가 뺀 기능도 있습니다. 사용자가 반말을 주로 쓰는지 해요체를 쓰는지 적어 두고 그에 맞춰 어미 순서를 바꾸는 기능이었는데, 어떤 평가에서는 조금 오르고 다른 평가에서는 오히려 떨어졌습니다. 알고 보니 단어마다 쌓이는 기록만으로도 말투를 이미 충분히 배우고 있었습니다. 그럴듯해 보여도 효과가 없으면 최적화를 위해 과감히 빼는 게 NewSwipe의 원칙입니다.
키보드는 내가 치는 걸 다 본다
학습 이야기에서 개인정보를 빼놓을 수는 없습니다. 키보드는 내가 치는 글자를 하나도 빠짐없이 봅니다. 메시지, 검색어, 메모, 때로는 민감한 내용까지요. Gboard를 떠난 이유 중 하나가 개인정보 처리에 대한 불신이었던 만큼, 이 부분은 양보하지 않았습니다.
- NewSwipe에는 인터넷 권한이 아예 없습니다. 배운 내용을 어딘가로 보내고 싶어도 보낼 길이 없습니다.
- 학습 기록은 폰 안의 파일에만 남고, 설정 백업에도 넣지 않습니다.
- 비밀번호와 이메일 입력란에서는 추천과 학습을 쓰지 않습니다.
- 앱이 "이 입력란은 학습하지 말라"고 요청하면(시크릿 모드 등) 학습하지 않습니다.
- 추천을 길게 누르면 그 단어를 학습에서 지울 수 있습니다. 원래 사전에 있던 단어라면 내 입력 기록만 지워서 처음 순서로 돌려 놓습니다. 설정에서 학습한 단어를 한꺼번에 지울 수도 있습니다.
- 앞에서 말씀드린 사전 팩에는 단어와 빈도 같은 데이터만 담고, 실행되는 코드는 담지 않습니다. 내가 치는 글을 다 보는 키보드가 밖에서 받은 코드를 돌리는 건 위험하다고 봤습니다.
지금까지 NewSwipe 학습 기능에 대한 이야기였습니다.
학습 효과는 하루 이틀 만에 드러나지는 않습니다. 그래도 며칠, 몇 주 쓰다 보면 자주 쓰는 말이 조금씩 앞으로 나오는 게 느껴지실 겁니다. 그리고 이 모든 학습은 오로지 여러분의 폰 안에서만 일어납니다. NewSwipe를 써 보시고, 학습 효과를 직접 체감할 수 있길 바랍니다.
이러한 개발 기록이 누군가에게 도움이 되었으면 좋겠습니다!
'NewSwipe > NewSwipe 정보' 카테고리의 다른 글
| Making of NewSwipe - Part 4: 잘 고치기보다 잘 참아야 하는 자동 수정 (1) | 2026.10.18 |
|---|---|
| Making of NewSwipe - Part 3: 한국어 단어 추천이 유독 어려운 이유 (0) | 2026.10.18 |
| Making of NewSwipe - Part 2: NewSwipe 단모음 배열의 개발 과정 (0) | 2026.10.16 |
| Making of NewSwipe - Part 1: 왜 만들었는가 (0) | 2026.10.12 |