카테고리 없음

NLP 기본개념(토큰화, 임베딩)

hu-nie 2024. 10. 27. 17:38

개요

LLM 서비스 준비로 인해 NLP의 기본 개념인 토큰화, 임베딩에 대해서 학습한 내용을 정리 하였습니다.

 

토큰화의 개념

  • tokenization (토큰화)
    • 텍스트 데이터를 컴퓨터가 처리할 수 있도록 변환하는 과정
    • 문장이나 문서를 모델이 처리할 수 있는 작은 단위(토큰)로 분할하는 과정

토큰화 주요 종류

  • N-gram: 연속된 n개의 아이템을 하나의 토큰으로 취급합니다. 이는 텍스트 내에서 아이템의 연속성을 포착하는 데 유용합니다.
  • Character: 개별 문자를 독립적인 토큰으로 취급합니다. 이 방법은 언어의 구조적 특성을 덜 고려하며, 매우 세밀한 수준의 분석이 가능합니다.
  • Word: 공백이나 구두점 등을 기준으로 분리된 ‘단어’를 토큰으로 사용합니다. 가장 일반적이고 직관적인 방법입니다.
  • Morpheme: 형태소 분석을 통해 언어의 가장 작은 의미 단위를 토큰으로 취급합니다. 특히 굴절 언어 처리에 적합합니다.
  • Subword: ‘Byte Pair Encoding (BPE)’ 또는 ‘WordPiece’와 같은 방법을 사용하여 자주 사용되는 문자의 조합이나 단어의 부분을 토큰으로 분리합니다. 이는 효율적인 어휘 크기 관리와 더 나은 일반화를 가능하게 합니다.

언어권별 선호하는 토큰화

  • 로마 언어권: 단어(word) 기반 토크나이제이션이 일반적으로 사용되었습니다. 이는 라틴계 언어의 구조상 단어 간 구분이 명확하기 때문입니다.
  • 중국어 언어권: 문자(character) 기반 토크나이제이션이 주로 사용되었습니다. 중국어는 각 문자가 고유한 의미를 가지고 있기 때문에 이 방식이 효과적입니다.
  • 한국어: 형태소(morpheme) 기반 토크나이제이션이 선호되었습니다. 한국어는 굴절 언어의 특성을 가지고 있어 형태소 분석이 중요합니다.
    • 굴절 언어란?
    • 단어의 형태가 문법적 역할에 따라 변화하는 언어 ex) 단어의 끝부분이 변해서 문법적 의미(예: 시제, 격, 수 등)를 나타내는 경우
  • 일본어: 역시 형태소 기반 토크나이제이션이 흔히 사용되었습니다. 일본어 역시 복잡한 굴절을 가진 언어이기 때문입니다.

최근 사용되는 토큰화 방법

  1. BPE (Byte Pair Encoding):
    • 원리: 자주 함께 나타나는 문자 쌍을 병합하여 단어를 더 작은 단위로 분할합니다.
    • 사용: 자주 등장하는 패턴을 병합해 희귀 단어를 처리하는 데 유용합니다.
  2. WordPiece:
    • 원리: 자주 나타나는 하위 단위(subword)로 단어를 분할합니다.
    • 사용: BERT와 같은 모델에서 사용되며, 어휘를 작은 단위로 쪼개어 희귀 단어를 처리합니다.
  3. SentencePiece:
    • 원리: BPE나 WordPiece처럼 작동하지만, 공백 처리 없이 문장을 직접 분할할 수 있습니다.
    • 사용: 비영어권 언어 처리에 적합하며, 모든 문자를 포괄하는 방식입니다.

어휘 표현이란?

  • 텍스트 데이터를 수치 데이터로 변환하는 방식
  • 기계가 자연어를 이해하기 위해서 임베딩 하는 과정

어휘 표현 종류

  • 희소 표현 → 원한 인코딩 (One-Hot Encoding)
    • 원-핫 벡터들은 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법
      • 이러한 벡터 표현은 공간적 낭비
  • 밀집 표현
    • Word Embeddings: 단어를 고정된 크기의 벡터로 표현하는 방법으로, 단어 간의 유사성을 벡터 공간에서의 거리로 나타냅니다.
      • 예: Word2Vec, GloVe, FastText 등.
    • Sentence Embedding: 문장을 고정된 크기의 벡터로 변환하여 문장의 의미를 수치적으로 표현하는 방법입니다.
      • 비슷한 의미를 가진 문장은 벡터 공간에서 가까운 위치에 임베딩됩니다.
      • 예: Universal Sentence Encoder, Sentence-BERT 등.
    • 밀집 표현은 차원이 낮고 연속적이기 때문에 원한 인코딩과 달리 효율적이며, 단어들 간의 의미적 관계를 내포할 수 있습니다.

Word Embedding

대표적인 Word Embeddings 방법으로는 다음이 있습니다:

  1. Word2Vec: 특정 단어를 주변 단어들에 의해 예측하는 방법을 통해 단어의 벡터 표현을 학습합니다.
  2. GloVe: 전역적인 통계 정보를 이용해 단어의 벡터를 학습합니다.
  3. FastText: 단어를 부분 단위로 쪼개어 벡터로 표현하여, 새로운 단어에 대해서도 의미를 추정할 수 있습니다.
  4. BERT 등과 같은 최신 Transformer 기반의 방법들도 밀집 표현을 생성하는 데 사용됩니다.

Sentence Embedding

문장 임베딩은 단어가 아닌 문장 전체를 하나의 벡터로 변환하는 방식입니다. 이 방식은 단어 임베딩과 달리, 문장 내 단어들 간의 문법적, 의미적 관계를 반영하여 임베딩을 생성합니다. 문장의 의미를 보존하는 벡터 표현을 얻기 위해 다양한 방법론이 사용됩니다.

  • Universal Sentence Encoder (USE): 문장 전체의 의미를 반영하여 고정된 크기의 벡터를 생성하는 구글의 모델입니다.
  • BERT 기반 문장 임베딩: BERT는 문맥을 이해할 수 있는 트랜스포머 모델로, 문장 임베딩을 생성하기 위해 BERT의 최종 층이나 CLS 토큰의 출력을 사용합니다.

단어 임배딩과의 비교 분석:

특성 Word Embedding (단어 임베딩) Sentence Embedding (문장 임베딩)
단위 단어 문장
차원 고정된 크기의 벡터(보통 50-300차원) 고정된 크기의 벡터(보통 512차원 이상)
문맥 반영 여부 문맥 반영 안 함 문맥 반영
계산 비용 상대적으로 낮음 상대적으로 높음
사용 사례 단어 간 유사성 평가, 단어 기반 작업 문장 유사도 평가, 텍스트 분류, 정보 검색
주요 알고리즘/모델 Word2Vec, GloVe, FastText USE, BERT, Doc2Vec

 

결론

  • 최근 토큰화는 Subword 토큰화를 사용하며, SentencePiece는 비영어권인 우리에게 적합한 토크나이제이션이라고 생각됨
  • 트랜스포머 모델로 추세가 변환되면서 Word2Vec과 같은 임베딩은 추가적으로 필요가 없음