[KT] AIVLE SCHOOL 12일차
토큰과 토큰화
- 토큰(token)
- 문장의 가장 작은 단위를 토큰(token)이라 함. 문장은 여러 개의 토큰으로 구성
- 토큰의 또 다른 이름들 : 단어(word), 형태소(morpheme), 서브 워드(sub word)
- 별도의 언급이 없다면 용어 의미 차이에 크게 신경 쓰지 않아도 됨
- 토큰화(tokenize)
- 문장을 토큰 시퀀스로 나누는 과정
형태소 분석
- 토큰화보다 더 깊은 분석을 수행
- 단어를 구성하는 형태소(어근, 접사, 조사 등)를 식별하고 분류
구분 | 토큰화 | 형태소 분석 |
개념 | 문장을 일정한 단위(단어, 형태소 등)로 나누는 것 | 단어를 형태소 단위로 세분화하고 문법적 역할을 분석 |
한국어 | ["나는", "학교에", "간다"] | "나는/NP + 는/JX", "학교/NNG" + 에/JKN", "가/VV + ㄴ다/EF" |
영어 | ["i", "am", "going", "to", "school". "."] | 일반적으로 토큰화만으로 충분, 형태소 분석은 필요하지 않음 |
형태소 분석기
- 한글
구분 | KoNLPy | Kiwi (Korean Intelligent Word Identifier) |
설치 | konlpy + Java 필요 | kiwipiepy |
속도 | 보통 | 빠름 |
정확도 | 보통 | 높음 |
품사 태깅 지원 | O | O |
사전 추가 지원 | X | O |
- 영어
- NLTK(Natural Language Toolkit)
- NLTK는 교육 및 연구용으로 개발된 자연어처리(NLP) 라이브러리
- 다양한 NLP 기능(토큰화, 품사 태깅, 형태소 분석, 파싱 등) 제공
- 다만, 속도가 느리고 실무에서 사용하기에는 부족한 점이 많아 주로 학습용으로 활용됨
- spacy
- spacy는 빠르고 효율적인 NLP 처리를 위해 개발된 라이브러리
- 딥러닝 기반 사전 학습 모델을 활용해 품사 태깅, 개체 명 인식(NER) 등의 고급 기능 제공
- 속도가 빠르고 실무에서 대규모 NLP 작업에 적합, AI 및 데이터 분석 프로젝트에서 사용됨
- NLTK(Natural Language Toolkit)
서브 워드 단위 토큰화
- 형태소 분석보다는 토큰화에 초점
- BPE(Byte Pair Encoding)
- GPT 모델에서 사용
- 빈도 기반 토큰화 : 자주 등장하는 문자 쌍을 반복적으로 병합하면서 단어를 서브 워드 단위로 분해하는 기법
- e.g. 'Encoding' -> 'Enc' + 'oding'
- 초기 상태에서는 모든 단어가 개별 문자 단위로 존재 / ['E', 'n', 'c', 'o', 'd', 'i', 'n', 'g']
- 데이터에서 자주 등장하는 문자 쌍부터 병합
- En + c -> Enc
- o + d -> od
- i + n + g -> ing
- 이후 Enc가 자주 등장하면 Enc은 하나의 단위로 등록
- oding은 나머지 서브 워드 단위로 남게 됨
- BPE가 훈련된 코퍼스에서 'Encoding'이라는 단어가 'Enc' + 'oding' 단위로 가장 많이 등장했을 것 -> 병합규칙
- Wordpiece
- BERT 모델에서 사용
- 확률 기반 병합 방식 : 데이터에서 서브 워드 단위를 병합할 때, 확률 모델을 사용하여 가장 적절한 단위를 선택
- BPE보다 정교한 사전 구축 가능
각 토큰에 번호표(인덱스) 붙이기
- 사전(Vocabulary, Vocab)
- 모델이 이해할 수 있는 단어 또는 서브 워드의 집합
- 토큰화 된 단어는 사전의 단어들과 매칭되어 고유한 숫자(ID)로 변환됨
- BERT, GPT, LLaMA, T5 등 모델마다 각자의 사전을 생성
- 모델을 배포할 때, 사전 파일(e.g. vocab.txt, merges.txt)을 함께 제공
- 사전 예시 : 보통 json 혹은 txt 형식으로 저장
- [('!', 0), ('"', 1), ('#', 2), ('$', 3), ('%', 4), ('&', 5), ("'", 6), ('(', 7), (')', 8), ⋯]
- Token Indexing
- 토큰화를 한 다음 각 토큰에 인덱스를 지정해야 모델이 입력을 이해 가능
- 이를 토큰 인덱싱(Token Indexing) 또는 정수 인코딩(Integer Encoding)이라고 함
'Data Science > 자연어 처리' 카테고리의 다른 글
RNN LM (0) | 2025.04.11 |
---|---|
RNN(순환 신경망)과 LSTM (0) | 2025.04.11 |
임베딩 벡터 (0) | 2025.04.11 |
자연어 처리 (2) | 2025.04.10 |