Dacon에서 주최하는 재정정보 AI 검색 알고리즘 경진대회의 데이터로 토크나이저 종류를 알아보려고한다.
먼저, 데이터는 40개의 columns과 60만개의 Train 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이 적합해 보인다.
아래 코딩은 텍스트 컬럼만 토크나이징을 수행하기 위한 코드이다.
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 |