압축 프로그램으로 문장을 만들 수 있을까요?

이 글은 컴퓨터에 기본으로 들어있는 압축 도구를 문장 생성 프로그램으로 쓸 수 있는지 시험해 보는 실험을 다룹니다. 글쓴이는 압축과 예측이 본질적으로 같다는 원리에 착안해, 복잡한 인공지능 신경망 없이 운영체제에 포함된 압축 도구와 파이썬 언어만으로 글을 이어 쓰는 방식을 구현했습니다. 구체적으로는 셰익스피어 희곡 같은 특정 글을 먼저 읽혀서 분위기를 익히게 한 뒤, 다음에 나올 글자 조각을 압축했을 때 파일 크기가 가장 작아지는 후보를 찾는 방식으로 문장을 이어 나갑니다.

이 실험이 주목받는 이유는 복잡한 인공지능 모델을 쓰지 않고도 압축 알고리즘 내부에 숨겨진 확률 모델을 활용해 문장을 예측할 수 있는지 실제로 확인해 볼 수 있기 때문입니다. 압축 도구는 자주 나오는 데이터는 적은 용량으로, 드물게 나오는 데이터는 많은 용량으로 표현하는데 이 과정 자체가 데이터를 예측하는 것과 같습니다. 다만 압축 도구는 압축된 파일의 크기를 정수 단위로만 측정하기 때문에 글자 하나를 더했을 때 크기가 변하지 않는 미세한 오차가 발생합니다. 이 문제를 해결하기 위해 여러 가능성을 미리 내다보고 가장 좋은 길을 찾는 탐색 과정을 거쳐 문장을 만들어 낸다는 점에서 색다른 시도입니다.

컴퓨터 압축 프로그램이 데이터를 압축하는 과정은 사실 다음에 나올 내용을 예측하는 과정과 같습니다. 압축 프로그램은 자주 나오는 내용에는 적은 용량을 쓰고 예상하지 못한 내용에는 많은 용량을 쓰기 때문입니다. 이 원리를 이용하면 어떤 문장 뒤에 특정 후보 문장이 이어질 때, 둘을 합쳐서 압축해 보고 파일 크기가 작을수록 모델이 더 잘 예측한 문장이라고 평가할 수 있습니다. 하지만 단순히 압축 파일의 크기만 정수 단위로 측정해 당장 한 글자씩만 고르면 오차 때문에 좋은 문장이 나오지 않습니다. 이를 해결하기 위해 여러 가능성을 동시에 검토하고 압축이 가장 잘 되는 전체 문장을 고르는 방식으로 글 생성 품질을 크게 높였습니다.

이 글의 내용은 당장 일반 독자가 일상생활에서 바로 쓰거나 유용한 기능을 얻을 수 있는 성격의 것은 아니며 기술적인 원리를 다루는 가벼운 실험에 가깝습니다. 다만 개발자나 컴퓨터 과학에 관심이 있는 독자라면 데이터 압축 알고리즘이 내부적으로 확률과 예측을 다루는 방식을 색다른 시각에서 바라보는 계기가 될 수 있습니다.