[D&A DeepSession] 7차시 - NLP1

공부보따리·2023년 6월 12일
0
post-thumbnail

01.NLP란?

Sequence data

: 연속적으로 이루어진 데이터 , 순서나 위치에 따라 다른 의미를 가짐

NLP(Natural Language Processing = 자연어처리)

: Text 데이터를 분석하고 모델링하는 분야

  • 자연어 이해 (NLU) : 주어진 텍스트의 의미 파악 (Text -> Meaning)
  • 자연어 생성 (NLG) : 주어진 의미에 대한 자연스러운 Text 생성 (Meaning -> Text)

NLP Process

  1. Preprocessing : 진행하는 Tesk에 맞게 텍스트 데이터를 수집 및 전처리
  2. Tokenization : 데이터를 숫자로 표현하기위해 적당한 기준으로 자름
  3. Word Embedding : Tokenization된 데이터를 컴퓨터가 이해할수 있도록 숫자로 변형
  4. Modeling : Embedding된 데이터를 가지고 Modeling 진행
  • NLP Tesk 종류 : 분류,품사태깅,챗봇 etc.

02.Preprocessing

Text Data

: 자연어로 구성된 문자, 문장, 문단 등의 정보를 포함하는 데이터 혀앹로 인간이 사용하는 언어로 표현되는 정보를 다룸

Text Data 특징

  • 비정형 데이터
  • 노이즈와 불규칙성 (오타,문법오류,구어체 등)
  • 다양한 표현 (방언,유행어,전문용어 등)
  • 애매한 의미 (동음이의어,다의어,비유,은유 등)
  • 순서 정보

데이터 정제(Data Cleaning)

  1. 불필요한 문자 제거 (숫자,특수문자,이모티콘 등)
  2. 결측치 처리 : 누락된 데이터 처리
  3. 이상치 제거 (오타,문법오류,무작위문자열 등)

데이터 정규화(Data Nomalization)

  • 소문자 면환
  • 불용어 제거
    📌 불용어 : 출현빈도가 높지만 문장의미 분석에 영향이 적은 단어 ex) "a","an","the","and" etc.
  • Stemming(언어적 규칙기반) & Lemmatizaiton(사전기반 단어원형) : 단어의 형태를 기본형태로 변환

03.Conversion

용어 정의

  • Corpus(말뭉치) : 자연어처리를 위해 수집된 텍스트 데이터의 집합
  • Token : 텍스트를 나누는 최소단위로, NLP에서 처리할수 있는 의미 있는 단우
  • Vocabulary(사전) : 특정 Corpus에서 사용되는 고유한 토큰들의 집합으로 Token들의 key와 value를 저장

Tokenization

  • OOV(Out-of-Vocabulary) : 기존 vocabulary에 없는 토큰
    • OOV문제를 해결하기위해 특수한 토큰(\<UNK> or [UNK])으로 대체 but, 성능저하의 문제
      사전을 풍부하게 만들어 해결할수도 있지만 메모리 문제 발생
      => 그래서 사전을 효율적으로 만들기 위해 Tokenization 방법 선택이 중요
    • 단어기반 Tokenization : 공백,구두점,특수문자 등으로 분리하여 개별 단어로 나누는 방식
    • 서브워드기반 Tokenization : 의미있는 조각단위로 분리하는 방식

Padding

: 서로 다른 길이의 문장이나 시퀀스를 모델에 입력하기전 동일한 길이로 맞춰주는 전처리 과정

  • Zero-Padding : 길이가 부족한 부분을 0으로 채움
  • Constant Padding : 0대신 다른 상수값으로 부족한 부분을 채움
  • Custom Padding : 특정 도메인이나 데이터셋에 따라 방식을 직접 정의
  • Padding 주의사항
    • Padding 값은 실제 데이터에 포함되지 않는 고유한 값으로 설정
    • Padding이 추가된 위치를 모델이 인식할 수 있도록 별도의 마스크를 사용하기도 함
    • 과도한 패딩은 학습에 부정적이므로 적절한 최대 시퀀스 길이 설정 필요

Word Embedding

: 단어를 고정된 크기의 벡터로 표현하는 것 (유사한 단어는 가깝게위치, 고차원의 데이터는 저차원으로 변환)

  • One-hot Encoding
    각 단어에 대해 고유한 인덱스를 부여하고, 단어의 수만큼 차원을 가진 벡터 생성, 해당단어의 인덱스위치값은 1,나머지 위치의 값은 0으로 설정
    - 한계
    • 사전의 크기가 클수록 벡터의 차원이 커지고 공간적 낭비 발생
    • 단어간의 의미적 유사성이나 관계를 표현하지 못함
    • 데부분의 값이 0인 희소벡터는 계산에 비효율적
  • Word2Vec
    분포가설에 기반한 분산 표현으로 텍스트 데이터의 단어들을 고젇된 길이의 벡터로 표현
    📌분산표현 : 단어를 고차원이 아닌 저차원의 연속벡터로 표현하는 방식
    -> 단어의 의미를 벡터 공간상에서 근접한 위치에 배치함으로써 단어간의 유사성 계산 가능
    📌분포가설 : '단어의 의미는 주변 단어들에 의해 결정된다'라는 가설
    -> 같은 문맥에서 자주 나타나는 단어들은 비슷한 의미를 가짐
    • 특징
      • 단어간의 유사성을 기하학적으로 표현 가능 ex) 왕 - 남자 + 여자 = 여왕
      • 단어간의 관계를 잘 반영한 벡터를 생성하여, 이를 기반으로 한 연산 가능
      • 단어의 다양한 의미를 구분하지 못하고, 하나의 벡터로 표현 ex) bank를 은행,강둑의 두가지 의미로 구분불가
    • 학습 방법 :
      • CBOW : 주변단어들을 이용해 타겟 단어를 예측하는 방식으로 학습
      • Skip-gram : 타겟단어를 이용해 주변 단어들을 예측하는 방식으로 학습

0개의 댓글