일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이미지 분류
- 입력층
- 양방향 RNN
- 망각 게이트
- RNN
- 자연어 전처리
- 생성모델
- KONLPY
- 코랩
- 텍스트 마이닝
- 합성곱층
- 합성곱 신경망
- 과적합
- 딥러닝
- 카운트 벡터
- 순환 신경망
- 성능 최적화
- 완전연결층
- 전이학습
- 시계열 분석
- 클러스터링
- 임베딩
- 원-핫 인코딩
- cnn
- NLTK
- 출력층
- 풀링층
- COLAB
- 코딩테스트
- 프로그래머스
Archives
- Today
- Total
Colab으로 하루에 하나씩 딥러닝
20 뉴스그룹 데이터 준비 및 특성 추출 본문
728x90
데이터셋 확인 및 분리 (사이킷런 20 뉴스그룹)
- 해당 데이터는 언론에서 나오는 기사가 아닌 게시판에 올라온 사용자들의 포스트
- categories 매개 변수를 이용해 20개의 topic 중에서 원하는 토픽을 선택할 수 있음
- remove로 필요 없는 데이터 삭제 가능
- 각 데이터셋 내에서 .data는 텍스트의 내용,. target은 숫자로 표시된 라벨을 가져옴
### 데이터셋 불러오기
from sklearn.datasets import fetch_20newsgroups
# 20개 토픽 중 선택하고자 하는 토픽을 리스트로 생성
categories = ['alt.atheism', 'talk.religion.misc','comp.graphics','sci.space']
# 학습 데이터셋을 가져옴
newsgroups_train = fetch_20newsgroups(subset='train',
# 매일 내용에서 hint가 되는 부분을 삭제(순수하게 내용만으로 분류)
remove=("headers","footers","quotes"),
categories=categories)
# 평가 데이터셋을 가져옴
newsgroups_test = fetch_20newsgroups(subset='test',
remove=("headers","footers","quotes"),
categories = categories)
print('Train set size: ',len(newsgroups_train.data))
print('Test set size: ', len(newsgroups_test.data))
print('Selected categories: ', newsgroups_train.target_names)
print('Train labels: ', set(newsgroups_train.target))
### 데이터 직접 확인하기
print('Train set text samples: ', newsgroups_train.data[0])
print('Train set label samples: ', newsgroups_train.target[0])
print('Train set text samples: ', newsgroups_test.data[0])
print('Train set label samples: ', newsgroups_test.data[0])
### 카운트 기반 특성 추출
X_train = newsgroups_train.data # 학습 데이터셋 문서
y_train = newsgroups_train.target # 학습 데이터셋 라벨
X_test = newsgroups_test.data # 평가 데이터셋 문서
y_test = newsgroups_test.target # 평가 데이터셋 라벨
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features=2000, min_df=5, max_df=0.5)
# max_features: 특성의 수를 제한
# min_df: 단어가 최소 해당 개수만큼 문서에 나타나야함
# max_df: 공통으로 나타나는 단어 제외(0.5 는 문서의 50%를 초과해 나타나는 단어 제외)
X_train_cv = cv.fit_transform(X_train) # train set 변환
print('Train set dimension: ', X_train_cv.shape)
X_test_cv = cv.transform(X_test) # test set 변환
print('Test set dimension: ', X_test_cv.shape)
### 단어 빈도 파악
for word, count in zip(
cv.get_feature_names_out()[:100], X_train_cv[0].toarray()[0, :100]):
print(word, ':', count, end=', ')
참고: 박상언, 『파이썬 텍스트 마이닝 완벽 가이드』, 위키북스(2022)
'딥러닝_프로젝트' 카테고리의 다른 글
한국어 영화 리뷰 카운트 벡터 변환 (0) | 2022.12.20 |
---|