[딥러닝] NLP : 자연어 처리 기본 (+ 영화 리뷰글 긍정/부정 판단해보기)

2024. 6. 9. 17:10
반응형

 

이번 포스팅에서는 자연어 처리(NLP)에 대해서 알아보고 Transformer 출연 이전 자연어 처리에서 널리 사용되었던 지난 포스팅에서 다루어 보았던 RNN 기반 모델을 활용한 NLP 기술들에 대해서 살펴보려고 한다.

 

해당 포스팅에서는 아래와 같은 내용들을 다룰 것이다.

  1. NLP(자연어 처리)의 개념
  2. NLP의 발전 과정
  3. 모델 입력 형태 : Character Embedding과 Word Embedding, 그리고 Embedding Vector
  4. RNN 기반의 NLP
  5. 영화 리뷰 데이터를 학습 -> 문장의 긍정 및 부정을 예측하는 모델 만들어보기

 


NLP (자연어 처리,  Natural Language Processing)

 

컴퓨터가 인간의 언어를 이해하고 처리하며 생성할 수 있도록 하는 인공지능의 한 분야이다. 언어의 구조와 의미를 분석하고 이를 통해서 다양한 작업을 수행하는 것을 목표로 한다.

  • 자연어 (Natural Language) :사람들의 사회생활에서 자연스럽게 발생하여 쓰이는 언어
  • 자연어 처리 :자연어를 그대로 컴퓨터로 처리하는 학문 분야
  • 언어학적 측면 :언어의 규칙성이나 변화 양상 등을 파악
  • 전산학적 측면 :자연어를 입출력으로 사용하는 컴퓨터 프로그램에 사용되는 처리과정

 


자연어 처리의 분류

  • 자연어 이해 (NLU, Natural language understanding) : 사람이 이해하는 자연어를 컴퓨터가 이해할 수 있는 값으로 바꾸는 과정
  • 자연어 생성 (NLG, Natural language generation) : 컴퓨터가 이해할수 있는 값을 사람이 이해하도록 바꾸는 과정

 


자연어 처리 및 언어 지능을 이용해서 할 수 있는 일

  • 개체명 인식 : 텍스트에서 사람, 장소, 날짜 등과 같은 명명된 개체를 식별
  • 감정 분석 : 텍스트의 긍정, 부정, 중립적 의견 파악
  • 질문 응답 : 특정 질문에 대해서 문맥에 맞는 답변 생성
  • 텍스트 분류 : 텍스트를 사전에 정의된 범주로 분류
  • 정보 추출 : 텍스트에서 특정 정보를 추출
  • 기계 번역 : 한 언어로 작성된 문장을 다른 언어로 번역
  • 정보 검색 : 대량의 텍스트 데이터에서 사용자의 질의에 맞는 정보를 검색
  • 문서 요약 : 긴 문서나 긴 대화를 간결하게 요약

 


언어 지능의 어려움

 

1. 언어의 중의성 : 완벽히 같은 글자의 조합이 여러 의미를 가짐 -> 처리의 복잡도 상승

2. 규칙의 예외 : 규칙을 모든 단어에 그대로 적용할 수 없음

  • 형태론(Mopology) : 언어의 규칙을 연구하는 분야

3. 언어의 유연성과 확장성 : 언어는 항상 변하며, 시간의 흐름에 따라 없어지거나 새로 탄생하는 용어가 있음.

4. 바꾸어 말하기 : Paraphrase 문제. 문장 표현 방식은 다양하고, 비슷한 의미의 단어들이 존재.

5. 단어 간 유사도 : 자연어는 기계 입장에서 매우 어려움, One-hot 인코딩으로 표현된 값은 유사도나 모호성을 표현할 수 없음

  • 희소 벡터(Sparse Vector) : 자연어는 높은 차원으로 표현되고 0으로 표현되는 비어있는 요소가 많음
  • 딥러닝에서는 단어 임베딩(Word Embedding)을 통해 해결

 


자연어 처리의 발전

1. 규칙 기반 (50년대)

  • 토큰화 : 입력 문장을 작은 단위로 쪼개 처리하기 위해 단어, 구두점 등 토큰으로 분리.
  • 형태소 분석 : 토큰을 작은 의미로 분할하고, 형태소 정보를 추출(대명사, 명사, 동사..)
  • 구문 분석 : 문장의 구문 구조를 분석하여 단어들 사이의 관계 파악
  • 의미 분석 : 언어 지식을 활용하여 단어의 의미를 이해
  • 규칙 매칭 : 사람이 정의한 규칙으로 특정 언어의 패턴을 찾아냄
  • 규칙 실행 : 일치하는 규칙에 따라 답변 생성, 텍스트 분류 등 정해진 동작 실행
  • 모호성 해소 : 여러 규칙/패턴일 경우 우선순위, 문맥분석, 통계모델 등을 사용

