BLOG/머신러닝
[자연어처리] 패딩(Padding) : 0을 뒤에 채우는 방법 (파이썬)
알디노
2021. 3. 23. 10:35
지난 글에서는 파이썬에서 패딩을 구현하는 기본적인 방법에 대해서 알아보았는데요, 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으로 패딩이 뒤에 된 것을 확인할 수 있습니다.