본문 바로가기

[NLP]

[NLP] 패딩(padding)

자연어 처리를 하다보면 각 문장은 서로 길이가 다를 수 있습니다.

그런데 기계는 길이가 전부 동일한 문서들에 대해서는 하나의 행렬로 보고,

한번에 묶어서 처리할 수 있습니다.

 

다시말해 병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요할 때가 있습니다.

1. 케라스 전처리 도구로 패딩하기

 

케라스는  pad_sequences()를 제공하고 있습니다.

 

from tensorflow.keras.preprocessing.sequence import pad_sequences

 

기본적으로 문서의 뒤에 0을 채우는 것이 아니라 앞에 0을 채우는데 반대로 하고 싶다면

인자로 padding='post'를 주면 됩니다.

 

가장 긴 길이의 문서를 기준으로 패딩한다고 가정하기도 하지만,

실제로는 꼭 가장 긴 문서의 길이를 기준으로 해야되는 것이 아닙니다.

 

이와 같은 경우에는 길이에 제한을 두고 패딩할 수 있습니다. 
maxlen의 인자로 정수를 주면, 해당 정수로 모든 문서의 길이를 동일하게 합니다.

 

데이터가 손실될 경우에 앞의 단어가 아니라 뒤의 단어가 삭제되도록 하고싶다면 
truncating이라는 인자를 사용합니다. 

 

pad_sequences의 인자로 value를 사용하면 0이 아닌 다른 숫자로 패딩이 가능합니다.

'[NLP]' 카테고리의 다른 글

[NLP] 한국어 전처리 패키지  (0) 2023.03.27
[NLP] 원-핫 인코딩  (0) 2023.03.27
[NLP] 정수 인코딩  (0) 2023.03.27
[NLP] 정규 표현식(Regular Expression)  (0) 2023.03.27
[NLP] 표제어 추출 and 어간 추출  (0) 2023.03.27