딥러닝 자연어처리
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를 사용함