AI를 활용한 공학적 연구 방법론
Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project
AI를 활용한 공학적 연구 방법론

연구 데이터
파이프라인 + Mini Project

Session 8 / 8 (Final)

수집 → 정제 → 분석 → 시각화 → 논문 결과물

박수현 · aSSIST University · 2026

🎨 이미지 프롬프트(배경): "An end-to-end research pipeline visualized as flowing data — from web sources through processing stages to a final published paper figure, glowing teal and purple light, editorial illustration, 16:9, no text"

LLM · API · 웹스크래핑 기반 연구 데이터 파이프라인
AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

이번 시간을 마치면

개념적으로

  • ✅ 회차 1~7 을 하나의 파이프라인 으로 본다
  • ✅ LLM 4대 작업 (요약·분류·감성·주제) 을 구분
  • 논문 Figure / Table 의 자동화 흐름

실습으로

  • ✅ 본인 데이터로 end-to-end 코드 1개
  • ✅ LLM 으로 텍스트 1,000건 자동 분류
  • 논문 게재용 Figure 3장 + Table 1개
  • ✅ Mini Project 3~5분 발표

📖 도서 매핑: Ch.13~14 (Mini Project) + Ch.11 (감성분석) + Ch.15 (다음 여정)

PART A

통합 파이프라인
한 그림

회차 1~7 을 한 줄로 잇기

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

end-to-end 데이터 파이프라인 — 7단계 일관 흐름

%%{init: {"sequence": {"actorFontSize": 12, "noteFontSize": 10, "messageFontSize": 11, "actorMargin": 30, "boxMargin": 4, "boxTextMargin": 3, "noteMargin": 4, "messageMargin": 22, "mirrorActors": false}}}%% sequenceDiagram autonumber participant W as 웹·API participant C as 수집기<br>(BS4·Selenium·API) participant P as 정제·비식별화<br>(pandas·re·Faker) participant L as 텍스트 분석<br>(LLM) participant S as 통계·시각화<br>(pandas·matplotlib) participant D as 산출물<br>(Figure·Table·CSV) W-->>C: HTML / JSON 응답 C->>P: 원본 DataFrame Note over P: 결측·중복 제거<br>마스킹·k-익명성 P->>L: 정제·비식별화된 텍스트 L-->>P: 감성·주제·요약 JSON P->>S: 분석용 DataFrame S->>D: describe·groupby·plot D-->>D: 논문 Figure / Table / CSV

이 그림에서 볼 포인트

  • 데이터는 웹·API → 수집기 → 정제/비식별화 → LLM → 통계/시각화 → 산출물로 흐릅니다.
  • 회차별 도구는 따로 배운 것이 아니라, 최종적으로 한 파이프라인으로 연결됩니다.
AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

7단계 실습 체크리스트

단계 회차 주요 도구
1 수집 3·5·6 requests · BS4 · API · Selenium
2 정제 4 pandas
3 비식별화 7 re · Faker · Presidio (Microsoft 비식별화 라이브러리)
4 텍스트 8 (오늘) OpenAI / Claude / Ollama
5 통계 4 pandas · scipy
6 시각화 4 matplotlib · seaborn
7 산출물 8 (오늘) PDF · CSV · LaTeX

각 단계는 "완료 여부"보다 재현 가능성(같은 입력에서 같은 출력이 나오는지) 을 기준으로 점검합니다. 실습에서는 1~7 단계를 한 번에 완성하기보다, 1→3→4→7처럼 작은 루프로 먼저 연결해 점진적으로 확장하세요.

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

권장 디렉토리 (도서 Ch.15 기준)

research_project/
├── 0_data/
│   ├── raw/                 # 절대 수정 X
│   ├── interim/             # 중간 산출물
│   └── processed/           # 분석 가능 형태
├── 1_collect/
│   ├── 01_api_call.py       # 회차 5
│   ├── 02_scrape_static.py  # 회차 3
│   └── 03_selenium_login.py # 회차 6
├── 2_process/
│   ├── 11_clean.py          # 회차 4
│   └── 12_anonymize.py      # 회차 7
├── 3_analyze/
│   ├── 21_llm_classify.py   # 회차 8
│   └── 22_stats.ipynb       # 회차 4
├── 4_figures/
│   ├── 31_figure1.py
│   └── 32_figure2.py
├── 5_outputs/
│   ├── figures/             # PDF/PNG
│   └── tables/              # CSV/LaTeX
├── .env                     # API 키 (절대 커밋 X)
├── requirements.txt
└── README.md

