전처리
먼저 LSTM 모델에 필요한 전처리 과정을 소개합니다. 앞서 트랜스포머 계열의 모델에서 의미 단위의 토큰 임베딩을 사용했던 것처럼 LSTM 모델에도 입력 텍스트를 치환하기 위한 임베딩이 필요합니다. 저희 팀은 사전 학습된 단어 임베딩을 가져와 이를 활용했으며, 실험을 통해 Glove14와 FastText15라는 두 가지 임베딩을 혼합해 사용하는 것으로 최종 선택했습니다.
사전 학습 임베딩을 사용하기 전에, 사용할 임베딩이 주어진 텍스트 데이터를 얼마나 잘 커버하는지 체크하는 것이 좋습니다. 임베딩에 포함되지 않는 단어, 즉 OOV(Out of vocabulary)의 경우는 임베딩 변환 시 생략되므로, 만약 이 커버리지가 높지 않다면 해당 임베딩은 사용을 재고해볼 필요가 있습니다.
다음 코드는 Glove 임베딩을 가져와 커버리지를 체크하는 과정의 일부입니다.
import pickle
import operator
from tqdm.auto import tqdm
# load embeddings
def load_embeddings(path):
with open(path, "rb") as f:
emb_arr = pickle.load(f)
return emb_arr