Professional Field

ETL : Airflow / DW(Snowflake) | AI : Python | BI : Tableau / Power BI

Scientist/ML.DL

[ML/DL] NLP 토크나이저 종류

K_CY 2024. 7. 17. 12:58

Dacon에서 주최하는 재정정보 AI 검색 알고리즘 경진대회의 데이터로 토크나이저 종류를 알아보려고한다.

 

먼저, 데이터는 40개의 columns과 60만개의 Train set 으로 구성을 확인해보았다.

Train set / Test set

 

토크나이저는 텍스트 나누기를 진행하는데, 모델에 학습시키는 구성으로 변경을 하기 위해서이다.

교육을 진행할 때 단어들의 조합을 통해 더미데이터로 변환시켜 모델을 완성하고, 텍스트 분류모델을 생성할 수 있다.

 

토크나이저는 대표적으로 4가지로 분류가 된다.

  • 단어 토크나이징 (Word Tokenization):
    • 텍스트를 단어 단위로 분할합니다.
    • 예시: "I love Python programming." -> ["I", "love", "Python", "programming", "."]
  • 문장 토크나이징 (Sentence Tokenization):
    • 텍스트를 문장 단위로 분할합니다.
    • 예시: "Hello world. It's a beautiful day." -> ["Hello world.", "It's a beautiful day."]
  • 하위 단어 토크나이징 (Subword Tokenization):
    • 단어를 더 작은 단위로 분할합니다. 이는 BPE(Byte Pair Encoding) 또는 WordPiece 등의 알고리즘을 사용할 수 있습니다.
    • 예시: "unhappiness" -> ["un", "##happi", "##ness"] (BERT 스타일)
  • 문자 토크나이징 (Character Tokenization):
    • 텍스트를 문자 단위로 분할합니다.
    • 예시: "Python" -> ["P", "y", "t", "h", "o", "n"]

이 중에서 단어토크나이저와 문자토크나이저를 진행해보고자 한다.

def tokenize_text(df, column):
    df[column] = df[column].fillna('').astype(str)  # NaN 값을 빈 문자열로 대체하고 문자열로 변환
    df[column] = df[column].apply(word_tokenize)
    return df

def char_tokenize_text(df, column):
    df[column] = df[column].fillna('').astype(str)  # NaN 값을 빈 문자열로 대체하고 문자열로 변환
    df[column] = df[column].apply(list)
    return df


data set 을 단어 토크나이징 해보았지만, 아래와 같이 F01 컬럼이 리스트안에 그대로 있는 모습이 보인다.

아무래도 불규칙적인 영어 알파벳이기 때문에 Word Tokenizaiton 보단 Character Tokenization이 적합해 보인다.

 

Word Tokenization / Character Tokenization

 

 

아래 코딩은 텍스트 컬럼만 토크나이징을 수행하기 위한 코드이다.

for column in X.columns:
    if column != 'ID' and X[column].dtype == object:
        # 문자 컬럼이면 토크나이징 수행
        char_tokenize_text(X, column)
    # 숫자 컬럼은 그대로 둠

 

 

'Scientist > ML.DL' 카테고리의 다른 글

[ML/DL] LangChain이란?  (0) 2024.07.18
[ML/DL] NLP TF-IDF / Word2Vec  (0) 2024.07.18
[ML/DL] NLP BERT 감정분석  (0) 2024.07.15
[ML/DL] NLP 단어 가방 모형  (0) 2024.07.15
[ML/DL] Boosting 알고리즘 - XGBoost  (1) 2024.07.12