Data Science

[Data Science] 자연어 처리와 언어모델

Kim Choon sik 2022. 4. 29. 21:23

자연어 처리 (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을 기반으로 계산

그림1. Markov 기반 확률 계산

 

 

RNN(Recurrent Neural Network) 기반의 언어모델

RNN은 히든 노드가 방향을 가진 엣지로 연결돼 순환구조를 이루는 인공신경망의 한 종류

이전 상태 정보가 다음 상태를 예측하는 데 사용됨으로써, 시계열 데이터 처리에 특화

 

그림2. RNN 기반의 언어모델

출처 : 텐서플로와 머신러닝으로 시작하는 자연어 처리

 

 

3. Encoder - Decoder

RNN 모델 기반의 Seq2Seq

Encoder layer : RNN 구조를 통해 Context vector를 획득

Decoder layer : 획득한 Context vector를 입력으로 하여 출력 값을 예측

 

RNN을 통해서 Encoding(부호화)된 언어를 다시 Decoding(복호화)하여 메시지를 해독할 수 있다.

 

그림3. RNN 모델 기반 Seq2Seq

출처 : [딥러닝 기계번역] 시퀀스 투 시퀀스
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를 생성

 

그림4. 출처 : [딥러닝 기계번역] 어텐션 모델

출처 : [딥러닝 기계번역] 시퀀스 투 시퀀스
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