Spaces:
Paused
Paused
File size: 2,083 Bytes
9e65b56 | 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | """CLI entry point: python -m src.data_collection_preprocessing"""
from __future__ import annotations
import argparse
import logging
import sys
from pathlib import Path
from .config import DataConfig
from .pipeline import CivilResponseDataPipeline
def main() -> None:
parser = argparse.ArgumentParser(description="민원답변 어댑터 학습 데이터 파이프라인")
parser.add_argument(
"--raw-dir",
default="data/raw/aihub",
help="AI Hub 원시 데이터 루트 디렉터리 (기본: data/raw/aihub)",
)
parser.add_argument(
"--output-dir",
default="data/processed",
help="출력 디렉터리 (기본: data/processed)",
)
parser.add_argument(
"--min-answer-length",
type=int,
default=30,
help="최소 답변 길이 (기본: 30자)",
)
parser.add_argument(
"--max-answer-length",
type=int,
default=4096,
help="최대 답변 길이 (기본: 4096자)",
)
parser.add_argument(
"--train-ratio",
type=float,
default=0.9,
help="train 비율 (기본: 0.9)",
)
parser.add_argument(
"--log-level",
default="INFO",
choices=["DEBUG", "INFO", "WARNING", "ERROR"],
)
args = parser.parse_args()
logging.basicConfig(
level=getattr(logging, args.log_level),
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
stream=sys.stdout,
)
config = DataConfig(
raw_dir=Path(args.raw_dir),
output_dir=Path(args.output_dir),
min_answer_length=args.min_answer_length,
max_answer_length=args.max_answer_length,
train_ratio=args.train_ratio,
)
pipeline = CivilResponseDataPipeline(config)
stats = pipeline.run()
print("\n파이프라인 완료")
print(f" 총 레코드: {stats['total']:,}")
print(f" train: {stats['train']:,}")
print(f" val: {stats['val']:,}")
print(f" 출력 경로: {args.output_dir}/")
if __name__ == "__main__":
main()
|