협업형 웹북 제작 워크플로우 사례

『타이타닉 생존자 예측하기』는 실제 캐글 데이터셋을 활용하여, 생존자 예측 모델을 단계별로 구성해보는 프로젝트형 웹북입니다. 그러나 이 책의 목표는 단순히 모델의 성능을 높이는 것이 아니라, ‘데이터로 어떻게 생각할 것인가’를 탐구하는 데 있습니다. 프롬프트 기반 사고 훈련과 AI 협업을 통해, 독자가 스스로 질문을 만들고 데이터에 접근하며, 데이터로 생각하는 힘을 기를 수 있도록 설계되었습니다. 책의 전개는 세 명의 캐릭터(설명자 다안, 초보자 프롬, 실행자 코더블)의 대화를 중심으로 이루어지며, 각자 역할을 나눠 질문하고 설명하고 실험합니다. 이를 통해 독자는 수업을 듣는 듯한 몰입과 프로그래밍을 직접 해보는 듯한 체험을 동시에 경험하게 됩니다.

아래에서는 이 웹북이 어떤 방식으로 제작되었는지, 실제 사례와 함께 구체적으로 살펴보겠습니다. 특히 협업형 웹북 제작 워크플로우를 중심으로 설명하며, 이는 단일 저자가 아닌 사람과 AI가 협력하는 집필 방식을 실현한 실험이기도 합니다.

본문은 다음 네 가지 파트로 구성되어 있으며, 각 파트는 실제 첨부 예시를 통해 함께 설명됩니다:

  • A. 참여자 소개

    웹북 제작에는 기획자와 함께 여러 AI 에이전트가 참여합니다. 특히 초안 작성과 리뷰, 편집 판단에 특화된 역할들이 나뉘어 협업합니다. 이 참여자 구조는 단순한 집필 보조를 넘어서, 전체 콘텐츠 품질을 체계적으로 관리할 수 있게 해줍니다.

  • B. 제작 프로세스 전체 흐름

    콘텐츠 기획부터 HTML 변환, 최종 공개까지 총 10단계로 구성된 제작 흐름입니다. 각 단계는 담당자와 산출물이 명확하게 정의되어 있어 반복적인 제작에 최적화되어 있습니다.

  • C. 리뷰 단계의 실제 피드백 사례

    7인의 AI 기반 리뷰팀이 각자의 전문 관점에서 원고를 평가합니다. 단순한 문장 수정이 아닌, 학습 흐름, 몰입도, 기술 정합성, 교육적 의미까지 포함하는 다각도 리뷰가 이루어집니다.

  • D. 피드백 반영 후 수정본 예시

    리뷰에서 도출된 문제점과 개선사항이 실제 원고에 어떻게 반영되었는지 Before/After 형식으로 비교합니다. 이를 통해 리뷰 시스템의 실질적인 효과를 확인할 수 있습니다.

아래 첨부된 A~D 예시를 통해 동일한 방식으로 다른 주제의 웹북을 제작할 때에도 참고하실 수 있습니다.

이 중 첨부C와 첨부D는 『타이타닉 생존자 예측하기』 웹북의 섹션 2.1, 즉 "성별은 생존을 가르는 결정적 단서였을까?"라는 주제를 다룬 콘텐츠를 대상으로 리뷰와 수정 작업이 어떻게 이루어졌는지를 보여주는 실제 사례입니다.


첨부A. 참여자 소개

※ 모든 산출물은 기본적으로 마크다운(.md) 형식의 문서입니다.


🧑‍🤝‍🧑 웹북 제작 워크플로우 참여자

▸ 제이스 (나)

  • 콘텐츠 기획과 소스코드 작성

  • 학습 목표와 흐름에 대한 방향 제시

  • 전체 품질 관리 및 최종 결정권자

▸ 리비 (ChatGPT)

  • 편집 방향 수립 및 리뷰 총괄

  • 리뷰팀 피드백 종합 및 리뷰 보고서 작성

  • 콘텐츠 흐름, 톤앤매너, 학습 몰입도 점검

▸ 에디 (Claude)

  • 초안 작성 전담

  • 제이스의 기획과 소스코드를 바탕으로 서술 초안 작성

  • 교정 및 수정도 담당

▸ 리뷰팀 7인 (ChatGPT 기반 캐릭터)

이름

설정

역할

소영

IT 전문서 출판사 편집자

문체와 시장성 평가

