1단계: 온라인 악성 댓글을 방지하기 위한 클라이언트 측 AI

Maud Nalpas
Maud Nalpas

게시일: 2024년 11월 13일

증오심 표현, 괴롭힘, 온라인 악용은 온라인에서 만연한 문제입니다. 악성 댓글은 중요한 목소리를 묵살하고 사용자와 고객을 떠나게 만듭니다. 악성 콘텐츠 감지는 사용자를 보호하고 더 안전한 온라인 환경을 조성합니다.

이 2부 시리즈에서는 AI를 사용하여 사용자의 키보드에서 발생하는 악성성을 감지하고 완화하는 방법을 살펴봅니다.

이 첫 번째 부분에서는 이 접근 방식의 사용 사례와 이점을 설명합니다.

두 번째 부분에서는 코드 예시와 UX 도움말을 비롯한 구현을 공유합니다.

클라이언트 측 악성 콘텐츠 감지를 실행하는 이유

댓글 게시 데모
클라이언트 측 악성 감지의 예: 사용자가 댓글 입력을 중지하면 브라우저에서 악성 분석이 실행되고 경고가 실시간으로 표시됩니다. 데모를 참고하세요.

이점

클라이언트 측 유해성 감지는 유용한 첫 번째 방어선이며 서버 측 검사를 보완하는 데 큰 도움이 됩니다. 클라이언트 측 악성 콘텐츠 감지는 다음과 같은 여러 이점을 제공합니다.

  • 조기에 유해성을 감지합니다. 클라이언트 측 검사를 사용하면 서버를 건드리지 않고도 소스에서 악성 콘텐츠를 포착할 수 있습니다.
  • 실시간 검사를 사용 설정합니다. 클라이언트 측 속도를 사용하여 지연 시간이 짧은 애플리케이션을 빌드하고 사용자에게 즉각적인 의견을 제공하세요.
  • 서버 측 워크로드 줄이기 또는 최적화 악성 콘텐츠 감지를 위한 서버 측 워크로드와 비용을 줄입니다. 첫째, 사용자 대상 힌트가 악성 댓글의 양을 줄이는 데 도움이 될 수 있기 때문입니다. 둘째, 특정 댓글이 서버에 도달하기 전에 악성일 가능성이 높다고 신고하면 서버 측 검사에서 우선순위를 지정하는 데 도움이 됩니다.
  • 인간의 부담을 줄입니다. 인간 운영자의 부담을 줄입니다.

사용 사례

다음은 클라이언트 측 악성 콘텐츠 감지를 빌드하는 몇 가지 이유입니다.

  • 댓글 시스템에서 즉시 감지 악의적인 댓글의 초안을 작성하는 사용자에게 즉각적인 피드백을 제공하여 게시하기 전에 표현을 바꾸도록 권장합니다. 클라이언트 측 AI를 사용하면 API 키, 런타임 서버 측 분류 비용, 짧은 지연 시간 없이 이를 실행할 수 있습니다. 이는 채팅 앱에 적합할 수 있습니다.
  • 실시간 채팅의 실시간 검토 사용자의 유해 메시지를 신속하게 식별하고 신고하여 운영자가 즉시 개입할 수 있도록 합니다.

서버 측 검사 유지

클라이언트 측 독성 감지는 빠르지만 악의적인 프런트엔드에 능숙한 사용자는 이를 사용 중지할 수 있습니다. 또한 독성 감지 시스템은 100% 정확하지 않습니다.

따라서 클라이언트 측 악성 콘텐츠 감지만 사용하는 대신 서버를 통한 추가 검토를 구현하거나 유지하는 것이 좋습니다. 예를 들어 Perspective API를 사용하여 비동기식 서버 측 검토로 실시간 클라이언트 측 검사를 보완합니다. 포괄적인 접근 방식을 위해 이러한 방법을 사람의 검토와 결합할 수 있습니다.

주의사항

클라이언트 측 독성 감지는 분류 모델을 웹페이지에 다운��드해야 하며, 클라이언트 측 AI 라이브러리도 다운로드해야 하는 경우가 많습니다.

