(1강) Intro to NLP, Bag-of-Words

💡
자연어 처리(NLP)와 관련된 동향을 파악하고, Bag-of-Words와 Naive Bayes Classifier에 대해 알아본다.

NLP의 Task와 구분

NLP는 현재 딥러닝에서 가장 활발히 다뤄지고 있는 분야로, 다양한 기준에 구분할 수 있다.

Task를 기준으로 크게 분류하자면, 다음과 같다.

  • Natural Language Understanding (NLU) : Computer에 인간의 언어를 이해시키는 작업
  • Natural Language Generation (NLG) : Computer가 적절한 인간의 언어를 생성해내는 작업

학문적 연구 분야를 기준으로 분류하면 다음과 같다.

  • Natural Language Processing (NLP)
  • Text Mining
  • Information Retrieval

학문적 연구 분야를 기준으로 세부적인 Task를 살펴보자.

NLP는 아래와 같은 세부 Task를 가진다. 이외에도 많은 Task가 있으며, 다른 분야보다 더 활발하게 연구되고 있는 분야이다.

  • Tokenization : 일정한 규칙에 따라 문장을 단어로 Parsing 하는 작업
  • Stemming : 단어의 의미와 어근을 구별하는 작업 (ex. '맑다', '맑은', '맑고' 등)
  • Named Entity Recognition (NER) : 고유명사를 인식하는 작업 (ex. 'The New York Times' 등)
  • Part-of-Speech (POS) Tagging : 단어의 품사나 성분을 인식하는 작업
  • Sentiment Analysis : 문장이나 글의 감정을 분석하는 작업
  • Machine Translation : 기계를 통해 문장이나 글을 번역하는 작업
  • Entailment Prediction : 문장 간 논리 구조를 예측하는 등의 작업
  • Question Answering : 질문을 이해하고 관련된 정보를 제공하는 작업 (ex. '나폴레옹이 죽은날은?' 등)
  • Dialog Systems : 챗봇과 같이 대화를 이해하고 생성하는 작업
  • Summarization : 글이나 다수의 문장을 핵심적인 내용으로 요악하는 작업

Text Mining은 아래와 같은 세부 Task를 가진다. 이 분야는 사회현상에 대한 분석 등과 밀접한 관계를 가진다.

  • Extract Useful Information : 웹과 같은 방대한 정보 속에서 유의미한 정보를 추출하는 작업 (ex. 뉴스 분석, 소비자 반응 분석 등)
  • Document Clustering : 글을 일정한 Class로 분류하거나 비슷한 글끼리 묶는 작업

Information Retrieval은 검색 기술을 연구하는 분야로 현대에는 검색 기술과 성능이 성숙기에 이르렀다고 판단한다. 이와 관련된 세부 분야로서 추천 기술이 활용되고 있다.

  • Recommendation Systems : 사용자의 정보를 통해 선제적으로 정보를 제공하는 작업 (ex. Youtube 영상 추천 기능 등)

Trends of NLP

현대의 기계학습은 Computer Vision 분야와 NLP 분야가 활발히 연구되고 있다. CV는 CNN과 GAN 등으로 인해 폭발적인 성장을 이루고 있다. NLP는 다음과 같은 Trend로 발전해나가고 있다.

자연어는 그 자체로는 기계가 이해할 수 없고, 단어의 순서에 따라 의미가 바뀌는 특징을 가진다. 이에 따라, EmbeddingSequential Data의 처리가 주된 관건이었다.

RNN (LSTM, GRU)과 같은 모델의 등장으로 Sequential Data를 처리할 수 있게 되었고, 더 나아가 Transformer 모델의 등장으로 큰 발전을 이루어 냈다. Transformer이전에는 각 Task에 특화된 모델이 따로 존재했었으나, 근래에는 Transformer의 구조를 이용한 모델이 이를 대체하고 있다.

Self Attention구조와 Self Learning을 통해 수 많은 데이터를 이미 학습한 Pre-trained 모델도 등장했다. BertGPT-X 모델은 필요한 Task의 데이터를 전이학습하여 어디서든 좋은 성능을 낼 수 있도록 개발되었다.

Bag of Words

Bag of Words는 딥러닝 기술 이전에 적용되었던 Embedding 기술로 단어를 숫자나 벡터로 표현하는 기법이다. 단, Bag of Words로 표현된 모든 단어는 다른 단어 간의 거리가 모두 2\sqrt{2}이며, Cosine 유사도는 0이다.

알고리즘의 순서와 예시는 다음과 같다.

  1. 먼저, 문장에서 나타난 단어들의 집합을 구한다.
  1. 각 단어를 One Hot Encoding하여 벡터로 표현한다.
  1. 각 단어를 표현하는 벡터의 합을 통해 문장을 표현한다.
중복단어는 집합의 성질에 의해 1개만 남게 된다.
단어의 갯수만큼의 차원이 생기고, 각 차원에 해당하는 값만 1인 One Hot Vector로 표현된다.
각 문장은 단어의 합으로 표현되나, 순서에 대한 표현은 불가능하다.

Naive Bayes Classifier

