실시간 기반의 프로젝트 웹게임 서버를 운영하면서
“사용자가 입력하는 텍스트를 어떻게 안전하게 관리할 것인가?”
이 문제는 항상 가장 복잡한 기술적 난제 중 하나였다.
한국어에서는 욕설 변형이 너무 자유롭다.
숫자, 특수문자, 자모 분리, 무의미한 반복, 의도적 오타까지…
기존의 단순 금칙어 필터링으로는 결코 잡을 수 없는 경우를 수없이 봤다.
그러다 보니 자연스럽게
“이걸 제대로 해결하는 API를 직접 만들어보면 어떨까?”
라는 생각이 들었고, 그 결과 이번 프로젝트 말조심(MalJosim) 을 시작하게 되었다.
이 글은 말조심 프로젝트를 어떤 이유로 시작하게 되었는지,
그리고 어떤 방향으로 개발해 나갈 계획인지 정리한 첫 번째 개발 일지다.
웹게임 프로젝트들을 운영하며 예상보다 훨씬 많은 텍스트 케이스를 만났고,
그중 상당수가 기존 필터로는 탐지조차 불가능했다.
예를 들면 이런 것들:
“ㅅㅂ”, “ㅅㅂㄹㅁ”, “shebal”, “c!bal”
“시이이발”, “ㅆ ㅣ바루”, “죶같네”
“개좋다” vs “개같다”
“미친 속도” vs “미친놈”
단순 사전식 필터를 쓴다면
문맥 오탐, 변형·오타 탐지 실패, 붙여쓰기 문제 등
운영 중 오류가 너무 잦아졌다.
그리고 이런 문제는 대형 게임/커뮤니티/메신저도 공통적으로 겪고 있다.
그래서 시장에도 제대로 된 “한국어 텍스트 필터 API”가 적다.
결론적으로,
정규화 + 사전식 + AI + 문맥 판단을 결합한 “하이브리드 욕설 필터”가 필요했다.
🛠️ 그래서 시작한 프로젝트, 말조심(MalJosim)
한국어 욕설 필터링을 위한 AI 기반 Moderation API
말조심은 단순 금칙어 필터가 아니다.
아키텍처 자체가 “문맥 + 의미 + 변형 처리”를 모두 목표로 한다.
한국어 욕설 변형을 잡기 위한 가장 중요한 단계
자모 분리/재조합
숫자 → 한글(5=ㅅ, 2=ㄹ 등)
반복 문자 축소
특수문자 제거
정규화가 정확해야 그다음 단계가 제대로 작동한다.
SaaS 확장을 위한 고객별 데이터 분리
금칙어 메타데이터 관리(aliases, severity, category)
CRUD 로그, 관리자 패널 확장성
타입 안전성
쉬운 스키마 진화
빠른 개발 속도
JSON 필드 처리에 강함
실시간 필터링은 PostgreSQL에서 처리하면 느리고 비효율적이다.
그래서 런타임에서는 Redis Set만 사용한다.
bad_words:global
bad_words:client:{id}
Boot-time sync
Write-through 캐싱
조회 성능은 O(1)로 매우 빠르다.
한국어 욕설은 대부분 “붙여쓰기 형태”로 나타난다.
씨발놈
좆같냐
개좆같네
이를 해결하기 위해
문장을 2~6자 길이의 substring으로 슬라이딩하여 후보를 만든다.
이번 프로젝트의 핵심 차별점은 여기에 있다.
욕설 데이터(단어,설명,변형)를 모두 Embedding하여 VectorStore(Chroma/Qdrant)를 구축한다.
문장이 들어오면 이를 VectorStore에 Query하여 의미적으로 가까운 욕설 후보를 가져온 뒤
LLM이 이를 문맥 기반으로 분류한다.
이 구조가 기존 사전식 필터의 한계를 보완한다.
“새끼 고양이” → 욕 아님
“개좋아” → 욕 아님
“개같네” → 욕 맞음
이런 케이스들을 문맥 기반으로 정확히 분류한다.
출력은 JSON 형태:
[
{ "original": "ㅅㅂ", "normalized": "씨발", "score": 0.93 }
]
사전식 + AI 점수를 조합하여 allow / warning / block 으로 결과를 반환한다.
PostgreSQL + Prisma 구축
금칙어 스키마 설계
Redis 런타임 캐시 구조 확정
Normalization Engine 구현 시작
Sliding Window 후보 추출
Redis 기반 매칭
CRUD + Write-through 캐싱
데이터 Embedding
VectorStore 인덱싱
LangChain Retriever / Chain 구성
JSON Output 전문 프롬프트 개발
Dictionary + AI Scoring 조합
/v1/moderation/check
Javascript SDK
Playground UI 제작
관리자 페이지
고객별 금칙어
보고서/로그/통계
Rate Limit + Auth
말조심(MalJosim) 은 단순히 욕설을 차단하는 기술이 아니라
“정확하고 유연한 대화 환경을 만드는 시스템”을 목표로 한다.
앞으로 개발 과정은 Velog에 계속 기록할 예정이고,
AI 기반 필터링 시스템을 만들고 싶은 개발자에게도 도움이 되기를 바란다.