ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tokenization
    자연어 foundation 2024. 9. 4. 11:32
    따라서 이미 공백으로 나누어져 있지 않은 단어들을 적절히 추가적으로 나누어 줄 필요가 있음

     

     
    이렇게 나누어진 단어를 Token이라고 함 (가장 작은 의미적 단위)
    Token은 단어와 유사하지만 완전히 동일하지는 않음
     
    예를 들어, 문장 부호는 단어가 아니지만 Token으로 분류됨

    ->I like apple, banana, and grape 에서 , Token으로 분류

     
    때때로 한 단어가 여러 가지의 토큰으로 나뉠 수 있음
    Unhappy -> Un happy
     

     

    반면에 여러 단어가 한 개의 토큰이 될 수도 있음
    COVID-19 (COVID - 19)
     

    자연어 처리에서 대부분 모델들은 Token의 확률을 예측함

     

    많은 Tokeniser (토큰 분류기) 가 사용되고 있으며, 각각 다른 규칙을 적용함
    다른 언어에서는 다른 규칙이 있을 수 있음
    영어에서는 1차적으로 공백으로 나눔(이것만으로도 괜찮은결과)

     

    예를 들어, 한국어는 다양한 조사와 어미로 인해 공백을 기준으로 토큰을 나누기 어려움
    따라서 한국어는 보통 의미를 가진 가장 작은 단위인 형태소로 나누는 경우가 많(한국어에서는 일반적으로 형태소 = 토큰)
     
    예시: 아버지가방에들어가신다 (띄어쓰기 없음

    각각의 Tokeniser들은 장단점이 있으며, Tokeniser들은 서로 다르게 형태소 (Token)을 찾아낼 수 있음

     

    이는 영어나 다른 언어에서도 동일
    You’re -> You re / You ‘re

     

     
    따라서 연구자가 직접 여러 Tokeniser들을 비교해야 함

     

    Stemming / Lemmatisation

     
    영어에서는 단어들이 상황에 따라 변화함
    eat / eats / ate / eaten
    비슷하게 한국어에서도
    먹다 / 먹어서 / 먹고 / 먹어 …..
    이전 N-gram 모델의 확률은 특정 단어 (혹은 구)의 등장 빈도를 세는 식으로 계산하였음

     

    특정 문제의 경우 단어의 활용형도 같은 것으로 취급하는 것이 효과적
    검색 엔진: “사과를 검색했을 때, “사과들“, “사과가등을 모두 찾는 것이 효과적
    글 분류: 어떤 이메일이 스팸인지 아닌지를 분류할 때, 1차적으로 의심스러운 단어들이 있는지 아닌지를 확인함 (“입금”, “코인”, “주식“, “수익률“, …..)
    이러한 단어들이 조금 다르게 적혀있어도 모두 찾는 것이 좋음

     

     

    다만 이러한 방법이 오히려 방해인 경우도 있음

     

    언어모델: 단어의 활용형을 모두 같은 것으로 취급하면, 문법적으로 맞지 않거나 어색한 문장을 만들 수 있                                                  예시: 나는 과자를 먹다 다음 사과를 먹다. 그리고 빵을 먹다.
    번역: 비슷하게, 번역 시 문법적으로 틀린 문장을 만들 수 있음  (ex. he be)

     

    StemmingLemmatisation은 둘 다 단어의 어간(기본 형태)를 찾는 것이 목적

     

    예시: eats / ate / eaten -> eat

     

    Stemming은 단순히 정해진 규칙에 따라 기계적으로 단어의 접미사를 제거함. 이때 단어의 문맥이나 품사 등을 고려하지 않음

     

    따라서 Stemming은 매우 빠르지만 때때로 실제 단어가 아닌 형태를 생성할 수 있음(동사가 활용되는 규칙을 다 적어놓음)

     

    예시: Studies / Studying -> Studi

     

     

    원형과 차이가 있는 결과가 나올수 있음  (es 날리면 말이안됨)

     

     

    따라서 Stemming은 이러한 오류가 큰 차이를 불러오지 않는 분야에서 유용함 (검색 엔진 등)  -> 처리할 단어가 많아서 stemming선호

     

    또한 접미사가 간단하고 규칙적인 언어 (영어 등) 에서 효과적
     
    하지만 한국어처럼 복잡한 접미사를 가진 언어에는 부적합
    따라서 한국어는 일반적으로 Lemmatisation을 사용

     

    Lemmatisation Stemming 차이

    은 단순 규칙으로 작동하는 Stemming과 다르게, 주변 문맥이나 단어의 품사 등 보다 많은 정보를 고려함

     

    Stopword Removal

    일반적으로 데이터셋에는 수많은 불용어 (Stopword)들이 등장함
    불용어 뜻이 있지는 않는 단어  ///..
    예시: I, me, myself, the, a, is, on, at, in, …..

     

    이러한 불용어들은 문장에서는 자주 등장하지만 실제 의미 분석을 할 때에는 큰 도움이 되지 않음     ex.        먹었다.
    예시: The cat is sitting on the mat in the room                                   

    -> cat sitting mat room

    불용어를 제거하고 맞는걸 찾아줌

    다만 언어 모델 등에서는 이러한 불용어들이 문법적 / 의미적으로 중요한 역할을 하므로 보통 제거하지 않음
     

    Case Conversion

    영어와 같이 대문자 / 소문자가 있는 언어에서는 둘중 하나로 통일하는 것이 효과적일 수 있음
    검색 엔진, 글 분류 등은 대소문자에 영향을 크게 받지 않음
     
    예시: 유저가 “Cat”을 검색할 때, “CAT”, “Cat”, “cat” 등을 모두 찾아 주는 것이 효과적
     

     

    다만 이전 Pre-processing 방법들과 마찬가지로, 대소문자를 변환하지 않는 것이 유리할 때도 있음

     

    Summary

    인터넷 등에서 가져온 데이터는 일반적으로 바로 사용할 수 없으며, 적절한 전처리 과정을 거쳐야 함
     
    이러한 전처리 과정은 언어나 작업에 따라서 달라짐
     
    전처리 방법의 장단점을 잘 이해하고, 충분한 실험을 통해 적절한 전처리 과정을 고르는 것이 필수적

     

    '자연어 foundation' 카테고리의 다른 글

    Evaluation  (4) 2024.09.04
Designed by Tistory.