게시일: 2024년 11월 13일
증오심 표현, 괴롭힘, 온라인 악용은 온라인에서 만연한 문제입니다. 악성 댓글은 중요한 목소리를 묵살하고 사용자와 고객을 떠나게 만듭니다. 악성 콘텐츠 감지는 사용자를 보호하고 더 안전한 온라인 환경을 조성합니다.
이 2부 시리즈에서는 AI를 사용하여 사용자의 키보드에서 악성성을 감지하고 완화하는 방법을 살펴봅니다.
이 첫 번째 부분에서는 이 접근 방식의 사용 사례와 이점을 설명합니다.
두 번째 부분에서는 코드 예시와 UX 도움말을 비롯한 구현을 공유합니다.
클라이언트 측 악성 콘텐츠 감지를 실행하는 이유
![댓글 게시 데모](https://web.dev/static/articles/ai-detect-toxicity-context/image/non-toxic-comment.gif?authuser=8&hl=ko)
이점
클라이언트 측 유해성 감지는 유용한 첫 번째 방어선이며 서버 측 검사를 보완하는 데 큰 도움이 됩니다. 클라이언트 측 악성 콘텐츠 감지는 다음과 같은 여러 이점을 제공합니다.
- 조기에 유해성을 감지합니다. 클라이언트 측 검사를 사용하면 서버를 건드리지 않고도 소스에서 악성 콘텐츠를 포착할 수 있습니다.
- 실시간 검사를 사용 설정합니다. 클라이언트 측 속도를 사용하여 지연 시간이 짧은 애플리케이션을 빌드하고 사용자에게 즉각적인 의견을 제공하세요.
- 서버 측 워크로드 줄이기 또는 최적화 악성 콘텐츠 감지를 위한 서버 측 워크로드와 비용을 줄입니다. 첫째, 사용자 대상 힌트가 악성 댓글의 양을 줄이는 데 도움이 될 수 있기 때문입니다. 둘째, 특정 댓글이 서버에 도달하기 전에 악성일 가능성이 높다고 신고하면 서버 측 검사에서 우선순위를 지정하는 데 도움이 됩니다.
- 인간의 부담을 줄입니다. 인간 운영자의 부담을 줄입니다.
사용 사례
다음은 클라이언트 측 악성 콘텐츠 감지를 빌드하는 몇 가지 이유입니다.
- 댓글 시스템에서 즉시 감지 악의적인 댓글의 초안을 작성하는 사용자에게 즉각적인 피드백을 제공하여 게시하기 전에 표현을 바꾸도록 권장합니다. 클라이언트 측 AI를 사용하면 API 키, 런타임 서버 측 분류 비용, 지연 시간이 없어도 이를 실행할 수 있습니다. 채팅 앱에 적합할 수 있습니다.
- 실시간 채팅의 실시간 검토 사용자의 유해 메시지를 신속하게 식별하고 신고하여 운영자가 즉시 개입할 수 있도록 합니다.
서버 측 검사 유지
클라이언트 측 독성 감지는 빠르지만 악의적인 프런트엔드에 능숙한 사용자는 이를 사용 중지할 수 있습니다. 또한 독성 감지 시스템은 100% 정확하지 않습니다.
따라서 클라이언트 측 악성 콘텐츠 감지만 사용하는 대신 서버를 통한 추가 검토를 구현하거나 유지하는 것이 좋습니다. 예를 들어 Perspective API를 사용하여 비동기식 서버 측 검토로 실시간 클라이언트 측 검사를 보완합니다. 포괄적인 접근 방식을 위해 이러한 방법을 사람의 검토와 결합할 수 있습니다.
주의사항
클라이언트 측 악성 콘텐츠 감지를 사용하려면 분류 모델을 웹페이지에 다운로드해야 하며, 클라이언트 측 AI 라이브러리도 다운로드해야 하는 경우가 많습니다.
다음과 같은 영향을 고려하세요.
- 모델 호스팅 및 제공 비용 모델이 클 수 있습니다.
- 성능 및 UX 라이브러리와 모델은 번들 크기를 늘립니다.
사용 사례에 적합한지 결정하기 전에 이 방법의 이점을 고려하세요. 클라이언트 측 AI에 성능 권장사항을 적용하고 모델을 캐시하여 다운로드가 일회성 비용으로 발생하도록 합니다.
콘텐츠 유해성 분류의 작동 방식
전체 구현을 살펴보기 전에 악성 콘텐츠 감지의 기본사항을 살펴보세요.
악성 텍스트 감지 모델은 새 콘텐츠를 생성하는 대신 기존 텍스트를 분석합니다 (생성형 AI). 이는 기존의 NLP (자연어 처리) 작업입니다.
![](https://web.dev/static/articles/ai-detect-toxicity-context/image/nlp-hugging-face.png?authuser=8&hl=ko)
악성 텍스트 감지는 텍스트를 유해할 가능성이 높거나 무해한 것으로 분류하는 텍스트 분류기를 사용합니다. 유해성 분류기는 텍스트를 입력으로 받아 점수와 함께 다양한 유해성 라벨을 할당합니다. 점수 범위는 0~1입니다. 점수가 높을수록 입력이 악의적인 댓글일 가능성이 높습니다.
악성 텍스트 감지는 텍스트를 유해할 가능성이 높거나 무해한 것으로 분류하는 텍스트 분류기를 사용합니다.
unitary/toxic-bert의 웹 호환 버전인 Xenova/toxic-bert 모델을 예로 들 수 있습니다. 다음과 같은 6가지 라벨을 제공합니다.
toxic
severe_toxic
insult
obscene
identity_hate
threat
toxic
및 severe_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 독성 감지 시스템을 빌드할 수 있습니다.