페이지

2022년 7월 23일 토요일

3.5.1 로이터 데이터셋

 1986년에 로이터에서 공개한 짧은 뉴스 기사와 토픽의 집합인 로이터 데이터셋을 사용하겠습니다. 이 데이터셋은 텍스트 분류를 위해 널리 사용되는 간단한 데이터셋입니다. 46개의 토픽이 있으며 어떤 토픽은 다른 것에 비해 데이터가 많습니다. 각 토픽은 훈련 세트에 최소한 10개의 샘플을 가지고 있습니다.

IMDB, MNIST와 마찬가지로 로이터 데이터셋은 케라스에 포함되어 있습니다. 한번 살펴보죠.

    from keras.datasets import reuters

    (train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)

 IMDB 데이터셋처럼 num_words=10000 매개변수는 데이터에서 가장 자주 등장하는 단어 1만개로 제한합니다.

여기에는 8,982개의 훈련 샘플과 2,246개의 테스트 샘플이 있습니다.

>>> len(train_data)

8982

>>> len(test_data)

2246

IMDB 리뷰처럼 각 샘플은 정수 리스트입니다(단어 인덱스).

>>> train_data[10]

[1, 245, 273, 207, 156, 53, 74, 160, 26, 14, 46, 296, 26, 39, 74, 2979, 3554, 14, 46, 4689, 4389, 86, 61, 3499, 4795, 14, 61, 451, 4329, 17, 12]

궁금한 경우를 위해 어떻게 단어로 디코딩하는지 알아보겠습니다.

    word_index = reuters.get_word_index()

    reverse_word_index = dict([(value, key) for (key, value) in word_index.items()])

    decoded_newswire = ' '.join([reverse_word_index.get(i - 3, '?')for i in train_data[0]])

          .................   0, 1, 2는 '패딩', '문서 시작', '사전에 없음'을 위한 인덱스이므로 3을 뺍니다.

샘릉에 연결된 레이블은 토픽의 인텍스로 0과 45 사이의 정수입니다.

>>>  train_lagbels[10]

3



댓글 없음: