본문 바로가기
AI/자연어처리

02. 자연어처리 - 진행순서

by 사라리24 2024. 6. 24.

 

1. 문제 정의

  •  문제의 대한 솔루션이 있어야 하고, 명확하고 구체적일수록 알맞는 자연어처리 기술을 찾을 수 있음

 

 

 

 

 

2. 데이터 수집 및 분석

  • 다양한 학습데이터를 수집하기 위해 공개된 데이터셋, 유료 데이터셋 또는 웹 크로링을 사용하여 수집

 

 

Papers with Code - Machine Learning Datasets

282 datasets • 132562 papers with code.

paperswithcode.com

      • 웹크로링을 통해 데이터를 수집 했다면 EDA(탑색적 데이터 분석) 및 분석을 통해 데이터를 철저하게 검증해야함
      • 레이블이 필요하다면 수집한 데이터에 레이블을 붙여야 함

 

 

 

 

 

 

3. 데이터 전처리

  • 학습에 용이하게 데이터를 수정/보완 하는 작업
  • 자연어처리 진행 과정에서 데이터가 차지하는 비준이 매우 높기 때문에 데이터를 수집하고 전처리하는 과정이 매우 중요함
  • 큰화(Tokenization): 주어진 데이터셋에서 문장이나 문서들을 토큰 단위로 나누는 작업
  • 정제(Cleaning):갖고 있는 데이터셋으로 노이즈 데이터(이상치, 편향 등)을 제거하는 작업 
  • 규화(normalization):표현 방법이 다른 데이터들을 통합시커서 같은 항목으로 합침

 

1. 토큰화 (Tokenization)

  • 토큰의 단위는 자연어 내에서 의미를 가지는 최소의 단위로 정의  
  • 토큰화 작업은 주어진 코퍼스내 자연어 문장들을 토큰이라 불리는 최소 단위로 나누는 작업
  • 코퍼스: 자연어 처리 연구나 애플리케이션 활용을 염두에 두고 수집된 테스트 데이터셋을 의미 

2. 토큰화 과정의 필요성 

  • 언어의 모델의 자언어 이해 능력 향상 
  • 다양한 자연어를 효율적으로 표현 가능
    • 중복을 제거한 대규모 자연어 코퍼스 내 토큰의 집합(단어 사전) 사용
    • 적절한 정보량을 내포하면서 전체 단어 사전의 개수가 많아지지 않도록 토큰의 단위를 잘 정의해야 함
    • 상황에 따라 다르지만 , 일반적인 자연어 처리
    • 작업에서 단어 사전의 규모는 약 10000 ~ 50000개 정도로 구성 (현재 한글의 글자 수는 11172개)

3. 토큰화 방법

  • 문장 토큰화 : 토큰의 기준을 문장으로 하는 토큰화 방법 
    • 문장의 끝에 오는 문장 부호를 기준으로 코퍼스를 잘라냄(. 또는 ! 또는 ?)
  •  단어 토큰화 : 토큰의 기준을 단어로 하는 토큰화 방법 
    • 보편적으로 구분 기호를 가지고 텍스트를 나눈게 되며, 기본적으로 공백을 구분자로 사용 
    • 한국어의 경우 교착어이기 떄문에 공백으로 단어 토큰화를 하면 성능이 좋지 않음 
    • 새로운 단어가 추가될수록 단어 사전의 크기가 계속 증가 
    • OOV(Out of Vocabulary) 문제  
  • 문자 토큰화 : 토큰의 기준을 문자로 하는 토큰화 방법 
    • 단어 토큰화의 한계점들을 해결하기 위한 방법
    • 영어는 26개의 알파벳에 따라 분리, 한국오는 자음 19와 모음 21개의 글자에 따라 분리
    • 문장 하나를 생성하는데 너무 많음 추론이 필요함 
    • 단어 사전이 작지만, 모델에 예측 시간에 문제가 생길수 있음 
  • 서브워드 토큰화 : 토큰의 기준을 서브워드로 하는 토큰화 방법  
    • 단어 토큰화와 문자 토큰화의 한계점을 해결하기 위한 방법
    • 문자 토큰화의 확장된 버전으로 토큰의 단위를 n개의 문자로 정의하고 해당 기준에 따라 텍스트를 분절하는 방법
    • 형태소 분절 기반의 서브워드 토큰화로 확장될 수 있어 한국어에서도 좋은 성능을 가짐
    • 서브워드를 만드는 알로그즘중에서 가장 유명한 것은 BPE 

 

 

 

 

 

 

