- 1980년대의 Mark V. Shaney 프로그램에서 영감을 받아, 약 30줄의 Python 코드로 구현된 간단한 마르코프 텍스트 생성기 Mark V. Shaney Junior를 제작
- 이 모델은 세 단어(trigram) 기반으로 다음 단어를 확률적으로 예측하며, 200여 개의 블로그 글(약 20만 단어) 을 학습 데이터로 사용
- 생성된 문장은 Lisp, Emacs, 수학, 프로그래밍 등 블로그 주제의 단어들을 섞어 만든 의미 없는 문장(gibberish) 형태로 출력
- 모델의 차수(order) 를 높이면 문장이 더 일관되지만, 5 이상에서는 원문을 그대로 인용해 창의성이 사라짐
- 대규모 언어모델(LLM) 시대에도, 이러한 단순한 마르코프 모델의 구조적 명료함은 언어 생성 원리를 이해하는 좋은 출발점으로 제시됨
Mark V. Shaney Junior 프로그램 개요
-
Mark V. Shaney Junior는 1980년대 Usenet에서 활동한 가상 사용자 Mark V. Shaney를 모방한 텍스트 생성기
- 원본은 마르코프 모델을 이용해 게시글을 자동 생성하던 프로그램
- 이번 구현은 그 아이디어를 단순화한 미니멀 버전으로, GitHub에 공개됨
- 전체 코드가 약 30줄의 Python으로 구성되어 있으며, 효율성보다 단순성을 중시
- 마르코프 모델을 처음 접하는 사람도 20분 이내에 이해 가능한 수준
취미로서의 실험적 프로그래밍
- 작성자는 특정 문제 해결이 아닌 아이디어 탐구 목적의 프로그래밍을 즐겨 수행
- 다양한 상태공간을 가진 마르코프 체인을 여러 차례 실험
- 이러한 실험 코드를 정리해 GitHub나 Codeberg에 공유
-
Mark V. Shaney Junior 역시 이러한 실험 중 하나로, 완성도를 높여 공개한 사례
블로그 데이터를 이용한 텍스트 생성
- 모델을 찰스 디킨스의 『크리스마스 캐럴』 로 학습시켜 테스트한 후,
24년간의 블로그 글(200여 개, 약 20만 단어) 을 입력 데이터로 사용
- 생성된 문장은 프로그래밍 명령어, 수학 용어, 에디터 명령 등이 뒤섞인 비논리적 문장으로 출력
- 예: Emacs 명령, Lisp 코드, 수학 용어 등이 무작위로 결합된 문장
- 일부 문장은 블로그의 특정 글에서 단어를 가져와 의미 없는 조합을 형성
- 예: “Lisp source file”과 “self-esteem”이 서로 다른 글에서 추출되어 결합
마르코프 속성과 알고리듬 구조
- 기본 설정은 trigram(3단어) 기반으로,
앞의 두 단어를 키(key)로, 세 번째 단어를 값(value)으로 저장하는 맵 구조 사용
- 텍스트 생성 과정
- 임의의 단어쌍을 선택 → 가능한 다음 단어 중 하나를 균등 확률로 선택
- 새로 선택된 단어와 직전 단어로 새로운 쌍을 구성해 반복
- 더 이상 후속 단어가 없거나 100단어 제한에 도달하면 종료
- 동일한 trigram이 여러 번 등장하면, 해당 후속 단어가 리스트에 중복 저장되어
출현 빈도에 비례한 확률적 선택이 이루어짐
- 이 과정은 현재 상태에만 의존하는 확률적 전이로,
수식으로는 P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ) 형태로 표현
- 이 기억 없음(memoryless) 특성이 마르코프 성질의 핵심
추가 실험과 모델 차수 조정
- 기본 차수(order)는 2이며, 명령행 인자로 변경 가능
- 차수를 3~4로 높이면 문장이 더 일관되고 자연스러움
- 예시: IRC 명령어와 수학 개념이 섞인 비교적 논리적인 문장 생성
- 그러나 차수를 5로 높이면 원문을 그대로 복제하는 경향이 생겨
창의적 무의미함(gibberish) 이 사라짐
- 초기 프롬프트를 주어 텍스트를 생성할 수도 있음
- 예: “Finally we”로 시작하는 문장을 입력하면,
Emacs, MATLAB, GNU bash 등의 단어가 혼합된 긴 문장 생성
단순 모델의 의의
- 2025년 현재 대규모 언어모델(LLM) 이 주류지만,
마르코프 모델은 전역 구조나 장기 의존성을 포착하지 못함
- 그럼에도 불구하고, 단순한 설계와 구현의 명료함 덕분에
언어 생성 원리를 학습하기 위한 입문 모델로 가치가 있음
- 작성자는 “이 모델이야말로 언어모델의 ‘Hello, world’ ”라고 표현