[자연어처리] Basic NLP Analysis

L·2020년 9월 4일
0

NLP

목록 보기
1/1

NLP Pipeline

  1. Text Processing : 텍스트 정규화
  2. Feature Extraction : 벡터화
  3. Modeling : ML, DL

Text Processing

NLP를 위한 사전 작업

  1. Raw : 원본 "Jenna went back to University.
  2. Normalize : 정규화 "jenna went back to university.
  3. Tokenize : 토큰화
    ['jenna', 'went', 'back', 'to', 'university']
  4. Stopwords : 불용어 제거
    ['jenna', 'went', 'university']
  5. Lemmatize/Stemming : 표제어(사전형)/어간 추출
    ['jenna', 'go', 'univers']

Feature Extraction

Bag of Words (BoW)

  • Normalized text의 corpus(말뭉치)를 vector화한 것
  • 가장 단순한 자연어 표현 모델 중 하나
  • 텍스트의 문법과 순서 무시, 다중성 유지
  • 사용 분야
    • 유사도 측정 : cosine similarity로 계산
    • 감정 분석 : len(matching_words)/len(corpus) 비교로 텍스트의 긍정적/부정적 감정 파악

TF-IDF

  • Term Frequency-Inverse Document Frequency
  • 어떤 단어(ww)가 문서군의 특정 문서(dd) 내에서 얼마나 중요한지를 나타내는 휴리스틱

TF (단어 빈도)

  • fw,df_{w,d} = 단어 ww가 문서 dd에서 나타난 빈도
  • 과다 반복되는 무의미한 단어의 가중치를 낮춰야 한다.
    • 방법: fw,df_{w,d}log\log를 취함

tf(w,d)={1+logfw,d1+logad (fw,d>0)0             (fw,d=0){\rm tf}(w,d) = \left \{ \begin{array}{cc} \frac{1+\log{f_{w,d}}}{1+\log{a_{d}}}\ (f_{w,d}>0)\\ 0\ \ \ \ \ \ \ \ \ \ \ \ \ (f_{w,d}=0) \end{array} \right.

IDF (역 문서 빈도)

  • dfwdf_w = 단어 ww가 등장한 문서 수
  • NN = 총 문서 수(상수)
  • dfwN\frac{df_w}{N} = 총 문서 중 단어 ww가 등장한 문서 비율
    • 문서 빈도의 역수 Ndfw\frac{N}{df_w}
      • 단어 ww가 unique할수록 높아지고, common할수록 낮아진다.

idf(w)=logNdfw{\rm idf}(w)=\log\frac{N}{{\rm df}_w}

TF-IDF (단어 빈도-역문서 빈도)

tfidf(w,d)=tf(w,d)idf(w){\rm tfidf}(w,d) = {\rm tf}(w,d) \cdot {\rm idf}(w)

  • TF-IDF는 휴리스틱이므로, 다양한 형태로 정의할 수 있다.

  • 각 문서의 corpus 내 단어들을 TF-IDF로 변환하여, 각 문서를 vector화할 수 있다.

Similarity Analysis

  • TF-IDF로 벡터화한 두 문서 벡터 u\vec u (or uiu_i), v\vec v (or viv_i)에 대해 유사도를 계산해 볼 수 있다.

Cosine Similarity 코사인 유사도

Simcos=uvuv{\rm Sim}_{\cos} = \frac{\vec u \cdot \vec v}{|\vec u| |\vec v|}

Jaccard Similarity 자카드 유사도

SimJaccard=imin{ui,vi}imax{ui,vi}{\rm Sim}_{\rm Jaccard} = \frac{\sum_i \min\{u_i, v_i\}}{\sum_i \max\{u_i, v_i\}}
  • (교집합)/(합집합)(교집합)/(합집합)으로 해석 가능

0개의 댓글