딥러닝

딥러닝 자연어처리

km1n 2022. 3. 15. 16:03

17장 딥러닝을 이용한 자연어 처리

1 | 텍스트의 토큰화

2 | 단어의 원-핫 인코딩

3 | 단어 임베딩

4 | 텍스트를 읽고 긍정, 부정 예측하기

 

 

딥러닝을 이용한 자연어처리

§인공지능 비서 서비스를 누구나 사용하는 시대가 올 것

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

- 음성이나 텍스트를 컴퓨터가 인식하고 처리하는 것

§ AI 스피커 - 애플 시리, 구글 어시스턴트, 아마존 알렉사, SK Nugu, 네이버 클로바

§ 딥러닝이 등장하면서 자연어처리 연구가 활발해짐

(대용량 데이터를 학습할 수 있는 딥러닝의 속성 때문)

§ 컴퓨터는 수치 데이터만 이해할 수 있기 때문에, 자연어처리는 텍스트 전처리 과정이 필수 딥

 

텍스트의 토큰화

먼저 해야 할 일은 텍스트(문장)를 잘게 나누는 것

§ 토큰(token) : 텍스트(문장)를 단어별, 문장별, 형태소별로 나눌 수 있는데, 나누어져서 의미가 있는 단위

§ 토큰화(tokenization) : 입력된 텍스트를 잘게 나누는 과정

§ 케라스 text 모듈의 text_to_word_sequence() 함수를 사용하면 문장의 단어 단위 토큰화가 가능

§ 해당 함수를 불러와 전처리할 텍스트를 지정한 후, 다음과 같이 토큰화함

 

텍스트의 토큰화 : Bag-of-Words

문장의 원-핫 인코딩(one-hotencoding)

§ 단어가 문장의 다른 요소와 어떤 관계를 가지고 있는지를 알아보는 방법이 필요함

§ 이러한 기법 중에서 가장 기본적인 방법인 원-핫 인코딩(one-hotencoding)

 

워드 임베딩(word embedding)

§ 원-핫 인코딩을 그대로 사용하면 벡터의 길이가 너무 길어진다는 단점이 있음

§ 공간적 낭비를 해결하기 위해 등장한 것이 단어 임베딩(word embedding)이라는 방법 § 단어 임베딩은 주어진 배열을 정해진 길이로 압축시킴

 

워드 임베딩(word embedding) - Embedding( ) 함수

§워드 임베딩으로 얻은 결과는 밀집된 정보를 가지고 있음

§ 워드 임베딩을 이용해서 각 단어 간의 유사도를 계산할 수 있음

§ 단어 간 유사도 계산은 오차 역전파를 이용

적절한 크기로 배열을 바꾸어 주기 위해 최적의 유사도를 계산

 

§ Embedding( ) 함수를 사용하면 워드 임베딩을 간단히 해낼 수 있음

§ Embedding( ) 함수는 최소 2개의 매개변수를 필요로 하는데, 바로 ‘입력’과 ‘출력’의 크기

§ Embedding(16, 4) : 입력될 총 단어 수는 16, 임베딩 후 출력되는 벡터 크기는 4

§ Embedding(16, 4, input_length=2) : 총 입력되는 단어 수는 16개, 임베딩 후 출력되는 벡터 크기는 4, 단어를 매번 2개씩 집어 넣겠다는 뜻

 

패딩(padding)

§ 패딩(padding) : 문장의 단어 수를 똑같이 맞춰 주는 작업

§ pad_sequnce( ) 함수 : 원하는 길이보다 짧은 부분은 숫자 0을 넣어서 채워주고, 긴 데이터는 잘라줌

 

 

시퀀스배열_순환신경망 (RNN, LSTM)

18장 시퀀스 배열로 다루는 순환 신경망(RNN)

1 | LSTM을 이용한 로이터 뉴스 카테고리 분류하기

2 | LSTM과 CNN의 조합을 이용한 영화 리뷰 분류하기

 

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

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

• 연속된 데이터가 순서대로 입력되었을 때 앞서 입력받은 데이터를 잠시 기억해 놓는 방법

• 기억된 데이터 당 중요도 가중치를 주면서 다음 데이터로 넘어감

• 모든 입력 값에 이 작업을 순서대로 실행. 다음 층으로 넘어가기 전 같은 층을 맴도는 것처럼 보임

 

RNN 개선 : LSTM

LSTM(Long Short Term Memory) : RNN의 기울기 소실 문제 보완을 위해 나온 방법

한 층에서 반복되기 직전에 다음 층으로 기억된 값을 넘길지 관리하는 단계를 하나 더 추가하는 것

 

 

LSTM으로 로이터 뉴스 카테고리 분류

§ 입력된 문장의 의미를 파악하는 것은 모든 단어를 종합하여 하나의 카테고리로 분류하는 작업임

 

§ 모든 단어를 다 사용하는 것은 비효율적이므로 빈도가 높은 단어만 불러와 사용함

maxlen=100 : 단어 수를 100개로 맞추라는 뜻

 

§ 데이터 전처리 과정이 끝났으므로 딥러닝의 구조를 만들 차례임 §

Embedding • 데이터 전처리 과정을 통해 입력된 값을 받아 다음 층이 알아들을 수 있는 형태로 변환하는 역할 Embedding('불러온 단어의 총 개수', '기사당 단어 수’). 모델 설정 부분의 맨 처음에 있어야 함

 

§ LSTM • RNN에서 기억 값에 대한 가중치를 제어하며, LSTM(기사당 단어 수, 기타 옵션)의 형식으로 적용됨

• LSTM의 활성화 함수로는 tanh를 사용함