← 전체 해설 목록  ·  week-01 · 3강

3강 — 개발 환경 세팅 (Google Colab) & 임베딩 실습

🎯 학습 목표

📖 해설

1. Google Colab — 브라우저에서 바로 파이썬

코딩을 하려면 환경이 필요하죠. 그런데 내 컴퓨터에 뭘 깔 필요 없이 Google Colab을 쓰면 됩니다. - 브라우저에서 파이썬을 바로 실행하는 무료 서비스예요. 설치도 필요 없고, 내 컴퓨터 사양과도 무관합니다. 인터넷만 되면 OK고, 구글 계정만 있으면 돼요. (GPU도 무료로 쓸 수 있지만, 이 과정엔 CPU로 충분합니다.) - 한마디로 "구글 문서(Docs) + 파이썬 코딩 환경"이라고 생각하면 쉽습니다. 평소 쓰던 구글 문서처럼 브라우저에서 열어 작업하고, 작성한 노트는 구글 드라이브에 자동으로 저장돼요. - 접속은 이렇게 합니다 — 브라우저 주소창에 colab.research.google.com 입력(또는 검색창에 "Colab" 검색) → 구글 로그인 → "새 노트". (또는 Google Drive → 새로 만들기 → 더보기 → Colaboratory로도 새 노트를 만들 수 있어요.) - 우리는 과정 초반엔 Colab으로 개발하고, 나중에 앱(대시보드)을 만들 때는 내 PC에 파이썬을 설치해서 진행할 거예요.

2. 셀(cell) 단위로 실행합니다

Colab은 셀이라는 코드 덩어리 단위로 실행해요. 빈칸(셀)에 코드를 적고 이렇게 실행합니다. - Ctrl+Enter: 그 셀 실행 - Shift+Enter: 그 셀 실행 + 아래에 새 셀 추가

셀에는 두 종류가 있어요. - 코드 셀: 파이썬 코드를 적고 실행하는 칸 (실제 분석은 여기서 합니다) - 텍스트 셀: 코드가 아니라 설명·메모를 적는 칸 (제목, 단계 설명 같은 걸 적어 두면 노트가 깔끔해집니다)

첫 실습은 전통의 print("안녕하세요!")예요. 괄호 안의 내용을 화면에 그대로 출력합니다. 코드 셀에 적고 Ctrl+Enter를 누르면 바로 아래에 결과가 나와요. 처음 실행하면 잠깐 "연결 중"이 뜨고(하드웨어가 할당됩니다), 그 다음부터는 바로 실행돼요.

print("안녕하세요!")
# 예상 결과: 안녕하세요!

3. 라이브러리 = 남이 만들어 둔 코드(레고 블록)

라이브러리는 다른 개발자가 미리 만들어 공개한 코드 모음입니다. 데이터 처리 코드를 처음부터 짤 필요 없이 가져다 조립하면 돼요. - 설치: pip install 라이브러리이름 (Colab 셀에서는 앞에 !를 붙여 !pip install …) - 사용: import 라이브러리이름

이 과정에서 쓸 주요 라이브러리는 이렇습니다.

라이브러리 역할
pandas 엑셀 같은 표 데이터 처리 (대표격)
requests 웹에서 데이터 가져오기
openai LLM API 호출 (ChatGPT 만든 회사. 이 구조를 표준처럼 따릅니다)
streamlit 웹 대시보드 만들기 (최종 결과물용)

pandas는 워낙 자주 써서 import pandas as pd처럼 별칭(pd)을 붙여 쓰는 게 관행이에요. 이후엔 pd.…로 부릅니다.

설치가 잘 됐는지 확인하고 싶으면 버전 번호를 출력해 보면 됩니다. 버전이 정상적으로 찍히면 그 라이브러리를 쓸 준비가 된 거예요.

# 설치 (pandas는 Colab에 기본으로 깔려 있어서 보통 다시 설치하지 않아도 됩니다)
!pip install pandas requests