2. 통계 기반(80년대)

  • 규칙 기반 사전 정의를 통계적으로 처리.
  • 조건부 확률 : 통계적 처리의 핵심 수학 개념
  • N-gram 모델 : 문장의 연속된 N개의 단어나 문자단위로 묶어 확률적 모델링을 수행

3. 기계 학습 (ML) 기반(90년대 이후)

  • SVM : 지도학습. 텍스트 분류, 개체명 인식, 문장 감정 분류
  • Naïve Bayes : 지도학습. 베이즈 정리에 기반한 확률적 분류. 텍스트 분류, 문장 감정 분류..
  • 군집화 : 비지도학습. 문서 군집화(유사주제), 단어 군집화(유사어), 의도 군집화(사용자 의도 파악)
  • LDA: : 비지도학습. 대규모 텍스트 데이터에서 토픽을 추출
  • 강화학습 : 대화 시스템, 기계 번역, 자동 요약. State, Action, Value, Policy

4. RNN 기반(2010년대)

  • 시계열 데이터를 처리하기 위해 설계된 인공 신경망.
  • 출력을 다시 입력으로 처리하는 모델
  • 심층 학습 기반의 자연어 처리 기술의 시작

5. Transformer 기반(2010년대 후반 이후)

  • 2017년 Google에서 발표한 자연어 처리 모델.
  • Self-Attention : 문장의 모든 단어에 동시 적용 -> RNN의 병렬 처리 부족 해소
  • Long-range Dependency 해소 : 문장 내에서 거리가 떨어져 있는 단어간의 관계 파악

 


모델 입력 형태  : 자연어는 어떻게 입력해야할까?

 

자연어, 이미지, 오디오 등과 같은 비정형 데이터를 모델에 학습시키기 위해서는 정형 데이터로 변환하는 과정이 필요하다.

CNN 모델에서 사용되는 이미지와 같은 형태는 0~255의 화소의 벡터로 이미지에 대한 입력을 표현하였다.

그렇다면 자연어는 컴퓨터가 이해할 수 있도록 어떤 식으로 변환해야 할까?

 

 


Character Embedding (문자 임베딩)

 

문자 단위로 텍스트를 임베딩하는 방법이다. 위의 그림은 각 문자를 가장 단순한 1차원 벡터의 형태로 매핑한 예시이다.

즉 Character Embedding은 각 문자를 고유한 벡터로 표현한다.

 

그렇지만 계산 복잡도가 증가하고 문맥을 파악하기 어렵다는 문제가 있어서 Word Embedding의 개념이 도입되었다.

 


Word Embedding (단어 임베딩)

 

Word Embedding은 이제 단어 단위로 매핑한다.

그런데 위와 같이 단일 숫자로 표현한다면 비슷한 의미의 단어는 비슷하게 표현되고 단어의 다양한 의미의 내포가 어려워진다.

 


임베딩 벡터(Embedding Vector)

이를 극복하기 위해서 여러가지 의미를 가지는 고차원 형태의 벡터를 사용하게 된다. 임베딩 벡터는 각 차원이 복합적으로 다양한 의미를 나타내므로 단어 간의 관계와 의미를 잘 파악할 수 있도록 한다.

위의 예시에서 벡터의 각 차원은 긍정률, 행동을 나타내는지, 사물을 나타내는 지 등을 각각 표현할 수 있을 것이다. 

 

 

만약 "Baby is cute"와 "Panda is cute" 두 문장을 학습시킨다고 생각해보자.

Word embeddings은 단어를 공간상의 점으로 나타내는 기법으로 단어 간의 의미적인 유사성을 파악하려고 한다.

벡터 각각은 Weight를 가지고 이것이 학습되어 다양한 의미를 내포한 형태로 임베딩된다. 임베딩 벡터의 차원이 높아질수록 다양한 맥락의 유사도를 파악할 수 있다.


어떻게 Embedding Vector로 만드는가?

자연어 처리를 위해 입력 데이터를 임베딩 벡터로 변환하기 위해서는 Word2Vec, GloVe, FastText 등의 사전 훈련이 완료된 임베딩 모델을 사용한다.

이러한 임베딩 모델들 또한 신경망 모델을 기반으로 학습되었다. Word2Vec은 CBOW, Skip-gram이라는 신경망 구조를 사용하여 단어 임베딩을 학습한다.

이 임베딩 벡터는 이후의 RNN, LSTM 등 모델의 입력으로 사용된다.


비교

Character Embedding

장점

  • 미등록 단어(Out-of-Vocabulary, OOV) 문제 해결: 새로운 단어 또는 희귀한 단어에 대해 더 잘 대응할 수 있음, 단어의 철자 정보까지 활용하기 때문에 사전에 없는 단어라도 처리 가능
  • 언어의 유연성: 다양한 언어적 변형과 오타에 대해 견고함
  • 소규모 데이터셋에서 유리: 단어 단위보다 더 작은 단위에서 학습하기 때문에 상대적으로 작은 데이터셋에서도 학습이 가능

