Note
20개 뉴스 그룹 데이터 본문
# 패키지 로딩
import pandas as pd
from sklearn.datasets import fetch_20newsgroups
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.utils import to_categorical
# 사이킷런 20개 뉴스 그룹 데이터 로딩
# subset = train 은 훈련 데이터만 리턴
newsdata = fetch_20newsgroups(subset = 'train')
data = pd.DataFrame(newsdata.data, columns = ['email'])
data['target'] = pd.Series(newsdata.target)
# test 데이터 로딩
newsdata_test = fetch_20newsgroups(subset='test', shuffle=True)
train_email = data['email']
train_label = data['target']
test_email = newsdata_test.data
test_label = newsdata_test.target
vocab_size = 10000
num_classes = 20
# 전처리 함수
def prepare_data(train_data, test_data, mode):
tokenizer = Tokenizer(num_words = vocab_size)
tokenizer.fit_on_texts(train_data)
# 샘플 수 × vocab_size 크기의 행렬 생성
X_train = tokenizer.texts_to_matrix(train_data, mode=mode)
X_test = tokenizer.texts_to_matrix(test_data, mode=mode)
return X_train, X_test, tokenizer.index_word
# binary 모드로 변환
X_train, X_test, index_to_word = prepare_data(train_email, test_email, 'binary')
# 원-핫 인코딩
y_train = to_categorical(train_label, num_classes)
y_test = to_categorical(test_label, num_classes)
# 빈도수 상위 1번 단어
index_to_word[1]
# 빈도수 상위 9999번 단어
index_to_word[9999]
728x90
'Deep Learning > NLP' 카테고리의 다른 글
FastText (패스트텍스트) (0) | 2022.05.08 |
---|---|
다층 퍼셉트론(MLP)을 사용하여 텍스트 분류 (0) | 2022.05.07 |
케라스의 texts_to_matrix() (0) | 2022.05.05 |
LSA & LDA (0) | 2021.09.06 |
Word2Vec (0) | 2021.09.02 |
Comments