🎯 번호 prefix 로 실행 순서 명시. 누가 따라와도 재현 가능.

PART B

LLM 4대 작업
실습

요약 · 분류 · 감성 · 주제

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

LLM 4대 작업 — 분류 / 요약 / 추출 / 생성

작업 입력 출력 용도
요약 긴 글 짧은 요약 공시·논문 초록
분류 짧은 글 카테고리 토픽·장르·스팸
감성분석 리뷰·댓글 긍정/부정/중립 (pos/neg/neu) + 강도 점수 평판·만족도
주제 추출 글 묶음 키워드·주제 N개 트렌드 분석

🎯 회차 5의 첫 호출 → 오늘은 1만 건 일괄 처리.

감성분석 프리즘

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트참고: examples/ch11/sentiment_dashboard/

병렬 호출 + 진행 표시

import os, asyncio, json, pandas as pd
from anthropic import AsyncAnthropic
from tqdm.asyncio import tqdm

client = AsyncAnthropic()
SEM = asyncio.Semaphore(10)   # 동시 10건 — Rate Limit 안전

async def classify(text: str) -> dict:
    async with SEM:
        msg = await client.messages.create(
            # Anthropic 모델 ID 는 날짜 suffix 형태 (예: claude-haiku-4-5-20251001)
            # 또는 별칭 claude-haiku-4-5-latest — 강의일에 공식 페이지 확인
            model="claude-haiku-4-5-latest",
            max_tokens=200,
            messages=[{
                "role":"user",
                "content": (
                    "리뷰를 JSON 으로 분석해.\n"
                    '{"sentiment":"positive|negative|neutral","topics":[],"summary":""}\n\n'
                    f"리뷰: {text}"
                )
            }],
        )
        try:
            return json.loads(msg.content[0].text)
        except Exception:
            return {"sentiment":"unknown","topics":[],"summary":""}

async def run(texts):
    return await tqdm.gather(*(classify(t) for t in texts))

if __name__ == "__main__":
    df = pd.read_csv("data/processed/reviews_masked.csv")
    results = asyncio.run(run(df["text"].tolist()))
    df["sentiment"] = [r["sentiment"] for r in results]
    df["topics"]    = [json.dumps(r["topics"], ensure_ascii=False) for r in results]
    df.to_csv("data/processed/reviews_labeled.csv", index=False, encoding="utf-8-sig")

🎯 1,000건 ≈ 30초 / $0.3~0.7 (Haiku, 리뷰 평균 약 200토큰 가정 — 입력 길이에 따라 달라짐).

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

LLM 출력 시각화 — 감성 분포 막대 차트

📊 감성 분포 막대

df["sentiment"].value_counts().plot.bar()

리뷰 1,000건의 감성 비율을 한눈에 보여줍니다.

  • 가장 먼저 볼 것: 긍정/부정/중립 중 어떤 축이 큰지
  • 발표 포인트: "현재 분포"를 10초 안에 전달하는 그림
  • 다음 단계 연결: 기간 정보가 있으면 시계열로 확장 가능

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

LLM 출력 시각화 — 감성 시계열 면적 차트

📈 감성 시계열 면적

df.groupby([df["date"].dt.to_period("M"),
            "sentiment"]).size()\
   .unstack().plot.area()

월별 감성 변화 추이를 보여줍니다.

  • 핵심 읽기: 어느 시점에 긍정/부정이 늘었는지
  • 발표 포인트: "시간에 따른 변화"를 흐름으로 설명
  • 참고: 월 단위가 거칠면 주 또는 일 단위로 재집계합니다

📌 도서 Ch.11 §6 — "시간이 데이터에 들어오면 시계열".

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