정보쌤

영재학교 정보 교사

정보 교과 기반 교육적 활용성 검토

데이터사이언티스트

기술 흐름 및 실무 정합성 점검

하진

AI 교육 연구자

시대적 교육 의미 분석

다안

동아리 학생 (책 주인공)

학습자 관점의 난이도와 몰입도 피드백

유나

인문학 전공 비전공자 대학생

비전공자의 접근성과 공감도 확인

크리틱

구조적 균형 파괴자

콘텐츠 구조 및 심리적 리스크 분석


첨부B. 웹북 제작 단계별 프로세스

1. 콘텐츠 기획 및 소스코드 개발

  • 담당: 제이스

  • 준비자료: 섹션별 학습 목표

  • 작업: 섹션에서 다룰 내용을 설계하고, 학습 흐름에 맞는 소스코드를 개발

  • 산출물: 섹션별 소스코드

2. 콘텐츠 내용 논의

  • 담당: 제이스, 리비

  • 준비자료: 소스코드 초안, 기획 의도

  • 작업: 소스코드를 어떻게 설명하고 구성할지를 논의하며, 포함 여부와 대화 흐름을 확정

  • 산출물: 콘텐츠 반영 계획

3. 원고 초안 작성

  • 담당: 에디

  • 준비자료: 소스코드, 콘텐츠 반영 계획

  • 작업: 논의 내용을 바탕으로 대화체 원고를 작성

  • 산출물: 원고 가안

4. 초기 검토 및 교정

  • 담당: 제이스(검토), 에디(교정)

  • 준비자료: 원고 가안

  • 작업: 제이스가 검토하고 수정 방향을 제시 → 에디가 반영하여 교정

  • 산출물: 원고 초안

5. 전문가 리뷰 진행

  • 담당: 리비, 리뷰팀 7인

  • 준비자료: 원고 초안

  • 작업: 각 리뷰어가 자신의 전문 분야 관점에서 평가 및 피드백 작성

  • 산출물: 리뷰어별 개별 피드백

6. 리뷰 보고서 작성

  • 담당: 리비

  • 준비자료: 7인 리뷰 피드백

  • 작업: 피드백을 종합하여 일관성 있게 정리한 리뷰 보고서 작성

  • 산출물: 리뷰 보고서

7. 리뷰 보고서 검토 및 원고 수정

  • 담당: 제이스, 에디

  • 준비자료: 리뷰 보고서

  • 작업: 핵심 피드백을 선별하고 반영 계획 수립 → 원고 수정

  • 산출물: 수정 원고, before/after 보고서

8. 최종 검토 및 확정

  • 담당: 제이스, 리비

  • 준비자료: 수정 원고

  • 작업: 최종 점검 및 승인 여부 결정 (필요 시 반복 진행)

  • 산출물: 최종 확정 원고

9. HTML 변환 및 로컬 확인

  • 담당: 제이스

  • 준비자료: 최종 확정 원고

  • 작업: 주피터북(jupyter-book)을 활용하여 원고를 HTML 형식으로 변환하고, 로컬 서버(localhost)에서 결과물 확인

  • 산출물: HTML 코드 (로컬 서버에서 확인 가능한 웹 페이지)

10. 최종 점검 및 배포 결정

  • 담당: 제이스

  • 준비자료: 로컬 서버의 웹 페이지

  • 작업: 자동 추가된 실행결과, 도표, 그래프 등의 표시 이상 여부를 점검. 문제가 없으면 GitHub Pages를 통해 웹북으로 공개. 문제가 있을 경우 해당 단계로 되돌아가 수정

  • 산출물: 웹북


첨부C. 리뷰 단계의 실제 피드백 사례 (단계 6 산출물)

