본문 바로가기

BLOG/머신러닝

[자연어처리] 패딩(Padding) : 0을 뒤에 채우는 방법 (파이썬)

 

지난 글에서는 파이썬에서 패딩을 구현하는 기본적인 방법에 대해서 알아보았는데요, pad_sequences() 함수를 이용하여 패딩을 구현했습니다.

 

아래 코드처럼 pad_sequenes()를 이용하여 코드를 입력하면 기본적인 패딩이 되는데요,

 

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)

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

 

print(padded)

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

 

위 결과를 보면, 앞에서 0으로 제로 패딩이 된 것을 확인할 수 있습니다.

 

 

하지만, 0이 만약 앞이 아닌 뒤에 채워야 하는 경우가 있을 수 있는데요, 이러한 경우엔 pad_sequences() 함수 안에 padding에 대한 설정을 padding = 'post'으로 지정하면 0이 뒤에 채워집니다. 한번 이와 같이 코드를 입력하여 다시 패딩을 해보겠습니다.

 

from keras.preprocessing import sequence 
padded = sequence.pad_sequences(encoded, padding='post')

 

print(padded)

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

 

padding = 'post' 로 인자를 입력해준 뒤 패딩을 한 결과, 위에 결과처럼 0으로 패딩이 뒤에 된 것을 확인할 수 있습니다.