Aspect 추출 — 칭찬·불만 키워드 분리

👍 칭찬 측면

  • 빠른 배송
  • 깔끔한 포장
  • 가격 만족도

👎 불만 측면

  • 색상 차이
  • 사이즈 불일치
  • 고객센터 응답

🎯 LLM 프롬프트 한 줄

"리뷰에서 칭찬 측면과 불만 측면을 각각 키워드 리스트로"

PART C

Figure / Table
자동화

매번 손으로 만들지 않는다

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

논문 Figure 자동화 — 디자인·저장 단일 함수

import matplotlib.pyplot as plt
import seaborn as sns
from pathlib import Path

def paper_figure(plot_fn, *, name: str, outdir="5_outputs/figures",
                 size=(7, 4), title="", xlabel="", ylabel=""):
    """seaborn 기반 표준 figure 생성 + PNG·PDF 동시 저장."""
    Path(outdir).mkdir(parents=True, exist_ok=True)
    sns.set_theme(style="whitegrid", palette="colorblind",
                  rc={"axes.spines.top": False, "axes.spines.right": False})
    fig, ax = plt.subplots(figsize=size)
    plot_fn(ax)
    if title:  ax.set_title(title, fontsize=11)
    if xlabel: ax.set_xlabel(xlabel)
    if ylabel: ax.set_ylabel(ylabel)
    fig.savefig(f"{outdir}/{name}.pdf", dpi=300, bbox_inches="tight")
    fig.savefig(f"{outdir}/{name}.png", dpi=300, bbox_inches="tight")
    plt.close(fig)
    return f"{outdir}/{name}"

# 사용
paper_figure(
    lambda ax: sns.barplot(data=df, x="rating", y="price", ax=ax, errorbar=("ci",95)),
    name="fig1_price_by_rating",
    title="Average book price by star rating",
    xlabel="Star rating", ylabel="Price (£)",
)

🎯 한 번 만들면 Figure 10개 만들 때도 한 함수.

📌 errorbar=("ci", 95)seaborn ≥ 0.12 부터의 새 인자. 이전 버전은 ci=95 사용. 환경 확인: python -c "import seaborn; print(seaborn.__version__)".

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

학회·저널 양식에 맞춘 표

import pandas as pd

# 1) 통계 표
agg = (df.groupby("rating")
         .agg(N=("title","size"),
              Mean=("price","mean"),
              SD=("price","std"))
         .round(2))

# 2) Markdown — README, 노션
print(agg.to_markdown())

# 3) LaTeX — 학회 논문
print(agg.to_latex(
    caption="Price by star rating.",
    label="tab:price_rating",
    column_format="lrrr",
    escape=True,
))

# 4) CSV — 부록·재현용
agg.to_csv("5_outputs/tables/table1_price_rating.csv",
           encoding="utf-8-sig")

📌 to_latex() + \input{table1.tex} = LaTeX 본문 자동 삽입.

⚙️ to_markdown()tabulate 패키지가 필요 — pip install tabulate

PART D

통합 사례
3개 시나리오

도서 Ch.13·14 의 프로젝트 사례

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트참고: examples/ch13/price_compare/

도서 Ch.13 — 상품 가격 비교

🎯 흐름

  1. 수집 — 다나와·쿠팡 검색결과 (회차 5·6) ⚠️ 사이트 약관·robots.txt 확인 필수
  2. 정제 — 가격 정규화, 옵션 분리 (회차 4)
  3. 분석 — 가격 분포, 가격 변동 (회차 4)
  4. 시각화 — 매장별 가격 비교 (회차 4)
  5. 자동화 — 매일 실행 → 알림

📖 도서 참조: Ch.13 — "프로젝트 1: 상품 가격 비교 분석기".

🖼️ 결과 대시보드

가격 비교 대시보드

가격 비교 캡처

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

가격 비교 수집 모듈을 만든 프롬프트

💬 Antigravity / ChatGPT 입력 collect.py

📋 prompt prompts/ch13_prompts.md 📄 example examples/ch13/price_compare/collect.py

