본문 바로가기

ML & DL

텍스트 전처리(Boaz NLP 1팀)

Boaz 세션에서 다룬 발표 내용을 정리한 것 입니다

 

텍스트 데이터는 일반적인 데이터와 다르게 수치형이나 테이블형으로 표현되어 있지 않기에 분석을 위해 전처리를 해주어야 합니다. 그 전처리 방법에 대해 공부해 보겠습니다

1. 토큰화(Tokenization)

  • 글을 단어나 문장 기준으로 나누어 토큰(token, 작은 덩어리)으로 바꾸는 과정
  • corpus : 자연어 데이터 모음(단락형태), corpora(corpus 복수형)
  • 구두점 특수문자 띄어쓰기 (ph.d, New York) 등 주의를 해야함
  • 영어보다 한국어가 어려움 > 교착어라서 & 띄어쓰기가 영어만큼 엄격하지 않음  

 

  • 품사 태깅 : 토큰화 시킨 단어가 어떤 품사로 쓰였는지 보여주는 기능

 

 

 

2. 정제/정규화(Cleaning & Normalization)

  • 정제 : 코퍼스로 부터 노이즈 데이터를 제거 > 불필요한, 빈도가 적거나, 의미없는 단어 제거
  • 정규화 : 표현 방법이 다른 단어들을 통합시켜 같은 단어로 만들어줌 > Stemming & Lemmatization

 

3. Stemming & Lemmatization

  • Stemming > 단어를 축약형으로 바꿔준다
  • Lemmatization > 품사 정보를 보존한 기본형으로 바꿔준다

 

  > Stemming이 그 단어 자체만 고려한다면 Lemmatization은 단어가 문장 속에서 어떤 품사로 쓰였는지

     까지 고려함

 

  > flies 가 주어졌을 때, stemming은 단어의 어근인 fly를 내놓는 반면, lemmatization은 flies가 날다,

     파리 등 어떤 의미 인지 파악해서 이에 맞게 기본형으로 바꿔준다.

 

  > Lemmatization 비교적 정확하지만 시간과 비용이 더 많이 든다. 둘 다 써도 된다!

 

4. 불용어(Stopword)

  • 큰 의미가 없는 단어 토큰 > 분석에 있어 큰 도움이 되지 않는 단어
  • 조사, 접속사 등이 해당할 수 있고, 직접 불용어 사전을 만들어 제거할 수 도 있다.

 

5. 정규표현식(Regular Expression)

  소문자는 그 문자에 해당하는 표현식 대문자는 여집합

  re.sub('[^a-zA-Z]','  ',text)

  ^ : not, 즉 영어가 아니면 공백으로 대체해라

 

 

  

7. 정수 인코딩

  토큰화 및 위 작업이 완료된 글자들을 분석을 위해 숫자로 매핑해주는 것

    > 

8. 원핫인코딩 

  > 단어간의 관계나 유사성 파악 힘듬

 

9. subword segmentation

  학습되지 않은 단어가 들어왔을 때! OOV(out of vocabulary)문제

  단어 분리(subword segmentation)를 통해 대처

 

  위 표처럼, low lower newest widest라는 단어가 학습되었을때 각 입력 단어들을 한 글자씩 분리해서 

  빈도 수가 가장 높은 알파벳 순으로 묶어 새로운 학습용 단어를 만든다 (ex. est, es, ne....)

  

 

 

vgg net

16~19 layer 와 3X3 field를 가짐

input 픽셀값에서 각 필셀 평균 RGB값을 빼서 학습 속도를 향상시킴

3x3 conv. layer를 사용한다 

  > 모든 방향을 고려하는 최소 단위

 

stride = 1 / padding = 1 

 

maxpooling : 모든 conv. layer 뒤에 붙히지는 않는다

 

타 모델과 다르게 작은 필드를 사용하는 이유?

작은 필드를 여러번 사용하면서 (필드를 적용할때마다 렐루등 비선형성을 준다) 여러번 비선형성을 주고, 파라미터 수도 줄이는 효과가 있다

 

 

validation set accuracy 가 성능 향상을 멈출때 마다 learning rate를 10 배 감소시킴  
총 3 번 감소 되었고 74 epochs(370K iteration) 에서 학습을 멈춤