Skip to content

Jwhyee/profanity-filter

Repository files navigation

Profanity Filter Library (Kotlin/Java)

비속어, 인격 모독 등에 대한 단어가 포함된 리포지토리입니다. 코드를 읽으실 때, 이 점 양해해주시면 감사하겠습니다.

Aho-Corasick(아호-코라식) 알고리즘 기반의 비속어 필터링 라이브러리입니다. 숫자나 공백을 섞은 변칙 욕설 탐지와 정교한 허용 단어 예외 처리를 지원합니다. 우아한형제들 기술 블로그의 비속어 탐지 전략을 참고하여 설계되었습니다.

주요 기능

  • 다중 패턴 매칭: 수천 개의 금칙어를 O(n) 시간 복잡도로 탐색
  • 변칙 우회 방어: 숫자(ㅅ123ㅂ), 공백(시 발) 등을 정규화하여 탐지
  • 지능형 예외 처리: "시발점"과 같이 비속어가 포함된 정상 단어를 구간 중첩 알고리즘으로 제외
  • Trie 빌드 캐싱: 정책 조합별로 허용 단어 트리를 캐싱하여 실시간 성능 보장

🚀 Quick Start

🛠️ 동작 원리

탐지 알고리즘

  1. 정규화: 입력 문장에서 정책에 따라 숫자와 공백을 제거 (예: 시 1발시발)
  2. 금칙어 탐지: Aho-Corasick 알고리즘으로 비속어 구간 탐색
  3. 허용 단어 탐지: 동일한 정책을 적용한 허용 단어 트리로 예외 구간 탐색
  4. 구간 교집합 판단: 금칙어 구간이 허용 단어 구간과 겹치면 제외

전처리 정책

정책 정규식 설명
NUMBERS [\p{N}] 숫자 혼용 우회 탐지 (예: 시1발)
WHITESPACES [\s] 공백 우회 탐지 (예: 시 발)

프로젝트 구조

io.github.jwhyee.profanity
├── dto        # 데이터 모델
├── helper     # Trie 빌더 및 유틸리티
├── policy     # 비속어 목록 및 정규화 정책
└── validator  # 검증 엔진 및 예외 처리

참고 자료

License

이 프로젝트는 MIT License를 따릅니다. 자세한 내용은 LICENSE 파일을 확인해주세요.

About

비속어 필터링 라이브러리(gradle)

Resources

License

Stars

Watchers

Forks

Languages