Python 모듈 examples/ch13/price_compare/collect.py 를
만들어 줘.
목적: 네이버 쇼핑 검색 API 래퍼.
한 키워드에 대해 최대 200건까지 페이지네이션으로
수집하는 fetch_shop + 여러 키워드를 순회하는
fetch_many 헬퍼 제공.

요구사항:
1. 라이브러리: requests, pandas, python-dotenv,
   표준 os, time
2. .env 의 NAVER_CLIENT_ID, NAVER_CLIENT_SECRET 로
   공통 헤더 HEADERS 구성
3. 엔드포인트 상수:
   BASE = "https://openapi.naver.com/v1/search/shop.json"
4. 함수
   fetch_shop(query: str, max_items: int = 200,
              delay: float = 0.2) -> pd.DataFrame:
   - display=100 으로 시작, start 를 1 부터
     min(max_items, 1000)+1 까지 display 간격 반복
   - params: query, display, start, sort="sim"
   - r.raise_for_status()
   - items = r.json().get("items", [])
   - items 비면 중단, rows 누적, time.sleep(delay)
   - 누적 ≥ max_items 되면 중단
   - 마지막에 pd.DataFrame(rows[:max_items]) 반환
5. 함수 fetch_many(keywords: list[str],
                   each: int = 100):
   - 키워드별 fetch_shop 호출
   - keyword 컬럼 추가 후 pd.concat 합침
6. __main__ 블록: fetch_shop("무선 이어폰",
                              max_items=50)
   호출 후 [["title","lprice","mallName","link"]] 출력

에러 처리:
- HTTP 오류 → 메시지 후 현재까지의 rows 반환
- 429 한도 초과 → 60초 대기 후 1회 재시도,
  실패 시 현재까지 반환
- 환경변수 누락 → 안내 후 빈 DataFrame 반환

환경: Python 3.11, venv. 코드만, 한국어 주석 최소.

🎯 수집 모듈 프롬프트의 패턴

  • 모듈 단위 분리collect.py (수집) / process.py (정제) / analyze.py (분석) 의 책임 분리 → 디버깅·재사용 쉬움
  • 페이지네이션과 한도 처리display=100, max_items=200 두 파라미터로 학습용과 실습 모드를 전환합니다
  • 429 (Rate Limit) 폴백 — 60 초 대기 + 1 회 재시도 → 본인 키 보호
  • 환경변수 누락 안내 — 빈 DataFrame 반환 → 후속 코드가 안전하게 종료

💡 응용:
- 네이버 쇼핑 → 카카오·구글 등 다른 API
- "무선 이어폰" → 본인 연구 키워드
- fetch_many(["키워드1", "키워드2", ...])
로 다중 키워드 자동 수집

📖 출처: ch13_prompts.md §2 — 수집 모듈.

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트참고: examples/ch14/review_sentiment/

도서 Ch.14 — 감성분석 파이프라인

🎯 흐름

  1. 수집 — 쇼핑몰 리뷰 (회차 6)
  2. 비식별화 — 작성자·전화 마스킹 (회차 7)
  3. LLM 분석 — 감성·주제·요약 (오늘)
  4. 시각화 — 시간별·카테고리별 (회차 4)
  5. 대시보드 — Streamlit 1쪽

📖 도서 참조: Ch.14 — "프로젝트 2: 리뷰 감성분석 대시보드".

🖼️ 파이프라인 일러스트

감성분석 파이프라인

감성분석 대시보드 캡처

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

감성분석 배치 모듈을 만든 프롬프트

💬 Antigravity / ChatGPT 입력 analyze.py · analyze_batch

📋 prompt prompts/ch14_prompts.md 📄 example examples/ch14/review_sentiment/analyze.py

같은 analyze.py 에 배치 함수
analyze_batch(reviews: list[str]) -> list[dict]
를 추가해 줘.
목적: 여러 리뷰를 한 번의 LLM 호출로 처리해
속도·비용을 줄인다.

요구사항:
1. 리뷰 리스트를 "1. ...\n2. ..." 형식으로
   번호 매긴 단일 문자열 numbered 로 합친다.
