[Data Science] 자연어 처리와 언어모델
자연어 처리 (Natural Language Processing, NLP)
1. 자연어란?
자연어 [ Natural Language, 自然語 ]
인간이 일상생활에서 의사소통을 위해 사용하는 언어
자연어 처리 [ Natural Language Processing, 自然語處理 ]
컴퓨터를 이용하여 인간 언어의 이해, 생성 및 분석을 다루는 인공지능 기술
2. 자연어 처리 과정
데이터 전처리 → Tokenizing → Lexical Analysis → Syntactic Analysis → Semantic Analysis
단계 | 상세내용 |
데이터 전처리 | 1) 개행문자 제거 2) 특수문자 제거 3) 공백 제거 4) 중복 표현 제어 5) 이메일, 링크 제거 6) 제목 제거 7) 불용어 (의미가 없는 용어) 제거 8) 조사 제거 9) 띄어쓰기, 문장 분리 보정 10) 사전 구축 |
Tokenizing | 1) 자연어를 어떤 단위로 살펴볼 것인가 2) 어절 tokenizing 3) 형태소 tokenizing 4) N-gram tokenizing 5) WordPiece tokenizing |
Lexical Analysis | 1) 어휘 분석 2) 형태소 분석 3) 개체명 인식 4) 상호 참조 |
Syntactic Analysis | 1) 구문 분석 |
Semantic Analysis | 1) 의미 분석 |
* N-gram : N-gram은 확률적 언어 모델의 대표적인 것으로서, N개 단어를 연속적으로 나열하여 분석하는 것
ex ) An adorable little boy is spreding smiles
4-grams : An adorable little boy, adorable little boy is, little boy is spreding, boy is spreding smiles
3. Word Embedding
One-Hot Encoding
One-Hot encoding 방식을 활용하여 자연어를 좌표 평면에 표현이 가능
ex) '세상 모든 사람'이라는 단어를 좌표 평면에 표현하는 경우
단어 | 벡터 |
세상 | [1, 0, 0] |
모든 | [0. 1, 0] |
사람 | [0, 0, 1] |
- n개의 단어에 대한 n차원의 벡터가 생성됨
- 단어가 커질수록 차원의 개수가 늘어남
- 단어의 의미를 유추할 수 없음
Word2Vec
Word2Vec 알고리즘은 자연어의 의미를 벡터 공간에 임베딩
한 단어의 주변 단어들을 통해 그 단어의 의미를 파악
분산 표현(distributed representation) 방법은 기본적으로 분포 가설(distributional hypothesis)이라는 가정 하에 만들어진 표현 방법입니다. 이 가정은 '비슷한 문맥에서 등장하는 단어들은 비슷한 의미를 가진다'라는 가정입니다. 강아지란 단어는 귀엽다, 예쁘다, 애교 등의 단어가 주로 함께 등장하는데 분포 가설에 따라서 해당 내용을 가진 텍스트의 단어들을 벡터화한다면 해당 단어 벡터들은 유사한 벡터 값을 가집니다. 분산 표현은 분포 가설을 이용하여 텍스트를 학습하고, 단어의 의미를 벡터의 여러 차원에 분산하여 표현합니다.
출처 : https://wikidocs.net/22660
- 한정된 차원으로 의미 표현 가능
- 의미 관계를 유추할 수 있음
- 비지도 학습으로 단어의 의미를 학습할 수 있음
02) 워드투벡터(Word2Vec)
앞서 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 ...
wikidocs.net
FastText
Facebook research에서 공개한 오픈소스 라이브러리.
기존의 word2vec과 유사하나, 단어를 N-gram으로 나누어 학습을 수행
Word2Vec는 단어를 쪼개질 수 없는 단위로 생각한다면, FastText는 하나의 단어 안에도 여러 단어들이 존재하는 것으로 간주합니다. 내부 단어. 즉, 서브 워드(subword)를 고려하여 학습합니다.
출처 : https://wikidocs.net/22883
N-gram의 범위가 2-5 일 때 다음과 같이 분리하여 학습함
ex) assumption = (as, ss, su, ... , ump,mpt, ... , ption, assumption)
N-gram으로 나눠진 단어는 사전에 들어가지 않으며, 별도의 N-gram 벡터를 형성함
- N-gram 벡터를 통해 유사한 N-gram을 가지고 있는 단어는 비슷한 의미를 가지는 벡터를 형성할 수 있음
ex) Orange와 Oranges의 N-gram은 유사한 단어 벡터를 생성할 수 있음
- 동형어, 다의어 등에 대해서는 embedding 성능이 좋지 못하다는 단점이 있음
06) 패스트텍스트(FastText)
단어를 벡터로 만드는 또 다른 방법으로는 페이스북에서 개발한 FastText가 있습니다. Word2Vec 이후에 나온 것이기 때문에, 메커니즘 자체는 Word2Vec의 확장 ...
wikidocs.net
언어 모델(Language Model)
1. 모델이란?
모델 [ Model ]
어떤 상황이나 물체 등 연구 대상 주제를 도면이나 사진 등 화상을 사용하거나 수식이나 악보와 같은 기호를 사용하여 표현한 것.
모델의 종류
- 일기예보 모델, 비즈니스 모델, 분자 모델 등
모델의 특징
- 자연법칙을 컴퓨터로 모사함으로써 시뮬레이션이 가능
- 이전 상태를 기반으로 미래의 상태를 예측할 수 있음
2. 언어 모델
언어 모델 [ Language Model ]
자연어의 법칙을 컴퓨터로 모사한 모델
주어진 단어들로부터 그다음에 등장한 단어의 확률을 예측하는 방식으로 학습
Markov 확률 기반의 언어 모델
초기의 언어 모델은 다음의 단어나 문장이 나올 확률을 통계와 단어의 N-gram을 기반으로 계산
RNN(Recurrent Neural Network) 기반의 언어모델
RNN은 히든 노드가 방향을 가진 엣지로 연결돼 순환구조를 이루는 인공신경망의 한 종류
이전 상태 정보가 다음 상태를 예측하는 데 사용됨으로써, 시계열 데이터 처리에 특화
출처 : 텐서플로와 머신러닝으로 시작하는 자연어 처리
3. Encoder - Decoder
RNN 모델 기반의 Seq2Seq
Encoder layer : RNN 구조를 통해 Context vector를 획득
Decoder layer : 획득한 Context vector를 입력으로 하여 출력 값을 예측
RNN을 통해서 Encoding(부호화)된 언어를 다시 Decoding(복호화)하여 메시지를 해독할 수 있다.
출처 : [딥러닝 기계번역] 시퀀스 투 시퀀스
https://www.youtube.com/watch?v=WsQLdu2JMgI
RNN 구조의 문제점
입력 Sequence의 길이가 매우 긴 경우, 처음 나온 token에 대한 정보가 희석됨
고정된 Context vector 사이즈로 인해 긴 Sequence에 대한 정보를 함축하기 어려움
모든 token이 영향을 미치니, 중요하지 않은 token도 영향을 줌
Attention 모델
인간이 정보처리를 할 때 모든 Sequence를 고려하면서 정보 처리하지 않음
인간의 정보처리와 마찬가지로, 중요한 feature는 더욱 중요하게 고려하는 것이 Attention의 모티브
기존 Seq2Seq에서는 RNN의 최종 Output인 Context vector만 활용
Attention 모델에서는 Encoder RNN셀의 각 Output을 모두 활용
Decoder에서는 매 Step마다 RNN 셀의 Output을 활용하여 Dynamic 하게 Context vector를 생성
출처 : [딥러닝 기계번역] 시퀀스 투 시퀀스
https://www.youtube.com/watch?v=WsQLdu2JMgI
문맥에 따라 동적으로 할당되는 Encoder의 Attention weight로 인해 Dynamic Context vector를 획득
기존 Seq2Seq의 Encoder, Decoder 성능을 비약적으로 향상시킴
하지만, RNN은 순차적으로 연산이 이루어지기 때문에 연산 속도가 느림
Self-Attention 모델
Attention이 Decoder가 아니라 Input값을 가장 잘 표현할 수 있도록 학습시킨 모델
- Query : 얻고자 하는 Context Vector
- Key : Query와의 상관관계를 나타내고자 하는 대상
- Value : Query와 Key의 상관관계 값
Multi-head Self Attention 모델
Query, Key, Value로 구성된 Attention layer를 동시에 여러 개를 수행
최종적으로 자기 자신을 표현하는 vector 획득
Transformer 모델
Transformer 모델은 Multi-head Attention으로 이루어진 Encoder를 여러 층으로 쌓아 encoding을 수행
참고
자연어 언어모델 ‘BERT’ | T아카데미 온라인강의
1. 자연어의 개념과 다양한 언어모델에 대해 알아본다. 2. BERT 모델의 개념 및 메커니즘에 대해 이해하고, 한국어의 BERT 학습 방법에 대해 알아보다.
tacademy.skplanet.com