xmin. guest@xmin ~ $
~/ $
[프로젝트] 2024년 11월 10일

NoBullyZone: KcBERT와 KcELECTRA로 만든 사이버 불링 방지 도구

KUCIS 프로젝트로 진행했던 NoBullyZone의 설계와 구현을 정리했습니다. 커뮤니티 환경에서 욕설과 비속어를 실시간 탐지하기 위해 KcBERT, KcELECTRA 앙상블 모델과 Flask API, 웹 커뮤니티 기능을 연결한 기록입니다.

KUCISNoBullyZoneAINLPKcBERTKcELECTRAFlaskcyberbullying

개요

NoBullyZone 은 2024년 KUCIS 프로젝트로 진행했던 사이버 불링 방지 도구다.

목표는 단순했다.

커뮤니티에서 작성되는 게시글, 댓글, 쪽지에 욕설과 비속어가 포함되어 있는지 AI 모델로 실시간 탐지하고, 필요한 경우 게시 전 차단한다.

인터넷 커뮤니티는 빠르게 정보를 공유할 수 있다는 장점이 있지만, 익명성 위에서 언어폭력과 사이버 불링이 쉽게 발생한다. 특히 단순 금칙어 필터는 ㅅ1발 , ㅈ같네 처럼 변형된 표현이나 문맥에 따라 달라지는 표현을 제대로 잡기 어렵다.

그래서 이 프로젝트에서는 커뮤니티 환경에 맞는 욕설 탐지 모델과 웹 서비스를 함께 만들었다.

문제 정의

기존 욕설 필터링은 대부분 단어 기반이다.

금칙어 목록에 포함되어 있으면 차단 포함되어 있지 않으면 통과

하지만 실제 커뮤니티에서는 다음 문제가 생긴다.

욕설을 숫자, 초성, 기호로 변형한다.

특정 단어가 항상 공격적인 의미로 쓰이지 않는다.

문맥에 따라 자조적 표현과 타인 비하 표현을 구분해야 한다.

금칙어를 너무 강하게 적용하면 정상적인 커뮤니티 활동까지 막는다.

따라서 단순 키워드 차단보다 문장 단위의 의미를 보는 모델이 필요하다고 판단했다.

전체 구조

프로젝트는 크게 두 부분으로 나누어 구현했다.

웹 커뮤니티 -> 게시글 / 댓글 / 쪽지 작성 -> 입력 텍스트를 AI 탐지 API로 전달 -> 결과에 따라 저장 또는 차단

AI 탐지 API -> 텍스트 전처리 -> 금칙어 기반 1차 검사 -> KcBERT / KcELECTRA 모델 예측 -> 앙상블 기준으로 최종 판정

웹 서비스는 JavaScript , HTML , CSS 기반으로 구성했고, AI 모델 서버는 Flask , transformers , torch 를 사용했다. 초기 계획은 AWS 배포였지만, 비용과 패키징 문제 때문에 시연 단계에서는 ngrok 으로 외부 접근 가능한 API를 구성했다.

웹 커뮤니티 설계

웹 커뮤니티에서는 다음 데이터가 핵심이었다.

users 사용자 정보 posts 게시글 comments 댓글 message 쪽지 내용 messagelist 쪽지방 메타데이터

게시글, 댓글, 쪽지에는 공통적으로 report 값이 들어간다. AI가 비속어를 탐지하면 report = 1 , 탐지하지 않으면 report = 0 으로 저장하는 방식이다.