Files
frankenstallm/data/download_cc100.sh

84 lines
3.9 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# data/download_cc100.sh
# CC-100 Korean 데이터 단독 다운로드 스크립트
#
# 버그 수정 내역 (build_korean_dataset.sh 대비):
# - cc100 데이터셋의 텍스트 컬럼명은 'text'가 아닌 'sentence' 임.
# build_korean_dataset.sh Step 1에서 --text_col text 로 잘못 지정되어
# 모든 행이 빈 문자열로 처리되는 버그가 있었음.
# 본 스크립트는 --text_col sentence 로 올바르게 지정한다.
#
# 실행 방법 (프로젝트 루트에서):
# bash data/download_cc100.sh
#
# 출력:
# data/raw/cc100_ko/cc100_train_XXXX.txt (100,000행 단위 샤드)
#
# 주의:
# - cc100_ko 디렉토리에 이미 .txt 파일이 있으면 다운로드를 건너뜀.
# - 대용량 파일은 /PROJECT/0325120031_A/ghong/taketimes/ 하위에만 저장할 것.
set -euo pipefail
# ─── 경로 설정 ────────────────────────────────────────────────────────────────
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_ROOT"
RAW_DIR="data/raw"
CC100_DIR="$RAW_DIR/cc100_ko"
# ─── 다운로드 파라미터 ────────────────────────────────────────────────────────
CC100_MAX_ROWS=10000000 # 1,000만 행 (~1.5B 토큰 추정)
CC100_SHARD_SIZE=100000 # 샤드 당 행 수
CC100_TEXT_COL="sentence" # cc100 데이터셋의 실제 텍스트 컬럼명 (text 아님!)
# ─── 이미 완료된 경우 건너뜀 ─────────────────────────────────────────────────
echo "=== CC-100 Korean 다운로드 ==="
echo "프로젝트 루트: $PROJECT_ROOT"
echo "출력 디렉토리: $CC100_DIR"
echo ""
mkdir -p "$CC100_DIR"
# cc100_ko 디렉토리에 .txt 파일이 하나라도 있으면 스킵
EXISTING_COUNT=$(find "$CC100_DIR" -maxdepth 1 -name "*.txt" 2>/dev/null | wc -l)
if [ "$EXISTING_COUNT" -gt 0 ]; then
echo "[SKIP] $CC100_DIR 에 이미 ${EXISTING_COUNT}개 .txt 파일이 존재합니다."
echo " 재다운로드 하려면 해당 디렉토리를 비운 뒤 다시 실행하세요."
echo " rm -f \"$CC100_DIR\"/*.txt"
exit 0
fi
# ─── CC-100 다운로드 ──────────────────────────────────────────────────────────
echo "[다운로드] CC-100 Korean (max_rows=$CC100_MAX_ROWS, text_col=$CC100_TEXT_COL)..."
echo " 주의: HuggingFace cc100 데이터셋의 텍스트 컬럼명은 'sentence' 입니다."
echo ""
python data/download.py \
--dataset cc100 \
--subset ko \
--split train \
--text_col "$CC100_TEXT_COL" \
--output_dir "$CC100_DIR" \
--shard_size "$CC100_SHARD_SIZE" \
--max_rows "$CC100_MAX_ROWS"
# ─── 결과 확인 ────────────────────────────────────────────────────────────────
echo ""
FINAL_COUNT=$(find "$CC100_DIR" -maxdepth 1 -name "*.txt" 2>/dev/null | wc -l)
if [ "$FINAL_COUNT" -gt 0 ]; then
TOTAL_BYTES=$(du -sh "$CC100_DIR" 2>/dev/null | cut -f1)
echo "=== 완료 ==="
echo " 생성된 샤드 파일: ${FINAL_COUNT}"
echo " 디렉토리 총 용량: ${TOTAL_BYTES}"
echo " 경로: $CC100_DIR"
echo ""
echo "다음 단계: CC-100 토크나이징 & 기존 데이터와 병합"
echo " bash data/tokenize_cc100.sh"
else
echo "ERROR: 다운로드 후 .txt 파일이 생성되지 않았습니다." >&2
echo " download.py 출력을 확인하고 cc100 데이터셋 접근 가능 여부를 점검하세요." >&2
exit 1
fi