비속어, 인격 모독 등에 대한 단어가 포함된 리포지토리입니다. 코드를 읽으실 때, 이 점 양해해주시면 감사하겠습니다.
Aho-Corasick(아호-코라식) 알고리즘 기반의 비속어 필터링 라이브러리입니다. 숫자나 공백을 섞은 변칙 욕설 탐지와 정교한 허용 단어 예외 처리를 지원합니다. 우아한형제들 기술 블로그의 비속어 탐지 전략을 참고하여 설계되었습니다.
- 다중 패턴 매칭: 수천 개의 금칙어를 O(n) 시간 복잡도로 탐색
- 변칙 우회 방어: 숫자(
ㅅ123ㅂ), 공백(시 발) 등을 정규화하여 탐지 - 지능형 예외 처리: "시발점"과 같이 비속어가 포함된 정상 단어를 구간 중첩 알고리즘으로 제외
- Trie 빌드 캐싱: 정책 조합별로 허용 단어 트리를 캐싱하여 실시간 성능 보장
- 정규화: 입력 문장에서 정책에 따라 숫자와 공백을 제거 (예:
시 1발→시발) - 금칙어 탐지: Aho-Corasick 알고리즘으로 비속어 구간 탐색
- 허용 단어 탐지: 동일한 정책을 적용한 허용 단어 트리로 예외 구간 탐색
- 구간 교집합 판단: 금칙어 구간이 허용 단어 구간과 겹치면 제외
| 정책 | 정규식 | 설명 |
|---|---|---|
NUMBERS |
[\p{N}] |
숫자 혼용 우회 탐지 (예: 시1발) |
WHITESPACES |
[\s] |
공백 우회 탐지 (예: 시 발) |
io.github.jwhyee.profanity
├── dto # 데이터 모델
├── helper # Trie 빌더 및 유틸리티
├── policy # 비속어 목록 및 정규화 정책
└── validator # 검증 엔진 및 예외 처리
이 프로젝트는 MIT License를 따릅니다. 자세한 내용은 LICENSE 파일을 확인해주세요.