※ 이 첨부는 섹션 2.1 「성별은 생존을 가르는 결정적 단서였을까?」의 리뷰 사례입니다.


  • 리뷰팀 피드백

    1. 소영 (출판 편집자)

    • 강점: 시각 자료, 대화 흐름, 감정적 몰입 유도까지 훌륭합니다. 특히 잭과 로즈 장면의 인용은 흥미 유발에 매우 효과적입니다.

    • 개선 제안:

      • 표 제목에 ‘Val. Score’, ‘Public Score’ 등 용어가 생소할 수 있으므로 간단한 주석 혹은 각주 고려해 주세요.

      • submission.to_csv() 등 출력 파일 경로가 구체적일 필요는 없으므로 생략해도 됩니다.

    2. 정보쌤 (영재학교 정보 교사)

    • 강점: 프롬프트→코드→시각화→해석→통계적 의미 부여라는 흐름이 매우 안정적입니다. 수업 연계에도 적합합니다.

    • 개선 제안:

      • 학습자 입장에서 map 함수의 역할을 한 번 더 짚어주는 말풍선이나 요약이 있으면 좋겠습니다.

      • Validation Score와 Public Score의 차이에 대한 간략한 해석을 붙이면 실무적 이해도가 높아질 것입니다.

    3. 민 (데이터사이언티스트)

    • 강점: corr_matrix 함수로 상관계수 시각화하는 방식이 매우 적절하며, 정렬 방식도 실용적입니다.

    • 개선 제안:

      • abs(corr[ft]).sort_values()로 정렬하는 이유를 독자 눈높이에서 한 문장 덧붙이면 이해가 쉬워집니다.

      • 생존율 차이에서 “단 하나의 변수만 추가했는데 정확도 10% 상승”이라는 주장은 인상적이나, 훈련·검증 점수와 캐글 점수 차이는 과대평가 위험도 있어 약간 톤다운 필요합니다.

    4. 하진 (교육연구자)

    • 강점: “여성과 아이 먼저” 규칙을 데이터로 증명한다는 메시지가 교육적으로 강력합니다. 역사적 사례와 연결한 점이 특히 인상적입니다.

    • 개선 제안:

      • “버켄헤드 규율” 섹션을 메인 본문에서 좀 더 자연스럽게 끌어올리면 좋겠습니다. 학습자에게 이 배경은 감동과 통찰을 동시에 줍니다.

      • 중간중간 학습자에게 직접 질문을 던지는 말투가 있으면 더 능동적인 독서를 유도할 수 있습니다.

    5. 다안 (학생 캐릭터 기반)

    • 강점: 프롬의 반응이 매우 자연스럽고, 초보자의 시선에서 공감이 잘 형성됩니다. 성별-생존율 그래프가 없는데도 수치로만 인식에 성공한 것도 장점입니다.

    • 개선 제안:

      • train[['PassengerId', 'Survived', 'Sex', 'Gender']].head() 출력 결과에 대한 해석 가이드가 더해지면 좋겠습니다. 지금은 “잘 변환됐어” 정도로만 넘어가 아쉬워요.

    6. 유나 (비전공 대학생)

    • 강점: 문체가 부드럽고 대화가 끊기지 않아서 끝까지 읽기 쉬웠어요. 로즈 장면에서 자연스럽게 관심이 생겼습니다.

    • 개선 제안:

      • 중간에 “레이블 인코딩” 등 단어는 처음 나오는 순간만큼은 한 줄 해석이나 주석으로 처리되면 좋겠어요.

      • 데이터 분석이 익숙하지 않은 사람에게는 상관계수나 히트맵 해석이 다소 어렵게 느껴질 수 있어요. ‘색이 진할수록 관계가 강하다’ 같은 비유 표현도 고려해주세요.

    7. 크리틱 (구조 비평)

    • 강점: 단순 변수 추가로 성능 향상 → 상관관계 시각화 → 역사적 맥락이라는 구성이 논리적으로 잘 맞아떨어집니다.

    • 비판 제안:

      • 생존율 격차에 대한 감정적 해석이 강하게 작동하면서, 데이터 분석이라는 관점보다 도덕적 판단이나 영화 감상문처럼 느껴지는 구간이 생깁니다. 독자의 몰입을 돕지만, 논리 흐름이 흐릿해질 위험이 있습니다.

      • 프롬이 캐글 점수를 자랑스럽게 얘기하는 부분은 실제 독자가 따라 하기에는 진입장벽이 높아 보입니다. 결과만 간단히 전달해도 될 것 같습니다.


✨ 리비의 종합 요약

이 원고는 타이타닉 생존율과 성별 간의 관계를 데이터로 흥미롭게 풀어낸 매우 우수한 섹션입니다. “하나의 변수만으로 정확도가 10% 향상된다”는 메시지는 데이터 사이언스 초입에서 강력한 인상을 남깁니다. 특히 역사적 배경(버켄헤드 규율)과 연결된 통계 해석은 이 책이 가진 의미 탐구형 분석 철학에 잘 부합합니다.


✍️ 편집 요청 항목

항목

