자연어 처리의 개념
자연어 처리
- 인간의 언어 텍스트를 컴퓨터로 표현하기
- 뜻, 문법과 같은 질적 특성을 표현, 처리할 수 있게 하는 것
- 텍스트를 개념·의미를 나타낼 수 있는 수로 바꾸어 나타내는 과정
- 문자처리와는 큰 차이가 있다.
형태소 분리(Tokenizing)와 형태소 분석기(Tokenizer)
형태소 분리 (Tokenizing)
문장
—Tokenizing—> 형태소
형태소
—Embedding—> 형태소마다의 의미를 수로 표현
형태소 분석기 (Tokenizer)
- 전문가 분석/지도학습 기반 형태소 분석기
- KoNLPy에서 Okt, Komoran, Mecab, Hannanum, Kkma를 지원
- 형태소 분석기별로 학습에 사용한 Corpus(말뭉치: 자연어처리를 위한 언어의 데이터셋)가 다름
- 필요한 경우 사용자 사전에 어휘를 추가해서 사용
- 비지도학습 기반 형태소 분석기
- Google의 sentencepiece, soynlp
- 주어진 corpus를 이용해 형태소 종류를 직접 학습하거나, 자체 알고리즘을 이용하여 분석
- 어떤 corpus를 사용하는 지에 따라 결과가 달라질 수 있음
- 신조어에 대한 대응이 유연함
Embedding: Word2Vec
🚩 형태소를 어떻게 수로 나타낼 것인가?
Embedding 이전 기법
1) One-Hot Encoding
2) TF-IDF (Term Frequency-Inverted Documnet Frequency)
- 일종의 문서별 형태소 중요도 계산 방식
- 모든 문서에서 자주 나오는 형태소는 중요도가 낮고 특정 문서에 집중된 형태소는 중요도가 높다는 가정
- 계산식 : TF-IDF = TF * IDF
- TF = 각 문서별 해당 단어의 출현 빈도
- IDF = log(모든 문서의 개수 / 해당 형태소를 포함한 문서의 개수 + 1)
3) 이전 기법의 한계
- corpus가 커질수록 형태소 표현에 필요한 벡터의 길이 역시 불필요하게 커짐
- 특히 대부분이 Sparse Matrix와 그 하위 벡터이므로 크기 낭비
- 과하게 긴 벡터 길이만큼 큰 데이터로 연산량의 낭비
- 따라서 TF-IDF와 같은 방법은 문서 내의 중요 키워드, 토픽 산출 등의 목적으로 사용되고 있음
- 결과적으로 적은 길이의 벡터로 형태소를 나타내기 위한 단어 수준 임베딩, 문장수준의 임베딩으로 발전
임베딩 (Embedding)
- 자연어를 컴퓨터로 처리 가능한 수의 배열인 벡터(Vector)로 표현하는 과정 (밀집 벡터)
- 따라서, 뜻과 문법 특성을 연산을 통해 처리할 수 있게 됨
- 임베딩의 종류
- 단어 수준 임베딩 : 잠재의미 분석, Word2Vec, GloVe, FastText 등
- 문장 수준 임베딩 : ELMo, BERT, GPT 등
Word2Vec
사전지식 : N-gram
더보기


5-gram에서 앞의 4개를 조건으로 놓고 마지막 1개를 예측 대상으로 둔다
사전지식 : MLP (Multi-layer Perceptron)
더보기
Perceptron
: 인공신경망의 가장 기본적인 단위로, 입력된 샘플을 구성하는 각 정보(x)들에 가중치(β)를 곱한 다음 활성화 함수(Activation)를 적용하여 결과를 얻는 과정으로 로지스틱 회귀분석과 식의 형태가 동일Multi-Layer Perceptron
: 복수의 Perceptron으로 이루어진 Layer를 여러 층 쌓아서 구성한 인공신경망 (Deep Neural Network)-
경사하강법
: MLP 포함, 대부분의 지도학습 방식의 인공신경망은 각 가중치가 정답과 신경망의 연산 결과 사이의 오차에 주는 영향을 미분의 연쇄법칙을 이용하여 구한 다음 결과에 따라 오차가 줄어드는 방향으로 가중치를 반복하여 조정하는 방식으로 학습함
- 2013년 Google 연구팀에서 발표한 임베딩 기법
- N-gram 기반, 주변에 있는 문맥 단어를 조건으로 특정 단어가 출현할 확률을 학습하는 과정에서 각 단어의 임베딩 벡터가 학습되는 구조
- CBOW(Continuous Bag of Words)와 Skip-gram 두 가지 방식으로 임베딩 학습을 제안
- CBOW : 주변단어들을 놓고 중심단어가 뭐가 될지를 예측시키는 방법
- Skip-gram : 중심단어 하나를 놓고 이 단어의 주변에 올 단어가 어떤게 될지를 예측시키는 방법
- 하나의 문맥 단어를 넣고 k개의 주변 단어를 맞추는 구조의 인공신경망 모델
- 주변 단어를 추정하도록 학습하는 과정에서 문맥 단어의 임베딩 벡터가 학습됨
- 입력과 출력은 One-Hot Encoding의 형태
- One-Hot 벡터에 가중치 행렬을 곱하여 잠재벡터를 생성한 다음, 잠재벡터에 다른 가중치 행렬을 곱하여 k개 주변 단어의 One-Hot 벡터를 예측
- 입력된 중심단어의 One-Hot 벡터와 가중치 행렬이 곱해져서 생성된 잠재벡터가 중심단어의 임베딩 벡터
출처 : 자연어처리 시작하기