Note

20개 뉴스 그룹 데이터 본문

Deep Learning/NLP

20개 뉴스 그룹 데이터

Jun's N 2022. 5. 6. 01:35
# 패키지 로딩

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