단점

  • 계산 복잡도 증가: 단어를 구성하는 모든 문자를 처리해야 하므로 계산 비용이 높아짐
  • 문맥 정보의 손실: 단어 단위의 문맥을 바로 파악하기 어려움, 긴 문장에서는 문맥 정보를 잡아내기 어려울 수 있음

 Character Embedding이 더 좋은 경우

  • 새로운 단어와 희귀한 단어가 자주 등장하는 경우
  • 오타가 빈번히 발생하는 사용자 생성 콘텐츠를 처리할 때
  • 다양한 형태로 변형되는 언어적 특성을 다룰 때(예: 소셜 미디어 텍스트, 방언 등)

Word Embedding

장점

  • 문맥 이해: 단어의 의미를 문맥적으로 파악하여 단어 간의 유사성을 반영
    • Word2Vec, GloVe, FastText 등의 모델을 통해 단어의 의미를 벡터 공간에 효율적으로 표현
  • 계산 효율성: 단어 단위로 처리   연산이 상대적으로 빠르고 효율적. 사전 학습된 벡터를 사용할 경우 빠르게 적용 가능
  • 전이 학습(Transfer Learning): 대규모 말뭉치에서 미리 학습된 임베딩 벡터를 다양한 작업에 활용할 수 있음 → 특정 도메인에 맞춰 미세 조정이 가능

단점

  • 미등록 단어(OOV) 문제: 학습된 사전에 없는 새로운 단어에 대해 처리하지 못함  성능 저하 발생 가능
  • 언어의 유연성 문제: 오탈자 처리에 어려움

Word Embedding이 더 좋은 경우

  • 대규모의 사전 학습된 말뭉치를 사용할 수 있는 경우
  • 문맥 정보가 중요하고, 문맥을 통해 단어의 의미를 잘 파악해야 하는 경우(예: 문서 분류, 감정 분석 등)
  • 빠르고 효율적인 처리가 요구되는 경우

RNN(순환 신경망, Recurrent Neural Network)

 

과거의 정보를 사용해서 현재 및 미래의 입력에 대한 신경망의 예측 성능을 개선하는 인공 신경망 구조이다. 즉 순차적인 문맥을 파악하는 신경망이다.

순차적 구성 요소가 복잡한 의미와 구문 규칙에 따라 상호 연관되는 단어, 문장 또는 시계열 데이터 등의 순차적 데이터의 처리에 강점을 가지고 있다.

만약 RNN, LSTM, GRU 등의 RNN에 대해서 잘 모른다면 아래의 포스팅을 참고하면 좋을 것 같다.

https://sjh9708.tistory.com/226

 

[딥러닝] 기억하는 신경망 : RNN, 그리고 개선 모델 (LSTM, GRU)

이번에는 RNN의 개념과 이를 기반으로 하는 LSTM, GRU에 대해서 살펴보려고 한다. 해당 포스팅에서는 아래의 내용들을 다룬다.1. RNNRNN의 구조RNN의 활용 예시RNN의 등장 배경과 한계점2. LSTMLSTM의 등장

sjh9708.tistory.com

 


RNN 기반 자연어 처리 : 문장 긍정/부정 판단하기

 

이제 RNN을 기반 모델로 자연어 처리를 학습시켜보자. 모델로는 LSTM을 사용할 예정이다.

우리는 영문 영화 리뷰 데이터를 모델에 학습시킨 후, 문장의 긍정 및 부정을 판단해 볼 것이고, 네이버 영화 리뷰 데이터를 학습시켜서 한글 문장의 긍정 및 부정도 판단해보자.

 

DL06_NLP_RNN기반_자연어처리

 

 

 


<자연어 처리> 다음으로

 

기계 번역 : Seq2Seq와 Attention

https://sjh9708.tistory.com/230

 

[딥러닝] 기계 번역 : Seq2Seq와 Attention (+ 모델 학습시켜 다국어 번역해보기)

이번 포스팅에서는 RNN 기반의 자연어 처리(NLP)를 위한 모델 중 번역을 위해 만들어진 Seq2Seq를 알아볼 것이다.그리고 Seq2Seq의 RNN 기반 모델의 문제점을 완화하기 위해 고안되었으면서, Transformer

sjh9708.tistory.com

 

 

Transformer : 간단한 챗봇 만들기

https://sjh9708.tistory.com/231

 

[딥러닝] Transformer : 소개와 동작 원리 (+ 간단한 챗봇 만들기)

이번 포스팅에서는 Transformer 아키텍처에 대해서 알아보려고 한다.Transformer는 2020년대에 들어서서 매우 핫한 딥러닝 기반 모델이며, 뛰어난 퍼포먼스를 보이고 있다. ChatGPT를 만들 수 있었던 근

sjh9708.tistory.com

 

 

 

 


해당 포스팅의 내용은 "상명대학교 민경하 교수님 "인공지능" 수업, 상명대학교 김승현 교수님 "딥러닝"수업을 기반으로 작성하였으며, 포스팅 자료는 해당 내용을 기반으로 재구성하여 만들어 사용하였습니다.
반응형

BELATED ARTICLES

more