Bag of Words를 이용해 Naive Bayes Classifier를 구현할 수 있다. 각 문장이 어떤 Class에 속하는지에 대한 Task를 수행할 수 있으며, 이는 조건부확률과 Bayesian Rule에 따라 필요한 모든 Parameter를 모두 추정할 수 있다.

문장 혹은 글인 dd가 어떤 Class cc에 속하는지 알고 싶을 때 다음과 같이 정리할 수 있다.

P(d)P(d)argmaxargmax 함수 내에서 무시될 수 있기 때문에, 마지막과 같이 정리된다.

문장 dd는 각각의 단어 wiw_i로 이루어져 있기 때문에 동시사건으로 이해할 수 있다. 또한, 각 단어는 독립사건이기 때문에 다음과 같이 정리될 수 있다.

한 Class cc가 주어졌을 때, wiw_i가 동시에 발견될 확률값으로 계산되며 이 값이 가장 큰 Class로 분류된다.

실습

GitHub Gist Link


(2강) Word Embedding

💡
여러 차원의 값을 갖는 Vector로 단어를 표현하는 Word2Vec과 GloVe에 대해 알아본다.

What is Word Embedding?

Word Embedding은 단어의 의미를 고려하여 Vector의 형태로 표현하는 것을 의미한다. 이는 Deep Learning의 학습을 기반으로 한다. 주어진 Text를 학습 데이터로 사용해 학습하므로써 Embedding Vector를 만들어낸다.

Word Embedding은 각각의 단어를 특정한 차원의 점으로 표현하는 것이며, 단어의 의미에 따라 벡터 공간에서의 거리가 다르도록 표현하는 방식이다. 동일한 위치에 표현되는 단어나, 단어와 함께 등장하는 다른 단어는 관계가 있다는 것을 가정으로 한다.

'Cat'과 같이 등장한 단어들은 'Cat'과 관계를 가질 것이다.
'Cat'과 'Kitty'는 유사한 단어와 등장하므로 유사한 의미이며, 벡터 공간 상에서 가깝게 표현될 것이다.

Word2Vec

Word2Vec의 기본 아이디어는 다음 사진과 같다.

'Cat'과 자주 등장하는 단어들은 'Cat'과 관계를 가지고, 앞으로도 같이 등장 할 확률이 높을 것이다.

Word2Vec의 알고리즘은 다음과 같은 순서로 동작한다.

  1. 문장이 주어진다.
  1. 문장에서 등장한 각 단어를 One Hot Encoding 한다.
  1. 앞에 등장한 단어를 X(입력 데이터)로, 뒤에 등장한 단어를 y(정답 데이터)로 학습 데이터를 구성한다.
  1. X를 입력으로 하여 두 번의 선형변환을 거쳐 y를 추론할 수 있도록 학습한다.
  1. 학습 된 가중치 WEmbedding Vector로 사용한다.
통상 W1W_1 행렬을 전치하여, 각 입력 단어의 Embedding Vector로 사용한다.

Word Embedding의 특징

위와 같이 표현된 Embedding Vector는 다른 단어와의 관계를 통해서 다른 정보를 표현할 수 있다.

예를 들어, Embedding Vector로 표현된 '삼촌'과 '이모'라는 단어의 차이는 '왕'과 '여왕'이라는 단어의 차이와 유사하다. 즉, 벡터 간의 연산을 통해 특정한 정보를 표현할 수 있는 것이다.

Vector의 연산을 통해 내포되어 있는 의미를 표현할 수 있다.
GloVe로 Embedding한 결과도 동일하다.

이와 같은 특징을 통해서 Word Embedding은 NLP의 다양한 Task에서 활용되고 있다.

Machine Translation은 Embedded Word를 입력으로 받아 높은 성능을 내고 있다.
Embedded Word은 단어의 의미가 긍정 혹은 부정적인지에 대한 정보를 포함하고 있다.
Embedded Word는 각 상황과의 관계를 표현하는데 적합하다.

GloVe

GloVe는 문장 내에서 단어가 몇 번 등장했는지 미리 파악해두고, 이를 계산하는 방식을 가진다. GloVe의 목적함수는 입출력 쌍의 단어가 몇 번 등장했는지를 loglog를 씌워 값으로 가지고 있고, 이 값에 근사하는 형태로 표현된다. Word2Vec에서는 반복적으로 수행되었어야 할 계산이 단순화 되는 장점이 있다.

GloVe는 추천 시스템 등에서 자주 활용되며, 적은 데이터에서도 잘 작동하는 특징이 있다.

실습

GitHub Gist Link


Reference

Word2Vec Paper

GloVe Paper

Word2Vec Word Embedding Example

Embedded Word Relationship Example

'네이버 부스트캠프 AI Tech' 카테고리의 다른 글

[U] Day 18 - NLP III  (0) 2021.03.26
[U] Day 17 - NLP II  (0) 2021.03.26
[U] Day 15 - Generative Model  (0) 2021.03.26
[U] Day 14 - Recurrent Neural Network  (0) 2021.03.26
[U] Day 13 - Convolution Neural Networks  (0) 2021.03.26

+ Recent posts