4. 서브워드 토큰화

 

1. 서브워드 토큰화

  • 단어보다 더 작은 의미의 단위 
  • 단어를 여러 서브워드로 분리해서 단어 사전을 구축하겠다는 토큰화 방법
  • 신조어에서 주로 발생하는 OOV문제를 완화
  • 예) birthday = birth + day
          아침밥 = 아침 + 밥

2. BPE(Byte Pair Encoding)

  • 코퍼스 내 단어의 등장 빈도에 따라 서브워드를 구축하는데 사용 
  • 2016년 아래 논문에서 처음 제안
    Neural Machine Translation of Rare Words with Subword Units: https://arxiv.org/abs/1508.07909
  • 글자단위에서 점진적으로 서브워드 집합을 만들어내는 Bottom-up 방식의 접근 방식으로 자연어 코퍼스에 있는 모든 단어들을 글자 단위로 통합하는 방식

3. WorldPiece Tokenizer

  • 구글이 2016년도 아래 논문에 처음 공개한 BPE의 번형 알고리즘
    https://arxiv.org/abs/1609.08144
  • 병합할 두 문자가 있을 때 각각의 문자가 따로 있을 때를 더 중요시 여기는지, 병합되었을 때를 더 중요시 여기는지에 차이점을 둠 
  • GPT모델와 같은 생성 모델의 경우에는 BPE 알로리즘을 사용
  • BERT, ELECTRA와 같은 자연어 이해 모델에서는 WorldPiece Tokenizer를 주로 사용

 

 

 

 

 

5. 정제(Cleaning)

  • 토큰화 작업에 방해가 되는 부분들을 필터링하거나 토큰화 작업 이후에도 여전히 남아있는 노이즈들을 제거하기 위해 지속적으로 이뤄지는 전처리 과정 
  • 어떤 특성이 노이즈인지 판단하거나 모든 노이즈를 완벽하게 제거하는 것은 어렵기 때문에 일돈의 합의점을 찾아야 함

 

1. 정제 작업의 종류

  • 불용어(Stopword) 처리 
    • 불용어의 정의는 가변적이기 때문에 추가하고 싶은 불용어가 있다면 직접 정의할 수 있음 
    • 보편적으로 선택할 수 있는 한국어 불용어 리스트
      https://www.ranks.nl/stopwords/korean
  • 불필요한 태그 및 특수 문자 제거  
  • 코퍼스 내 등장 빈도가 적은 단어 제거
    • 코퍼스 내 단어들의 빈도를 분삭하여 분표를 보고 특정 Threshold를 설정한 후, 해당 threshold아래의 단어들을 필터링하는 방식으로 정제 

2. 정제 과정에서 유의해야할 점

  • @와 같은 특수 문자는 일반적인 작업에서는 정보양이 적은 토큰일 수 있지만 이메일과 관련한 내용을 판단해야 하는 작업에서는 유용한 토큰으로 사용될 수 있음
  • 자연어처리 작업에서 데이터를 수집한 이흐에는 항상 목적에 맞지 않는 노이즈가 있진 않은지 검사하고 발견한 노이즈를 정제하기 위한 노력이 필요

 

 

 

 

 

6. 정규화(Normalization)

  • 일반적인 머신러닝 작업에서 데이터 정규화는 학습데이터의 값들이 적단한 범위를 유지하도록 데이터의 범위를 변환하거나 스케일링하는 과정 
  • 정규화 목표는 모든 데이터가 같은 정도의 스케일로 반영되도록 하는 것 
  • 자연어처리 정규화의 핵심은 표현방법이 다른 단어들을 통합시켜서 같은 단어로 만들어주는 과정 

 

