본문 바로가기

BLOG/머신러닝

[자연어처리] 파이썬 코드로 패딩(Padding) 구현하기 - pad_sequences

패딩(Padding)이란, 데이터에 특정한 값을 채워서 데이터의 크기를 일괄적으로 조정하는 것을 말하는데요, 이때 특정한 값이 0이라면 이를 제로 패딩이라고 합니다.

 

한편, 케라스에서 패딩을 하기 위한 함수 'pad_sequences()'를 제공하는데요, 정수 인코딩이 된 값을 입력하면 패딩된 값으로 반환해줍니다. 한번 코드를 보면서 살펴보도록 하겠습니다.

 

 

1. 정수 인코딩하기

정수 인코딩을 하는 방법은 이전 글에서 자세하게 살펴보았는데요, 이에 대해서는 이전 글을 참고하시고, 바로 코드를 작성해보겠습니다.

 

import numpy as np
from tensorflow.keras.preprocessing.text import Tokenizer

sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']]

tokenizer= Tokenizer()
tokenizer.fit_on_texts(sentences)

encoded = tokenizer.texts_to_sequences(sentences)
print(encoded)


#output :
[[3, 1], [1, 2, 4], [2, 5, 6, 1], [7, 1]]

 

위 코드를 작성한 뒤, 정수 인코딩이 된 값 encoded를 얻을 수 있습니다.

 

 

2. 패딩하기

정수인코딩이 되었다면 패딩을 해주는데요,  pad_sequences() 함수를 사용하여 패딩을 해주겠습니다.

 

from keras.preprocessing import sequence
padded = sequence.pad_sequences(encoded)

 

pad_sequences() 함수 안에 정수 인코이 된 값을 인자로 넣어주면 되는데요, 반환된 값 padded를 출력하면 다음과 같이 패딩이 된 데이터를 얻을 수 있습니다.

 

print(padded)

#output :
[[0 0 3 1]
 [0 1 2 4]
 [2 5 6 1]
 [0 0 7 1]]

 

출력 결과, 0으로 패딩이 되었음을 확인할 수 있습니다.

 

 

 

이렇게 정수인코딩이 된 데이터를 패딩하는 방법에 대해서 살펴보았는데요, 다음 글에서는 길이를 조정하는 방법과 0을 뒤로 채우는 방법, 0 말고 다른 정수로 채우는 방법 등에 대해서 살펴보도록 하겠습니다.