본문 바로가기

REVIEW/INTERN+INTERVIEW

[NLP] 자연어처리 기초 (for 기술면접 대비)

 

  • Tokenization
    - corpus를 의미 있는 단위인 token으로 나누기
    - 구두점, 특수문자 단순히 제외하면 안됨
  • Lemmatization & Stemming
    - Lemmatization : 표제어 추출 (뿌리 단어 찾기, am → be)
    - Stemming : 어간 추출 (going → go)
  • Language Model
    - 단어 sequence에 확률을 부여하는 모델로, 이전 단어들 주어졌을 때 다음 단어 예측하는 모델
  • n-gram
    - 통계적 언어 모델에서 앞의 n개 단어 보고 확률 계산
  • BoW (Bag of Words)
    - 단어 순서를 고려하지 않고 출현 빈도만 고려
  • TF-IDF
    - DTM : 문서별 단어 빈도를 행렬로 표현
    - tf(d,t) : 특정 문서 d에서 특정 단어 t가 나오는 횟수
    - df(t) : 특정 단어 t가 등장한 문서 횟수
    - idf(d,t) = log(n/(1+df(t)) : 문서 수 많아질수록 idf 값 커지는 것 막고자 로그 사용 & 분모 0 막고자 +1
  • 임베딩
    - 자연어를 기계가 알아들을 수 있게 vector화
    - 단어, 문장 사이 유사도 계산 / 의미, 문법적 정보 도출 / transfer learning
    - 행렬 분해 기반 : GloVe, Swivel / 예측 기반 : Word2Vec, FastText, BERT, ELMo, GPT / 토픽 기반 : LDA
  • Word2Vec
    - CBOW : 주변 문맥 단어 통해 타깃 단어 맞추는 과정 학습
    - Skip-gram : 타깃 단어로 주변 문맥 단어 맞추는 과정 학습
    - Positive / Negative sample 만들어 input은 (target, context by n-gram)이며 output은 Positive sample 여부
    - 로그확률 평균 식을 최대화하는 방식으로 학습
  • FastText
    - Word2Vec에서 단어 대신 문자 단위로 n-gram 수행
  • Topic Modeling
    - LSA : 특이값 분해로 행렬 차원 수 줄이는 워드 임베딩 방식
    - LDA : 디레클레 분포 변수에 의해 잠재 정보를 알아내 문서별 주제를 알아내는 확률 모형
  • Glove
    - 말뭉치 전체에 대해 학습하기 어려운 Word2Vec의 단점과 단어간 유사도 측정을 하기 어려운 LSA의 단점을 보완
    - 단어 벡터 간 유사도를 측정하면서 말뭉치 전체에 대한 통계량 잘 반영하도록
    - 단어-문맥 행렬 분해
  • Swivel
    - Glove에서 PMI 행렬 분해
    - PMI (점별 상호 정보량) : 상관성 수치화, 두 단어가 같이 등장하는 정도 수치화
  • ELMo
    - transfer learning을 NLP에 접목
    - fine tuning : pre-train 뒤 downstream task에 적용
    - 문자 단위 CNN으로 단어 내 문자들 사이 의미, 문법적 관계 도출
       → 양방향 LSTM layer로 단어 사이 의미, 문법적 관계 도출
       → ELMo layer로 출력 벡터 가중합하여 학습 손실 최소화 방향으로 업데이트
  • Scaled Dot-Product Attention
    - Attention(Q,K,V) = softmax(QK^T/sqrt(d_k))V
    - 내적으로 유사도 구함 / 쿼리 및 키 단어 일치하는 attention / 키 행렬 차원 수 제곱근으로 나눠 스케일 맞춤
  • Transformer Network
    - Multi-Head Attention : Scaled Dot-Product Attention 여러 번 수행
    - Position-wise Feed Forward : Multi-Head에 선형변환 2번 적용
  • BERT
    - 양방향 학습
    - pre-train task : 마스크 언어 모델 + NSP(다음 문장 여부 맞추기)
    - token embedding : 입력 token 자체 / segment embedding : 문장 첫번째인지 두번째인지 / position embedding : 입력 문장 절대적 위치

 

반응형