2. 상단에 BATCH_TPL 상수:
   """
   아래 리뷰들 각각을 위와 동일한 스키마로
   분석해 [{"idx": 1, ...}, ...] 형태의
   JSON 배열로 돌려주세요.

   리뷰:
   {numbered}
   """
3. 호출:
   client.chat.completions.create(
     model="gpt-4o-mini",
     messages=[
       {role:"system", content:SYSTEM},
       {role:"user",
        content:BATCH_TPL.format(numbered=numbered)}
     ],
     response_format={"type":"json_object"},
     temperature=0,
   )
4. JSON 파싱:
   data = json.loads(resp.choices[0].message.content)
   응답이 배열 직접이 아니라 최상위 key 로
   감싸져 올 수 있다. 다음 순서로 추출:
   - data.get("items")
   - 없으면 data.get("results")
   - 그래도 없으면 list(data.values())[0]
5. 반환 타입은 list[dict].
   각 dict 는 analyze_one 과 동일 스키마 + idx

에러 처리:
- JSON 파싱 실패 시 각 입력 리뷰마다
  기본 dict (neutral / not_mentioned) 리스트 반환
- API 호출 실패 시 동일 기본값 리스트 반환

환경: Python 3.11, venv. 코드만, 한국어 주석 최소.

🎯 배치 처리의 비용 절감 효과

단건 호출 (1만 건) 배치 호출 (500 × 20건)
호출 수 10,000 회 500 회
시간 약 50 분 약 5 분
비용 약 $1.0 약 $0.4

🛡️ 배치의 함정 3가지

  1. 응답 키 가변성items / results / 다른 키 → 3단 fallback 필수
  2. 순서 보존idx 를 명시 요청 → 매핑 정확
  3. 부분 실패 격리 — 한 건 깨져도 다른 19 건은 살림 → 기본값 dict 채움

⚠️ 개인정보 보호 순서 (회차 7 연결):
마스킹 → analyze_batch → 결과 매핑 → 폐기

📖 출처: ch14_prompts.md §3 — LLM 전처리 파이프라인.

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

도서 Ch.12 — 시계열 + 토론 댓글 결합

🎯 흐름

  1. 시세 수집yfinance (회차 5)
  2. 토론 댓글 — 네이버 종목토론실 등 (Selenium, 회차 6)
  3. 감성 라벨링 — LLM (오늘)
  4. 상관 분석 — 감성 vs 가격 (회차 4)
  5. 결과 — 차트 + 표

📌 댓글 감성다음날 가격 변동 의 상관 — 학위논문 토픽 인기.

🖼️ 결과 차트

Bollinger Band

감성-가격 상관 히트맵

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 도서 Ch.12Ch.11 감성분석 · Ch.13~14 프로젝트참고: examples/ch12/scrape_discussion.py · cached_fetch.py

시계열 + 토론 감성 결합을 만든 프롬프트

💬 ChatGPT / Claude 입력 stock_sentiment.py

📋 prompt prompts/ch12_prompts.md 📄 example examples/ch12/scrape_discussion.py

주가 시계열과 토론 댓글 감성을 일별로 결합해 산점도
+ 병합 CSV 두 장을 만드는 stock_sentiment.py 를
만들어 줘.

입력 두 개:
- prices.csv (date, close)         # yfinance 결과
- discussions.csv (date, text)     # 토론 댓글 본문

요구사항:
1. 라이브러리: pandas, matplotlib, openai,
   python-dotenv, hashlib, pathlib
2. 단계:
   (a) text → sentiment_of(text) 로 score(-1.0~1.0)
       만 추출 (다른 슬라이드의 LLM 감성 헬퍼 호출)
   (b) date 별 score 평균 → daily_sentiment
   (c) prices 와 inner-join (date)
   (d) close 의 일간 수익률 ret = pct_change()
   (e) 감성 vs 다음날 수익률(ret.shift(-1)) 산점도
       — matplotlib, 1200×800, 300dpi (학회용)
   (f) Pearson 상관계수 1줄 콘솔 출력
