1.  토큰화란? 

        주어진 텍스트에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)이라고 한다.

        토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의한다. 

 

     2. 단어 토큰화(Word Tokenization)

        토큰의 기준을 단어(word)로 하는 경우를 말한다. 

        다만, 여기서 단어(word)는 단어 단위 외에도 단어구, 의미를 갖는 문자열로 간주되기도 한다.

        예를들어 구두점(punctuation) 같은 문자를 제외시키는 간단한 단어 토큰화 작업을 해보면

       *구두점 : 마침표(.), 컴마(,), 물음표(?), 세미콜론(;), 느낌표(!) 등과 같은 기호

    

       입력 : Time is an illusion. Lunchtime double so!

 

       출력 : 'Time', 'is', 'an', 'illusion', 'Lunchtime', 'double', 'so'

        

        출력 결과에서 보듯이 입력으로부터 구두점을 제외시킨 후 띄어쓰기를 기준으로 잘라 낸 결과를 확인 할 수 있다.

 

        토큰화 작업은 단순히 구두점이나 특수문자를 제거하는 정제(cleaning) 작업을 수행하는 것으로 해결 되지 않는다.

        토큰이 의미를 잃어버리는 경우가 발생하기 때문이다.

        또한 띄어쓰기 단위로 자르면 사실상 단어 토큰이 구분되는 영어와 달리, 한국어는 띄어쓰기만으로는 단어 토큰을

        구분하기 어렵다. 이점을 유의하여야 한다.

 

  • word_tokenize와는 달리 WordPunctTokenizer는 is, ', s의 세 토큰으로 분리하는 것을 볼 수 있다.
    이는 두 토크나이저가 서로 다른 알고리즘에 기반하기 때문이다.     
  • 케라스의 text_to_word_sequence는 기본적으로 모든 알파벳을 소문자로 바꾸면서 마침표나 컴마, 느낌표 등의 구두점을 제거한다.
    하지만 it's와 let's 같은 경우 아포스트로피는 보존하는 것을 볼 수 있다.

     

  • 영어는 단어 토큰화를 단어 단위로 분리한다고 설명할 수 있으나, 한글을 기준으로 할 때에는 이 설명이 명확하지 않다.
  • 한글을 대상으로 하는 토큰화는 엄밀하게 말하자면 의미를 가지는 최소단위, 즉 형태소로 텍스트를 분리하는 것을 의미한다. 
    그런 의미에서 '안녕하세요'의 경우 '안녕'과 '하세요'를 분리하는 것이 더 맞을 것이다.
  • 영어는 보통 모든 단어를 공백으로 분리할 수 있어 어렵지 않게 단어 토큰화할 수 있지만, 한국어에서는 의미를 이루는 최소 단위가
    공백 없이 붙어 있는 경우가 많아서 공백을 이용한 분리만으로는 부족하게 느껴진다.
  • 공백만으로 토큰화가 잘 되지 않는다면 새로운 방법으로 단어를 분리해야 하고 이와 같은 작업을 단어 분할(word segmentation)이라고 한다.
  • 한국어 텍스트를 정확하게 토큰화하려면 다양한 단어 분할방법을 적용할 필요가 있다.

     3. 문장 토큰화(Sentence Tokenization)

        문장 토큰화는 여러 문장으로 이루어진 텍스트를 각 문장으로 나누는 것을 말한다. 

        즉, 토큰의 기준을 문장(sentence)로 하는 경우를 말한다.

  • NLTK는 영어 학습 데이터에 대해 사전학습된 모델을 사용해 토큰화한다. 다른 언어에 대해 문장 토큰화를 하려면 사전 학습된 
    모델을 지정해 불어 올 수 있다.
  • NLTK에는 한글에 대해 사전학습된 모델이 없다. 그러나 문장 토큰화는 각 문장의 끝에 있는 마침표 등을 기준으로 분리하도록 
    학습되어 있으므로, 영어로 학습된 모델도 한국어에 대해 어느 정도 잘 작동할 것으로 예측할 수 있다.

 

 

     REFERENCE

      https://wikidocs.net/21698

      파이썬 텍스트 마이닝 완벽 가이드(2022)

 

'데이터 분석 > 자연어 처리' 카테고리의 다른 글

2.6 문서 단어 행렬(Document-Term Matrix, DTM)  (1) 2023.01.19
2.5 Bag of Words(BoW)  (0) 2023.01.16
2.4 품사 태깅(PoS Tagging)  (0) 2023.01.10
2.3 정규화(Nomalization)  (0) 2023.01.09
2.1 정제(Cleaning)  (0) 2023.01.09

+ Recent posts