MetaCode(Deep Learning) - NLP (NLP_intro)

cjun·2022년 12월 26일
0

1. 자연어 처리 소개

자연어 (natural language) : 일상 생활에서 사용하는 보편적인 언어
자연어 처리 (natural language processing, NLP) : 컴퓨터가 자연어를 처리하는 일
ex) 음성 인식, 번역, 요약, 분류

Chatbot

  • Sentiment Analysis
    텍스트에 녹아 있는 감성 또는 의견을 파악
  • Tokenization
    단어의 최소한의 의미를 파악하는 쪼개기
  • Named Entity Recognition
    텍스트로부터 주제 파악하기
  • Normalization
    의도된 오타 파악하기
  • Dependency Parsing
    문장 구성 성분의 분석

SIRI

  • Feature Analysis
    음성 데이터로부터 특징을 추출
  • Language Model
    언어별로 갖고 있는 특성을 반영
  • Deep Learning
    이미 학습된 데이터로부터 음성 신호 처리
  • HMM: Hidden Markov Model
    앞으로 나올 단어 또는 주제의 예측
  • Similarity Analysis
    음성 신호가 어떤 기준에 부합하는가?

Translator

  • Encoding
    유사도 기반 자연어의 특징 추출
  • Time Series Modeling
    문장을 시간에 따른 데이터로 처리
  • Attention Mechanism
    번역에 필요한 부분에만 집중하기
  • Self-Attention
    문장 사이의 상관관계를 분석하기
  • Transformer
    Attention 구조를 이용한 번역 원리

2. 텍스트 전처리

  1. Tokenization
  • 주어진 문장에서 "의미 부여"가 가능한 단위를 찾음
    --> 구두점이나 특수문자를 전부 제거하는 작업만으로는 불가능. ex) 5:3 승리
  • 표준 토큰화 : Treebank Tokenization
from nltk.tokenize import TreebankWordTokenizer
  • 문장 토큰화 : 문장 단위로 의미를 나누기 --> 잘 사용 X
  • 한국어 --> 형태소 분석 어려움 --> 토큰화 어려움
  1. 1 cleaning
  • 데이터 사용 목적에 맞추어 노이즈를 제거
    1) 대문자와 소문자를 통일시켜줌 ex) us, US
    2) 출현 횟수가 적은 단어의 제거 ex) Floras and faunas
    3) 길이가 짧은 단어, 지시 (대)명사, 관사의 제거
  1. 2 어간추출(Stemming)
  • 어간(Stem) : 단어의 의미를 담은 핵심
  • Porter Algorithm : 대표적인 Stemming 방법
  • 어간 추출 vs 표제어 추출
  • 표제어 추출은 단어의 품사 정보를 포함하고 있음 ex)bear : 곰, 참다
  • 어간 추출은 품사 정보를 가족 있지 않음
  • 불용어(Stopword) : 문장에서 대세로 작용하지 않는, 중요도가 낮은 단어
  • 불용어(Stopword)제거 방법
    1) 불용어(Stopword) 목록을 받아옴
    2) 정제할 문장을 토큰화 (tokenize)
    3) 토큰화된 각 단어마다
    4) 단어가 불용어 목록에 없는 경우 --> 정제 결과에 추가
    5) 단어가 불용어 목록에 있는 경우 --> Pass
  1. Encoding
  • 단어를 숫자로 바꿔줌

  • 정수 인코딩 (Integer_encoding)

      1. Dictionary
      • 1) 문장의 토큰화 - 불용어 및 대문자 제거 과정을 거침
      • 2) 빈 단어 dictionary vocab={}를 만든다.
      • 3) 토큰화된 각 단어에 대해서:
      • 4) 단어가 vocab에 속해 있지 않는 경우 --> vocab[단어] = 0
      • 5) 단어가 vocab에 속한 경우 --> vocab[단어] += 1
      1. 빈도순 정렬
    
    vocab = [('apple',8),('July',6),('piano',4),('cup',2),('orange',1)]
    word2inx = {word[0] : index +1 for index, word in enumerate(vocab)}
  • Zero-padding
    1) 문장들에 정수 인코딩을 거침
    2) 각 문장에 대해서:
    3) 해당 문장이 가장 긴 문장의 길이보다 작을 경우:
    4) 문장 길이를 맞출 때까지 0을 뒤에 추가

  • One-hot Encoding
    1) 0 [1,0,0,0,0,0]
    2) 1 [0,1,0,0,0,0]
    3) 2 [0,0,1,0,0,0]
    4) 3 [0,0,0,1,0,0]
    5) 4 [0,0,0,0,1,0]
    6) 5 [0,0,0,0,0,1]
    저장 공간을 많이 차지해 필요할때만 사용

  • Word2vec Encoding

    • 단어의 유사성을 인코딩에 반영
    • 인코딩 벡터가 비슷하다 = 단어가 유사하다
  • TF-IDF

    • Term Frequency - Inverse Document Frequency
    • 단어들의 중요한 정도를 가중치로 매기는 방법
      TFIDF=tf(d,t)×idf(d,t)TF-IDF = tf(d,t)\times idf(d,t)
    • d : 특정 문서 번호
    • t : 특정 단어 번호
    • tf(d,t)tf(d,t) : 특정 문서 d에서 특정 단어 t의 등장 횟수
    • idf(d,t)=log(Ndf(t))idf(d,t) = log(\frac{N}{df(t)})
    • df(t) : 특정 단어 t가 등장한 문서의 수
    • N : 총 문서의 수

