[부스트캠프] NLP - Bag of Words & Word Embedding

iMaeng·2022년 6월 20일
0

네이버 부스트캠프

목록 보기
8/10

1. Intro to Natural Language Processing(NLP)

NLU: Natural Language Understanding

NLG: Natural Language Generation

→ applications: language modeling, machine translation, question answering, document classification and dialog systems

1. Natural language processing (major conferences: ACL, EMNLP, NAACL)

  • Low-level parsing
    • Tokenization: 단어 단위
    • Stemming: 어미 변화 분석 → 어근 추출 (study, studied, …)
  • Word and phrase level
    • Named entity recognition(NER): 고유 명사 인식
    • Part-of-Speech(POS) tagging: 품사 성분 알아내기
    • Noun-phrase chunking, dependency parsing, coreference resolution
  • Sentence level
    • Sentiment analysis: 감정 분석(긍정/부정)
    • Machine translation: 기계 번역
  • Multi-sentence and paragraph level
    • Entailment prediction: 두 문장간 내포/모순 관계 분석
    • Question answering: 질문을 이해하고 답하기
    • Dialog systems: 챗봇
    • Summation: 문서 자동 요약

2. Text mining(major conferences: KDD, The WebConf, WSDM, CIKM, ICWSM)

  • 텍스트와 문서 데이터로부터 유용한 정보와 인사이트 도출
  • 문서 클러스터링 (e.g. topic modeling)
  • 사회과학 분야 분석

3. Information retrieval (major conferences: SIGIR, WSDM, CIKM, RecSys)

  • 검색 기술, 사회 과학 분야와 특히 연관 높음
  • 해당 분야 자체는 기술 수준이 어느 정도 포화되었으며, 추천 시스템과 관련하여 발전 중
  • Text data를 일종의 sequence of words로 고려하여, Word2Vec 또는 GloVE를 이용하여 각 단어를 벡터로 표현
  • Sequence data를 다루는 RNN 계열 모델이 주를 이뤘음
  • RNN을 self-attention으로 대체한 attention modulesTransformer 모델의 등장으로 전반적인 NLP 분야의 성능이 개선됨
  • Transformer 모델이 그러했듯, 대부분의 발전된 NLP 모델들은 machine translation를 개선하기 위해 고안됨
  • 초기에는 각 NLP 테스크에 맞게 최적화된 모델을 각각 활용했음
  • Transformer 등장 이후, 거대 사이즈의 데이터를 기반으로 self-supervised 훈련을 거친 범용적 모델이 등장함(e.g. BERT, GPT-3)
  • 그 이후로는, 해당 모델들은 transfer learning을 통해 다른 테스크들에도 적용되었으며, 독보적은 성능을 보임
  • 현재에는 이러한 모델들은 NLP에서 필수적인 존재가 되었고 GPU 자원 문제로 인하여 NLP 연구는 어려워지고 있음(훈련 시키기에 너무 큰 모델)

2. Bag-of-Words

Bag-of-Words Representation

딥러닝 이전의 방법론

Step1. Constructing the vocabulary containg unique words

주어진 문장 내 단어들에 대하여, 각 단어가 하나씩만 존재하는 사전을 구축

Step2. Encoding unique words to one-hot vectors

각 단어를 one-hot 벡터로 표현 (단어 수 = 차원 수)

  • 각 단어쌍에 대해, distance = 2\sqrt{2}
  • 각 단어쌍에 대해, cosine similarity = 0

⇒ (A sentence/document → the sum of one-hot vetors)

NaiveBayes Classifier for Document Classification

MAP는 “Maximum a posteriori”(most likely class). (d: a document, c: a class)

CMAP=argmaxcC P(cd)=argmaxcCP(dc)P(c)P(d)=argmaxcCP(dc)P(c)C_{MAP} = \underset{c \in C}{argmax} \ P(c|d) = \underset{c \in C}{argmax} \frac{P(d|c)P(c)}{P(d)} = \underset{c \in C}{argmax} P(d|c)P(c)

