자동화 slecs

한국 시그널 중심화로 발견 엔진 정확도 개선

목차

그룹 발견 봇이 관련성 없는 해외 신호로 노이즈가 심했다. discover_groups.py 에서 해외 신호가 존재할 때만 제외하는 로직을 추가해서 재현율을 높였다. 핵심은 "단순 제외"가 아니라 "한국 스텁은 절대 버리지 않는다"는 전략이었다.

왜 해외 신호가 문제였나

발견(discover) 기능은 채팅이나 커뮤니티에서 자동으로 그룹/채널을 인식해서 카테고리화하는 역할을 한다. 근데 해외 플랫폼이나 글로벌 신호까지 포함되면, 같은 이름인 그룹이 여러 개 나타나거나 문맥이 꼬인다. 예를 들어 "개발자" 라고 검색했을 때 한국의 개발자 커뮤니티도 나와야 하는데, 인도나 필리핀의 "개발자" 그룹까지 섞이면 사용자가 원한 그룹을 찾기 어렵다.

이건 전형적인 recall vs precision 트레이드오프 다. recall(재현율) 을 높이려면 더 많은 신호를 포함해야 하는데, 그러면 정확도(precision) 가 떨어진다. 반대로 정확도를 높이려면 신호를 줄이는데, 그러면 놓치는 그룹들이 생긴다.

"해외 신호만 제외" 가 아니라 "한국 스텁은 보존"

여기서 중요한 건 제외 로직의 방향이다. 단순히 "해외 신호는 다 버린다" 하면 글로벌 커뮤니티나 국제 협업 그룹까지 사라진다. 그래서 이번 수정은:

  • 해외 신호가 존재할 때만 그것들을 필터링
  • 동시에 한국 관련 스텁(기본값/플레이스홀더)은 절대 버리지 않기

이렇게 하면 한국 기반 사용자에겐 재현율이 올라가면서도, 스텁이 없는 엣지 케이스(예: 처음 발견되는 그룹)에서도 기본 토대가 남아 있다.

필터링 로직의 일반 패턴

이 패턴은 다양한 도메인에 나타난다:

도메인 로컬 신호 보존 제외 대상
지역 기반 앱 국내 기본 주소 해외 위치 오염
추천 시스템 현지 카테고리 컨텍스트 밖 아이템
커뮤니티 발견 국내 스텁 그룹 해외 중복/경합

실제로는 스텁의 정의가 까다로운데, "한국 스텁"이 뭔지 경계를 명확히 하지 않으면 실수로 유효한 해외 신호를 버리거나, 한국 신호마저 경합으로 취급할 수 있다. 그래서 코드 리뷰할 때 "스텁 판정 로직이 충분히 보수적인가?"를 확인했고, 팀과도 "한국 관련도 점수"의 임계값을 몇 번 조정했다.

회고: 정확도 개선과 팀 맥락

이 작업은 단순 버그 수정이 아니라 발견 봇의 지역화 전략 일부였다. 우리 서비스가 한국 중심이므로, 글로벌 신호로 인한 노이즈를 줄이되 한국 기본값은 절대 지우지 않는 원칙을 세웠다.

개발할 때 배운 점:
- 제외 필터는 "뭘 버릴까"보다 "뭘 살릴까"로 생각하면 실수가 줄어든다
- 스텁/기본값의 역할을 문서화해야 다음 사람도 쉽게 유지보수한다
- recall 개선은 데이터 품질 체크 없으면 거짓 양성만 늘어난다

다음엔 이 필터링 효과를 대시보드에 시각화해서, 얼마나 정확도가 올랐는지 팀과 공유할 계획이다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.