1. 정규화 작업이 필요한 이유

  • 이상적으로 단어 사전 내의 단어 토큰들이 코두 중요하게 고려되길 원함
  • 자연어의 특성 상 의미가 같은데 표기가 다른 단어들이 있을 수 있고, 의미가 같지만 사용 빈도가 낮은 동의어들을 학습에 유용하게 활용되지 않을 수 있음
  • 의미가 같지만 표기가 다른 단어들을 통합할 수 있다면, 통합된 단어의 사용 빈도가 높아질 것이고 빈도가 낮은 단어들의 중요도가 높아질수 있음 

2. 정규화 작업의 종류

  • 어간 추출, 표제어 추출
    • 어간 추출: 형태학적 분석을 단군화한 버전으로 정해진 규칙만 보고 단어의 어미를 자르는 어림짐작의 작업 
    • 표제어 추출: 단어들이 다른 형태를 가지더라고, 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단하는 방법
  • 대소문자 총합  
    • 대문자와 소문자가 구분되어야 하는 경우도 있음 , 무작정 소문자로 총합해서는 안됨, 예) US(미국), us(우리)

3. 정규화 시 유의할 점 

  • 규칙이 너무 엄격한 정규화 방법은 부작용이 심해 학습에 악영향을 줄 수 있음
  • 원본 의미를 최대한 유지하는 것이 학습에 도움이 됨 
  • 대화에서 사용하는 의미가 비슷한 이모티콘들을 통합하는 정규화 작업 

 

 

 

 

 

7. 한국어 데이터 전처리

 

1. 한국어의 특성 

  • 영어는 합성어나 줄임말에 대한 예외처리만 한다면 띄어쓰기를 기준으로 하는 토큰화 작업으로도 어느 정도의 성능을 보장할 수 있음
  • 한국어에는 조사나 어미가발달되어 있기 때문에 띄어쓰기만으로 단어를 분리하면 의미적인 훼손이 일어날 수 있음
  • 띄어쓰기 단위가 되는 단위를 "어절"이라고 하는데 어절 토큰화와 단어 토큰화가 같지 않기 때문 

2. 형태소 분석 

  • 형태소를 비룻하여, 어근/접두사/접미사/품사 등 다양한 언어적 속성의 구조를 파악하는 것을 의미
  • 형태소 분석 과정은 한국어 단어에서 형태소를 추출하여 분리하는 작업이며,
    이후에 필요에 따라 사전 정의된 품사를 해당 단어에 태깅하는 작업을 하기도 함 
  • 태깅: 형태소의 뜻과 문맥을 고려하여 단어에 품사를 매핑하는 것 

 



@. 과제 

논문리뷰하기

 

1. https://arxiv.org/abs/1508.07909

 

Neural Machine Translation of Rare Words with Subword Units

Neural machine translation (NMT) models typically operate with a fixed vocabulary, but translation is an open-vocabulary problem. Previous work addresses the translation of out-of-vocabulary words by backing off to a dictionary. In this paper, we introduce

arxiv.org

 

2. https://arxiv.org/abs/1609.08144

 

Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation

Neural Machine Translation (NMT) is an end-to-end learning approach for automated translation, with the potential to overcome many of the weaknesses of conventional phrase-based translation systems. Unfortunately, NMT systems are known to be computationall

arxiv.org

 

 

 

'AI > 자연어처리' 카테고리의 다른 글

06. 자연어처리 - 워드 임베딩  (0) 2024.06.25
05. 자연어처리 - 임베딩 실습  (0) 2024.06.25
04. 자연어처리 - 임베딩  (1) 2024.06.25
03. 자연어처리 - 전처리 실습  (0) 2024.06.24
01. 자연어처리 - 개요  (0) 2024.06.24