Introduction to NLP
- Phonology(음운론) : 사람의 음성을 어떠한 음절 혹은 글자로 바꿀 것인가. (ex. Speech to Text)
- Morphology(형태론) : 주어진 텍스트를 의미가 있는 단위로 어떻게 쪼갤 것인가.
- Syntax(통사론) : 단어나 토큰 간의 구조적 관계가 어떠한가. (주어, 동사, 목적어, ...)
- Semantics(의미론) : 주어진 텍스트가 어떤 의미를 지니는가.
- Pragmatics(화용론) : 화자의 발화 의도는 무엇인가.
자연어처리는 고전적으로 rule-based approach와 statistical approach를 이용했지만, 최근에 들어 deep learning을 이용하고 있다.
- 과거에는 Documents가 주어지면 Language Detection이나 Preprocessing의 과정에서 Domain knowledge를 요구하는 등 사람의 개입이 이루어졌다.
- Deep Learning을 이용하면 Documents와 output에 대한 label이 주어지면 다양한 task를 한번에 수행가능하며 이 과정에서 사람의 개입은 필요없다.
Lexical Analysis
어휘 분석(lexical analysis)란 토큰(token)이나 단어와 같이 의미를 보전할 수 있는 가장 작은 단위 수준에서 분석하는 것이다.
- Tokenizing(토큰화) : 문서를 토큰 단위로 나눈다. Tokenizer에 따라 토큰화 방법이 달라질 수 있다.
- Morphological Anaysis → Stemming & Lemmatization
- Stemming : "reduce words to a base form" → 서로 다른 단어들도 같은 stem으로 변환될 수 있다. (ex. stocks, stocking - stock)
- Lemmatization : "reduce words to their lemma" (lemma : 품사를 보전하는 단어의 원형)
- Part-of-Speech(Pos) tagging : 각각의 토큰이 문장에서 어떠한 품사를 갖는지 파악한다. 같은 토큰이여도 문장에서 다른 품사로 사용될 수 있다.
- I love you → "love" - verb(동사)
- All you need is love → "love" - noun(명사)
- Named Entity Recognition(NER, 개체명 인식), chunking, ...
POS tagging
- Pointwise prediction : 품사를 예측하고자 하는 토큰이 포함된 일정한 길이의 시퀀스를 classifier에 통과시켜 output으로 해당 토큰의 품사를 예측한다.(ex. Maximum Entorpy Model, SVM, ...)
- Generataive sequence models : 문장 전체를 input으로 받아 순차적으로 각 토큰에 대한 tagging을 진행한다. (ex. Hidden Markov Model; HMM)
- Discriminative sequence mdoels : 문장 전체를 input으로 받아 전체 토큰에 대한 tagging을 일괄적으로 예측한다. (Conditional Random Field;CRF)
- Neural network-based models : RNN 기반의 LSTM, GRU를 사용하거나 downstream task에 따라 pretrained model을 fine-tuning하여 각 토큰의 품사를 예측한다.(ex. BERT)
Syntax Analysis
구분 분석(Syntax analysis)은 일련의 문장을 문법에 맞도록 구조를 분석하는 과정이다. 구조적 모호성(structural ambiguity)으로 인해 하나의 문장은 서로 다른 방식으로 해석될 수 있다.
Language Modeling
- Probabilistic Language Modeling
확률적 언어 모델링(Probabilistic Language Modeling)은 문장이나 단어 시퀀스의 확률을 계산하는 작업을 말한다. 문장 내에 있는 각 단어를 $w_{1}, w_{2}, w_{3}, ... , w_{n}$이라고 할 때 해당 단어의 시퀀스 $W$의 확률은 다음과 같다.
$$ P(W) = P(w_{1}, w_{2}, w_{3}, ... , w_{n}) $$
다음 단어가 무엇인지 예측하는 경우의 확률은 다음과 같이 계산할 수 있다.
$$ P(w_{5}|w_{1}, w_{2}, w_{3}, w_{4}) $$
결론적으로 특정 문장이나 단어 시퀀스의 확률은 다음과 같이 표현할 수 있다.
$$ P(W) = P(w_{1}, w_{2}, w_{3}, ... , w_{n}) = P(w_{1})P(w_{2}|w_{1})...P(w_{n}|w_{1}, ... ,w_{n-1})$$
이때, 조건에 해당하는 확률들은 계산이 복잡한 경우가 일반적이므로 각 단어가 등장할 확률을 독립이라 가정하면
$$ P(w_{1}, w_{2}, w_{3}, ... , w_{n}) = \prod_{i}^n P(w_{i}) $$
단어 시퀀스의 확률을 계산할 때, 현재 단어의 확률에만 집중하는 것을 Unigram model 이라 하며 단어의 확률을 계산할 때 그 이전의 단어를 얼마나 볼 것인지에 따라 N-gram model 이라 불린다.
- Neural Network Based Language Model - RNN, Seq2Seq, GPT-2, ...
'Al Basic > NLP' 카테고리의 다른 글
[NLP] Dimensionality Reduction (0) | 2023.10.03 |
---|---|
[NLP] Text Representation (0) | 2023.09.25 |
[NLP] Introduction to Text Analytics (0) | 2023.09.13 |
[NLP] Attention in Seq2Seq Learning (0) | 2023.06.12 |
[NLP] RNN & LSTM (0) | 2023.06.04 |