1. 텍스트 분류 

텍스트 분류(text classification)이란, 텍스트를 입력으로 받아 텍스트가 어떤 범주 (class)에 속하는지를 구분하는 작업이다. 

분류해야 할 범주의 개수에 따라, class가 2개이면 이진분류 (binary classification)이고 class가 3개 이상이면 다중 클래스 분류 (multi-class classification)에 해당된다. 


2. 감성 분석

감성분석은 텍스트 분류의 대표적인 예시로, 텍스트에 들어있는 의견이나 감성, 평가, 태도 등의 주관적인 정보를 분석하는 태스크이다. 

전통적으로 분류에 사용했던 방법은, 'Lexicon-based Approach'로, 사전에 감성 사전을 구축하고 키워드의 등장 유무로 긍/부정을 판단했었다. 

현재는 실제 데이터를 기반으로 분석하는 'Machine Learning Approach'를 많이 이용하고, 특히 그 중에서도 지도학습을 많이 활용한다. 

 

감성 감정의 차이가 무엇일까?

감성(Sentiment)는 긍정-부정-중립과 같이 한정된 class로 나눠지는 반면, 감정(Emotion)은 감정 분류를 더 세분화한다. (예를 들어, 기쁨, 놀람, 화남, 짜증남, 무서움, 슬픔 등으로) 

 

이를 통해 뉴스 기사 등 자연어로 된 문서의 감성분석 (긍정 및 부정)을 판별하는 기계를 만들 수 있다. 

 


3. 텍스트 분류 벤치마크 

GLUE

GLUE Tasks  GLUE(General Language Understanding Evaluation) 벤치마크이다. 

2018년 뉴욕주립대, 워싱턴대학, 구글 딥마인드의 협업으로 공개되었으며, 자연어처리(NLU)에 대한 표준화된 성능 검증이 가능하도록 해준다. 이렇게 NLU task를 구축해 놓은 목표는 (1) 모델의 학습 및 개발을 위하여, (2) 평가하기 위하여, (3) 분석 및 진단을 위하여 (여러 가지 task로 모델의 취약한 점 분석이 가능함)

 

  • A benchmark of nine sentence- or sentence-pair language understanding tasks built on established existing datasets and selected to cover a diverse range of dataset sizes, text genres, and degrees of difficulty.

 

9개의 sentence- or sentence-pair NLU tasks

 

위 표에서 'Corpus'는 task (dataset)의 이름을 의미한다. 우리 모델이 어떤 task를 수행하도록 하고 싶은가..에 따라 어떤 task/data를 선택하여 훈련시킬지 판단하는 것이 매우 중요할 것이다. 

 

[ Single-Sentence Tasks ] 

9개의 task를 크게 3가지로 분류했는데, 그 중 가장 난이도가 낮은 task들이다. 

 

1. CoLA 

- the Corpus of Linguistic Acceptability (Warstadt et al., 2018) 의 약자로 CoLA로 언급됨.

- consists of English acceptability judgments drawn from books and journal articles on linguistic theory.

- factual correctness와 meaning보다는, gramatical correctness를 따르는지에 따라 분류됨. 

- 논문에 따라,  Matthews correlation coefficient (Matthews, 1975)를 평가 지표로 사용한다. (이진분류 : Acceptable or Unacceptable) 

 

2. SST-2

- Stanford Sentiment Treebank (Socher et al., 2013) 의 약자로 SST-2로 언급됨.

- 영화 리뷰에 대한 사람이 라벨링한 감성으로 이루어져 있고, 목표는 sentence-level로 긍정/부정의 이진 분류를 예측해내는 것이다.  

 

[ Similarity and Paraphrase Tasks ] 

여기서부터 sentence pair tasks이다. 

 

1. MRPC

- Microsoft Research Paraphrase Corpus (Dolan & Brockett, 2005) 의 약자로 MRPC로 언급됨

- a corpus of sentence pairs automatically extracted from online news sources, with human annotations for whether the sentences in the pair are semantically equivalent. (두 문장이 같은 의미인지 이진분류)

- positive 이면 paraphrase했음을 의미, negative 이면 다른 의미

- low resource(5801개의 문장들로 구성)이라는 한계가 있고, 68%의 sample이 positive로 imbalanced data이라서 accuracy와 F1 score을 모두 평가 지표로 활용함

 

2. QQP

- Quora Question Pairs (질의응답 커뮤니이 웹사이트 Quora)

- MRPC 처럼 두 문장이 같은 의미인지, 이진분류

- Rich resouce (400K) , 63% negative로 imbalanced data라서 accuracy와 F1 score을 모두 평가 지표로 활용함 

- MRPC가 질문-응답 pair라면, QQP는 질문-질문 pair이다. 

 

3. STS-B

- Semantic Textual Similarity Benchmark (Cer et al., 2017)

- a collection of sentence pairs drawn from news headlines, video and image captions, and natural language inference data.

- 두 문장의 유사도를 1~5점으로 human labeled

- 분류가 아니라 회귀 문제 : 문장의 의미 유사도 (semantic similarity)의 정도를 예측함 

- 평가 지표는 피어슨/스피어만 상관계수

 

[ Inference Tasks ] 

 

1. MNLI

- Multi-Genre Natural Language Inference Corpus (Williams et al., 2018), written language 5종 + spoken language 5종, 그리고 SNLI corpus 소스로부터 가져옴 

- 전제(Premise)와 가설(Hypothesis) 문장의 논리적 관계를 분류하는 task

- 라벨은 사람 4명이 판단해서 가장 많은 표를 받은 클래스로 되어있음 

