개발 slecs

합쇼체만 반복되던 한국어 톤 다양화 개선

목차

한국어 자연어 처리에서 텍스트를 생성할 때 한 가지 단조로운 문체만 계속 나오는 문제가 있었다. 특히 humanizer 모듈의 기본 한국어 톤 처리 레벨에서 모든 문장이 존경스러운 합쇼체로만 일관되게 생성되곤 했다. 이번 작업은 그 지점을 개선해서 상황에 맞는 다양한 톤이 섞여 나올 수 있도록 보강한 것이다.

왜 톤이 단조로우면 문제일까

일반 사용자 입장에서 보면 이게 "버그"는 아니지만, 사용 경험(UX)에는 꽤 큰 영향을 미친다. 사람이 쓴 텍스트는 자연스럽게 톤이 섞여 있다. 이메일 한 통에서도 인사는 존댓말로 시작하고, 중간의 설명은 좀 더 편한 톤으로 다가온다. 반면 생성 시스템이 항상 같은 문체로만 내뱉으면 "로봇이 쓴 것 같다"는 인상을 준다. 특히 한국어에서 톤 변화는 감정 전달, 신뢰도, 자연스러움의 핵심이다.

기존 상황을 정리하면:
- 모든 문장이 합쇼체(존경·경어체)로만 생성됨
- 반복되는 패턴 때문에 기계적으로 느껴짐
- 콘텐츠의 친근성과 다양성이 부족함
- 사람이 직접 다시 손보는 비용 증가

이건 "1층"(primary level)의 기본 한국어 처리에서부터 개선할 필요가 있었다. 기초부터 단단하게 해야 위에 쌓이는 모든 기능들도 자연스러워지기 때문이다.

톤 다양화를 어떻게 구현했나

humanizer.py의 한국어 톤 처리 로직을 수정했다. 기존에는 "한국어 > 합쇼체로 변환"이라는 일방향의 파이프라인이었다면, 이제는 상황과 문맥에 따라 여러 톤을 선택할 수 있는 메커니즘을 추가했다.

구체적으로는:
- 톤 선택 옵션 확대: 존댓말(formal), 친구 톤(casual), 중립 톤 등 여러 옵션을 1층에서 지원
- 균일 반복 방지 로직: 같은 톤이 연속으로 나오지 않도록 제어
- 기본값 유지: 지정되지 않을 때는 기존 합쇼체 유지 (하위호환성)

코드 관점에서는 간단할 수 있지만, 사용자가 느끼는 개선 효과는 훨씬 크다.

이 작업에서 배운 점

이런 개선이 중요한 이유는 "자연스러움은 누적된 작은 선택의 결과"라는 걸 깨닫게 해준다. 프로덕트 팀이 기능을 추가할 때 "톤이 딱딱한데?"라고 피드백을 받으면, 개발 팀은 이를 단순히 미용(cosmetic) 이슈로 넘길 수도 있다. 하지만 실제로는 이런 디테일이 사용자가 느끼는 품질을 좌우한다.

톤 다양화 같은 개선을 할 때의 고려사항:

  1. 문맥 이해: 모든 문장에 같은 톤이 어울리는 건 아니다. 경고문은 다르게, 설명은 다르게 해야 함
  2. 일관성 vs 다양성: 다양성만 추구하다가 오히려 어색해질 수도 있다. 균형이 중요
  3. 기본값의 중요성: "새로운 기능"을 추가할 때도 기존 사용자 경험을 해치지 않는 기본값을 유지해야 함
  4. 팀 커뮤니케이션: 이런 변경이 실제로 도움이 되는지는 팀이 함께 느껴야 알 수 있다

다른 시스템에서도 비슷한 패턴이 있다. 챗봇의 응답 톤, API 에러 메시지, 자동 생성 리포트 등 "시스템이 텍스트를 만들어내는" 모든 곳에서 톤 일관성의 문제가 나타나고, 해결할 여지가 있다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.