안녕하세요. 위기의 코딩맨입니다.
오늘은 텍스트 유해성 검사하는 방법을 하나 포스팅해보려 합니다.
smilegate ai에서 한글을 기반으로 학습을 진행하여
유해성 검사하는 모델을 API 형식으로 사용할 수 있다고 하여
사용해 보도록 하겠습니다.
자세한 내용은 아래 홈페이지를 확인해주세요.
[ 유해성 검사 ]
먼저 사용을 위해 데이터 셋을 받기 위한 작업이 필요합니다.
데이터셋을 불러오기 위해 transformers datasets을 인스톨하고
!pip install transformers datasets
인스톨한 datasets을 이용하여 load_dataset을 통해서
smilegate-ai/kor_unsmile의 데이터 셋을 받아옵니다.
from datasets import load_dataset
datasets = load_dataset('smilegate-ai/kor_unsmile')
print(datasets)
train dataset은 약 15000개, validation dataset은 약 3700개 정도로 보여집니다.
feattures로는 문장, 여성/가족, 남성 등등 욕설에 대한 분류도 나눠져있는 것을 확인할 수 있습니다.
사전에 학습된 BERT기반의 텍스트 분류 모델을 로드하고
해당 모델에 맞도록 토크나이저를 변환하는 작업을 진행합니다.
from transformers import TextClassificationPipeline, BertForSequenceClassification, AutoTokenizer
model_name = 'smilegate-ai/kor_unsmile'
model = BertForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
TextClassificationPipeline 를 통해서 파이프 라인을 설정합니다.
TextClassificationPipeline는 주로 텍스트를 분류하는데 사용되는 함수입니다.
모델과 토크나이저는 위에서 설정한 것들로 적용해주고
device =-1은 CPU로 설정하는 것입니다. GPU를 사용하려면 GPU 번호를 입력하면 됩니다.
return_all scores=True는 예측한 모든 클래스의 점수를 받아오는 설정입니다.
그리고 sigmoid 함수로 적용해서 모든 확률을 0~1사이로 변환 작업을 진행합니다.
pipe = TextClassificationPipeline(
model=model,
tokenizer=tokenizer,
device=-1, # CPU를 사용하려면 -1, GPU를 사용하려면 GPU 번호 입력
return_all_scores=True,
function_to_apply='sigmoid'
)
검증할 문장을 설정하고
pipe 함수로 검사를 진행을 하면 됩니다.
text = "서울은 진짜 너무 더러운것 같아"
results = pipe(text)
for result in results[0]:
print(result)
결과를 보면 지역 부분의 퍼센트가 높게 발생된 것을 확인할 수 있습니다.
아주 재밌군요!!
오늘은 정말 간단하게 라이브러리로 해당 데이터셋을 받아서
모델에 적용하여 한글 기반의 텍스트의 유해성을 검사하는 방법에 대해서 포스팅해봤습니다.
'기타' 카테고리의 다른 글
[Elasticsearch] Kibana 설치해보자 - 리눅스(Ubuntu), 설치 오류, 설치 방법 (0) | 2024.08.08 |
---|---|
[AI] Hello GPT-4o ! - GPT-4o 출시 (1) | 2024.05.14 |
[AI] LLM 이란 무엇인가?! - 대형 언어 모델 (0) | 2024.05.09 |
[Data] EDA - 데이터의 기본(탐색적 데이터 분석) (0) | 2024.04.30 |
[MySQL]mysqldump - dump file 생성하고 백업 및 복원을 해보자! (1) | 2024.04.17 |