Natural Language Processing

Daum·2021년 8월 20일
0

Deep Learning

목록 보기
3/5
post-thumbnail

📝 Natural Language Processing(자연어 처리)

자연어는 사람들이 일상적으로 쓰는 언어를 인공적으로 만들어진 언어인 인공어와 구분하여 부르는 개념으로 이런 자연어를 컴퓨터로 처리하는 기술이다.

벡터화(Vectorize)

텍스트를 컴퓨터가 계산할 수 있도록 수치정보로 변환하는 과정이다.

1) 등장 횟수 기반의 단어 표현(Count-based Representation)
단어가 문서(혹은 문장)에 등장하는 횟수를 기반으로 벡터화하는 방법

  • 문서-단어 행렬
  • Bag-of-Words (CounterVectorizer)
    문법이나 단어의 순서 등을 무시하고 단순히 단어들의 빈도값을 벡터로 사용
  • TF-IDF (TfidfVectorizer)
    특정 문서에만 등장하는 단어에 가중치를 두는 방법
    TF: 특정한 단어가 문서 내에서 등장하는 빈도
    IDF: 단어별 문서 빈도가 높은 단어는 패널티를 부여(지프의 법칙)

2) 분포 기반의 단어 표현(Distributed Representation)
타겟 단어 주변에 있는 단어를 기반으로 벡터화하는 방법

  • Word2Vec
    임베딩(Embedding) 방법으로 단어를 바로 벡터화한다.
    CBoW: 주변 단어에 대한 정보를 기반으로 중심 단어의 정보를 예측
    Skip-gram: 중심 단어의 정보를 기반으로 주변 단어의 정보를 예측
  • GloVe
  • fastText
    철자(Character) 기반의 임베딩 방법이다.
🔎 자세히 알아보기
[벡터화]
- 원-핫 인코딩(One-hot Encoding)의 단점?
단어 간 유사도를 구할 수 없다.
- 임베딩(Embedding)
토큰을 "고정 길이의 벡터"로 나타내는 방법으로 벡터 내의 각 요소가 연속적인 값을 가지게 되어, 단어 간 유사도를 구할 수 있다.
- 철자 단위 임베딩(Character level Embedding)
기존에 등장하지 않는 단어가 등장하는 문제인 OOV(Out of Vocabulary) 문제를 해결하였다.

차원의 저주란 무엇인가?

데이터셋의 차원이 늘어날수록, 설명력이 떨어지게 되는 것을 의미한다.

전처리 방법?

  • 대소문자 통일
  • 특수문자 제거(정규 표현식 사용)
  • 토큰화
  • 불용어(Stop words) 처리
  • 통계적 트리밍(Trimming)
  • 어간 추출(Stemming) : 단어의 의미가 포함된 부분으로 접사등이 제거된 형태로 변환
  • 표제어 추출(Lemmatization) : 단어들은 기본 사전형 단어 형태로 변환, 복수형→ 단수형으로 변환

원-핫 인코딩(One-hot Encoding)의 단점은?

단어 간 유사도를 구할 수 없다.

임베딩(Embedding)


📝 Code Review

from sklearn.feature_extraction.text import TfidfVectorizer
TfidfVectorizer(stop_words='english',
		ngram_range=(1,3),
        	max_df=.8,
        	min_df=5,
        	max_feature=800
        	)

0개의 댓글