import pandas as pd
print(f"pandas 버전: {pd.__version__}")   # 버전 번호가 찍히면 정상

4. pandas로 표 데이터 만들어 보기

pandas의 핵심은 DataFrame(데이터프레임)이라는 표 자료형이에요. 엑셀의 시트 한 장이라고 생각하면 됩니다. 우리가 다룰 게임 리뷰도 결국 "리뷰 글 + 별점"이 줄줄이 쌓인 표니까, 표를 만드는 감부터 잡아 봅시다.

import pandas as pd

# 딕셔너리(이름표가 붙은 묶음)로 열(column)을 정의합니다.
# '리뷰' 열과 '별점' 열을 만들고, 각 열에 값을 리스트로 넣습니다.
data = {
    "리뷰": ["재미있어요", "별로예요", "최고입니다"],
    "별점": [5, 2, 5],
}

df = pd.DataFrame(data)   # 딕셔너리를 표(DataFrame)로 변환
print(df)

이렇게 하면 리뷰와 별점이 나란히 정렬된 표가 출력됩니다. 앞으로 수집한 리뷰 데이터도 전부 이 DataFrame 형태로 다루게 돼요.

5. "문법 암기"보다 "무엇을 할지 + AI에게 구체적으로 요청"

파이썬을 처음 하면 변수·반복문·함수·클래스 같은 문법이 잔뜩 보여서 막막하죠. 그런데 여기서 가장 중요한 건 이겁니다. - 복잡한 문법을 다 외우지 않아도 됩니다. Colab에는 AI 도구(Gemini)가 붙어 있어서, "판다스 처음인데 대표 샘플 코드 작성해줘"처럼 자연어로 요청하면 코드를 만들어줘요. - 단, AI를 전적으로만 믿으면 안 됩니다. ① 내가 무엇을 하고 싶은지 먼저 정하고 → ② AI로 구현하고 → ③ AI가 어떻게 짰는지 살펴보며 감각을 키우세요. 요청은 구체적일수록 결과가 좋습니다.

6. 임베딩 실습 — 2강 이론을 코드로 (직접 실행)

2강에서 "단어 → 숫자 좌표(임베딩)"를 배웠죠. 이번엔 sentence-transformers 라이브러리로 직접 변환해 봅시다. 아래 코드를 Colab 셀에 차례로 붙여넣어 직접 확인해 보세요. (실행만 하려면 자동 생성된 notebooks/3강_실습.ipynb를 열면 됩니다.)

① 라이브러리 설치

# Colab에서는 맨 앞에 ! 를 붙여 실행 (로컬 주피터면 터미널에서 pip install)
!pip install -q sentence-transformers

② 임베딩 모델 로딩 — 한국어를 포함한 다국어 모델

from sentence_transformers import SentenceTransformer, util

# 다국어(한국어 포함) 임베딩 모델. 처음엔 모델을 내려받느라 조금 걸린다.
model = SentenceTransformer("distiluse-base-multilingual-cased-v1")

③ 단어 하나를 임베딩(숫자 좌표)으로 — "안녕하세요"가 숫자 512개로 바뀐다

emb = model.encode("안녕하세요")
print("차원 수:", emb.shape)   # (512,) → 숫자 512개
print("앞 10개:", emb[:10])    # 너무 많으니 앞 10개만

④ 두 단어의 코사인 유사도 — 1에 가까울수록 비슷

def similarity(a, b):
    e = model.encode([a, b])               # 두 단어를 각각 임베딩으로
    return float(util.cos_sim(e[0], e[1]))  # 코사인 유사도 (-1 ~ 1)

for a, b in [("사과", "바나나"), ("행복", "즐거움"), ("행복", "슬픔")]:
    print(f"{a} ↔ {b}: {similarity(a, b):.2f}")

실행하면 "행복 ↔ 즐거움"이 가장 높게 나옵니다. 2강에서 배운 "가까우면 비슷"이 코드로 확인되는 거예요.

⑤ 단어가 아니라 문장으로 — 실제 리뷰에 더 가까운 실습