- 다중 클래스 분류 (3) : the premise entails the hypothesis (entailment) / contradicts the hypothesis (contradiction) / neither (neutral).

 

2. QNLI (Question-answering NLI)

- Stanford Question Answering Dataset (Rajpurkar et al. 2016) is a question-answering dataset consisting of question-paragraph pairs, where one of the sentences in the paragraph (drawn from Wikipedia) contains the answer to the corresponding question (written by an annotator).

- task is to determine whether the context sentence contains the answer to the question. (질문에 대한 답을 문장이 포함하고 있는지)

- 이진 분류(2) : Entailment / Not Entailment 

 

3. RTE

- Recognizing Textual Entailment (RTE) datasets

- 이진분류 (2) : Entailment / Not Entailment 

 

4. WNLI

- Winograd Schema Challenge (Levesque et al., 2011)에서 가져옴 (변형)

- 이진분류 (2) : Entailment / Not Entailment 

- imbalanced dataset : Not Entailment (65%)

 

Experiments on GLUE

위와 같이 다양한 GLUE 벤치마크로 다양한 모델의 성능을 측정할 수 있다. 

벤치마크 논문에서 실제로 Bi-LSTM 구조 모델들에 대해 성능을 비교한 표를 볼 수 있고, 이 논문 몇 달 후에 나온 BERT 논문에서도 실험과정에 GLUE를 이용한 실험 결과를 표로 제시함을 살펴볼 수 있다. 

 

 

SuperGLUE

SuperGLUE는 GLUE 벤치마크 공개 후 1년 내로 인간 수준을 기계가 넘어서자, 난이도가 향상된 10개의 태스크로 재구축된 벤치마크이다. 

 

KLUE

이건 한국어 ver. 이라고 볼 수 있다. 

KoLLM을 평가하기 위한 벤치마크로, 총 8개의 태스크로 구성되어 있다. 

2021년에 데이터셋 구축과 리더보드의 구축이 완료되었다. 


4. 전이학습 : Transfer Learning

한 작업에 대해 사전 학습된 모델을 새로운 관련 작업에 맞게 미세 조정하는 기계 학습(ML) 기법

(+참고 : transfer learning vs fine-tuning)

 

Cross-lingual Learning

 

다국어 간의 전이학습으로, source는 리소스가 풍부한 언어(ex. English)이고 target은 리소스가 부족한 언어로 전이학습이 적용될 수 있다. 

XNLI (Cross-Lingual Natural Language Inference)는 MNLI를 15개 언어로 번역한 것이다. 

 

translation system에는 두 가지 방법이 있는데, (예시로는 영어 모델을 통한 전이학습으로 한국어 모델을 만든다고 가정하자)

 

첫 번째는 TRANSLATE TRAIN 방법. (오프라인 기계번역)

- 영어 데이터를 기계번역으로 한국어 데이터로 바꿔준 후, 이를 학습시켜 한국어 모델을 만들어준다. 

   학습된 한국어 모델에 한국어를 입력하여 inference를 수행한다. 

- 구축할 언어마다 모델을 훈련시켜야 한다는 단점과 한국어 번역 데이터의 질이 좋지 않다면 추론 결과가 좋지 않을 수 있다. 

 

두 번째는 TRANSLATE TEST 방법. (온라인 기계번역)

- 영어 데이터로 학습된 영어 모델을 두고,  inference 단계에서 실시간으로 input (한국어)을 번역하여 input(영어)를 모델에 입력한다. 

- 추론된 output(영어)를 다시 기계번역을 통하여 output(한국어)로 바꿔준다. 

- inference 단계에서 번역을 두 번씩 한다는 점에서 computational 부하가 있다. 

 

 

Multi-task Learning

 

풀고자 하는 여러 개의 태스크 간의 유사성을 이용하여 푸는 동안 서로 도움을 줄 수 있는 전이학습의 종류이다. 신경망에서 하나의 encoder를 가지고, 세부 태스크 (비슷하지만 output이 다른) 별로 classifier를 별도로 두는 구조이다. 

예를 들어, ai가 영화 대본을 보고 영화 등급을 판단할 때, 영화 등급 판단 세부 기준이 여러가지가 있을텐데 input으로 영화 대본을 받는 encoder는 동일하게 두고 각 기준에 대해 classify할 때만 결과를 따로 산출하도록 만들어준다. 

 

Encoder로 LSTM, RNN등을 둔다고 생각하면 각 시점의 hidden layers들은 share하고 

마지막 predicted y = softmax(W_hy, h_t)에서 W_hy(학습되는 weight parameter matrix)는 세부 태스크 (예. 주제, 폭력성, 대사.. 등) 별로 다르게 학습시켜 세부 태스크 별 predicted y (y hat)을 출력할 수 있다. 

 


5. 평가방법 

 

분류는 당연히 confusion matrix

Ground Truth \  Prediction positive [1] negative [0]
positive [1] TP FN
negative [0] FP TN

 

  • Accuracy = (TP+TN) / (TP+FN+FP+TN)
  • Recall = (TP) / (TP+FN)
  • Precision = (TP) / (TP+FP)
  • F1-Score = 2*Precision*Recall / (Precision+Recall)

 


출처 : 

이 글은 학교 수업 [자연어처리] 을 듣고 작성한 글입니다. 

'Study > 자연어처리' 카테고리의 다른 글

Attention & Transformer (1)  (0) 2024.04.10
Text generation & Machine Reading Comprehension  (0) 2024.04.09
[cs224n] Lecture 15 - Code Generation  (0) 2024.03.24
Gemma  (1) 2024.03.09
[cs224n] Lecture3 - Backprop and Neural Networks  (0) 2024.01.21