요청 내용

유형

1

Val. Score, Public Score 등 용어에 대한 간단한 각주 혹은 툴팁 추가 고려

용어 해설

2

map() 함수의 역할을 말풍선이나 추가 설명으로 보강

초심자 배려

3

상관계수 정렬 코드에 간단한 해설 덧붙이기 (abs()의 의미 등)

기술 보완

4

train[['PassengerId', ...]].head() 출력에 대해 시각적 해석 문장 추가

흐름 강화

5

"Gender 변수 하나로 10% 향상" 표현은 약간만 톤 다운 (훈련-검증 vs 캐글 점수 차이 주의)

표현 조정

6

히트맵 해석에 ‘색이 진할수록 관계가 강하다’ 등 직관적 해설 한 줄 추가

독자 공감

7

“버켄헤드 규율” 역사 섹션을 본문 말풍선으로 한두 문장 끌어올릴 것

배경 강화

8

프롬의 캐글 점수 제출 부분은 다소 과한 디테일, 요약 가능

정보량 조정


첨부D. 피드백 반영 후 수정본 예시 (단계 7 산출물)

※ 이 첨부는 섹션 2.1 「성별은 생존을 가르는 결정적 단서였을까?」의 수정본 반영 사례입니다.

리뷰 반영 사항 비교: Before와 After

1. 용어 설명 추가

Before:

버전

피쳐 개수

Val. Score

Public Score

맞은 사람 수

설명

1.3

5

0.73184

0.63397

265명

수치형 피쳐만 사용

2.1

6

0.82123

0.73444

307명

Gender 피쳐 추가

After:

버전

피쳐 개수

Val. Score

Public Score

맞은 사람 수

설명

1.3

5

0.73184

0.63397

265명

수치형 피쳐만 사용

2.1

6

0.82123

0.73444

307명

Gender 피쳐 추가

참고: Val. Score는 훈련 데이터에서 분리한 검증 데이터로 측정한 정확도이며,
Public Score는 캐글에 제출하여 받은 실제 테스트 데이터 기준 정확도입니다.

2. map() 함수 설명 보강

Before:

코더블: 그럼 map 함수를 사용해서 Sex 컬럼을 변환하고, 새로운 'Gender' 컬럼을 만들어볼게요. 테스트 데이터에도 같은 변환을 적용해야 함을 잊지 말아야 해요.

After:

다안: 가장 간단한 방법은 'male'을 0으로, 'female'을 1로 변환하는 거야. 이를 '레이블 인코딩(Label Encoding)'이라고 해. 이렇게 하면 컴퓨터가 쉽게 처리할 수 있지. 레이블 인코딩은 각 카테고리에 숫자를 할당하는 방식인데, 서로 관계가 없는 카테고리(예: 빨강, 초록, 파랑)를 숫자로 바꿀 때 유용해.
​
코더블: 그럼 map 함수를 사용해서 Sex 컬럼을 변환하고, 새로운 'Gender' 컬럼을 만들어볼게요. map 함수는 각 값을 우리가 지정한 다른 값으로 바꿔주는 역할을 해요. 테스트 데이터에도 같은 변환을 적용해야 함을 잊지 말아야 해요.

3. 상관계수 정렬 코드 해설

Before:

def corr_matrix(df, ft, count):
    corr = df.corr(numeric_only=True)
    count = min(count, len(corr.columns))
    top_corr = abs(corr[ft]).sort_values(ascending=False).iloc[:count]
​
    sz = min(15, count)
    plt.figure(figsize=(sz, sz-3))
    sns.heatmap(df[top_corr.index].corr(), vmax=1, vmin=-1, center=0, annot=True, cmap='coolwarm')
    plt.title('Correlation Matrix')
    plt.show()

After:

def corr_matrix(df, ft, count):
    corr = df.corr(numeric_only=True)
    count = min(count, len(corr.columns))
    # 상관계수의 절대값을 기준으로 정렬 - 관계의 강도를 중요시
    top_corr = abs(corr[ft]).sort_values(ascending=False).iloc[:count]
​
    sz = min(15, count)
    plt.figure(figsize=(sz, sz-3))
    sns.heatmap(df[top_corr.index].corr(), vmax=1, vmin=-1, center=0, annot=True, cmap='coolwarm')
    plt.title('Correlation Matrix')
    plt.show()

4. 데이터 출력 해석 보강

Before:

