비속어 검증 서비스를 만들어보자

DeadWhale·2024년 6월 22일
7
post-thumbnail

개요

현재 제가 진행 중인 보틀노트에는 여러 데이터를 저장하는 서비스가 있습니다.

이때 몇몇 서비스에서는 비속어 검증이 필요하다 판단된 서비스들이 있습니다.

예를 들어 리뷰 , 댓글 등의 컨텐츠가 예시일것 같습니다.

비속어는 사용자에게 불쾌감을 주며, 서비스의 이미지를 떨어뜨릴 수 있습니다.

이런 문제를 해결하기 위해 한국에서 비속어 검증시에는 KISO 이용자 보호 시스템 API 서비스라는 매우 좋은 서비스가 있습니다.

이 포스트에서는 이미 좋은 서비스가 있는대 왜 또 구현해라는 의문을 해소하면서 무엇을 목표로 하는지를 소개하겠습니다.


KISO 이용자 보호 시스템 API 서비스

한국에서 비속어 검증 시에는 KISO 이용자 보호 시스템 API 서비스라는 매우 좋은 서비스가 있습니다.

네이버와 카카오의 많은 욕설 데이터를 기반으로 구성되어 있습니다.

하지만 무료가 아니기 때문에 몇몇 프로젝트에서는 사용하기 부담스러울 수 있습니다.

  • kiso 공식 FAQ에

6만원이라는 비용은 제 개인적인 의견으로는 매우 적절하다고 생각합니다.

다만 현재 제가 진행 중인 보틀노트에는 비용 최적화가 필요합니다.

저만이 아니라 다른 개인 프로젝트를 진행하는 분들 모두 서버 비용만 해도 부담되실 거라 생각합니다.


그래서 왜?

왜 KISO라는 좋은 서비스를 사용하지 않는지 설명했습니다. 그렇다면 왜 라이브러리나 프로젝트 내부에서 직접 구현하지 않았는지 의문이 들 수 있습니다. 몇 가지 이유가 있습니다:

  1. 비속어 검증 서비스를 구축하면서 프로젝트와 의존성을 분리하고 싶었습니다.
  2. 팀원에게 외부 서비스와 연동하는 경험을 제공하고 싶었습니다.
  3. 다른 프로젝트를 하는 사람도 사용할 수 있는 서비스를 공유하고 싶었습니다.
  4. 단순히 재미있을 것 같았습니다.

어떤 비즈니스인지에 따라 다르지만, 비속어 검증 같은 기능은 서비스에서 중요할 수 있습니다. 깨끗한 커뮤니티를 제공하는 서비스를 만들고 싶다면 비속어 검증은 필수적인 요소라고 생각합니다.

저도 그런 서비스를 위해 비속어 검증이 필요했습니다. 솔직히 클라우드 비용도 부담되기 때문에 KISO를 사용하고 싶었지만, 비용이 문제가 되었습니다. 저뿐만 아니라 다른 개발자분들도 이런 무료 서비스가 필요할 것
같아서 만들어보기로 했습니다.

그리고 팀원들에게 외부 API와 연동하는 경험을 제공하고 싶었습니다. 현재 프로젝트는 하나의 모노리스 프로젝트 내에서 진행되다 보니 외부 서비스와 연동하는 경험이 부족했습니다.

이런 이유들로 인해 개인 프로젝트개인 프로젝트로 비속어 검증 시스템을 만들어보기로 했습니다.

프로젝트 목표

만약 이 서비스에서 KISO로 변경해도 큰 작업이 필요없도록 설계하고 싶었습니다.

  • 비용부담 없는 비속어에 대한 검증을 제공하는 오픈 소스 서비스를 만든다.
  • 실 사용 가능한 API 서비스를 만든다.
  • KISO로 변경 하는 작업이 쉽도록 설계한다.
  • 최대한 빠른 응답 시간을 제공한다.
  • 최대한 정확한 검증을 제공한다.

응답 코드 또한 KISO의 형태와 비슷하게 만들어서 변경이 쉽도록 만들었습니다.

다만 몇가지 내용은 조금 다르게 구현하였습니다.

예를 들어, Content-Typeapplication/x-www-form-urlencoded만 받을수 있는 것을
application/jsonapplication/x-www-form-urlencoded 모두 처리할 수 변경 하였습니다.

응답의 값중 Array를 List로 변경하는 등의 몇몇 차이점은 존재하니 유의해서 사용해주세요.


사용법은 Github ReadMe에서 확인해주세요.

업데이트 예정

추후 실제 트레픽을 받으면서 사용량에 따라 최적화하는 방법을 고민하고 있습니다.

실제 많이 검충되는 단어를 캐싱하거나

매우 고가용성 지표를 유지하기 위해 분산 환경을 고려하고 있습니다.

또한, 현재는 단어의 내용만 검증하지만 , 추후 advanced 모드를 만들어서 글 자체의 내용을 검사하는 기능을 고려중입니다.

단어 검증의 경우 빠른 검사를 위해 Aho-Corasick 알고리즘을 사용하고 있습니다. 이 알고리즘은 빠른 검사를 제공하며, 대용량의 데이터를 검사할 때 유용합니다.

다만 advanced 모델은 특정 글에 대해서 부정적인 내용과 키워드등을 분석하기 위한 AI 모델과 연동해 검사를 진행할 예정입니다. (언제 추가 될지는 모르겟지만...)

주의사항

  • 이 서비스는 포트폴리오나 비영리 서비스를 할때 최소한의 금액이라도 절약하기 바라는 마음으로 제작되었습니다. 따라서 영리 목적으로 사용할
    경우에는 KISO 이용자 보호 시스템 API 서비스를 사용하세요.
  • 이 서비스는 무료로 제공되는 서비스이므로, 제 서버컴퓨터가 불의의 사고 등으로 다운되는 경우가 있을 수 있습니다. 이 점 유의해주세요.
  • API 스펙은 변경될 수 있습니다. 변경 시에는 문서를 통해 공지하겠습니다. 추구하고자 하는 모델은 KISO 이용자 보호 시스템 API 서비스 입니다.
  • 상당히 많은 양의 데이터를 모았지만, 세상의 모든 단어를 포함하고 있지는 않습니다. 추가적인 단어를 추가하고 싶으시면 이슈를 등록해주세요.


인프콘 이벤트 참여를 위해 랠릿 허브 링크를 첨부했다.
랠릿은 원티드나 점핏등 여러 플랫폼보다. 이력서가 예쁘고 다른 사람들의 이력서를 확인해볼 수 있어서 너무 좋은것가

1개의 댓글

comment-user-thumbnail
2024년 8월 1일

잘쓰겠습니다!

답글 달기