다음과 같은 영향을 고려하세요.

  • 모델 호스팅 및 제공 비용 모델이 클 수 있습니다.
  • 성능 및 UX 라이브러리와 모델은 번들 크기를 늘립니다.

사용 사례에 적합한지 결정하기 전에 이 방법의 이점을 고려하세요. 클라이언트 측 AI에 성능 권장사항을 적용하고 모델을 캐시하여 다운로드가 일회성 비용으로 발생하도록 합니다.

콘텐츠 유해성 분류의 작동 방식

전체 구현을 살펴보기 전에 악성 콘텐츠 감지의 기본사항을 살펴보세요.

악성 텍스트 감지 모델은 새로운 콘텐츠를 생성하는 대신 기존 텍스트를 분석합니다 (생성형 AI). 이는 기존의 NLP (자연어 처리) 작업입니다.

자연어 처리 작업 HuggingFace 소스

악성 텍스트 감지는 텍스트를 유해할 가능성이 높거나 무해한 것으로 분류하는 텍스트 분류기를 사용합니다. 악의성 분류기는 텍스트를 입력으로 받아 점수와 함께 다양한 악의성 라벨을 할당합니다. 점수 범위는 0~1입니다. 점수가 높을수록 입력이 악의적인 댓글일 가능성이 높습니다.

악성 텍스트 감지는 텍스트를 유해할 가능성이 높거나 무해한 것으로 분류하는 텍스트 분류기를 사용합니다.

사용자 입력이 분류된 후 점수가 매겨집니다.

unitary/toxic-bert의 웹 호환 버전인 Xenova/toxic-bert 모델을 예로 들 수 있습니다. 다음과 같은 6가지 라벨을 제공합니다.

  • toxic
  • severe_toxic
  • insult
  • obscene
  • identity_hate
  • threat

toxicsevere_toxic와 같은 라벨은 전반적인 독성을 나타냅니다.

다른 라벨은 더 세분화되어 있습니다. 이러한 태그는 특정 유형의 유해성을 식별합니다. 예를 들어 identity_hate (인종, 종교, 성 정체성 등 개인의 정체성에 대한 괴롭힘 또는 위협) 또는 threat (피해를 끼치려는 의도를 표현한 문구) 등이 있습니다.

독성 모델마다 분류에 접근하는 방법이 다릅니다. 다음은 몇 가지 대표적인 예입니다.

이 예시에서 다음 입력에는 '증오'라는 단어가 포함되어 있고 특정인을 대상으로 하므로 toxicity 점수가 높습니다 (0.92). 구체적인 악의 유형이 확인되지 않았으므로 다른 점수는 낮습니다.

Input: I hate you
Output of the toxicity classifier:
[
{ label: 'toxic', score: 0.9243140482902527 },
{ label: 'insult', score: 0.16187334060668945 },
{ label: 'obscene', score: 0.03452680632472038 },
{ label: 'identity_hate', score: 0.0223250575363636 },
{ label: 'threat', score: 0.16187334060668945 },
{ label: 'severe_toxic', score: 0.005651099607348442 }
]

다음 예시에서는 입력 내용에 전반적으로 증오심이 담겨 있으므로 toxicity 점수가 높습니다 (0.92). 피해를 명시적으로 언급했기 때문에 threat 점수도 높습니다 (0.81).

Input: I hate your garden, and I will kill your plants
Output of the toxicity classifier:
[
{ label: 'toxic', score: 0.9243140482902527 },
{ label: 'insult', score: 0.16187334060668945 },
{ label: 'obscene', score: 0.03452680632472038 },
{ label: 'identity_hate', score: 0.0223250575363636 },
{ label: 'threat', score: 0.819197041168808937 },
{ label: 'severe_toxic', score: 0.005651099607348442 }
]

다음 동영상

이제 컨텍스트를 이해했으므로 클라이언트 측 AI 독성 감지 시스템을 빌드할 수 있습니다.

두 번째 부분 읽기