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()