nan + nan = 2nan

[NLP] 딥러닝을 이용한 자연어 처리 입문_01)토큰화 본문

Statistics/Machine Learning

[NLP] 딥러닝을 이용한 자연어 처리 입문_01)토큰화

2nan 2022. 9. 8. 18:23
728x90

* 해당 글은 위키독스의 딥러닝을 이용한 자연어 처리 입문을 참고하여 작성하였습니다.

https://wikidocs.net/book/2155

 

딥 러닝을 이용한 자연어 처리 입문

많은 분들의 피드백으로 수년간 보완되어 온 딥 러닝 자연어 처리 무료 eBook입니다. 기본적인 텍스트 전처리부터 BERT와 같은 PLM의 다양한 다운스트림 태스크를 ...

wikidocs.net

 

01) 토큰화

NLP에서 크롤링으로 얻은 Corpus 데이터가 필요에 맞게 전처리 되지 않은 상태라면, 용도에 맞게 토큰화 / 정제 / 정규화가 필요

단어 토큰화 (Word Tokenization)

  • 토큰이란 보통 의미있는 단위
  • 토큰의 기준을 단어로 설정 시, 단어 토큰화라고 명명
  • ex) 구두점 및 특수기호 제외하는 간단한 토큰화 작업출력 : "Time", "is", "an", "illustion", "Lunchtime", "double", "so"
  • 입력: **Time is an illusion. Lunchtime double so!**
  • 보통 토큰화 작업은 구두점, 특수문자를 전부 제거하는 정제작업을 수행하는 것만으로 해결되지 않음.
  • 영어의 경우 띄어쓰기 단위로 자르면 사실상 단어 토큰이 구분됨
  • 한국어의 경우에는 띄어쓰기만으로는 토큰 구분이 어렵다

토큰화 중 생기는 선택의 순간

  • 만약, 문장에서 어퍼스트로피(’)가 포함될 때 어떻게 토큰으로 분류할지 3가지 라이브러리 비교
  • ex) Don’t / John’s
    • NLTK의 라이브러리
      • word_tokenize
        • Do, n’t, John, ‘s 로 분류
      • WorkPunctTokenizer
        • 각 구두점을 별도로 분류하는 특징
        • Don, ‘, t, John, ‘, s
    • Keras 내 라이브러리
      • text_to_word_sequence
        • 모든 알파벳을 소문자로 변환하며 마침표나 컴마, 느낌표 등의 구두점을 제거
        • 하지만, 아래 단어들의 어퍼스트로피는 보존
        • don’t, john’s

토큰화에서 고려해야 할 사항

  1. 구두점이나 특수 문자를 단순 제외해서는 안 된다.
    1. 구두점조차도 하나의 토큰으로 분류하기도 함
    2. 단어 자체의 구두점을 가지는 경우도 존재
      1. $45.55 에서 구두점 분리하면 의미 없어짐
  2. 줄임말과 단어 내에 띄어쓰기가 있는 경우
    1. 어퍼스트로피는 종종 압축된 단어를 표현
      1. what’re, i’m, …
  3. 표준 토큰화 예제
    1. Penn Treebank Tokenization

문장 토큰화 (Sentence Tokenizataion)

  • 문장의 경우 코퍼스가 정제되어 있지 않은 상태라면, 용도에 따라 문장 분류가 필요
  • 구두점으로 분류하면 되지 않겠냐는 의견도 있지만, 항상 그렇지 않음
  • NLTK에는 영어 문장의 토큰화를 수행하는 sent_tokenize 라이브러리 지원
    • 이는 단순히 마침표를 구분자로 하여 문장을 구분하지 않기 때문에, 중간 단어에 마침표가 존재해도 문장 내 단어로 인식

한국어에서의 토큰화의 어려움

  • 영어는 합성어, 줄임말에 대한 예외처리만 한다면 띄어쓰기를 기준으로 하는 띄어쓰기 토큰화를 수행해도 단어 토큰화가 잘 작동 거의 대부분, 단어 단위 띄어쓰기로 이루어지기 때문에 띄어쓰기 토큰화와 거의 일치함
  • 하지만, 한국어의 경우에는 영어와는 다른 교착어 형태이기 때문에 어려움
    1. 교착어의 특성
    • 한국어는 조사가 존재하기 때문에 의미가 달라져 다른 단어로 인식하게 되는 현상 발생. 때문에, 조사를 분리해줄 필요 존재
    • 형태소(뜻을 가진 가장 작은 말의 단위)가 존재
      • 자립 형태소 : 자립하여 사용 가능
        • ex) 이난, 책, …
      • 의존 형태소 : 독립적으로 사용 불가능
        • ex) -가, -을, 읽-, -었, -다
    1. 한국어는 띄어쓰기가 영어보다 잘 지켜지지 않는다.
    • 한국어는 띄어쓰기를 하지 않아도 글을 쉽게 이해할 수 있는 언어이기 때문이라는 점

품사 태깅 (Part-of-speech tagging)

  • 각 단어가 품사에 따라 의미가 달라지는 경우 발생
    • ex) 못
      • 명사 : ~따위를 고정하는 물건
      • 부사 : 할 수 없다는 의미

NLTK를 이용한 품사 태깅 실습

  • Penn Treebank POS Tags라는 기준을 사용해 품사를 태깅
  • from nltk.tag import pos_tag
Comments