5개의 문장이 있다고 하자.
이때 5개의 모든 문장을 vocabulary로 만들거다.
대신 중복은 없어야한다.
이를 직접 코드를 짜줄 수도 있지만 이미 구현된 라이브러리가 있다.
from tensorflow.keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer()
tokenizer.fit_on_texts(preprocessed_headline)
vocab_size = len(tokenizer.word_index) + 1
print('단어 집합의 크기 : %d' % vocab_size)
이에 대한 자세한 GPT의 설명!
1. 사전(vocabulary) 변수:
- tokenizer.word_index:
- 이 변수는 텍스트에서 발견된 각 단어와 그 단어에 매핑된 고유한 인덱스를 저장하는 딕셔너리입니다.
- 즉, 단어 집합(vocabulary)입니다. word_index에는 텍스트에서 등장한 단어들이 모두 고유한 숫자 인덱스로 매핑되어 저장됩니다.
- 예를 들어, 만약 preprocessed_headline에 ["hello world", "hello keras"]라는 문장이 있다면, word_index는 다음과 같은 식으로 저장됩니다:
python코드 복사{ 'hello': 1, 'world': 2, 'keras': 3 }
2. tokenizer.fit_on_texts(preprocessed_headline)의 의미:
- 이 함수는 preprocessed_headline 리스트에 있는 모든 문장을 읽어서 각 단어의 빈도를 계산하고, 각 단어에 고유한 인덱스를 할당하는 역할을 합니다.
- 즉, Tokenizer가 텍스트 데이터를 학습(fit)하여, 등장한 모든 단어에 대해 고유 인덱스를 생성하고, 이 정보를 tokenizer.word_index에 저장합니다.
- 단어 빈도 계산: 입력된 텍스트(preprocessed_headline)에서 각 단어가 얼마나 자주 등장하는지 계산합니다.
- 인덱스 할당: 등장한 단어에 대해 빈도가 높은 순서대로 고유한 숫자 인덱스를 할당합니다. 이 인덱스는 1부터 시작하며, 단어가 등장하는 빈도에 따라 번호가 부여됩니다.
- 예를 들어, 가장 자주 등장한 단어에 1이, 그다음 단어에 2가 할당되는 방식입니다.
- 세부 과정:
3. vocab_size = len(tokenizer.word_index) + 1:
- tokenizer.word_index의 길이를 계산해서 단어 집합의 크기를 알아냅니다. +1을 더하는 이유는 보통 패딩(padding) 또는 OOV (Out of Vocabulary) 토큰을 추가하기 위해서입니다.
- 예를 들어, 단어 집합의 크기가 5000이면, +1을 해서 5001로 설정하게 됩니다.
요약:
- **사전(vocabulary)**는 tokenizer.word_index에 저장됩니다. 이 딕셔너리는 텍스트에 등장한 각 단어와 그에 대응하는 고유한 숫자 인덱스를 매핑합니다.
- **fit_on_texts(preprocessed_headline)**는 텍스트 데이터를 읽고 단어의 빈도를 계산하여 고유한 인덱스를 부여하는 역할을 합니다.
여기서 중요하게 생각해야하는건 단어 빈도를 계산해서 인덱스를 할당한다는 것!
'공부 > 파이썬' 카테고리의 다른 글
[기초] 데이터 사이언스 응용_데이터 형식 (0) | 2024.10.24 |
---|