문서가 각 class에 속할 확률 → document는 고정이므로 P(d)는 상수 → 분모 생략

각 단어가 나타날 확률이 독립일 때,

P(dc)P(c)=P(w1,w2,...,wnc)P(c)P(c)wiWP(wic)P(d|c)P(c) = P(w_1, w_2, ..., w_n|c)P(c) → P(c)\prod_{w_i \in W}P(w_i|c)

3. Word Embedding: Word2Vec, GloVe

What is Word Embedding

  • word를 벡터로 표현 (특정한 차원의 공간 상의 한 점으로 표시)
  • ‘cat’과 ‘kitty’는 유사한 단어이므로 비슷한 vector representation을 가짐 → short distance
  • ‘hamurger’는 ‘cat’이나 ‘kitty’와 유사하지 않으므로 상이한 vector representation을 가짐 → far distance
  • 차원수는 이미 주어진 상태에서 Word Embedding 학습 이후 해당 좌표 공간 상에서 최적의 좌표값을 출력

Word2Vec

가장 유명한 Word Embedding, 같은 문장 내 인접 단어는 비슷한 의미를 가진다고 가정

  • vector representation을 훈련시키기 위한 알고리즘(adjacent words)
  • Assumption: words in similar context will have similar meaning

Idea of Word2Vec

  • 주위 단어를 기반으로 특정 단어를 알 수 있다
  • 문장 내 특정 단어를 가린 채 예측을 통해 학습을 진행

How Word2Vec Algorith Works

  • Input layer → Hidden layer → Output layer을 거치며 학습 (Hidden layer의 dim.은 hyper parmeter)
  • 문장을 단어 기준으로 벡터화를 한 이후에 sliding window를 활용하여 한 단어를 중심으로 앞, 뒤 단어 각각에 대해 입출력 단어쌍 구성
  • W1(Input layer → Hidden layer), W2(Hiddne layer → Output layer) matrix를 이용하여 input vector에 대해 내적을 진행하여 output을 출력.
  • 이 과정에서 입력 단어, 출력 단어 사이의 유사도를 높이는 방식으로 학습이 진행되며 그 외의 단어에 대해서는 낮추도록 함.
  • 최종적으로 softmax 함수를 이용하여 output vector을 구함.
  • 참고 link

Property of Word2Vec

  • word vector는 각 벡터의 관계를 나타냄 (word간의 의미론적인 관계)
  • Analogy Reasoning (korean Word2Vec) e.g. (Man→Woman), (Uncle→Aunt), (King→Queen)을 나타내는 관계 벡터는 모두 유사한 형태
  • Intrusion Detection (example) 여러 단어 중 나머지 단어와 의미가 상이한 단어를 찾는 테스크(단어별로 유클리안 거리 계산)

Application of Word2Vec

대부분의 NLP 분야에서 성능 향상을 보임

  • Word similarity
  • Machin translation
  • Part-of-speech(POS) tagging
  • Named entity recognition(NER)
  • Sentiment analysis

GloVe

Word2Vec과 더불어 가장 많이 쓰이는 word embedding 방법

  • 각 입력, 출력 단어쌍에 대해, 학습 데이터 두 단어가 한 window에서 몇 번 동시에 등장했는지 계산

  • 해당 정보를 이용하여 학습 진행

    J(θ)=12i,j=1Wf(Pij)(uiTvjlogPij)2J(\theta) = \frac{1}{2} \sum_{i,j=1}^Wf(P_{ij})(u_i^Tv_j-logP_{ij})^2

    (uiu_i: 입력, viv_i: 출력, logPijlogP_{ij}: 몇 번 동시에 나타났는지)

  • 중복된 계산을 줄여 줌으로 써 Word2Vec보다 빠르게 학습 가능하며, 적은 data에서도 비등한 성능을 보임

  • 참고링크 → 소스코드를 볼 수 있을 뿐만 아니라, pretrained 된 word vector 데이터 다운로드 가능

profile
안녕하세요! 꾸준히 성장하고자하는 엔지니어 강면구입니다.

0개의 댓글