Interim Summary

토큰화 --> 정제, 추출 --> 인코딩(패딩)

3. 언어 모델

  • 통계(확률) 기반 언어 모델
    • 나는 밥을 ____. --> 빈칸에 들어갈 단어를 확률적으로 선택
    • 이미 n-1개의 단어가 주어진 경우, 다음에 등장할 단어 확률 계산.
    • P(w9w1:8)=P(w1:9):매우적음P(w1:8):적음P(w_9|w_{1:8}) = \frac{P(w_{1:9}):매우적음}{P(w_{1:8}):적음}
  • Markov Chain
    • I love reading fantasy novel/
    • -->p(fantasyi love reading)=p(I love reading fantasy)p(I love reading)p(fantasy|i~love~reading) = \frac{p(I~love~reading~fantasy)}{p(I~love~reading)}
      --> Sparsity Problem
      • N-gram Language Model
      • N개의 단어를 이용하여 다음에 들어갈 단어를 선택
      • p(fantasyI love reading)p(fantasylove reading)p(fantasy|I~love~reading) \approx p(fantasy|love~reading)
      • N-gram을 통해서 Sparsity Problem 해결
      • Hyperparameter = N
  • 인공 신경망 기반 언어 모델

4. 유사도 분석

  • 벡터 유사도 : Cosine Metric
    cosθ=a  babcos\theta = \frac{\overrightarrow a ~\cdot ~\overrightarrow b}{||\overrightarrow a||\cdot||\overrightarrow b||}

  • 문장 유사도 분석 : Example

    1. I love apple.
    1. Apple is delicious which I love too.
    1. I want a delicious food, but not an apple.
    1. Deep learning is difficult.
  • love | apple | delicious | love | food | DL

  • 1 1 0 0 0 0 -->norm:2\sqrt 2

  • 1 1 1 0 0 0 -->norm:3\sqrt 3

  • 0 1 1 0 1 0 -->norm:3\sqrt 3

  • 0 0 0 0 0 1 -->norm: 11

  • 벡터 유사도: Euclidean Metric

  • Levenshtein Distance

    • 단어 사이의 거리를 나타내는 대표적인 척도
    • 단어 A를 단어 B로 수정하기 위한 최소 횟수
  • Levenshtein Distance : Tabular Method

  • Jaccard Distance

    • J(A,B)=ABABJ(A,B) = \frac{|A\cap B|}{|A\cup B|}
profile
Sometimes You gotta run before you can walk.

0개의 댓글