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)
- 사회과학 분야 분석
- 검색 기술, 사회 과학 분야와 특히 연관 높음
- 해당 분야 자체는 기술 수준이 어느 정도 포화되었으며, 추천 시스템과 관련하여 발전 중
Trends of NLP
- Text data를 일종의 sequence of words로 고려하여,
Word2Vec
또는 GloVE
를 이용하여 각 단어를 벡터
로 표현
- Sequence data를 다루는
RNN
계열 모델이 주를 이뤘음
- RNN을 self-attention으로 대체한
attention modules
과 Transformer
모델의 등장으로 전반적인 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
- 각 단어쌍에 대해, 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=c∈Cargmax P(c∣d)=c∈CargmaxP(d)P(d∣c)P(c)=c∈CargmaxP(d∣c)P(c)
문서가 각 class에 속할 확률 → document는 고정이므로 P(d)는 상수 → 분모 생략
각 단어가 나타날 확률이 독립일 때,
P(d∣c)P(c)=P(w1,w2,...,wn∣c)P(c)→P(c)wi∈W∏P(wi∣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(θ)=21∑i,j=1Wf(Pij)(uiTvj−logPij)2
(ui: 입력, vi: 출력, logPij: 몇 번 동시에 나타났는지)
-
중복된 계산을 줄여 줌으로 써 Word2Vec보다 빠르게 학습 가능하며, 적은 data에서도 비등한 성능을 보임
-
참고링크 → 소스코드를 볼 수 있을 뿐만 아니라, pretrained 된 word vector 데이터 다운로드 가능