본문 바로가기
기타

[We-Co] 텍스트 유해성 검사하기 - smilegate-ai with Python

by 위기의코딩맨 2024. 7. 26.
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 텍스트 유해성 검사하는 방법을 하나 포스팅해보려  합니다.

 

smilegate ai에서 한글을 기반으로 학습을 진행하여

유해성 검사하는 모델을 API 형식으로 사용할 수 있다고 하여

사용해 보도록 하겠습니다.

 

자세한 내용은 아래 홈페이지를 확인해주세요. 

 

smilegate-ai/kor_unsmile · Datasets at Hugging Face

No dataset card yet New: Create and edit this dataset card directly on the website! Contribute a Dataset Card

huggingface.co

 

 

[ 유해성 검사 ]

먼저 사용을 위해 데이터 셋을 받기 위한 작업이 필요합니다.

데이터셋을 불러오기 위해 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)

 

결과를 보면 지역 부분의 퍼센트가 높게 발생된 것을 확인할 수 있습니다.

아주 재밌군요!!

 

오늘은 정말 간단하게 라이브러리로 해당 데이터셋을 받아서 

모델에 적용하여 한글 기반의 텍스트의 유해성을 검사하는 방법에 대해서  포스팅해봤습니다.

반응형