3. LLM 결과 캐싱:
   - cache_llm/ 디렉토리에 sha256(date+text) 를 파일명
   - 적중 시 API 안 부르고 캐시 read
   - 미스 시 API 호출 후 캐시 write
4. 진행 표시: tqdm 로 모든 댓글 1건씩

출력:
- charts/sentiment_vs_return.png
- charts/sentiment_vs_return.csv (병합 결과)

에러: 한 댓글 LLM 실패 → score=0.0 채우고 계속.

환경: Python 3.11, venv. 코드만, 한국어 주석 최소.

🎯 이 프롬프트의 결정적 요소

  • 일별 평균 — 댓글 N건 → 1점수. 노이즈 평탄화로 시계열 결합 가능
  • 다음날 수익률 (lag=1) — 댓글이 예측 신호 인지 검증. 동일일자 비교는 후행지표라 무의미
  • LLM 캐싱 — 1만 건 분석 시 비용·시간 90%↓. 도서 Ch.13 §6 패턴
  • CSV 병합 결과 동시 저장 — 산점도 외에도 회귀·분포 등 추가 분석에 재활용

💡 연구 응용: 토론 감성 → 다음날 수익률. "여론 선행 지표" 가설 검증의 미니 사례. 댓글의 PII (작성자명 등) 는 회차 7 헬퍼로 비식별화 후 호출.

PART E

Mini Project
3~5분 발표

본인 연구 주제로 1개

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

Mini Project 발표 — 5장 슬라이드 구성

# 슬라이드 내용 (1분 분량)
1 연구 질문 "X 가 Y 에 영향을 주는가?"
2 데이터 출처 사이트·기간·건수, 윤리 점검
3 방법 수집 → 정제 → 분석의 한 줄 다이어그램
4 결과 핵심 Figure 1장 (300 DPI)
5 한계·다음 단계 표본·재현성·확장

🎯 평가 4축

  • 데이터 적절성 (25%) — 질문에 맞는가
  • 방법 정확성 (25%) — 도구 선택, 비식별화
  • 결과 설득력 (25%) — Figure 의 메시지
  • 윤리·재현성 (25%) — IRB (Institutional Review Board, 기관생명윤리위원회 심의) / robots.txt / 코드 공개
AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

8명 기준 (총 90분) — 각 5분 발표 + Q&A 5분

시간 활동
0~5 환영 + 진행 안내
5~85 발표 8명 × (5분 발표 + 5분 Q&A) = 80분
85~90 마무리 + 다음 단계

🎯 청중 미션

  • 다른 팀 발표 들으며 본인 연구에 적용할 점 1개 메모
PART F

이후의
로드맵

8회차는 마무리이자 새로운 시작점

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서1Ch.11 감성분석 · Ch.13~14 프로젝트

8회차 이후 — 분야별 다음 학습 단계

📊 데이터 분석 심화

  • Plotly + Streamlit (도서 Ch.10) — 인터랙티브 대시보드
  • scikit-learn — 분류·회귀·클러스터링
  • statsmodels — 회귀·시계열 통계
  • PyMC / Stan — 베이지안 모델링

🤖 AI · LLM 심화

  • Anthropic / OpenAI / Google API 비교
  • LangChain / LlamaIndex — RAG 파이프라인
  • 로컬 LLM — Ollama, vLLM (고속 추론 서버), LoRA (Low-Rank Adaptation, 경량 파인튜닝 — 모델 일부만 학습)
  • 에이전트 패턴 — 도구를 자동으로 골라 쓰는 연구 보조

📖 도서1 Ch.12·13 — 에이전트가 도구를 스스로 선택하는 패턴이 다음 단계의 자연스러운 행보.

🤖 AI 에이전트 워크플로우

에이전트 워크플로우

🏔️ 정상에서 다음 봉우리로

다음 봉우리

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

8회차 이후 추천 자료 12선 — 책·강좌·커뮤니티

📚 책

  • 「데이터 과학을 위한 통계」 — Bruce & Bruce
  • 「파이썬 라이브러리를 활용한 데이터 분석」 — Wes McKinney
  • 한국어 NLP 입문 — 박조은 저자의 NLP/머신러닝 강의 자료 (정확한 서명은 출판 시점 재확인)

