We-Co

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

기타

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

위기의코딩맨 2024. 7. 26. 17:15
반응형

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

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

 

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)

 

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

아주 재밌군요!!

 

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

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

반응형