우리가 분석할 건 단어 하나가 아니라 리뷰 문장이죠. 문장 여러 개를 한꺼번에 임베딩해서 서로의 유사도를 모두 비교해 봅시다. 이번엔 문장 의미를 잘 잡아 주는 paraphrase-multilingual-MiniLM-L12-v2 모델을 써 볼게요. (앞의 모델을 그대로 써도 패턴은 비슷하게 나옵니다.)

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

sentences = [
    "이 게임 정말 재미있어요",
    "플레이가 너무 즐거워요",
    "오늘 날씨가 좋네요",
]

embeddings = model.encode(sentences)   # 문장 3개를 한 번에 임베딩

# 모든 문장 쌍의 유사도를 출력 (i보다 뒤에 있는 j만 비교해 중복을 피함)
for i in range(len(sentences)):
    for j in range(i + 1, len(sentences)):
        sim = util.cos_sim(embeddings[i], embeddings[j]).item()
        print(f"'{sentences[i]}' vs '{sentences[j]}'")
        print(f"  → 유사도: {sim:.3f}\n")

게임에 대한 두 문장("재미있어요" ↔ "즐거워요")은 유사도가 높게(예: 0.8 안팎) 나오고, 게임과 무관한 "날씨" 문장과는 낮게(예: 0.2 안팎) 나옵니다. 게임 관련 문장끼리는 가깝고, 주제가 다른 문장과는 멀다 — 임베딩이 단어를 넘어 문장 의미까지 숫자로 잡아낸다는 걸 보여 주는 결과예요.

⚠️ 유사도 숫자 값은 모델마다, 실행 환경마다 다릅니다. 위에 적은 값(0.8·0.2 등)과 똑같지 않아도 정상이에요 — 중요한 건 "게임 문장끼리 > 게임 vs 날씨" 같은 순서·패턴입니다.

활용: 임베딩으로 의미의 비슷함을 숫자로 잴 수 있으면 → 비슷한 리뷰 그룹화, 검색에 쓸 수 있어요.

🔑 핵심 용어

용어 쉬운 설명
Google Colab 브라우저에서 설치 없이 파이썬을 실행하는 무료 서비스
셀(cell) Colab에서 코드를 실행하는 한 덩어리 단위
라이브러리 남이 만들어 공개한 코드 모음(레고 블록)
pip install 라이브러리를 설치하는 명령
import 설치한 라이브러리를 불러와 쓰겠다는 선언
DataFrame pandas의 표 자료형(엑셀 시트 한 장). 리뷰·별점 같은 데이터를 담는 기본 그릇
sentence-transformers 단어/문장을 임베딩으로 바꿔 주는 라이브러리

🎮 게임 기획자 시점

"문법 암기보다 무엇을 만들지 정하고 AI에 구체적으로 요청하라"는 이 강의의 메시지는 기획자의 강점과 정확히 맞물립니다. 기획자는 무엇을·왜 만들지를 정의하는 사람이니까요. 코드는 AI에게 맡기되, 요청을 구체적으로 쪼개는 능력(= 기획서를 잘 쓰는 능력)이 그대로 개발 생산성이 됩니다.

⚠️ 흔한 오해 / 짚고 갈 점

✅ 30초 정리

  1. Colab: 설치 없이 브라우저에서 파이썬을 셀 단위로 실행합니다.
  2. 라이브러리(pandas·requests·openai·streamlit)는 pip install로 깔고 import로 씁니다 — 직접 다 만들지 않아요. pandas의 DataFrame으로 리뷰·별점 표도 만들어 봤습니다.
  3. sentence-transformers로 단어와 문장을 임베딩으로 바꾸고 유사도를 재서, 2강 이론(가까우면 비슷)을 코드로 확인했습니다.

▶️ 다음 강 연결

이제 환경과 도구가 준비됐어요. 그럼 분석할 데이터는 어디서 가져올까요? → 4강: 데이터 수집 3가지 방법(공개셋·API·스크래핑)과 Steam API.

전체📚 강의 목록