더북(TheBook)

아무런 전처리를 하지 않았을 때, 입력 텍스트의 중복을 제외한 단어 집합(vocab) 가운데 15.82%만이 해당 임베딩에 유효한 것으로 나타났습니다(중복을 포함한 경우는 89.63%). 임베딩에서 벗어난 단어를 조사해보니 구두점, 특히 축약어(Contraction) 형태를 변환하지 못하는 경우가 가장 두드러지게 나타납니다(그림 7-21 참고).

이를 간단히 nltk 라이브러리의 word_tokenize 함수를 활용해서 임베딩 값을 쓸 수 있도록 변환해보겠습니다.

from nltk.tokenize import word_tokenize

vocab_counter = build_vocab_counter(
    df_train["comment_text"].map(lambda x: word_tokenize(x)).tolist()
)

oov = check_coverage(vocab_counter, glove_embeddings)
oov[:10] # 임베딩에 포함되지 않는 상위 10개의 단어

위 함수를 사용하면 다음과 같은 예시의 형태로 문장 텍스트가 단어로 분리됩니다.

“Don’t be afraid!” → “Do”, “n’t”, “be”, “afraid”, “!”

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.