윤제로의 제로베이스

토치텍스트 튜토리얼(Torchtext tutorial) 한국어 본문

Background/Pytorch 기초

토치텍스트 튜토리얼(Torchtext tutorial) 한국어

윤_제로 2022. 1. 19. 19:38

https://wikidocs.net/65348

 

03. 토치텍스트 튜토리얼(Torchtext tutorial) - 한국어

이번 챕터는 바로 앞 챕터인 토치텍스트 영어 데이터 챕터를 이미 진행했다고 가정하고 진행됩니다. ##**1. 형태소 분석기 Mecab 설치** ``` # Colab에 Me ...

wikidocs.net

1. 형태소 분석기 Mecab 설치

# Colab에 Mecab 설치
!git clone https://github.com/SOMJANG/Mecab-ko-for-Google-Colab.git
%cd Mecab-ko-for-Google-Colab
!bash install_mecab-ko_on_colab190912.sh

2. 훈련 데이터와 테스트 데이터 다운로드하기

import urllib.request
import pandas as pd

urllib.request.urlretrieve("https://raw.githubusercontent.com/e9t/nsmc/master/ratings_train.txt", filename="ratings_train.txt")
urllib.request.urlretrieve("https://raw.githubusercontent.com/e9t/nsmc/master/ratings_test.txt", filename="ratings_test.txt")

train_df = pd.read_table('ratings_train.txt') # 150000
test_df = pd.read_table('ratings_test.txt') # 50000

3. 필드 정의하기(torchtext.data)

from torchtext import data # torchtext.data 임포트
from konlpy.tag import Mecab

# Mecab을 토크나이저로 사용
tokenizer = Mecab()

# 필드 정의
ID = data.Field(sequential = False,
                use_vocab = False) # 실제 사용은 하지 않을 예정

TEXT = data.Field(sequential=True,
                  use_vocab=True,
                  tokenize=tokenizer.morphs, # 토크나이저로는 Mecab 사용.
                  lower=True,
                  batch_first=True,
                  fix_length=20)

LABEL = data.Field(sequential=False,
                   use_vocab=False,
                   is_target=True)

4. 데이터셋 만들기

from torchtext.data import TabularDataset

train_data, test_data = TabularDataset.splits(
        path='.', train='ratings_train.txt', test='ratings_test.txt', format='tsv',
        fields=[('id', ID), ('text', TEXT), ('label', LABEL)], skip_header=True)

5. 단어 집합(Vocabulary) 만들기

# 단어 집합 생성
TEXT.build_vocab(train_data, min_freq=10, max_size=10000)

6. 토치텍스트의 데이터로더 만들기

from torchtext.data import Iterator

batch_size = 5

train_loader = Iterator(dataset=train_data, batch_size = batch_size) # 30000
test_loader = Iterator(dataset=test_data, batch_size = batch_size) # 10000

batch = next(iter(train_loader)) # 첫번째 미니배치