김건형Portfolio
← 전체 프로젝트

팀 프로젝트

Respect Zone · 실시간 언어 피드백

대화 속 욕설·혐오 표현의 분석 결과를 실시간으로 전달하는 서비스

기간
2024.09.02 - 2024.12.05
소속
데이터분석캡스톤디자인 · 3인 팀
담당
Backend 설계·구현

개요

음성을 문장으로 인식해 욕설·혐오 표현을 분류하고 앱·스피커로 피드백하는 서비스. WebSocket으로 받은 문장을 Kafka로 전달하고, 분류 결과를 해당 대화 세션에 돌려주는 Spring 백엔드를 구현

담당 업무

WebSocket 문장 수신, Kafka 입력·결과 토픽 연결, 대화 세션별 결과 전달과 기록 조회·삭제를 Spring 백엔드로 구현

제품 기능
언어 사용에 따라 화면 색·표정·차트와 스피커 안내가 달라짐
기록 조회
세션별 문장과 클린 스코어를 확인하고 기록을 삭제할 수 있음
문장 수신·세션 연결
WebSocket
문장·분류 결과 전달
실시간
분류 결과·점수 활용
5개 범주

구조

  1. 01음성 인식 앱인식한 문장 전달
  2. 02실시간 문장 수신WebSocket · 발화 세션
  3. 03분석 대기 큐Kafka · 모델 입력
  4. 04분류 결과 수신욕설·혐오 / 정상
  5. 05피드백·기록세션별 전달 · 문장 저장
시스템 아키텍처 · 실시간 문장 처리
시스템 아키텍처 · 실시간 문장 처리

문제 및 해결

문장은 계속 들어오지만 모델 처리는 별도 흐름

문제
음성 인식 문장과 모델의 분류 결과를 실시간으로 주고받아야 함
해결
WebSocket으로 문장을 받고 Kafka의 입력·결과 토픽을 연결해 비동기 중계 흐름을 구현
결과
클라이언트 통신과 모델 처리를 분리하면서 분류 결과를 실시간으로 전달

분류 결과를 화면과 이후 기록 모두에 사용

문제
즉시 피드백뿐 아니라 세션별 점수와 나쁜 표현의 내역을 다시 확인할 수 있어야 함
해결
세션별 결과 전달과 문제가 있는 문장·집계 정보 저장을 함께 처리하도록 연결
결과
실시간 피드백과 세션 기록 조회·삭제를 제공하는 백엔드를 구현

구현 내용

입력 처리
SentenceWebSocketController에서 문장을 받고 분석 서비스가 Kafka에 전달할 메시지를 구성
메시지 경로
text.all은 분석 입력, text.abuse와 text.clean은 분류 결과. 백엔드는 결과 토픽을 구독해 해당 세션으로 전달
반환 데이터
예측 라벨·점수와 성별·연령·기타 혐오·욕설·클린 범주의 점수를 받아 화면과 기록에 사용
세션 관리
대화별 결과 채널과 문장 내역을 연결. 세션 기록 조회·삭제와 분류 통계를 백엔드에서 제공