2. 전처리

2022. 4. 8. 10:27카테고리 없음

자연어처리의 전처리과정


자연어처리 작업흐름

  • 문제정의
  • 데이터수집
  • 데이터전처리 및 분석
  • 알고리즘 적용
  • 평가
  • 배포 및 유지보수

데이터수집


데이터 수집 방법 4가지

  • 구입
    - 정제 및 레이블링 완료된 양질의 데이터획득가능
    - 양이 매우 제한적
  • 외주 
  • 무료 공개 데이터
    - AI-HUB
    - WMT competetion
    - Kaggle
    - OPUS (http://opus.nlpl.eu/)
  • 크롤링을 통한 데이터 수집
    - 무한한 양의 코퍼스 수집 가능
    - 도메인별로 데이터 수집가능
    - 정제과정에 많은 노력필요
    - 아직은 회색지대이지만, 적법한 절차에 따른 크롤링 필수

 

 


데이터 전처리


데이터 전처리 과정

  • 1. 정제과정
    - Task에 따른 노이즈 제거
    - 인코딩변환
  • 2. 레이블링
    - 문장마다 또는 단어마다 레이블링 수행
  • 3. Tokenization
    - 형태소 분석기를 활용하여 분절 수행
  • 4. Subword Segmentation (optional)
    - 단어보다 더 작은 의미 단위 추가 분절 수행
  • 5. 사전 구축
    - { 토큰 : 빈도수 } 형태로 단어 사전 구축
  • 6. word2index     
    - 높은 빈도수를 가진 단어일수록 낮은 정수를 부여
    - 정수는 1부터 부여                                                                                                       

 

1. 정제과정

  • 기계적인 노이즈 제거방법
    - Task에 따른 전형적인 Noise 제거
    - 전각문자를 반각문자로 변경
  • interactive 노이즈 제거방법
    - 정규식을 사용하여 노이즈제거
    - 코퍼스를 살펴보고 정규식(규칙)을 만들어서 노이즈를 제거

2. 레이블링

  • Text classification 의 경우 
    - Label : Class
  • Token classification 의 경우
    - 형태소분석같은것을 의미
    - Label : 각 문장의 각 토큰에 대해 형태소를 태깅
  • Seq2Seq 의 경우
    - Label : 번역된 문장

 

3. Tokenization 분절

 

[라인 분절]

보통 학습시 우리가 원하는 입력데이터는 "한 라인당 한 문장"이어야 한다.

한 라인에 여러문장이 들어있거나, 한문장이 여러 라인에 들어있을 경우 분할수행필요

  • 이 과정을 Sentence Segmentation이라 함
  • NLTK를 활용하여 변환가능

 

한 라인에 여러 문장이 있는 경우
한 문장이 여러라인에 있는 경우

[문장 분절]

두개 이상의 다른 token들의 결합으로 이루어진 단어를 쪼개어

vocabulary 숫자를 줄이고, 희소성(sparseness)을 낮추기 위해 필요

  • Korea's 와 He's --> Korea / He / 's 로 구분하여 세개로 구성
  • 만약 문장을 분절하지 않으면?
  • Korea's 와 He's --> Korea / Korea's / He / He's 로 구분하여 네개로 구성됨
  • Vocab 숫자를 줄이고 희소성을 낮추기위해 필요

[형태소 분석 및 품사 태깅]

형태소 분석 : 형태소를 비롯하여, 어근/접두사/접미사/품사 등 다양한 언어적 속성의 구조를 파악

품사 태깅 : 형태소의 뜻과 문맥을 고려하여 각 단어에 품사를 붙이는 일

 

[분절길이에 따른 장단점]

 

토큰 평균길이에 따른 성격과 특징

 

분절길이가 짧을수록

  • Vocabulary  크기 감소
  • 희소성 문제감소
  • Oov ( Out of Vocabulary ) 줄어듦
    - train data로 학습하였는데, test할때 모르는 단어가 있을경우 해당 단어를 Oov 라고함
    - 이런 Oov 는 <UNK> 토큰으로 대체
  • Sequence 길이가 길어짐
    - 분절된 한 토큰당 한 Sequence 로 취급하여서
    - 모델의 부담도 증가

분절의 길이가 길수록

  • Vocabulary 크기 증가
  • 희소성 문제 증대 
  • Oov 가 늘어남
  • Sequence 길이가 짧아짐
    - 분절된 한 토큰당 한 Sequence 로 취급하여서
    - 모델의 부담감소

4. Subword segementation (optional)

 

나중에 추가

 

 

 

5. 사전 구축

  • ddddd

 

6. word2index

  • ddddd