[Week8] 1. 자연어처리 Part 1

지구인 ㅣ 2022. 3. 18. 23:23

728x90

1. Intro to Natural Language Processing(NLP)

 

NLP와 연관된 학술분야

1) Low-level parsing

  • Tokenization : 토큰화
  • stemming : 어간 추출

 

2) word & phrase level

  • NER : Named Entity Recognition. 개체명 인식
    • ex. new york times를 세 개 단어로 보지 않고 한 개의 유의미한 단어로 판단
  • pos tagging : 주목보어 등 인식(pos는 part of speech 의미)

 

3) Sentence level

  • Sentiment analysis 감성 분석
  • machine translation 기계 번역

 

4) Multi-sentence and paragraph level

  • entainment prediction : 오늘 누군가 결혼식을 한다, 오늘 결혼식 하는 사람은 단한명도 없다 → 두 문장 양립 X ⇒ 이런 문제 판단하는 분야
  • dialog systems : 챗봇
  • summarization : 문서 1줄 요약
  • lnformation retrieval : 정보 검색 - recsys와 연관

 

NLP Trend

  • (word2vec 또는 GloVe을 활용해) 하나의 단어는 하나의 벡터로 표현 가능하다
  • RNN-family models(LSTMs, GRUs)는 NLP task의 주된 구조
  • NLP task에 대한 성능은 attention module과 transformer model의 등장 이후 지속적으로 커졌다
  • transformer의 경우 높은 성능을 내는 모델은 주로 기계 번역 task를 발전시키는 데에 응용되었다
  • transformer는 이미 오를대로 오른 기계번역의 성능을 더욱 높임
  • 자연어처리의 자가학습 → 단어 하나를 가리고 앞뒤 문맥을 보여줌 → 가린 단어를 맞춰라!
    • 데이터, gpu 너무 많이 필요함 → 대기업쪽에서만 발전중임(구글, 테슬라 등)

 

 

2. bag of words

bag of words

  • 딥러닝 기술이 활용되기 이전에 사용되던, 단어를 숫자로 임베딩하는 가장 간단한 방법

+) naivebayes classifier

  • bow(bag of words)를 활용한 문서분류기법

Bag-of-Words Representation

Step 1. 고유한 단어들을 원소로 가지는 vocabulary set을 만든다

Step 2. 단어들을 원핫벡터로 인코딩한다.

- 모든 경우의 단어쌍에 대해 그 길이는 $\sqrt{2}$ 이다.

- 모든 경우의 단어쌍에 대해 코사인 유사도는 0이다.

 

각 워드들의 원핫벡터들을 더한 벡터로 문장/문서를 나타낼 수 있고 이를 bag of word라고 한다.

→ 가방에 특정 문장 속 단어들을 넣어주고, 이 단어들의 수를 세서 최종 벡터로 나타냄

 

NaiveBayes Classifier for Document Classification

도큐먼트를 d, 클래스(레이블)을 c라 하면 c를 naivebayes classifier가 추측하는 c의 최대사후확률(MAP)은 아래와 같은 식을 따른다.

2번째 줄의 식에서 3번째 줄의 식으로 넘어가는 과정에서 분모를 drop한 것은 분모가 상수이므로 무시할 수 있는 요소이기에 없앤 것이다.

 

p(w1, w2,..) → 동시사건, c → 고정인 상황에서 각 w가 독립이라 가정할 수 있다면, 각 단어가 나타날 수 있는 확률을 모두 곱하면 된다.

 

예시

다음과 같은 train data가 주어졌을 때, Test data에 대해 분류(c)해보라.

직접 세어보면 아래와 같이 정리할 수 있고, 그에 따라 계산해보면 끝

  • class가 위의 경우처럼 2개(nlp와 cv)보다 많을 때도 같은 원리로 계산함
  • naive bayes classifier의 계산 과정 ← 이론적으로 탄탄한 수식 MLE의 유도과정을 통해서 도출됨

 

3. Word Embedding: Word2Vec, GloVe

  • word embedding
    • 단어를 특정한 차원의 벡터로 표현할 수 있는 기법
    • 신경망을 활용한 기술
    • 자연어가 단어를 기본 단위로 해서, 단어들의 시퀀스라고 상정할 때, 각 단어들을 특정한 차원의 공간 상의 한 점, 혹은 그 점의 좌표를 나타내는 벡터로 변환해주는 기법
    • 기본 아이디어 : 비슷한 의미를 지니는 단어들은 비슷한 좌표에 매핑된다. → 단어 간 의미 유사도 반영

word2vec

  • 워드 임베딩을 하는 가장 유명한 기법 중 하나
  • 워드 임베딩의 기본 아이디어 채택

  • W1 * x → imbedding layer라 부름 → 단어 간 유사도를 계산하는 과정이라 한다면 → 주어진 입력 단어의 W1상의 벡터와 주어진 출력 단어의 W2상의 벡터 간의 내적에 기반한 유사도가 최대한 커지도록 하고, 출력 단어 외의 단어에 대해서는 최대한 작아지도록 함

  • 입력 단어 버전, 출력 단어 버전의 워드 임베딩 벡터들이 얻어진 이후, 어느 것을 최종적인 워드 임베딩의 output으로 사용할지는 자유. 다만 보통은 W1, 즉 입력 word에 해당하는 임베딩 벡터를 최종 결과로 사용하게 됨

  • 모두 남녀 관계로 동일하기 때문에 벡터 또한 비슷하게 나타남

Word2Vec improves performances in most areas of NLP

  • Word similarity
  • Machine translation
  • Part-of-speech (PoS) tagging
  • Named entity recognition (NER)
  • Sentiment analysis
  • Clustering
  • Semantic lexicon building

Property of Word2Vec – Intrusion Detection

- Word intrusion detection : 여러 단어가 있을 때 가장 상이한 단어 찾기

Word2Vec이 학습한 워드 임베딩 벡터를 활용하여 계산 가능 → 각 단어들의 임베딩 벡터를 활용해 유클리디안 거리를 계산, 가장 큰 값을 가지는 것이 정답(가장 의미가 동떨어진 단어)

Application of Word2Vec – Image Captioning

Image Captioning : 임베딩 벡터 잘 활용한 케이스

 

 

GloVe

  • glove : word2vec과 함께 워드 임베딩에 잘 쓰이는 기법
    • A: 두 단어가 한 윈도우 내에서 동시에 몇 번이나 등장했는지 미리 구함
    • B: 입력 단어의 임베딩 벡터($u_{i}$)와 그 출력 단어의 임베딩 벡터($v_{j}$)의 내적값
    • A를 확률로 나타낸 값에 로그를 취한 값이 B에 최대한 가까워질 수 있도록하는 loss function(objective functino) 사용
  • word2vec
    • 특정한 입출력 단어 쌍이 자주 등장한 경우 자연스럽게 여러 번에 걸쳐 학습 → 빈번하게 학습될수록 내적값이 커지는 계산을 따름
  • 위와 같은 차이로 인해 glove는 word2vec과 비교하여 중복되는 계산을 줄이는 효과 존재. 따라서 더 빠르게 학습 가능. 보다 더 적은 데이터에 대해서도 좋음 효과 거둠.
  • 성능은 word2vec, glove 모두 비등

 

 

 

이미지는 모두 네이버 부스트캠프 제공 자료를 활용했습니다.

 

728x90