🎓 강좌 / MOOC

  • Coursera — Andrew Ng Machine Learning
  • fast.ai — Practical Deep Learning
  • Kaggle Learn — 시리즈
  • Anthropic / OpenAI Cookbook

👥 커뮤니티 / 컨퍼런스

  • PyCon Korea
  • Korea Data Engineering Meetup
  • r/MachineLearning, HuggingFace Hub

📌 학위논문 → arXiv 검색 → 본인 분야 최신 논문 5편 정해 매주 1편씩.

PART G

8회차의 끝
연구의 시작

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

8회차 통합 핵심

회차 핵심 한 줄
1 HTML/CSS/JS · HTTP · 정적/동적 · DOM = 어휘
2 F12 5대 패널 — Elements + Network 가 80%
3 requests + BS4 + safe_get + 페이지네이션
4 pandas 5동사 + seaborn 5종 + 윤리 5계명 + 판례 4건
5 API 우선 · 공공데이터 · LLM 첫 호출
6 Selenium 4단계 · Wait · 로그인 → 쿠키 이전
7 비식별화 5기법 · k-익명성 · LLM 입력 마스킹
8 통합 파이프라인 · LLM 4작업 · Figure/Table 자동

"도구를 잘 쓰는 것만큼, 데이터를 매너 있게 다루는 자세도 중요합니다."

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

8회차 함께 해주셔서 감사합니다

한 줄 메시지

"데이터를 다루는 기술 만큼, 다루는 태도 가 곧 연구자의 품격으로 이어집니다."

강의 이후에 권해드리는 것

  • 본인 GitHub 에 Mini Project 코드 공개 (선택 사항)
  • 동료 연구자에게 윤리 체크리스트 한 번쯤 공유해 보기
  • 6개월 뒤 — 이 강의 슬라이드 다시 펼쳐보기
  • 새 사이트·새 API 만나면 회차별 표 부터 펼치기

두 책의 시너지

AI를 활용한 공학적 연구 방법론·Session 8 · 연구 데이터 파이프라인 구축 및 Mini Project출처: 바이브코딩 도서2Ch.11 감성분석 · Ch.13~14 프로젝트

최종 평가 (50%)

📤 제출물 (다음 주 23:59)

  • [ ] 연구 보고서 PDF (5~10p)
  • [ ] 데이터 + 코드 ZIP (재현 가능)
  • [ ] Figure 3장 + Table 1개
  • [ ] 윤리 점검 체크리스트 (8항목)

📊 평가 기준

  • 데이터 적절성 (15%)
  • 방법 정확성 (10%)
  • 결과 설득력 (15%)
  • 윤리·재현성 (10%)

💌 마지막 한마디

"오늘 익힌 30줄 코드가 5년 뒤에도 의미 있도록 —
코드만큼 태도를, 결과만큼 방법을 함께 남기는 연구가 되시길 응원합니다."

다음 기회에 또 뵙겠습니다 👋

1 / 32

목차 — Session 8

키보드 단축키 (뷰어)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차M

화면

전체화면F
테마 전환D
글자 크게 / 작게+ -
원래 크기 (100%)=
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
강의 종료 (메인으로)Q

키보드 단축키 (강사)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차 (Menu)M
전체화면F

화면

테마 전환D
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
툴바 펼치기 / 접기[ ]
강의 종료 (메인으로)Q

화면 확대

글자 크게 / 작게+ -
원래 크기 (100%)=
돋보기 (마우스 따라 2× 확대)V

발표자 도구 (PPT 호환)

화이트 화면W ,
블랙 화면B .
레이저 포인터L
펜 모드 ON/OFFP
펜 색상1 2 3 4
펜 자국 지우기 (현재 슬라이드)E
펜 — 마지막 스트로크 취소 (Undo)Z
펜 — 다시 (Redo)R
⏰ 쉬는시간 타이머T
📱 노트뷰 QR (휴대폰 동기화)N

PDF / 종료

PDF 저장 (슬라이드)Ctrl+P
강의 종료 (메인으로)Q X