Transformer/BERT는 attention 계산량이 토큰 길이가 길어질 수록 급격히 증가한다.
대표적인 BERT 모델들은 보통 512 토큰까지 지원한다.
(BERT, KoBERT, KLUE-BERT)
그러나 실제 학습은 보통 더 짧게 사용한다.
예) 문장 평균 길이 = 22, 95%의 길이가 87 이라면 96 ~ 128
데이터의 각 문장의 길이를 센 다음에 이 길이들의 평균/최대값, 비율 등을 확인하여 정하게 된다.
lengths = [len(tokenizer.tokenize(sent)) for sent in texts]
실제 길이는 Tokenize 된 후의 길이가 되므로 이 길이를 기준으로 한다.
또한 BERT는 자동으로 [cls], [SEP] 을 추가하므로 길이 + 2가 되어야 한다.
예)
lengths = []
for sent in texts:
tokens = tokenizer.tokenize(sent)
lengths.append(len(tokens))
문장 A -> 12
문장 B -> 34
문장 C -> 91
문장 D -> 140
대체로 길이가 100 이하이므로 128로 결정할 수 있다.
I am playing soccer
vs
[CLS] i am play ##ing soccer [SEP]