(5강) BERT 기반 단일 문장 분류 모델 학습

3강에서 배운 BERT를 활용하여 단일 문장 분류 모델 TASK 해결하기 활용분야로 긍/부정등의 감정분석, 뉴스의 카테고리 분류, 비속어 판단 모델 등

[Reference] BERT Text Classification Using Pytorch Sentiment Analysis with BERT 네이버 영화리뷰 감정분석 Sequence Classification using Pytorch Lightning with BERT BERT Fine-Tuning Tutorial with PyTorch

1. KLUE 데이터셋 소개

한국어 자연어 이해 벤치마크(Korean Language Understanding Evaluation, KLUE)

1.1. KLUE 데이터셋 종

KLUE

1.2. 의존 구문 분석

단어들 사이의 관계를 분석하는 task

  • 특징

    • 지배소: 의미의 중심이 되는 요소

    • 의존소: 지배소가 갖는 의미를 보완해주는 요소

    • 어순과 생략이 자유로운 한국어와 같은 언어에서 주로 연구된다.

  • 분류 규칙

    • 지배소는 후위언어이다. 즉 지배소는 항상 의존소보다 뒤에 위치한다.

    • 각 의존소의 지배소는 하나이다.

    • 교차 의존 구조는 없다.

  • 분류 방법

    • Sequence labeling 방식으로 처리 단계를 나눈다.

    • 앞 어절에 의존소가 없고 다음 어절이 지배소인 어절을 삭제하며 의존 관계를 만든다.

  • 복잡한 자연어 형태를 그래프로 구조화해서 표현이 가능해진다. 즉, 각 대상에 대한 정보 추출이 가능해 진다.

  • 구름그림 -> 새털구름을 그린 것 -> 내가 그린 것

  • "나"는 "구름그림"을 그렸다

  • "구름그림"은 "새털구름"을 그린것이다.

2. 단일 문장 분류 task 소개

2.1. 문장 분류 task

주어진 문장이 어떤 종류의 범주에 속하는지를 구분하는 task

  • 감정 분석(Sentiment Analysis)

    • 문장의 긍정 또는 부정 및 중립 등 성향을 분류하는 프로세스

    • 문장을 작성한 사람의 느낌, 감정등을 분석 할 수 있기 때문에 기업에서 모니터링, 고객지원, 또는 댓글에 대한 필터링 등을 자동화하는 작업에 주로 사용

    • 활용 방안

      • 혐오 발언 분류: 댓글, 게임대화 등 혐오 발언을 분류하여 조치를 취하는 용도로 활용

      • 기업 모니터링: 소셜, 리뷰등 데이터에 대해 기업 이미지, 브랜드선호도, 제품평가 등 긍정 또는 부정적 요인을 분석

  • 주제 라벨링(Topic Labeling)

    • 문장의 내용을 이해하고 적절한에 범주를 분류하는 프로세스

    • 주제별로 뉴스 기사를 구성하는 등 데이터 구조화와 구성에 용이

    • 활용 방안

      • 대용량 문서 분류: 대용량의 문서를 범주화

      • VoC(Voice of Customer): 고객의 피드백을 제품 가격, 개선점, 디자인등 적절한 주제로 분류하여 데이터를 구조화

  • 언어감지(Language Detection)

    • 문장이 어떤 나라 언어인지를 분류하는 프로세스

    • 주로 번역기에서 정확한 번역을 위해 입력 문장이 어떤 나라의 언어인지 타켓팅 하는 작업이 가능

    • 활용 방안

      • 번역기: 번역할 문장에 대해 적절한 언어를 감지함 (구글 번역기: 자동감지)

      • 데이터 필터링: 타겟 언어 이외 데이터는 필터링

  • 의도 분류(Intent Classification)

    • 문장이 가진 의도를 분류하는 프로세스

    • 입력 문장이 질문, 불만, 명령 등 다양한 의도를 가질 수 있기 때문에 적절한 피드백을 줄 수 있는 곳으로 라우팅 작업이 가능

    • 활용 방안

      • 챗봇: 문장의 의도인 질문, 명령, 거절 등을 분석하고 적절한 답변을 주기 위해 활용

2.2. 문장 분류를 위한 데이터

  • Kor_hate

    • 혐오표현에 대한 데이터

    • 특정 개인 또는 집단에 대한 공격적 문장

    • 무례, 공격적이거나 비꼬는 문장

    • 부정적이지 않은 문장

  • Kor_sarcasm

    • 비꼬지 않은 표현의 문장

    • 비꼬는 표현의 문장

  • Kor_sae

    • 예/아니오로 답변 가능한 질문

    • 대안 선택을 묻는 질문

    • Wh-질문

    • 금지명령

    • 요구명령

    • 강한 요구 명령

  • Kor_3i4k

    • 단어 또는 문장조각

    • 평서문

    • 질문

    • 명령문

    • 수사적 질문

    • 수사적 명령문

    • 억양에 의존하는 의도

3. 단일 문장 분류 모델 학습

3.1. 모델 구조도

3.2. 학습과정

  • 주요 매개변수

    • Input_ids: sequence token 을 입력

    • attention_mask: [0, 1]로 구성된 마스크이며 패딩 토큰을 구분

    • token_type_ids: [0, 1]로 구성되있으며 입력의 첫 문장과 두번째 문장 구분

    • position_ids: 각 입력 시퀸스의 임베딩 인덱스

    • inputs_embeds: input_ids 대신 직접 임베딩 표현을 할당

    • labels: loss 계산을 위한 레이블

    • Next_sentence_label: 다음 문장 예측 loss 계산을 위한 레이블

전체적인 흐름

Last updated