topic난이도 · 약 20

딕셔너리 — 단어장 만들기

딕셔너리의 키-값 구조로 어휘 사전을 만들고, Counter로 단어 빈도를 측정한다.

#딕셔너리#Counter#어휘 사전#빈도 분석
왜 배우는가

GPT가 텍스트를 처리하려면 모든 단어에 고유 번호를 부여해야 한다. '안녕'→42, '세계'→108처럼. 이것이 바로 어휘 사전(vocabulary)이다. 딕셔너리 — 키와 값을 연결하는 Python의 핵심 자료구조로 어휘 사전을 만든다.

토크나이저 비교 — 단어 단위 vs 서브워드 vs 문자 단위

딕셔너리는 이름표(키)로 값을 찾는 자료구조입니다

용어설명
어휘 사전모델이 인식하는 모든 토큰의 집합
딕셔너리키-값 쌍으로 데이터를 저장하는 자료구조

딕셔너리는 중괄호 {}로 만들고, 키:값 쌍으로 데이터를 저장한다. vocab["파이썬"]은 2를 반환한다.

dict[키] — 값 조회 dict[새키] = 값 — 항목 추가 키 in dict — 키 존재 여부 확인 len(dict) — 항목 개수

Counter는 각 요소가 몇 번 등장했는지 셉니다

Counter는 dict의 하위 클래스로, 요소의 빈도를 자동으로 계산한다. most_common(n)으로 상위 n개를 가져온다.

빈도가 높은 단어 = 어휘 사전에 반드시 포함

텍스트에서 단어 빈도를 직접 세어봅시다

corpus를 split()으로 토큰화하고 Counter로 빈도를 센 뒤 most_common(5)로 상위 5개를 출력한다.

실제 텍스트의 단어 빈도는 지프의 법칙을 따릅니다

지프의 법칙(Zipf's Law): 가장 빈번한 단어의 빈도는 2위의 2배, 3위의 3배... 조사('은/는', '이/가')가 압도적으로 많고, 의미 있는 단어('딥러닝')는 적습니다. 이것이 BPE 같은 서브워드 토큰화가 필요한 이유입니다.

단어 → 정수 매핑, LLM 어휘 사전의 핵심입니다

<PAD>와 <UNK> 특수 토큰을 먼저 등록한 뒤, 빈도순으로 단어→정수 매핑을 만들고, 어휘 사전에 없는 단어는 <UNK>으로 처리한다.

<PAD> — 길이 맞추기용 빈 토큰 <UNK> — 어휘 사전에 없는 단어 실제 GPT-4의 어휘 사전은 약 10만 개의 토큰을 포함합니다.

딕셔너리로 나만의 단어 빈도 분석기를 직접 만들어봅시다

dict[key]와 dict.get(key, default) 두 방법으로 빈도를 세고, 결과가 동일함을 확인한다.

딕셔너리 기본 조작설명
dict[키]값 조회 — 없는 키면 KeyError 발생
dict.get(키, 기본값)안전한 조회 — 없는 키면 기본값 반환
dict[새키] = 값새 항목 추가 또는 기존 항목 수정
Counter와 어휘 사전설명
Counterdict의 하위 클래스 — 요소 빈도를 자동으로 계산
most_common(n)빈도 상위 n개 항목을 튜플 리스트로 반환
어휘 사전단어 → 정수 매핑 (<PAD>=0, <UNK>=1, 이후 빈도순)

GPT-4의 어휘 사전은 약 10만 개 토큰! 딕셔너리가 LLM의 '단어장'을 만드는 핵심 도구입니다.

실기 드릴 5문항
edit실기 드릴 · 단답형

d = {"a": 1, "b": 2}에서 d["c"] = 3 실행 후 len(d)의 결과는?

check_circle실기 드릴 · OX

Counter는 딕셔너리의 하위 클래스이다

edit실기 드릴 · 단답형

딕셔너리에 존재하지 않는 키로 dict[없는키]를 접근하면 어떻게 되나요?

edit실기 드릴 · 단답형

d = {"a": 1, "b": 2}에서 d.get("c", 0)의 결과는?

edit실기 드릴 · 단답형

Counter("banana")에서 가장 빈도가 높은 문자는?