본문 바로가기

Deep Learning/자연어처리13

RNN을 이용한 디코더-인코더 - Seq2Seq 시퀀스 투 시퀀스(sequence to sequence) * seq2seq model은 입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력하는 데 주로 쓰인다. 예를 들어 한글을 입력하면(domain : 한글) 영어를 출력하는(domiani : 영어) 모델이나, 사용자가 입력을 집어넣으면(domain : 질문) 적절한 대답을 하는(domain : 대답) 챗봇 등이 될 수 있다. 이번 포스팅에서는 seq2seq model에 대해 살펴보되 번역기의 예를 들어 살펴보겠다(보통 가장 많이 사용하는 분야가 번역이기도 하다). 대략적인 구성 * seq2seq model의 인코더 및 디코더는 각각의 RNN모델로 구성되어 있다. 그렇다고 vanilla RNN을 그냥 사용하는 것은 아니고 성능 문제로 인해서 보통 LSTM이.. 2021. 12. 23.
글자 단위 RNN(Char RNN) * 이전까지 포스팅했던 RNN, LSTM 모델들은 모두 단어 vector를 입력으로 받는 모델이었다. 이번 포스팅에서는 단어를 입력으로 받는 것이 아닌 글자 기반 RNN, 글자(Character)를 입력으로 받는 RNN모델에 대해서 살펴보겠다. 1. 글자 단위 RNN 모델(Char RNNLM) 데이터셋 로드 import numpy as np import urllib.request from tensorflow.keras.utils import to_categorical urllib.request.urlretrieve('http://www.gutenberg.org/files/11/11-0.txt', filename='11-0.txt') f = open('11-0.txt', 'rb') #read binary .. 2021. 12. 18.
LSTM을 사용하여 텍스트 생성하기 https://soki.tistory.com/45 RNN을 이용한 텍스트 생성 1) RNN을 이용하여 텍스트 생성하기 * 만약 '경마장에 있는 말이 뛰고 있다', '그의 말이 법이다', '가는 말이 고와야 오는 말이 곱다' 3가지 문장을 학습하려고 한다고 가정해보자. * 이 3개의 문장 soki.tistory.com * 앞선 포스팅에서 RNN을 사용해 텍스트를 생성하는 방법에 대해 알아보았다. 이번 포스팅에서는 LSTM을 활용하여 텍스트를 생성하는 방법에 대해 알아보겠다. * 데이터셋을 준비하고 모델을 구성하는 것은 비슷하지만, LSTM을 사용하면 더 sequence의 처리가 가능하기 때문에 RNN과 같이 우리가 직접 생성한 6단어정도로 구성된 짧은 문장 뿐만 아니라 더 긴 문장을 훈련 시키는 것이 가능.. 2021. 12. 18.
RNN을 이용한 텍스트 생성 1) RNN을 이용하여 텍스트 생성하기 * 만약 '경마장에 있는 말이 뛰고 있다', '그의 말이 법이다', '가는 말이 고와야 오는 말이 곱다' 3가지 문장을 학습하려고 한다고 가정해보자. * 이 3개의 문장들을 훈련할 때 X data, y data로 나눠야 할텐에 어떻게 나눠야 할까? 각 단어들을 y로 놓고 X에는 전체 문장에서 y단어 앞에 나왔던 단어들을 나열하면 될 것이다. 예를 들면 이렇게 말이다. * 위와 같이 데이터셋을 구성하기 위해 다음과 같은 과정을 거친다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pa.. 2021. 12. 17.