(5강) BERT 기반 단일 문장 분류 모델 학습
Last updated
Last updated
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
한국어 자연어 이해 벤치마크(Korean Language Understanding Evaluation, KLUE)
단어들 사이의 관계를 분석하는 task
특징
지배소: 의미의 중심이 되는 요소
의존소: 지배소가 갖는 의미를 보완해주는 요소
어순과 생략이 자유로운 한국어와 같은 언어에서 주로 연구된다.
분류 규칙
지배소는 후위언어이다. 즉 지배소는 항상 의존소보다 뒤에 위치한다.
각 의존소의 지배소는 하나이다.
교차 의존 구조는 없다.
분류 방법
Sequence labeling 방식으로 처리 단계를 나눈다.
앞 어절에 의존소가 없고 다음 어절이 지배소인 어절을 삭제하며 의존 관계를 만든다.
복잡한 자연어 형태를 그래프로 구조화해서 표현이 가능해진다. 즉, 각 대상에 대한 정보 추출이 가능해 진다.
구름그림 -> 새털구름을 그린 것 -> 내가 그린 것
"나"는 "구름그림"을 그렸다
"구름그림"은 "새털구름"을 그린것이다.
주어진 문장이 어떤 종류의 범주에 속하는지를 구분하는 task
감정 분석(Sentiment Analysis)
문장의 긍정 또는 부정 및 중립 등 성향을 분류하는 프로세스
문장을 작성한 사람의 느낌, 감정등을 분석 할 수 있기 때문에 기업에서 모니터링, 고객지원, 또는 댓글에 대한 필터링 등을 자동화하는 작업에 주로 사용
활용 방안
혐오 발언 분류: 댓글, 게임대화 등 혐오 발언을 분류하여 조치를 취하는 용도로 활용
기업 모니터링: 소셜, 리뷰등 데이터에 대해 기업 이미지, 브랜드선호도, 제품평가 등 긍정 또는 부정적 요인을 분석
주제 라벨링(Topic Labeling)
문장의 내용을 이해하고 적절한에 범주를 분류하는 프로세스
주제별로 뉴스 기사를 구성하는 등 데이터 구조화와 구성에 용이
활용 방안
대용량 문서 분류: 대용량의 문서를 범주화
VoC(Voice of Customer): 고객의 피드백을 제품 가격, 개선점, 디자인등 적절한 주제로 분류하여 데이터를 구조화
언어감지(Language Detection)
문장이 어떤 나라 언어인지를 분류하는 프로세스
주로 번역기에서 정확한 번역을 위해 입력 문장이 어떤 나라의 언어인지 타켓팅 하는 작업이 가능
활용 방안
번역기: 번역할 문장에 대해 적절한 언어를 감지함 (구글 번역기: 자동감지)
데이터 필터링: 타겟 언어 이외 데이터는 필터링
의도 분류(Intent Classification)
문장이 가진 의도를 분류하는 프로세스
입력 문장이 질문, 불만, 명령 등 다양한 의도를 가질 수 있기 때문에 적절한 피드백을 줄 수 있는 곳으로 라우팅 작업이 가능
활용 방안
챗봇: 문장의 의도인 질문, 명령, 거절 등을 분석하고 적절한 답변을 주기 위해 활용
Kor_hate
혐오표현에 대한 데이터
특정 개인 또는 집단에 대한 공격적 문장
무례, 공격적이거나 비꼬는 문장
부정적이지 않은 문장
Kor_sarcasm
비꼬지 않은 표현의 문장
비꼬는 표현의 문장
Kor_sae
예/아니오로 답변 가능한 질문
대안 선택을 묻는 질문
Wh-질문
금지명령
요구명령
강한 요구 명령
Kor_3i4k
단어 또는 문장조각
평서문
질문
명령문
수사적 질문
수사적 명령문
억양에 의존하는 의도
주요 매개변수
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 계산을 위한 레이블