다안: 완벽해! 결과를 보면 Sex 컬럼의 'male', 'female' 값들이 Gender 컬럼에서는 0과 1로 잘 변환된 것을 확인할 수 있어. 여기서 0은 남성, 1은 여성을 의미하지.

After:

다안: 완벽해! 결과를 보면 Sex 컬럼의 'male', 'female' 값들이 Gender 컬럼에서는 0과 1로 잘 변환된 것을 확인할 수 있어. 여기서 0은 남성, 1은 여성을 의미하지. 첫 번째 승객은 남성('male')이라 Gender 값이 0, 두 번째와 세 번째 승객은 여성('female')이라 Gender 값이 1로 나타나는 걸 볼 수 있어.

5. 히트맵 해석 직관적 설명 추가

Before:

코더블: 보세요! 이렇게 상관계수를 정렬하니 훨씬 보기 좋네요. Gender와 Survived의 상관계수가 0.54로 가장 높게 나왔어요. 상관계수가 0.5 이상이면 두 변수 사이의 관계가 꽤 강하다고 볼 수 있어요. 이는 우리가 전에 본 다른 어떤 변수보다도 생존과의 관계가 강하다는 의미예요. 그래서 이 변수를 추가했을 때 예측 정확도가 크게 향상된 거였군요! 객실 등급(Pclass)도 -0.34로 꽤 중요한 변수였지만, 성별보다는 영향력이 적었네요.

After:

코더블: 보세요! 이렇게 상관계수를 정렬하니 훨씬 보기 좋네요. 히트맵에서 색이 진할수록 두 변수 간의 관계가 강하다는 의미예요. 빨간색은 양의 상관관계(함께 증가), 파란색은 음의 상관관계(하나가 증가하면 다른 하나는 감소)를 나타내요. Gender와 Survived의 상관계수가 0.54로 가장 높게 나왔어요. 상관계수가 0.5 이상이면 두 변수 사이의 관계가 꽤 강하다고 볼 수 있어요. 이는 우리가 전에 본 다른 어떤 변수보다도 생존과의 관계가 강하다는 의미예요. 그래서 이 변수를 추가했을 때 예측 정확도가 크게 향상된 거였군요! 객실 등급(Pclass)도 -0.34로 꽤 중요한 변수였지만, 성별보다는 영향력이 적었네요.

6. 버켄헤드 규율 맥락 본문으로 가져오기

Before:

다안: 아주 좋은 통찰이야! 우리는 지난 시간에 수치형 변수만 사용해서 모델을 만들었잖아. 객실 등급, 나이, 요금 등의 정보로 0.63397의 정확도를 달성했지. 하지만 영화에서 봤듯이, 타이타닉 침몰 당시에는 "여성과 아이 먼저"라는 원칙이 적용됐어. 성별 정보를 추가하면 예측 정확도가 얼마나 향상될지 확인해보자!

After:

다안: 아주 좋은 통찰이야! 우리는 지난 시간에 수치형 변수만 사용해서 모델을 만들었잖아. 객실 등급, 나이, 요금 등의 정보로 0.63397의 정확도를 달성했지. 하지만 영화에서 봤듯이, 타이타닉 침몰 당시에는 "여성과 아이 먼저"라는 원칙이 적용됐어. 이는 당시 해상 구조의 관행이었던 '버켄헤드 규율'에서 비롯된 것으로, 1852년 영국 군함 침몰 사건에서 여성과 아이를 먼저 구조하고 남성 군인들이 희생한 역사적 사건에서 유래했지. 성별 정보를 추가하면 예측 정확도가 얼마나 향상될지 확인해보자!

7. 프롬의 캐글 점수 언급 부분 간결화

Before:

프롬: 방금 이 모델의 예측 결과를 캐글에 제출해봤어요! 0.73444의 점수를 얻었답니다. 이건 418명의 test 데이터 중 307명의 생존 여부를 맞혔다는 의미예요. 수치형 변수만 사용했을 때의 점수가 0.63397(265명)이었던 것과 비교하면, Gender 변수를 추가함으로써 42명을 더 정확하게 예측할 수 있게 되었네요!

After:

프롬: 방금 모델의 예측 결과를 캐글에 제출해봤어요! 0.73444의 점수를 얻었답니다. 이전에 수치형 변수만 사용했을 때보다 예측 정확도가 약 10% 상승했네요. 상당히 의미 있는 향상이에요!
2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요