[요약정리]딥 러닝을 이용한 자연어 처리 입문(Ch2.텍스트 전처리)


텍스트 전처리에 대해서 3분안에 읽을수 있게끔 요약 정리를 해본다!!


참고 사이트 : 딥 러닝을 이용한 자연어 처리 입문 에 대한 글을 요약하였다.

Ch02. 텍스트 전처리(Text Preprocessing)

1) 토큰화

  • 단어/문장을 하나의 단어 토큰을 만드는 것
  • 구두점, 특수 문자를 단순 제외해서는 안된다! 고려 필요(예를들어 숫자에 컴마들어가는거 100,000원)

2) 정제(Cleaning) and 정규화(Normalization)

  • 대소문자, 불필요 단어(등장빈도적음, 길이짧은단어(<=2))
  • 정규표현식 ex)뉴스기사 크롤링했을때 게재시간 다 제거하고 싶을때

3) 표제어 추출(Lemmatization) and 어간 추출(Stemming)

  • 표제어 추출 : 뿌리 단어를 찾기 (ex. has -> have)
  • 어간 추출 : (어간:단어핵심, 접사:추가의미, cat(어간), s(접사)) (ex. having -> hav)
  • 예시
Stemming
am → am
the going → the go
having → hav

Lemmatization
am → be
the going → the going
having → have

4) 불용어(Stopword)

  • 의미 없는 단어, 큰 도움 안되는 단어 ex)I, my, over
  • NLTK에서 미리 정의한 불용어로 제거

5) 정규표현식(Regular Expression)

  • 정규 표현식 모듈 re로 내가 끌어오고 싶은 단어의 유형을 표현식으로 만든다.

6) 정수 인코딩(Integer Encoding)

  • 단어별 갯수 만드는것
  • Counter나 NLTK, Keras 쓰면 편함

7) 원-핫 인코딩(One-hot Encoding)

  • 단어 나온거를 0,1로 표현
  • Keras 사용하면 편함
  • 한계점 : (1)차원이 크다 (2)sparse matrix라 비효율적이고 (3)단어들마다 간격이 같아서 유사도 못구함

8) 단어 분리하기(Byte Pair Encoding, BPE)

  • 새로운 단어 나오면 어쩔껀데?
  • OOV(Out-Of-Vocabulary) : 단어 집합에 없는 단어
  • 원래 BPE : aaabdaaabac를 XdXac로 치환하는 알고리즘
  • 자연어에서의 BPE : 단어 집합에서 단어들을 다 조각내서 많이 나온 연속단어들을 뭉쳐서 뭉친애들과 조합해서 OOC를 만드는 것
  • WPM(Wordpiece Model) : 구글이 사용했었다, (BPM:빈도수 vs WPM:우도)
  • 센텐스피스(Sentencepiece) : 구글이 깃허브에 공개했다. BPE보다 빠르다. 미리 단어 토큰화 필요X

9) 데이터의 분리(Splitting Data)

  • X, Y도 분리해줘야하고
  • Train, Test도 분리해야하고~ (사이킷런 이용)





© 2018. by statssy

Powered by statssy