말을 세는 기계
문법은 규칙일까, 확률(probability)일까? 파니니의 문법에서 촘스키의 위계, 섀넌의 영어 엔트로피(entropy), 오늘날의 언어 모델(language model)까지.
이 글의
1957년 스물여덟 살의 언어학자 노엄 촘스키는 얇은 책 『통사 구조』에 영어 문장 두 개를 나란히 적었습니다.
Colorless green ideas sleep furiously.
Furiously sleep ideas green colorless.
우리말로 옮기면 "색 없는 초록 생각들이 맹렬히 잠잔다"와 "맹렬히 잠잔다 생각들이 초록 색 없는"쯤 됩니다. 둘 다 뜻이 통하지 않고, 그때까지 누가 써 본 적도 없었을 문장입니다. 그런데 영어를 하는 사람은 누구나 첫 문장은 이상하긴 해도 문장이고, 둘째는 낱말을 쏟아 놓은 것일 뿐이라고 느낍니다. 촘스키의 결론은 이랬습니다. 문장이 문법에 맞는가는 뜻과도, 그 문장을 전에 본 적이 있는가와도, 얼마나 자주 나오는가와도 다른 문제다. 그러니 말하는 사람의 머릿속에는 낱말 빈도의 표가 아니라 규칙이 있어야 한다.
40여 년 뒤 반론이 나왔습니다. 2000년 컴퓨터 언어학자 페르난도 페레이라는 신문 기사로 훈련한 단순한 확률 모형에 두 문장을 넣어 보았습니다. 문장마다 그 문장이 나올 확률을 매기도록 신문 글에서 셈을 해 둔 프로그램입니다. 이 모형은 낱말을 몇 개의 무리로 묶어 두고 이웃한 무리의 짝이 얼마나 자주 나오는지만 알 뿐이었는데, 첫 문장에 둘째보다 약 20만 배 높은 확률을 주었습니다. 본 적 없는 문장이라도 확률은 매길 수 있다는 것입니다.
이 글은 이 두 대답이 2,400년 동안 어떻게 엎치락뒤치락했는지를 따라갑니다. 한쪽에는 규칙을 적는 사람들, 곧 고대 인도의 파니니에서 촘스키까지가 있고, 다른 쪽에는 세는 사람들, 곧 글자를 헤아려 암호를 푼 9세기 바그다드의 알킨디에서 마르코프와 섀넌, 그리고 앞의 글을 보고 다음 낱말의 확률을 매기는 오늘날의 언어 모델까지가 있습니다.
밑바닥의 물음은 하나입니다. 머리는 유한한데 우리는 들어 본 적 없는 문장을 끝없이 만들고 알아듣습니다. 프로이센의 학자이자 교육 개혁가였던 빌헬름 폰 훔볼트가 유작 『인간 언어 구조의 다양성에 대하여』(1836)에서 말한 '유한한 수단의 무한한 사용'은 어떻게 가능할까요? 촘스키는 1960년대에 이 구절을 자기 이론의 출발점으로 다시 불러냈습니다. 가능한 문장은 무한히 많지만, 그 무한은 자연수(natural number)와 짝지을 수 있는 가산 집합(countable set)의 무한입니다. 그렇다면 유한한 규칙이 그것들을 하나씩 늘어놓을 수 있을지도 모릅니다. 무한을 짝짓기로 세는 법은 「무한에도 크기가 있다」에 있습니다.
1 · 기원전 4세기의 알고리즘파니니의 규칙
이 절의 물음은 이것입니다. 한 언어의 올바른 낱말과 문장을 모두, 유한한 규칙 목록으로 적어 낼 수 있을까? 2,400여 년 전 인도에서 이미 그 일을 거의 해낸 사람이 있습니다.
규칙으로 언어를 적는 일을 아주 이른 시기에 가장 멀리까지 밀고 간 사람은 인도의 파니니입니다. 그의 연대는 확실하지 않아서 대개 기원전 5–4세기로 봅니다. 전승에 따르면 그는 지금의 파키스탄 북부, 간다라 지방의 샬라투라 출신입니다. 그가 남긴 『아슈타디야이』('여덟 장')는 산스크리트를 약 4,000개의 짧은 규칙으로 적은 문법입니다. 이 문법은 '이 낱말은 이렇게 쓴다'는 목록이 아닙니다. 어근과 접사에서 출발해 규칙을 차례로 적용하면 올바른 낱말과 문장이 만들어져 나오는 생성 장치입니다. 어근은 낱말에서 뜻의 뿌리가 되는 부분(우리말 '먹었다'의 '먹-')이고, 접사는 거기 붙어 뜻이나 문법을 더하는 조각('-었-', '-다')입니다.
동기는 종교에 있었습니다. 인도에서 가장 오래된 경전인 베다의 찬가는 글자가 아니라 입에서 입으로, 한 음절도 틀리지 않게 전해져야 했습니다. 문법은 음성학·운율학(prosody)과 함께 베다를 지키는 보조 학문의 하나였고, 그 규칙들도 외우기 좋게 극도로 압축되었습니다. 파니니 문법의 앞에 붙은 '시바 수트라'는 산스크리트의 소리를 14줄로 늘어놓고 줄마다 끝에 표지 글자를 붙였습니다. 그러면 첫 소리와 표지 글자 하나만으로 소리의 무리를 부를 수 있습니다. 첫 두 줄은 'a i u ṇ'과 'ṛ ḷ k'이고, 줄 끝의 ṇ과 k는 소리가 아니라 표지입니다. ik는 'i에서 시작해 표지 k까지 가며 표지를 빼고 모은 소리', 곧 'i, u, ṛ, ḷ'입니다. 같은 방식으로 ac는 '모든 모음', hal은 '모든 자음'을 부릅니다. 오늘날의 정규 표현식(regular expression)에서 [a-z]로 글자의 범위를 적는 것과 같은 발상입니다. 한편 운율학자들이 음절의 무늬를 빠짐없이 세는 법을 찾다가 이진법(binary)과 파스칼의 삼각형(Pascal's triangle)에 이른 이야기는 「세지 않고 세기」에 있습니다.
규칙의 모양도 눈여겨볼 만합니다. 파니니는 산스크리트의 격 어미로 규칙의 문법을 만들었습니다. 격 어미는 명사 끝에 붙어 문장 속 역할을 알려 주는 부분으로, 우리말 조사와 비슷합니다. 속격은 '-의', 주격은 '-가', 탈격은 '-에서(부터)', 처격은 '-에'에 해당합니다. 파니니의 규칙에서 속격으로 적은 것은 바뀌는 소리, 주격은 바뀐 결과, 탈격은 바로 앞의 환경, 처격은 바로 뒤의 환경입니다. 그래서 규칙 하나는 "앞이 A이고 뒤가 B일 때 X를 Y로 바꾼다"는 뜻이 됩니다.
20세기 언어학의 표기로 쓰면
모음이 만날 때 소리가 바뀌는 규칙(연성) 몇 개를 돌려 봅시다. 두 낱말은
규칙 6.1.77(6장 1절 77번) iko yaṇ aci를 풀어 보면 격의 문법이 보입니다. ikaḥ(속격)는 바뀔 소리 ik, yaṇ(주격)은 바뀐 결과, aci(처격)는 '모음 앞에서'라는 조건입니다. 세 낱말로 된 규칙 하나가 네 쌍의 소리 바꿈(i→y, u→v, ṛ→r, ḷ→l)을 한꺼번에 적습니다. 예를 들어 dadhi + atra에서는 i가 모음 a 앞에 있으니 y로 바뀌어 dadhyatra가 됩니다.
sadā + eva에서는 규칙 두 개가 동시에 들어맞습니다. 파니니 문법에는 이런 충돌을 푸는 메타 규칙, 곧 규칙을 다루는 규칙이 있습니다. 1.4.2는 충돌하면 뒤에 나오는 규칙을 따르라고 하고, 전통적인 해석은 더 좁은 경우를 다루는 예외 규칙이 일반 규칙을 이긴다는 원리를 덧붙입니다. 정리하면, 파니니는 규칙을 어떤 순서로 적용할지까지 규칙으로 정했습니다. 오늘날의 프로그램이 하는 일과 같습니다.
이렇게 짧게 압축된 규칙은 해설 없이는 읽기 어려웠고, 그래서 해설의 전통이 2,000년 넘게 이어졌습니다. 기원전 3세기 무렵 카티아야나는 규칙마다 보충하거나 고칠 점을 짧은 주석(바르티카)으로 달았고, 기원전 2세기 무렵 파탄잘리는 두 사람의 글을 묻고 답하는 형식으로 풀어 『마하바시야』('큰 주석')를 썼습니다. 1.4.2를 '목록에서 뒤에 오는 규칙이 이긴다'로 읽는 해석과, 그것만으로는 틀린 낱말이 나오는 경우를 막는 여러 보조 원리도 이 전통 안에서 굳어졌습니다. 그런데 2022년 공개된 케임브리지 대학의 박사 논문에서 리시 라즈포파트는 1.4.2의 para('다른 쪽', '뒤')를 규칙 목록의 순서가 아니라 낱말 안의 자리, 곧 '오른쪽'으로 읽어야 한다고 주장했습니다. 낱말의 왼쪽 부분에 걸리는 규칙과 오른쪽 부분에 걸리는 규칙이 부딪치면 오른쪽 규칙을 택하라는 것입니다. 그는 이렇게 읽으면 보조 원리 없이도 올바른 꼴이 나온다는 것을 보였습니다. 이 해석이 전통 해석을 대신할지는 반론도 있어 아직 논의가 이어지고 있습니다.
1959–60년 IBM의 존 배커스와 덴마크의 컴퓨터 과학자 페테르 나우르는 프로그래밍 언어 ALGOL의 문법을 적으려고 표기법 하나를 다듬었습니다(배커스–나우르 형식(Backus–Naur form), BNF). 이 표기는 파니니와 거의 같은 일을 합니다. BNF의 규칙 한 줄은 "<수> ::= <숫자> | <숫자><수>"처럼 왼쪽의 기호를 오른쪽의 기호열로 바꿔 쓸 수 있다고 적습니다(이 예는 '수는 숫자 하나이거나, 숫자 뒤에 다시 수가 붙은 것'이라는 뜻입니다). 나우르가 편집한 「ALGOL 60 보고서」(1960)는 프로그래밍 언어의 문법 전체를 이런 규칙으로 적어, 뒤의 언어들이 널리 따르는 본보기가 되었습니다. 1967년 미국의 컴퓨터 과학자 피터 잉거먼은 이 표기를 '파니니–배커스 형식'이라 부르자고 제안했습니다. 20세기 미국 구조주의(structuralism) 언어학을 이끈 레너드 블룸필드도 파니니의 문법을 인간 지성의 가장 위대한 기념비 가운데 하나라고 불렀습니다. 문법을 규칙으로 적은 언어 위에서 이번에는 프로그램의 '타입(type)'을 규칙으로 검사하게 된 이야기는 「증명은 프로그램이다」에 있습니다.
비슷한 일은 다른 곳에서도, 대개 경전과 고전을 정확히 전하려는 필요에서 일어났습니다. 그리스에서는 호메로스가 그 경전이었습니다. 알렉산드리아의 학자들은 호메로스의 원문을 바로잡다가 문법을 체계화했고, 기원전 2세기의 문법학자 디오니시오스 트락스의 이름으로 전하는 『문법 기술』은 낱말을 명사, 동사, 분사, 관사, 대명사, 전치사, 부사, 접속사의 여덟 품사(part of speech)로 나누었습니다. 이 분류는 4세기 로마의 문법학자 도나투스와 6세기 초 콘스탄티노폴리스의 프리스키아누스를 거쳐 1,000년 넘게 유럽 학교의 라틴어 문법이 되었습니다. 문장의 낱말마다 품사를 붙이는 7절의 품사 태깅(part-of-speech tagging) 기계도 그 후손을 씁니다.
아랍어 문법은 쿠란에서 자랐습니다. 8세기 이라크의 바스라에서는 이슬람으로 개종한 비아랍인이 늘면서 쿠란의 아랍어를 정확히 가르칠 필요가 커졌습니다. 페르시아 출신의 문법학자 시바와이는 스승인 문법학자 알할릴 이븐 아흐마드에게 배운 것을 모아 『알키타브』('그 책')라고만 불리는 문법서를 남겼습니다. 스승 알할릴은 아랍어의 첫 사전으로 꼽히는 책을 만들었는데, 이 책은 아랍어 소리를 목구멍 깊은 곳부터 발음 위치 순서로 늘어놓았습니다. 두 사람이 활동한 곳은 아바스 왕조, 곧 750년에 세워져 762년부터 바그다드를 수도로 삼은 이슬람 왕조의 세계였습니다. 같은 세계에서 한두 세대 뒤, 알킨디는 글자의 빈도를 세어 암호를 풀었습니다(빈도로 암호를 푸는 법은 「나머지로 지키는 비밀」에 있습니다). 규칙의 전통과 셈의 전통이 거의 같은 무대에서 시작한 셈입니다.
17세기 프랑스에서는 물음이 한 단계 올라갔습니다. 파리 근교 포르루아얄 수도원의 신학자 앙투안 아르노와 문법학자 클로드 랑슬로는 『일반 이성 문법』(1660)에서 개별 언어의 문법 밑에 모든 언어에 공통된 생각의 구조가 있다고 보았습니다(같은 공동체의 확률 이야기는 「도박판에서 온 편지」). 3세기 뒤 촘스키는 이 '보편 문법(universal grammar)'의 생각을 다시 꺼내 듭니다.
2 · 소리를 그린 글자세종과 훈민정음
이 절의 물음은 이것입니다. 소리의 체계를 글자의 체계로 옮기면 무엇을 얻을까? 한글의 설계를 보고, 그 설계가 컴퓨터 안에서 어떻게 그대로 계산이 되는지 따라갑니다.
규칙으로 언어를 다룬 가장 대담한 시도 가운데 하나는 문법이 아니라 글자에서 나왔습니다. 15세기 조선의 글은 한문이었습니다. 한국어와 중국어는 어순도, 낱말이 만들어지는 방식도 다릅니다. 한자의 소리와 뜻을 빌려 우리말을 적는 이두와 향찰이 있었지만 번거로웠고, 한자를 오래 배울 수 없는 대부분의 사람은 글을 쓸 수 없었습니다.
나라의 말이 중국과 달라 한자와 서로 통하지 아니하므로, 어리석은 백성이 말하고자 하는 바가 있어도 끝내 제 뜻을 펴지 못하는 사람이 많다. 내가 이를 딱하게 여겨 새로 스물여덟 글자를 만드니, 사람마다 쉽게 익혀 날마다 쓰는 데 편하게 하고자 할 따름이다.— 세종, 『훈민정음』 어제 서문(1446). 현대어 풀이
세종은 1443년 음력 12월 28자를 만들었고, 1446년 궁중의 학문 연구 기관인 집현전의 학자들이 쓴 해설서와 함께 반포했습니다. 이 해설서 『훈민정음』 해례본은 오래 잊혔다가 1940년 경상북도 안동에서 다시 나타났고, 1997년 유네스코 세계기록유산이 되었습니다.
해례본이 밝힌 설계는 이렇습니다. 기본 자음 다섯은 소리를 내는 기관을 그린 것입니다. ㄱ은 혀뿌리가 목구멍을 막는 모양, ㄴ은 혀끝이 윗잇몸에 닿는 모양, ㅁ은 입, ㅅ은 이, ㅇ은 목구멍의 모양입니다. 같은 자리에서 나는 더 센 소리는 획을 더해 만듭니다. ㄴ에 획을 더하면 ㄷ, 또 더하면 ㅌ입니다. 모음은 하늘(·), 땅(ㅡ), 사람(ㅣ)을 본뜬 세 기호를 합쳐 만들었습니다. 해례본은 이 설계를 성리학의 음양오행, 곧 세상을 음과 양, 그리고 나무·불·흙·쇠·물의 다섯 기운으로 풀이하는 사상으로 설명하기도 합니다.
영국의 언어학자 제프리 샘프슨은 1985년 한글을 글자의 모양이 소리의 특징(자리와 세기)까지 드러내는 '자질 문자(featural alphabet)'로 분류했습니다. 이 분류를 모두가 그대로 받아들이지는 않지만, 소리의 체계를 글자의 체계로 옮긴 설계라는 점에는 널리 동의합니다.
아래 두 그림에서 한 음절이 어떻게 조립되는지 봅니다. 그림 아래 문장의 번호 세 개를 끌거나, 오른쪽 격자의 점을 끌어 음절을 바꿔 보세요. 왼쪽에서는 모음의 모양에 따라 블록의 배치가 바뀌는 것을, 오른쪽에서는 음절마다 격자의 한 칸이 정해진다는 것을 보면 됩니다.
초성
이 체계는 컴퓨터에서 그대로 수가 되었습니다. 현대 한국어의 초성은 19개, 중성은 21개, 종성은 받침 없음을 포함해 28개입니다(오른쪽 그림의
식으로 적으면, 초성 번호를 21배 하고 중성 번호를 더한 다음, 그것을 28배 하고 종성 번호를 더해 44032에 얹습니다. 「한」으로 해 봅시다. 초성 ㅎ은 18번, 중성 ㅏ는 0번, 종성 ㄴ은 4번이니
그래서
거꾸로 음절을 자모로 풀 때는 나눗셈의 몫과 나머지를 씁니다. 번호에서 44032를 뺀 수를 28로 나눈 나머지(remainder)가 종성이고, 몫을 다시 21로 나눈 나머지가 중성, 그 몫이 초성입니다(모듈러 연산(modular arithmetic)). 「한」이면 54620 − 44032 = 10588이고, 10588 = 28 × 378 + 4이니 종성은 4번(ㄴ), 378 = 21 × 18 + 0이니 중성은 0번(ㅏ), 초성은 18번(ㅎ)입니다. 음절과 번호는 빠짐없이 하나씩 짝지어지는 전단사(bijective)입니다. 정리하면, 한글의 조립 규칙이 그대로 세 자리짜리 수의 자릿값이 되었습니다.
처음부터 이렇게 깔끔하지는 않았습니다. 1987년의 한국 산업 표준 KS C 5601은 자주 쓰는 음절 2,350개에만 번호를 붙인 '완성형'이라 '똠' 같은 음절을 적을 수 없었습니다. 자모를 조합하는 '조합형'과의 논쟁은 1996년 유니코드 2.0이 11,172자를 모두 위 공식대로 늘어놓으면서 일단락되었습니다.
반포 무렵의 반대도 있었습니다. 1444년 집현전 부제학 최만리 등은 새 문자가 중국을 섬기는 도리와 학문에 해가 된다고 상소했습니다. 한글은 오랫동안 '언문'으로 낮춰 불리다가 1894년 조선 정부의 근대화 개혁인 갑오개혁 이후에야 공문서의 글자가 되었습니다.
음절을 세 부분으로 나눈 설계에는 앞선 학문이 있었습니다. 중국의 음운학은 한자 한 음절을 첫소리(성모)와 나머지(운모) 둘로 나누고, 두 글자를 빌려 한 글자의 소리를 적었습니다(반절). '첫소리는 이 글자에서, 나머지는 저 글자에서 가져온다'는 방식입니다. 『훈민정음』은 그 나머지를 다시 가운뎃소리(중성)와 끝소리(종성)로 쪼개, 음절을 셋으로 보았습니다. 위에서 본 19 × 21 × 28의 세 자리 번호가 바로 이 나눔에서 나옵니다. 한자음을 바로잡는 일도 함께 진행되었습니다. 반포를 한 해 앞둔 1445년 1월, 세종은 집현전의 신숙주와 성삼문을 요동에 보내 그곳에 귀양 와 있던 명나라의 한림학사 황찬에게 운서, 곧 한자를 소리에 따라 분류한 사전에 관해 묻게 했습니다. 두 사람은 사신 일행을 따라 요동을 여러 차례 오갔다고 전합니다. 원나라를 세운 몽골의 쿠빌라이가 1269년에 만들게 한 파스파 문자에서 영향을 받았다고 보는 학자들도 있지만, 그들도 한글의 설계 대부분은 독창적이라고 봅니다.
3 · 언어의 족보캘커타에서 라이프치히까지
이 절의 물음은 이것입니다. 두 언어가 한 조상에서 나왔다는 것을, 낱말 몇 개가 닮았다는 인상이 아니라 우연으로는 설명할 수 없는 증거로 보일 수 있을까? 답은 소리의 규칙적인 대응을 세는 데 있었습니다.
18세기 말까지 유럽의 학자들은 언어들 사이의 닮음을 이런저런 낱말을 늘어놓고 짐작하는 정도로만 다루었습니다. 전환점은 식민지 인도의 법정에서 왔습니다. 영국의 법률가이자 언어학자 윌리엄 존스는 1783년 동인도 회사가 다스리던 벵골의 대법원 판사로 캘커타에 부임했습니다. 영국 법정은 힌두교도의 소송에 그들의 법을 적용하기로 했는데, 존스는 법률 해석을 맡은 판디트(학자)들의 말을 확인하려고 직접 산스크리트를 배웠습니다. 1786년 2월, 그는 자신이 세운 아시아 협회의 3주년 강연에서 이렇게 말했습니다.
산스크리트어는 그 기원이 얼마나 오래되었든 놀라운 구조를 지녔다. 그리스어보다 완전하고, 라틴어보다 풍부하며, 둘 어느 쪽보다도 정교하다. 그런데도 동사의 어근과 문법의 형태 모두에서 이 두 언어와, 우연으로는 도저히 생길 수 없을 만큼 강한 친연성을 보인다. 그 친연성이 너무나 강해서, 어떤 문헌학자도 세 언어를 살펴보고 나면 그것들이 어떤 공통의 근원에서 솟아났다고 믿지 않을 수 없을 것이다. 그 근원은 아마 더는 존재하지 않을 것이다.— 윌리엄 존스, 아시아 협회 제3주년 강연(1786)
인도에 온 피렌체 상인 필리포 사세티(16세기)나 프랑스 예수회 선교사 쿠르두(1767)처럼 닮음을 먼저 적은 사람들도 있었지만, 존스의 말에 무게가 실린 것은 핵심을 확률의 언어로 짚었기 때문입니다. 낱말 몇 개가 비슷한 것은 우연일 수 있어도, 수백 개의 낱말에서 같은 소리가 같은 방식으로 대응한다면 우연의 확률은 거의 0입니다. 이 생각을 방법으로 만든 것이 소리 대응을 모아 사라진 조상 언어를 재구성하는 비교 언어학(comparative linguistics)입니다.
이 방법의 첫 큰 성과는 게르만어의 자음이었습니다. 1818년 덴마크의 언어학자 라스무스 라스크와, 1822년 『독일어 문법』 2판을 낸 야코프 그림(민담을 모은 그림 형제의 형)은 게르만어(고트어, 고대 영어, 독일어, 노르드어 등)의 자음이 다른 인도유럽어(Indo-European languages)와 규칙적으로 어긋난다는 것을 보였습니다. 인도유럽어는 인도에서 유럽까지 퍼진, 하나의 조상 언어(인도유럽 조어)에서 갈라져 나온 언어들의 가족입니다. 산스크리트, 그리스어, 라틴어, 게르만어가 모두 여기에 속합니다. 라틴어에서 p인 자리에 영어는 f가 있고(pater와 father, pes와 foot), 라틴어의 d 자리에 영어는 t가 있습니다(duo와 two, dens와 tooth). 아래 그림에서 소리 대응(
먼저 소리의 이름 몇 가지를 봅시다. 파열음(stop consonant)은 입안을 완전히 막았다가 터뜨리며 내는 소리(p, t, k, b, d, g)이고, 마찰음(fricative)은 좁은 틈으로 공기를 문질러 내는 소리(f, θ, h)입니다. θ는 영어 think의 th 소리입니다. 유성음은 성대를 떨며 내는 소리(b, d, g), 무성음은 떨지 않고 내는 소리(p, t, k)이고, 유기음은 터뜨린 뒤에 거센 숨(ʰ)이 붙는 소리입니다. 이제
그런데 예외가 있었습니다. 라틴어 pater에 대응하는 고트어는 법칙대로라면 faþar(θ)여야 하는데 실제로는 fadar입니다. '형제'에 해당하는 말은 법칙대로 brōþar인데 말입니다. 1875년 덴마크의 언어학자 칼 베르너가 답을 찾았습니다(발표는 1877년). 열쇠는 산스크리트와 옛 그리스어에 남아 있던 강세였습니다. 산스크리트 pitár는 강세가 t 뒤에, bhrā́tar는 t 앞에 있습니다. 강세가 바로 앞 모음에 있지 않으면 새로 생긴 마찰음이 유성음이 되었다는 것입니다. 선택지를 '베르너의 법칙(Verner's law)'으로 바꾸면
베르너의 발견은 예외가 더 깊은 법칙을 드러낸다는 본보기가 되었습니다. 1878년 라이프치히의 언어학자 헤르만 오스토프와 카를 브루크만, 이른바 소장 문법학파(젊은 문법학자들)는 '소리 법칙(sound law)에는 예외가 없다'고 선언했습니다. 예외처럼 보이는 것은 아직 모르는 다른 법칙이거나, 빌려 온 말이거나, 비슷한 꼴에 이끌린 유추라는 것입니다. 인문학의 한 분야가 물리학처럼 예외 없는 법칙을 요구한 드문 순간이었습니다.
언어들의 관계를 그림으로 그리려는 시도도 이어졌습니다. 1860년대 예나의 언어학자 아우구스트 슐라이허는 찰스 다윈의 진화론을 들어 언어의 계통을 나무로 그렸습니다. 이 나무는 수학으로 말하면 모든 점이 이어져 있고 순환이 없는 그래프, 곧 트리(tree)입니다. 오늘날에는 생물의 계통수(phylogenetic tree)를 짓는 통계(statistics) 방법을 언어에 적용하기도 하지만, 인도유럽어가 언제 어디서 퍼졌는지는 아직 논쟁 중입니다.
비교 언어학은 19세기 민족주의와 얽혀 자랐습니다. 그림 형제의 민담 수집과 『독일어 사전』은 통일되지 않은 독일어권에서 언어로 민족을 묶으려는 일이기도 했습니다. 어두운 면도 있습니다. 언어의 계통을 가리키던 '아리아인'이라는 말은 19세기 후반부터 인종의 이름으로 오용되었고, 끝내 나치의 인종주의에 동원되었습니다. 언어학자들은 언어의 족보가 사람의 혈통과 같지 않다고 거듭 지적해 왔습니다. 영어를 쓰는 사람의 조상이 모두 게르만인은 아닌 것처럼 말입니다.
규칙의 전통이 거쳐 간 곳들. 간다라, 알렉산드리아, 바스라, 한양, 포르루아얄이 서로 거의 모른 채 각자의 문법을 세웠다가, 18세기 말 캘커타에서 유럽으로 이어지는 길이 열립니다. 지명을 누르면 그곳에서 일어난 일이 나옵니다.
4 · 체계와 빈도소쉬르, 블룸필드, 지프
이 절의 물음은 둘입니다. 언어를 낱낱의 낱말이 아니라 체계로 본다는 것은 무슨 뜻일까? 그리고 낱말을 세기만 해도 보이는 규칙이 있을까? 앞의 물음은 소쉬르와 블룸필드가, 뒤의 물음은 지프가 맡습니다.
소장 문법학파(Neogrammarians)의 도시 라이프치히에서 공부한 스위스 청년 페르디낭 드 소쉬르는 스물한 살에 인도유럽 조어의 모음 체계에 관한 논문(1878)을 썼습니다. 그는 체계의 빈자리를 설명하려면 어떤 언어에도 남지 않은 소리가 조어에 있었어야 한다고 추론했습니다. 50년쯤 뒤, 히타이트어에서 바로 그 자리에 자음의 흔적이 발견되었습니다. 히타이트어는 지금의 튀르키예 중부에서 기원전 2천년기에 쓰인 인도유럽어로, 1915년 무렵에야 해독되었습니다.
소쉬르는 1891년부터 제네바 대학에서 가르쳤고, 1907–1911년에 한 일반 언어학 강의는 그가 죽은 뒤 1916년 책이 되었습니다. 동료 언어학자 샤를 바이와 알베르 세슈에가 학생들의 노트로 엮은 책이라, 소쉬르 자신의 생각과 얼마나 같은지는 지금도 연구 대상입니다.
책의 요점은 몇 가지 구별입니다. 한 사회가 공유하는 체계(랑그, langue)와 개인의 실제 발화(파롤, parole)를 나누고, 역사적 변화(통시)보다 한 시점의 체계(공시)를 먼저 보자고 했습니다. 그리고 낱말의 소리와 뜻 사이에는 필연적인 이유가 없다고 했습니다. 기호는 자의적이고, '나무'라는 말의 값은 '나무'가 아닌 다른 말들과의 차이에서 정해진다는 것입니다. 이것은 아주 오래된 논쟁에서 한쪽 편을 든 대답이기도 합니다. 기원전 4세기 플라톤의 대화편 『크라틸로스』에서 헤르모게네스는 이름이 사람들의 약속과 관습으로 정해질 뿐이라고 하고, 크라틸로스는 이름마다 사물의 본성에 맞는 올바름이 있다고 맞섭니다. 소크라테스는 소리가 사물을 닮아야 한다는 쪽을 길게 편 뒤에도 관습의 몫을 인정하고, 논쟁은 결론 없이 끝납니다. 소쉬르는 관습 쪽에 선 셈입니다. 2절의 한글이 소리를 본떠 글자를 만든 것과 헷갈리지 마세요. 소쉬르가 말한 것은 소리와 뜻 사이이고, 한글의 설계는 글자와 소리 사이입니다.
이처럼 언어를 낱낱의 요소가 아니라 요소들 사이의 관계, 곧 체계로 기술하려는 입장을 구조주의라 합니다.
대서양 건너에서는 다른 필요가 구조주의를 키웠습니다. 뉴욕 컬럼비아 대학의 인류학자 프란츠 보애스와 제자들은 사라져 가는 아메리카 원주민 언어들을 현장에서 기록하면서, 라틴 문법의 틀을 씌우지 말고 각 언어를 그 언어의 구조대로 기술해야 한다고 보았습니다(1911). 보애스의 제자 에드워드 사피어와, 사피어의 제자 벤저민 리 워프의 이름은 언어가 생각의 틀을 짓는다는 사피어–워프 가설(Sapir–Whorf hypothesis)에 붙어 있습니다. 쓰는 언어가 생각할 수 있는 것을 결정한다는 강한 형태는 오늘날 거의 받아들여지지 않고, 생각에 어느 정도 영향을 준다는 약한 형태를 두고 연구가 이어집니다.
레너드 블룸필드의 『언어』(1933)는 이 흐름을 교과서로 정리했습니다. 블룸필드는 당시의 행동주의 심리학, 곧 마음속 상태 대신 관찰할 수 있는 자극과 반응만으로 행동을 설명하려던 심리학에 기울어 있었습니다. 그래서 머릿속의 '뜻'처럼 관찰할 수 없는 것 대신 소리와 형식의 분포만으로 언어를 기술하려 했습니다.
같은 무렵 하버드의 언어학자 조지 킹슬리 지프는 전혀 다른 일을 했습니다. 그는 낱말을 셌습니다. 어떤 글에서든 낱말을 나온 횟수대로 줄 세우면,
이 사이트에 실린 글
가장 흔한 것들은
왜 직선이 되는지 봅시다. 그림의 두 축은 로그 눈금, 곧 한 칸이 10배인 눈금입니다. 로그는 '10을 몇 제곱하면 이 수가 되는가'를 구하는 연산이라(
지프의 법칙이 정확히
이 법칙에는 뜻밖의 결과가 따릅니다.
지프보다 먼저 프랑스의 속기사 장바티스트 에스투(1916) 같은 사람들이 비슷한 규칙을 적었고, 지프 자신은 이것을 '최소 노력의 원리'로 설명하려 했습니다(1949). 그러나 1957년 심리학자 조지 밀러는 원숭이가 자판을 아무렇게나 두드려 공백으로 나눈 '낱말'들도 비슷한 분포를 보인다고 지적했습니다. 거듭제곱 꼴의 분포는 여러 단순한 과정에서 저절로 생기므로, 법칙이 들어맞는다는 것만으로는 원인을 알 수 없습니다. 도시 인구나 소득에도 평균(mean) 둘레에 몰리는 정규분포(normal distribution)와는 전혀 다른 이런 긴 꼬리가 나타납니다.
세기와 구조를 잇는 생각도 이 시기에 나왔습니다. 블룸필드의 흐름을 이은 펜실베이니아 대학의 젤리그 해리스는 1954년 「분포 구조」에서, 뜻이 다른 낱말은 나타나는 환경도 다르다고 썼습니다. 뜻을 직접 들여다보지 않고도 분포를 비교해서 뜻의 차이를 잴 수 있다는 것입니다. 런던 대학의 언어학자 존 루퍼트 퍼스는 같은 생각을 짧은 경구로 남겼습니다.
낱말은 그것이 어울리는 벗들을 보면 알 수 있다.— J. R. 퍼스, 「언어 이론 개관 1930–1955」(1957)
이 '분포 가설(distributional hypothesis)'은 반세기 뒤 단어 임베딩(word embedding)으로 되살아납니다. 해리스에게는 곧 유명해질 제자가 하나 있었습니다. 촘스키입니다.
5 · 다음 글자 맞히기마르코프와 섀넌
이 절의 물음은 이것입니다. 문법을 전혀 모르는 기계가 앞 글자만 보고 다음 글자를 맞히면 얼마나 말처럼 쓸 수 있을까? 그리고 '다음 글자가 얼마나 예측하기 어려운가'를 수 하나로 잴 수 있을까?
세는 전통의 다음 걸음은 러시아에서 나왔습니다. 1913년 상트페테르부르크의 확률론자 안드레이 마르코프는 푸시킨의 운문 소설 『예브게니 오네긴』에서 글자 2만 개를 손으로 옮겨 적고 모음과 자음으로 나누었습니다. 모음의 비율은 약 0.43이었습니다. 그런데 앞 글자가 모음이면 다음 글자가 모음일 확률은 약 0.13으로 뚝 떨어지고, 앞 글자가 자음이면 약 0.66으로 올라갔습니다. 글자가 동전 던지기처럼 서로 독립(independence)이라면(앞의 결과가 다음 결과에 영향을 주지 않는다면) 앞 글자가 무엇이든 0.43 언저리여야 합니다. 그렇지 않으니, 다음 글자의 확률은 앞 글자에 달려 있습니다. 마르코프가 왜 이 셈을 했는지는 이 절 끝에 적었습니다. 이 셈이 오늘날의 언어 모델까지 어떻게 이어지는지는 「다음 단어를 맞히는 기계」 1절에 있습니다.
같은 셈을 게티즈버그 연설(공백을 뺀 글자
35년 뒤 벨 연구소의 클로드 섀넌은 이 생각을 끝까지 밀고 갔습니다. 1948년 「통신의 수학적 이론」에서 그는 영어를 흉내 내는 기계를 차례로 만들어 보였습니다. 0차는 27개의 기호(글자 26개와 공백)를 똑같은 확률로 고릅니다. 1차는 글자마다 영어에서 나오는 빈도대로 고릅니다. 2차는 바로 앞 글자를 보고, 3차는 앞의 두 글자를 보고 다음 글자를 고릅니다. 섀넌은 이 확률표를 다 만드는 대신 책을 아무 데나 펴서 앞 글자와 같은 글자가 나오는 곳을 찾고, 그 바로 다음 글자를 적는 식으로 표본(sample)을 뽑았습니다. 앞의
아래에서 그런 기계를 직접 돌려 봅니다. 말뭉치와 단위를 고르고 차수를 끌어 바꾸면, 상자 안에 기계가 쓴 글이 나옵니다. 볼 것은 두 가지입니다. 차수가 오를수록 글이 얼마나 말다워지는지, 그리고 왼쪽 막대에서 한두 개가 두드러지는지입니다.
말뭉치는
차수를 0에서 3으로 올려 보세요. 한국어 글자로 하면 0차는 아무 음절이나 쏟아 놓은 글이고, 1차는 흔한 음절이 자주 나올 뿐이며, 2차부터 '습니다' 같은 조각이 보이고, 3차에서는 문장처럼 읽히는 구절이 이어집니다. 문법도 뜻도 모르는 기계가 셈만으로 이만큼 흉내를 냅니다.
섀넌은 이 불확실성을 재는 수를 정의했습니다. 확률
확률
지금 차수에서 이 말뭉치의 엔트로피는 한 단위당
그런데 게티즈버그 연설을 낱말 단위로 놓고 차수를 3으로 올려 보세요. 생성된 글이 연설문을 거의 그대로 베끼고 엔트로피도 뚝 떨어집니다. 영어가 갑자기 쉬워진 것이 아니라, 270낱말쯤의 짧은 글에서는 앞 두 낱말의 조합이 대부분 한 번씩밖에 나오지 않아 기계가 글을 외워 버린 것입니다. 차수를 올릴수록 필요한 표본은 기하급수적으로 늘고, 4절의 지프 법칙은 처음 보는 조합이 끝없이 나온다고 말합니다. 이 희소성과의 싸움이 이후 통계 언어 처리 50년의 큰 줄기가 됩니다.
희소성이 왜 그렇게 골칫거리인지는 확률 0을 보면 분명합니다. 확률을 '센 비율'로만 정하면, 말뭉치에서 한 번도 이어진 적 없는 조합의 확률은 정확히 0입니다. 그런데 문장의 확률은 이어진 조합마다의 확률을 곱한 것이니, 조합 하나만 처음 보아도 멀쩡한 문장 전체가 확률 0, 곧 '있을 수 없는 문장'이 되어 버립니다. 그래서 센 비율을 조금 덜 믿는 장치가 필요하고, 이것을 스무딩(매끄럽게 하기)이라고 부릅니다.
가장 단순한 스무딩은 모든 조합의 횟수에 1씩 더하는 것입니다. 예를 들어 어떤 글자 뒤에 온 글자가 모두 10번이고 기호가 27가지라면, 그 뒤에 한 번도 온 적 없는 글자에도 0 대신
정리하면, 앞을 더 볼수록 다음 것은 덜 불확실해지지만, 그만큼 셈에 필요한 글도 폭발적으로 늘어나고, 본 적 없는 조합에 확률 0을 주지 않도록 셈을 덜 믿는 장치가 필요해집니다.
1951년 섀넌은 다른 길로 영어의 엔트로피를 어림했습니다. 사람에게 글의 앞부분을 보여 주고 다음 글자를 맞힐 때까지 추측하게 한 것입니다. 글은 역사가 듀머스 멀론의 전기 『버지니아 사람 제퍼슨』에서 무작위로 고른 100곳이었고, 앞의 글자를 최대 100개까지 보여 주었습니다. 사람은 문법과 뜻과 세상 지식을 모두 동원하니, 사람이 틀리는 정도는 영어 자체의 불확실성에 가깝습니다. 결과는 긴 문맥에서 한 글자당 대략 0.6–1.3비트였습니다. 아무렇게나 찍을 때의 4.75비트에 비하면 영어 글의 대부분(
이 여분 덕분에 우리는 오타가 섞인 글도 읽고, 압축 프로그램은 글을 몇 분의 일로 줄이며, 암호 해독가는 이 여분을 파고듭니다(암호와 해독의 수학은 「나머지로 지키는 비밀」에서 다룹니다). 엔트로피가 무손실 압축(lossless compression)의 한계라는 섀넌의 정리와, zip 파일 속에서 앞에 나온 조각을 짧은 참조로 바꾸는 렘펠–지브 압축(Lempel–Ziv compression)은 「짧게 보내기」에 있습니다. 다음 글자를 잘 맞히는 기계가 곧 글을 잘 줄이는 기계라는 이 연결을 끝까지 밀고 가, 압축을 이해의 척도로 삼자는 생각이 어디까지 맞는지는 「압축하는 것이 이해하는 것이다」에서 따집니다.
마르코프의 셈의 배경에는 한 논쟁이 있었습니다. 큰 수의 법칙(law of large numbers)은 시행을 많이 되풀이하면 사건(event)이 일어난 비율이 그 확률에 다가간다는 정리입니다. 모스크바의 수학자 파벨 네크라소프는 이 법칙이 서로 독립인 사건들, 곧 한 결과가 다른 결과의 확률에 영향을 주지 않는 사건들에서만 성립한다는 식으로 주장했습니다. 그의 목적은 신학에 있었습니다. 1902년 논문에서 그는 범죄 통계 같은 사회의 자료가 큰 수의 법칙을 따르니, 그 밑에 있는 사람들의 행위는 서로 독립, 곧 자유 의지에 따른 선택이어야 한다고 논했습니다. 무신론자였던 마르코프는 이것을 수학의 남용이라고 여겼습니다. 1912년에는 1901년 톨스토이를 파문한 러시아 정교회의 신성 종무원에 자기도 파문해 달라는 청원을 냈을 만큼 교회와도 척을 졌습니다. 마르코프는 1906년 논문에서 서로 의존하는 사건들에도 큰 수의 법칙이 성립함을 이미 증명해 두었습니다. 자료가 큰 수의 법칙을 따른다고 해서 사건들이 독립이라는 결론은 나오지 않는다는 것을 보인 셈이고, 역사가들은 『오네긴』의 셈이 이 논쟁 속에서 자기 이론을 실제 자료로 보여 주려 한 일이었다고 봅니다.
6 · 문장의 나무촘스키의 위계
이 절의 물음은 이것입니다. 앞 절의 n-그램 기계는 왜 긴 문장을 끝맺지 못할까? 그리고 기계에 어떤 기억 장치를 주면 어떤 언어까지 알아볼 수 있을까? 답은 문법과 기계를 네 층으로 나눈 촘스키의 위계입니다.
촘스키는 1956년 9월 MIT에서 열린 정보 이론 심포지엄에서 「세 가지 언어 모형」을 발표했습니다. 정보 이론은 섀넌이 세운, 정보의 양과 그 전달을 다루는 수학입니다. 촘스키의 첫째 모형이 바로 섀넌의 기계, 곧 유한한 상태를 옮겨 다니며 글자나 낱말을 내놓는 마르코프 과정이었습니다. 촘스키는 이런 기계로는 영어를 다 적을 수 없다고 논증했습니다. 영어에는 "만약 …라면 …이다", "…하거나 …하거나" 같은 짝이 있고, 이런 짝은 서로의 안에 얼마든지 깊이 들어갈 수 있습니다. "만약 [비가 오거나 눈이 오면] 경기는 취소된다"에서는 '만약–면' 안에 '–거나–거나'가 들어 있고, 그 안에 또 다른 '만약–면'을 넣을 수도 있습니다. 짝의 앞쪽을 여는 괄호, 뒤쪽을 닫는 괄호로 적으면 ( ( ) ) 꼴입니다.
괄호처럼 열린 것을 순서대로 닫아야 하니, 기계는 지금까지 몇 겹이 열렸는지를 기억해야 합니다. 그런데 이 기계가 기억할 수 있는 것은 '지금 어느 상태에 있는가'뿐입니다. 상태가 10개인 기계는 많아야 10가지 경우를 구별할 수 있으니, 열린 겹의 수가 0부터 10까지 11가지가 되면 어떤 두 경우를 구별하지 못합니다(아래에서 이 논증을 정확히 합니다). 상태를 아무리 많이 주어도 개수가 정해져 있는 한 같은 일이 조금 더 깊은 곳에서 일어납니다. 앞 절의 n-그램 기계가 조각은 잘 흉내 내면서 긴 문장을 끝맺지 못한 것도 같은 까닭입니다. 이 기계에게 상태는 '앞의 n − 1개'이고, 그보다 먼 곳에서 열린 괄호는 잊힙니다.
그가 내놓은 대안은 다시 쓰기 규칙입니다. "S → NP VP"는 '문장(S)은 명사구(NP)와 동사구(VP)로 다시 쓸 수 있다'는 뜻이고, 화살표 →는 '왼쪽의 기호를 오른쪽의 기호들로 바꿔 써도 된다'로 읽습니다. 출발 기호 S에서 시작해, 아직 낱말이 아닌 기호 하나를 골라 규칙대로 바꿔 쓰기를 낱말만 남을 때까지 되풀이하면 문장이 나옵니다. 규칙이 S → NP VP, NP → N P, VP → V, 그리고 낱말을 넣는 N → 고양이, P → 가, V → 잔다라면 한 줄에 한 번씩 이렇게 바뀝니다.
→ NP VP
→ N P VP
→ 고양이 P VP
→ 고양이 가 VP
→ 고양이 가 V
→ 고양이 가 잔다
마지막 줄의 조사를 앞 낱말에 붙여 적으면 "고양이가 잔다"입니다. 바꿔 쓸 때마다 바뀐 기호에서 새 기호들로 가지를 치면 그 과정이 나무가 됩니다. S가 뿌리, NP와 VP가 두 가지, 낱말들이 잎입니다. 이런 규칙의 모임이 문맥 자유 문법(context-free grammar)이고, 그 나무가 구문 트리입니다. '문맥 자유'는 1절의 문맥 의존 규칙과 달리, 기호 하나를 다시 쓸 때 앞뒤에 무엇이 있는지 따지지 않는다는 뜻입니다.
예문은
한국어 예문의 규칙은 여섯 줄이면 됩니다. S → NP VP, NP → N P, VP → V, VP → CP V, CP → S C, 그리고 낱말을 넣는 규칙들입니다. 핵심은 CP → S C, 문장 안에 다시 문장이 들어가는 규칙입니다. 규칙이 자기 자신을 부르니 깊이를 올릴 때마다 "하나가 [지우가 [민수가 [고양이가 잔다]고 말했다]고 생각한다]고 믿는다"처럼 문장이 한 겹씩 두꺼워집니다. 유한한 규칙이 무한히 많은 문장을 만드는 비밀, 곧 훔볼트의 수수께끼를 푸는 촘스키의 답이 이 되풀이에 있습니다. 영어 예문에서는 뜻과 상관없이
한 문장에 나무가 여러 그루 자랄 수도 있습니다. "Put the block in the box on the table"은 '상자 안의 블록을 탁자 위에 놓아라'로도, '블록을 탁자 위에 있는 상자 안에 넣어라'로도 읽힙니다. 1982년 MIT의 케네스 처치와 라메시 파틸은 이런 전치사구가 하나씩 늘 때 가능한 나무의 수가 카탈랑 수(Catalan number) 1, 2, 5, 14, 42, …를 따른다는 것을 지적했습니다. 곱셈에 괄호를 치는 방법의 수와 같은 수열로, 한 단계마다 4배에 점점 가까운 비율로 불어납니다(처치는 7절의 철자 교정기를 만든 그 사람입니다). 카탈랑 수가 어떻게 세어지는지는 「세지 않고 세기」 6절에 있고, 그 많은 나무를 하나씩 늘어놓지 않고 표 한 장으로 세거나 가장 그럴듯한 하나를 고르는 CYK 알고리즘(CYK algorithm)은 「같은 계산, 다른 덧셈」 5절에 있습니다.
이 나무는 프로그램 안에서도 그대로 쓰입니다. 프로그래밍 언어에서는 구문 트리(parse tree)를 '규칙마다 한 가지 모양'을 정해 둔 자료의 틀, 곧 대수적 자료형(algebraic data type)으로 적습니다. 트리 위의 계산은 잎(leaf)에서 시작해 뿌리까지, 규칙마다 정해 둔 방식으로 값을 합쳐 올라가는 식으로 짜고, 이런 계산을 fold('접기')라고 부릅니다. 예를 들어 (1 + 2) × 3의 나무에서 잎 1과 2를 '+ 규칙'대로 더해 3을 얻고, 그것과 잎 3을 '× 규칙'대로 곱해 뿌리에서 9를 얻습니다. 규칙마다 합치는 방법만 정하면 이런 계산이 꼭 하나로 정해진다는 성질이 있고, 수학에서는 유한한 트리들의 자료형이 규칙들의 시작 대수라는 말로 이 성질을 적습니다. 곱과 합으로 타입을 짓는 이 방식이 논리의 '그리고', '또는'과 어떻게 맞물리는지는 「증명은 프로그램이다」 6절에 있습니다.
여기서 '언어'는 수학적인 뜻으로 씁니다. 어떤 문법이 만들어 낼 수 있는 문자열 전체의 집합(set)이 그 문법의 언어이고, 기계가 언어를 '알아본다'는 것은 문자열 하나를 읽고 그것이 그 집합에 속하는지를 예·아니오로 답한다는 뜻입니다. 다만 가장 넓은 층에서는 조금 약하게, 속하는 문자열에는 언젠가 반드시 '예'라고 답하되 속하지 않는 문자열에는 영원히 답하지 않을 수도 있는 것까지 허용합니다.
촘스키는 1959년 규칙의 모양에 따라 문법을
가장 좁은 층은 유한 오토마톤(finite automaton), 곧 상태가 유한 개뿐이고 따로 기억 장치가 없는 기계가 알아보는 정규 언어입니다. 작은 예로, a와 b로 된 문자열에서 'a가 짝수 개인가'를 알아보는 기계는 상태 둘이면 됩니다. '지금까지 a가 짝수 개' 상태에서 시작해, a를 읽을 때마다 '짝수'와 '홀수'를 오가고 b는 무시합니다. 끝까지 읽었을 때 '짝수' 상태에 있으면 받아들입니다. abba를 읽으면 짝 → 홀 → 홀 → 홀 → 짝이니 받아들이고, ab는 홀에서 끝나니 거부합니다. 기계가 기억하는 것은 '짝수냐 홀수냐' 하나뿐이지만 이 언어에는 그것으로 충분합니다.
정규 표현식은 '이 글자', '이어 붙이기', '둘 중 하나', '몇 번이든 되풀이(0번도 됨)'만으로 문자열의 무늬를 적는 표기입니다. 예를 들어 a*b*는 'a 몇 개 뒤에 b 몇 개'로, aab나 bbb나 빈 문자열이 여기에 맞습니다. 미국의 논리학자 스티븐 클리니가 1951년 RAND 연구소 보고서에서 보인 대로(출판은 1956년), 유한 오토마톤이 알아보는 언어는 정규 표현식으로 적을 수 있는 언어와 정확히 같습니다.
그다음 층의 문맥 자유 언어(context-free language)는 스택(stack), 곧 접시 더미처럼 맨 위에만 넣고 뺄 수 있는 기억 장치 하나를 가진 푸시다운 오토마톤(pushdown automaton)이 알아봅니다. 괄호의 짝 맞추기가 대표적인 예입니다. 여는 괄호를 읽으면 접시를 쌓고, 닫는 괄호를 읽으면 하나 내리고, 끝에 더미가 비어 있으면 받아들입니다. 1960년대 초 촘스키와 프랑스의 수학자 마르셀폴 쉬첸베르제 등이 이 대응을 밝혔습니다.
그 위의 문맥 의존 언어(context-sensitive language)는 입력 길이만큼의 테이프만 쓰는 튜링 기계(선형 유계 오토마톤, linear bounded automaton)가 알아봅니다. 테이프는 앞뒤로 오가며 읽고 고쳐 쓸 수 있는 칸들의 줄입니다. 'a 몇 개, 같은 수의 b, 같은 수의 c'(aabbcc 같은 것)는 문맥 자유 문법으로는 적을 수 없고 이 층에서 처음 적히는 언어의 예입니다. 직관적으로 말하면, 스택 하나로 a와 b의 수를 맞추고 나면 a의 수를 써 버려 c와 비교할 수 없기 때문입니다(엄밀한 증명은 아래에서 볼 펌핑 보조정리(pumping lemma)의 문맥 자유판으로 합니다). 가장 넓은 층은 테이프를 얼마든지 쓰는 튜링 기계(Turing machine)가 알아보는 언어입니다. 요컨대 층이 올라갈수록 기계의 기억력이 커집니다. 기억 없음, 접시 더미 하나, 입력만 한 테이프, 끝없는 테이프 순입니다. 다만 스택 기계와 선형 유계 오토마톤은 갈림길에서 여러 길을 한꺼번에 시험해 볼 수 있는 '비결정적' 기계여야 이 짝이 맞습니다. 한 길만 따라가는 스택 기계가 알아보는 언어는 문맥 자유 언어의 일부뿐이고, 선형 유계 오토마톤에서도 한 길만으로 충분한지는 아직 풀리지 않은 문제입니다. 층을
오른쪽 그림에서 문맥 자유와 정규 사이의 경계를 직접 넘어 봅시다. 언어
흔히 '상태를 충분히 많이 주면 되지 않나' 하고 생각하지만, 어떤 유한 오토마톤도 이 언어를 알아볼 수 없다는 증명은 비둘기집 원리(pigeonhole principle) 한 줄입니다. 비둘기집 원리는 비둘기가 칸보다 많으면 어느 칸엔가 둘 이상이 들어간다는 원리입니다. 비둘기 다섯 마리가 칸 넷에 들어가면 어느 한 칸에는 반드시 두 마리 이상이 있습니다. 여기서 비둘기는 '지금까지 a를 몇 개 읽었는가'의 경우들이고, 칸은 기계의 상태입니다.
핵심은 이 기계의 앞날이 지금의 상태 하나로 모두 정해진다는 점입니다. 같은 상태에서 같은 글자들을 읽으면 같은 곳에 닿습니다. 기계에게는 '어떻게 이 상태에 왔는가'를 적어 둘 곳이 없기 때문입니다. 그러니
상태를 몇 개로 늘리든 상태 수보다 많은 a를 넣으면 같은 일이 생기니, 이 언어를 알아보는 유한 오토마톤은 없습니다. 이 논법을 일반적인 도구로 다듬은 것이 펌핑 보조정리입니다. 상태가 k개인 기계가 k글자 이상을 읽으면 어떤 상태를 두 번 지나고, 그 사이에 읽은 조각은 몇 번을 되풀이해 끼워 넣어도(펌프질해도) 기계의 판정이 바뀌지 않는다는 것입니다. 층마다 비슷한 보조정리(lemma)가 있어서, 어떤 언어가 그 층에 들지 않는다는 것을 보일 때 씁니다.
클리니가 정규 언어(regular language)를 연구하며 원래 물은 것은 언어가 아니라 뇌였습니다. 1943년 워런 맥컬러와 월터 피츠가 제안한, 문턱(threshold)을 넘으면 켜지는 뉴런들의 그물이 어떤 입력 패턴을 알아볼 수 있느냐는 물음이었습니다(「배우는 기계」 1절). 뉴런이 유한 개인 그물은 곧 상태가 유한 개인 기계이고, 클리니는 그런 그물이 알아보는 패턴이 정규 표현식으로 적히는 것과 정확히 같다는 것을 보였습니다. 그 보고서가 실린 1956년 책 『오토마타 연구』는 섀넌과 존 매카시가 엮었으니, 신경망(neural network)과 정보 이론과 문법이 한 권에서 만난 셈입니다.
이 위계는 언어학보다 컴퓨터 과학에서 더 오래 살아남았습니다. 배커스가 ALGOL의 문법을 적은 표기는 문맥 자유 문법을 적는 또 하나의 방식이었습니다. 프로그램 글을 읽어 구문 트리로 바꾸는 구문 분석기(parser)는 오늘날 모든 프로그래밍 언어에 있고, 모두 이 이론 위에 서 있습니다. 위로 올라갈수록 기계는 강해지고 질문은 어려워져서, 맨 위층에서는 '이 문자열이 언어에 속하는가'에 늘 답하는 알고리즘조차 없을 수 있습니다. 그 끝의 정지 문제(halting problem)는 「기계가 풀 수 없는 문제」에서 이어집니다.
위계 밖도 넓습니다. 문법은 유한한 규칙 목록, 곧 유한한 기호열입니다. 그러니 모든 문법을 길이 순으로, 같은 길이 안에서는 사전 순으로 늘어놓으면 첫째, 둘째, 셋째, …로 번호를 매길 수 있습니다. 이렇게 자연수로 번호를 매길 수 있는 무한을 가산, 곧 '셀 수 있는' 무한이라 합니다. 반면 언어는 문자열들의 부분집합(subset)이면 무엇이든 될 수 있습니다. 문자열 하나하나에 대해 '넣는다/뺀다'를 마음대로 고를 수 있으니, 언어의 가짓수는 멱집합(power set), 곧 부분집합 전체의 개수만큼입니다. 그리고 가산 무한(countably infinite) 집합의 부분집합들은 번호를 매겨 늘어놓을 수 없습니다(칸토어의 대각선 논법(Cantor's diagonal argument)). 어떤 목록을 만들어도, n번째 언어와 n번째 문자열에서 '넣는다/뺀다'를 뒤집어 고른 언어는 목록의 어느 언어와도 다르기 때문입니다. 그러니 문법으로 적을 수 있는 언어는 가산 개뿐이고, 어떤 문법으로도 적을 수 없는 언어가 셀 수 없이 많습니다. 1891년 칸토어가 멱집합이 언제나 더 크다는 것을 보인 바로 그 논법이 여기서 쓰입니다(「무한에도 크기가 있다」 5절).
정리하면, 촘스키 위계는 문법을 규칙의 모양에 따라, 기계를 기억력에 따라 네 층으로 나누고 둘을 짝짓습니다. 어떤 언어가 한 층에 들지 않는다는 것은 비둘기집 원리 같은 셈으로 증명하며, 네 층을 모두 합쳐도 가능한 언어 가운데 극히 일부만 문법으로 적힙니다.
그렇다면 사람의 언어는 몇 층일까요? 한동안 문맥 자유로 충분하다는 견해가 우세했지만, 1985년 미국의 컴퓨터 언어학자 스튜어트 시버는 스위스 독일어에서 동사들이 목적어들과 괄호처럼 겹치지 않고 같은 순서로 엇갈려 짝을 짓는 '교차 의존(cross-serial dependency)'을 반례로 들었습니다. 목적어 둘을 a₁, a₂, 그 짝인 동사를 b₁, b₂라 하면, 겹친 짝은 a₁ a₂ b₂ b₁(괄호처럼 나중에 연 것을 먼저 닫음)이고 엇갈린 짝은 a₁ a₂ b₁ b₂입니다. 스택은 마지막에 쌓은 것부터 꺼내 주니 겹친 짝과는 맞지만, 엇갈린 짝에서는 맨 먼저 쌓은 a₁을 먼저 꺼내야 해서 스택 하나로는 안 됩니다. 그래서 많은 학자는 자연 언어가 문맥 자유보다 조금 더 강한, 흔히 약한 문맥 의존(mildly context-sensitive)이라 부르는 층에 있다고 봅니다.
1959년 촘스키는 행동주의 심리학자 B. F. 스키너의 『언어 행동』을 길게 비판했습니다. 자극과 반응, 그리고 강화(어떤 행동 뒤에 보상을 주어 그 행동을 늘리는 것)만으로는 아이가 한 번도 들어 본 적 없는 문장을 만들어 내는 능력을 설명할 수 없다는 것이었습니다. 이 서평은 행동주의에서, 마음을 정보를 다루는 과정으로 연구하는 인지 과학으로 무게가 옮겨 가는 상징이 되었습니다. 그는 머릿속에 든 규칙의 지식, 곧 언어 능력(linguistic competence)과, 기억의 한계와 말실수가 섞인 실제의 언어 수행(linguistic performance)을 나누었습니다(1965). 깊이 3쯤의 안긴 문장도 말하기에는 버겁지만 능력으로는 깊이에 끝이 없다는 것입니다.
가장 큰 논쟁을 부른 것은 아이가 언어를 어떻게 배우는가를 두고 한 주장이었습니다. 촘스키는 아이가 듣는 말은 너무 적고 불완전해서 그것만으로는 문법을 배울 수 없으니, 모든 언어에 공통된 '보편 문법'이 타고난다고 주장했습니다. 이른바 자극의 빈곤(poverty of the stimulus) 논증입니다. 촘스키가 1절의 포르루아얄 문법을 자기 생각의 선구로 꼽은 것도 이 때문입니다. 사람이 타고나는 관념이 있다는 데카르트의 합리론과, 지식은 모두 경험에서 온다는 영국 철학자 존 로크의 경험론 사이의 오래된 논쟁이 언어학에서 되살아난 셈입니다.
이 논증은 지금도 논쟁 중입니다. 지지하는 쪽은 아이들이 영어 의문문을 만들 때 낱말의 순서가 아니라 구조에 따르는 규칙을 거의 틀리지 않는다는 실험을 듭니다. 비판하는 쪽은 그 '없다던' 증거가 실제 말뭉치에 생각보다 많다고 반박하고(2002년 언어학자 제프리 풀럼과 바버라 숄츠 등), 아기의 통계 학습 능력을 가리킵니다. 1996년 심리학자 제니 사프란, 리처드 애슬린, 엘리사 뉴포트는 생후 8개월 아기가 뜻 없는 음절의 흐름을 2분만 듣고도 음절 사이의 전이 확률(transition probability)로 '낱말'의 경계를 가려낸다고 보고했습니다. 전이 확률은 한 음절 뒤에 특정한 음절이 올 조건부 확률입니다. 지어낸 '낱말' 안에서는 bi 뒤에 늘 da가 오지만, 낱말과 낱말의 경계에서는 뒤따르는 음절이 여러 가지라 그 확률이 낮습니다. 아기는 확률이 뚝 떨어지는 곳을 경계로 알아들었습니다. 마르코프의 셈을 아기가 하고 있는 것입니다.
촘스키가 MIT에 자리를 얻은 것부터가 기계와 얽혀 있었습니다. 1955년 그를 채용한 사람은 MIT 전자 연구소(RLE)에서 기계 번역(machine translation) 연구진을 이끌던 빅터 잉베였습니다. 전쟁 중의 레이더 연구소를 이어받은 이 연구소는 육군·해군·공군의 연구비로 운영되었고, 잉베는 문장 구조의 분석이 번역 기계에 쓸모 있으리라 기대했습니다. 촘스키가 그 무렵 쓴 두툼한 원고 『언어 이론의 논리적 구조』는 출판되지 못하고 복사본으로만 돌다가 1975년에야 줄인 판으로 나왔습니다. 대신 MIT 학부생 강의 노트를 다듬은 얇은 책이 1957년 네덜란드 헤이그의 무통 출판사에서 나온 『통사 구조』입니다. 로버트 리스가 학술지 『랭귀지』에 쓴 긴 서평이 이 책을 언어학계에 널리 알렸습니다.
7 · 번역기의 겨울과 통계의 봄규칙에서 확률로
이 절의 물음은 이것입니다. 손으로 적은 규칙으로 번역하고 말을 알아듣게 하려던 시도는 왜 벽에 부딪혔고, 확률을 세는 방법은 그 벽을 어떻게 넘었을까? 이야기를 따라간 뒤, 확률로 문장의 품사를 가려내는 계산을 직접 해 봅니다.
기계로 말을 옮기자는 생각을 퍼뜨린 것은 언어학이 아니라 전쟁 중의 암호와 통신의 경험이었습니다. 전쟁 동안 미국 정부의 응용수학 연구를 조직했던 록펠러 재단의 수학자 워런 위버는 1947년 3월 노버트 위너에게 이렇게 썼습니다.
러시아어로 된 글을 보면 나는 이렇게 말합니다. '이것은 사실 영어로 쓰였는데, 이상한 기호로 암호화되어 있을 뿐이다. 이제 해독을 시작하겠다.'— 워런 위버, 노버트 위너에게 보낸 편지(1947)
위너는 언어마다 낱말이 가리키는 범위가 너무 모호하게 어긋나고 함축도 넓다며 회의적이었지만, 위버는 1949년 7월 「번역」이라는 메모를 200명쯤에게 돌렸습니다. 메모는 전쟁 중 암호 해독이 거둔 성공을 들어, 번역도 언어의 통계적 성질을 이용해 풀 수 있을지 모른다고 제안했습니다. 같은 해 위버는 섀넌의 논문에 해설을 붙여 『통신의 수학적 이론』이라는 책으로 함께 펴내기도 했습니다. 1951년 MIT 전자 연구소는 이스라엘의 논리학자 여호수아 바르힐렐을 기계 번역의 첫 전임 연구자로 앉혔고, 그는 이듬해 6월 MIT에서 첫 기계 번역 학회를 열었습니다. 위버가 그린 '해독으로서의 번역'이 제대로 실현되기까지는 40년이 걸립니다. 아래에서 볼 IBM의 캉디드가 바로 그 틀입니다.
촘스키의 책이 나오기 3년 전, 기계는 이미 말을 옮기고 있었습니다. 1954년 1월 뉴욕의 IBM 본사에서 조지타운 대학과 IBM이 함께 연 시연에서, IBM 701 컴퓨터는 낱말 250개쯤과 규칙 6개로 러시아어 문장 60여 개를 영어로 옮겼습니다. 냉전이 시작된 때였고, 미국은 소련의 과학 문헌을 빨리 읽고 싶었습니다. 신문들은 몇 년 안에 기계 번역이 완성될 것이라는 기대를 전했고 연구비가 쏟아졌습니다. 1959년 모스크바 대학에서 기계 번역에 손을 댄 영국인 교환 학생 토니 호어는, 테이프에 담긴 사전을 한 번만 훑으려고 문장의 낱말을 먼저 정렬하는 방법을 궁리하다 퀵정렬(quicksort)을 떠올렸습니다(「줄 세우기의 한계」 4절).
기대는 곧 벽에 부딪혔습니다. 누구보다 먼저 이 분야를 둘러본 바르힐렐 자신이 1960년 무렵 "The box was in the pen"을 예로 들었습니다. 여기서 pen은 필기구가 아니라 울타리인데, 그것은 문법이 아니라 상자와 펜의 크기에 대한 세상 지식으로만 알 수 있습니다. 그는 사람의 도움 없는 고품질 번역은 원리적으로 어렵다고 결론지었습니다. 1966년 벨 연구소의 공학자 존 R. 피어스가 이끈 미국 국립 과학원의 자문 위원회(ALPAC)는 기계 번역이 사람보다 느리고, 부정확하고, 비싸다고 보고했습니다. 미국의 기계 번역 연구비는 크게 줄었습니다.
같은 해 MIT의 조지프 바이첸바움은 엘리자를 발표했습니다. 사용자의 말에서 핵심어를 찾아 문장 틀에 끼워 되묻는 단순한 규칙들로 상담가 흉내를 내는 프로그램이었습니다. 프로그램이 이해하는 것은 아무것도 없었는데도 많은 사람이 속마음을 털어놓았습니다. 바이첸바움 자신이 전하기로는, 그의 비서가 잠시 자리를 비켜 달라고 했을 정도였습니다. 그는 이 반응에 놀라 『컴퓨터의 힘과 인간의 이성』(1976)에서 판단과 돌봄 같은 일을 기계에 맡기는 것을 경고했습니다.
규칙으로 이해를 만들려는 시도는 더 정교해졌지만 같은 벽을 만났습니다. 1970년 무렵 MIT의 테리 위노그래드가 만든 SHRDLU는 탁자 위 블록들의 세계에서는 명령을 알아듣고 질문에 답했지만, 그 밖으로는 한 걸음도 나가지 못했습니다. 손으로 적은 규칙은 작은 세계에서는 빛났고 큰 세계에서는 무너졌습니다.
돌파구는 5절의 세는 전통에서 왔습니다. 1960년대 중반 브라운 대학의 언어학자 W. 넬슨 프랜시스와 헨리 쿠체라는 1961년에 나온 미국 영어 글 500편, 약 100만 낱말을 컴퓨터에 옮겨, 첫 대규모 전자 말뭉치로 꼽히는 브라운 말뭉치를 만들었습니다.
말의 확률을 본격적으로 센 것은 언어학자가 아니라 공학자들이었습니다. 1970년대 뉴욕주 요크타운하이츠의 IBM 연구소에서는 프레드 옐리네크의 팀이 음성 인식을 확률 문제로 다루기 시작했습니다. 그가 "언어학자를 한 명 내보낼 때마다 인식기의 성능이 올라간다"고 말했다는 이야기가 유명하지만, 농담으로 전해질 뿐 정확한 말과 맥락은 분명하지 않습니다. 이 팀은 1990년 무렵 같은 생각을 번역에 가져와 캉디드라는 시스템을 만들었습니다. 영어와 프랑스어를 모두 공식 언어로 쓰는 캐나다의 의회는 회의록을 두 언어로 남기고, 그 수백만 문장의 짝이 기계의 교과서가 되었습니다.
방법의 핵심은 섀넌의 통신 모형입니다. 섀넌은 통신을, 보낸 신호가 도중의 잡음 때문에 바뀔 수 있는 '통로'를 지나 받는 쪽에 닿는 일로 그렸습니다. 캉디드는 프랑스어 문장
입니다.
작은 예로 느껴 봅시다. 누가 'teh'라고 쳤습니다. 후보는 'the'와 'ten'입니다. 설명을 위해 지어낸 수로, 영어 글에서 the가 나올 확률을 0.05, ten을 0.0005라 하고, the를 치다가 teh가 될 확률을 0.001, ten을 치다가 teh가 될 확률을 0.0001이라 합시다. 곱은 the가 0.00005, ten이 0.00000005로 천 배 차이이니, 교정기는 the를 고릅니다. 흔한 낱말인가(언어 모델)와 그렇게 잘못 칠 만한가(오타 모델)를 곱해 비교하는 것입니다.
문장의 품사를 붙이는 일도 같은 방식으로 풀립니다. 'flies'는 명사(파리들)일 수도 동사(난다)일 수도 있고, 'like'는 동사(좋아한다)일 수도 전치사(~처럼)일 수도 있습니다. 문장의 낱말마다 어느 품사인지 정하는 것이 품사 붙이기(품사 태깅)입니다.
모형은 이렇게 봅니다. 문장을 만드는 쪽이 먼저 품사를 차례로 고르고(명사, 동사, 전치사, …), 품사마다 그 품사의 낱말 하나를 내놓는다고 상상합니다. 우리에게 보이는 것은 낱말뿐이고 품사는 숨어 있습니다. 모형에는 두 종류의 확률이 있습니다. 하나는 품사가 품사를 잇는 확률, 예를 들어 '명사 다음에 동사가 올 확률'입니다. 다른 하나는 품사가 낱말을 내놓는 확률, 예를 들어 '동사 자리에서 하필 flies가 나올 확률'입니다. 다음 품사가 바로 앞 품사에만 달려 있으니 품사의 줄은 5절의 마르코프 연쇄이고, 그 연쇄가 숨어 있다는 뜻에서 이 모형을 은닉 마르코프 모델(hidden Markov model)이라고 부릅니다.
품사열 하나의 확률은 이 두 종류의 확률을 차례로 곱한 것입니다. 'time/명사 flies/동사 …'라면 (첫 품사가 명사일 확률) × (명사가 time을 내놓을 확률) × (명사 다음이 동사일 확률) × (동사가 flies를 내놓을 확률) × …입니다. 할 일은 이 곱이 가장 큰 품사열을 찾는 것입니다. 흔히 1960년대 하버드의 컴퓨터 언어학자 앤서니 외팅거에게 돌리는 예문으로 해 봅시다. 문장은
그림에서 할 일은 단계 단추로 표를 왼쪽 열부터 채워 가는 것입니다. 한 열을 채울 때마다 칸마다 '여기서 끝나는 가장 좋은 길'이 하나씩 정해지고, 마지막 열까지 가면 노란 길이 나타납니다.
모든 품사열을 다 따지면 품사 후보가 넷이므로 낱말이
한 칸을 채우는 규칙을 말로 적으면 이렇습니다. 이 칸의 값 = (앞 열의 각 칸의 값 × 그 품사에서 이 품사로 옮겨 올 확률) 가운데 가장 큰 것 × 이 품사가 이 낱말을 내놓을 확률. 그리고 가장 큰 값을 준 앞 칸을 청록 선으로 기억해 둡니다. 'time flies like an arrow'의 처음 두 열로 해 봅시다(명사 뒤에 명사가 올 확률이 처음 값 0.15일 때). 첫 열에서 time의 명사 칸은 0.45 × 0.004 = 0.0018, 동사 칸은 0.2 × 0.002 = 0.0004입니다. 둘째 열 flies의 동사 칸에 올 수 있는 길은 둘입니다. 명사 칸에서 오면 0.0018 × 0.45 = 0.00081, 동사 칸에서 오면 0.0004 × 0.05 = 0.00002이니 앞의 것만 남기고, 동사가 flies를 내놓을 확률 0.002를 곱해 0.00000162를 적습니다. 수가 이렇게 작아지므로 그림에는 '10의 몇 제곱인가'로 적어, 이 값은
확률에
이제 '명사 뒤에 명사가 올 확률'을 올려 보세요. 지금은
두 문장을 번갈아 보면 한계도 보입니다. 앞 품사만 보는 모형은 'time flies'와 'fruit flies'를 구별하지 못해 두 문장을 늘 같은 구조로 읽으니, 하나를 맞히면 다른 하나를 틀립니다. 사람은 초파리를 알기 때문에 둘을 다르게 읽습니다. 규칙주의자들이 늘 지적해 온 세상 지식의 문제가 확률 모형에서도 그대로 드러나는 것입니다. 이런 모형을 훈련하려고 1993년 펜실베이니아 대학은 수백만 낱말에 품사와 구문 트리를 손으로 붙인 펜 트리뱅크를 내놓았습니다. 6절의 나무가 확률 모형의 교과서가 된 것입니다.
정리하면, 확률 모형은 손으로 적은 규칙보다 넓은 세계에서 버티지만, 보는 문맥이 짧으면 세상 지식이 필요한 구별은 여전히 해내지 못합니다.
캉디드를 만든 피터 브라운, 스티븐과 빈센트 델라 피에트라 형제, 로버트 머서 등은 1993년 논문 「통계 기계 번역의 수학」에서, 어느 낱말이 어느 낱말로 옮겨지는지만 세는 가장 단순한 모형부터 낱말의 자리 이동과 한 낱말이 여러 낱말로 불어나는 일까지 세는 모형까지 다섯 단계를 정리했습니다. 이른바 IBM 모형 1–5로, 신경망 번역이 나오기 전까지 두 언어의 문장에서 낱말을 짝짓는 표준 도구로 오래 쓰였습니다. 같은 해 브라운과 머서는 IBM을 떠나 수학자 제임스 사이먼스의 투자 회사 르네상스 테크놀로지로 옮겼습니다. 말의 확률을 세던 통계 기술이 금융 시장으로 건너간 한 갈래입니다.
은닉 마르코프 모델의 수학은 음성 인식보다 먼저, 1960년대 후반 프린스턴의 방위 분석 연구소(IDA)에서 레너드 바움 등이 다졌습니다. 관찰만 주어졌을 때 숨은 상태의 확률표를 자료에 맞추는 방법(바움–웰치 알고리즘(Baum–Welch algorithm), 1970년 논문)이 그 성과입니다. 1970년대 중반 카네기 멜런 대학의 제임스 베이커가 이 모형으로 음성 인식 시스템 드래곤을 만들었고, IBM의 옐리네크 팀도 같은 길을 갔습니다. 소리를 숨은 상태(낱말과 음소(phoneme), 곧 뜻을 가르는 가장 작은 소리 단위)가 내놓은 잡음 섞인 관찰로 보는 이 틀은 2010년대 초 신경망이 음성 인식을 넘겨받기까지 이 분야의 표준이었습니다.
한국어는 여기에 한 겹의 어려움을 더합니다. 어간에 조사와 어미를 줄줄이 붙이는 교착어라서, 띄어쓰기로 나뉜 어절 하나가 영어의 여러 낱말 몫을 합니다. '먹었겠더라고요' 같은 어절은 사전에 실릴 수 없으니 먼저 형태소(morpheme), 곧 뜻이나 문법 기능을 가진 가장 작은 말의 단위('먹-', '-었-', '-겠-', '-더라', '-고요')로 쪼개야 합니다. 그런데 쪼개는 방법이 하나가 아닐 때가 많습니다. '나는'은 '나 + 는'(나는 학생이다)일 수도, '날- + -는'(나는 새)일 수도, '나- + -는'(싹이 나는 봄)일 수도 있습니다. 한국어 형태소 분석기는 위 그림과 같은 확률 모형으로 이 모호함을 풉니다. 4절의 지프 그림에서 어절의 꼬리가 유난히 길었던 것도 이 때문입니다. 1998년부터 10년 동안 추진된 '21세기 세종계획'은 형태소 표지를 붙인 대규모 한국어 말뭉치를 만들었습니다.
8 · 신경망과 돌아온 논쟁다음 낱말을 맞히는 기계
이 절의 물음은 이것입니다. n-그램 기계의 두 약점, 곧 본 적 없는 조합을 모른다는 것과 먼 문맥을 보지 못한다는 것을 어떻게 넘었을까? 그리고 그렇게 만든 기계는 언어를 이해하는 것일까?
n-그램 기계의 약점은 5절에서 본 희소성이었습니다. '고양이가 잔다'를 백 번 보았어도 '강아지가 잔다'를 못 보았다면, 낱말을 서로 무관한 기호로 다루는 기계는 둘이 비슷하다는 것을 모릅니다. 2000년대 초 몬트리올의 컴퓨터 과학자 요슈아 벤지오 등은 낱말마다 수십–수백 개의 수로 된 벡터(vector)를 두고 신경망이 그 벡터들로 다음 낱말의 확률을 계산하게 했습니다. 벡터는 여기서 수의 목록, 곧 여러 축을 가진 공간의 한 점입니다. 비슷한 문맥에 나오는 낱말은 저절로 비슷한 벡터, 곧 가까운 점을 배우니, 본 적 없는 조합에도 그럴듯한 확률을 줄 수 있습니다. 신경망이 예를 보며 연결의 세기를 나타내는 수(가중치, weight)를 고쳐 가는 방법, 곧 경사 하강법(gradient descent)과 역전파(backpropagation)의 역사는 「배우는 기계」에 있습니다.
분포 가설을 벡터로 옮긴 시도는 신경망보다 먼저 있었습니다. 1990년 스콧 디어웨스터, 수전 듀메이, 토머스 랜다우어 등은 문서마다 각 낱말이 몇 번 나오는지를 적은 큰 표(행렬, matrix)를 특잇값 분해(singular value decomposition)로 100개 남짓의 축만 남기고 줄였습니다(잠재 의미 분석, latent semantic analysis). 특잇값 분해는 큰 표를 '가장 많은 것을 설명하는 방향'부터 차례로 늘어놓아 요약하는 선형대수(linear algebra)의 방법이고, 앞의 방향 몇 개만 남기면 표의 큰 줄기는 남고 자잘한 차이는 버려집니다. 같은 문서들에 함께 나오는 낱말은 줄인 공간에서 가까워져서, 검색어와 다른 낱말로 쓰인 같은 뜻의 문서도 찾을 수 있게 되었습니다. 작은 특잇값(singular value)을 버리면 무엇이 남고 무엇이 사라지는지는 「거꾸로 푸는 문제는 왜 어려운가」 4절에서 볼 수 있습니다.
2013년 구글의 토마시 미콜로프 등이 내놓은 word2vec은 이 생각을 대규모로 빠르게 만든 것이고, 벡터 사이의 가까움은 코사인 유사도(cosine similarity), 곧 두 화살표가 이루는 각이 얼마나 작은지로 잽니다. 값은 −1에서 1 사이이고, 같은 쪽을 가리키면 1, 직각이면 0입니다. 계산은 내적(dot product), 곧 두 벡터의 같은 자리 수끼리 곱해 더한 값을 두 화살표의 길이로 나누면 됩니다.
수 두 개짜리 벡터로 해 봅시다. 지어낸 값으로 '고양이'가 (0.9, 0.2), '강아지'가 (0.8, 0.3), '자동차'가 (0.1, 0.9)라고 합시다. 고양이와 강아지의 내적은 0.9 × 0.8 + 0.2 × 0.3 = 0.78이고, 두 길이는
다음 문제는 문맥의 길이였습니다. 6절의 안긴 문장에서 맨 앞의 '하나가'와 맨 뒤의 '믿는다'는 멀리 떨어져 있지만 짝입니다. 2014년 몬트리올의 드미트리 바다나우 등은 번역하는 신경망이 원문의 어느 낱말을 '주목'할지 스스로 고르게 했고, 2017년 구글 연구진의 논문 「필요한 것은 주의뿐」은 이 주의(어텐션, attention)만으로 신경망 전체를 짠 트랜스포머(transformer)를 내놓았습니다.
생각은 도서관에서 책을 찾는 일과 닮았습니다. 낱말마다 질문 벡터
식을 말로 읽으면, 모든 질문과 모든 열쇠의 내적을 한꺼번에 구해(
행렬의 곱(matrix multiplication) 한 번으로 모든 낱말 쌍의 관계를 한꺼번에 계산하니, 멀리 떨어진 짝도 한 걸음에 닿고 계산을 그래픽 칩에서 나란히 처리할 수 있습니다. 소프트맥스는 지수함수(exponential function)로 점수를 양수로 바꾸고 합이 1이 되게 나누어 확률 분포를 만드는 장치입니다. 오늘날의 큰 언어 모델은 이 구조를 수십–수백 층 쌓고, 인터넷 규모의 글에서 다음 토큰(낱말이나 낱말 조각)을 맞히는 일만으로 훈련합니다. 훈련의 목표는 실제로 나온 토큰(token)에 모델이 매긴 확률로 잰 평균 놀람(교차 엔트로피, cross-entropy), 곧 5절의 엔트로피와 같은 꼴의 양을 줄이는 것입니다. 섀넌이 책을 앞에 두고 하던 추측 게임을 수조 개의 토큰으로 하는 셈입니다.
그러자 오래된 논쟁이 돌아왔습니다. 촘스키는 2023년 동료들과 『뉴욕 타임스』에 쓴 글에서, 큰 언어 모델은 방대한 자료에서 통계적 패턴을 찾을 뿐 설명을 내놓지 못하며 사람의 언어에서 가능한 것과 불가능한 것을 가리지 못한다고 비판했습니다. 인지 과학자 스티븐 피안타도시는 같은 해, 이런 모델이야말로 타고난 문법 없이 자료에서 문법을 배울 수 있다는 증거라고 반박했습니다.
실험은 양쪽에 조금씩 근거를 줍니다. 2024년 한 연구는 낱말 순서를 뒤섞는 등 사람 언어에 없는 규칙으로 만든 '불가능한 언어'를 언어 모델이 자연 언어보다 배우기 어려워한다고 보고했습니다. 한편 아이가 열 살까지 듣는 말은 대략 수천만–1억 낱말로 어림되는데, 큰 언어 모델은 그보다 수만 배 이상 많은 글로 훈련됩니다. 이 차이는 사람의 학습에 무언가 다른 것이 있다는 근거로도 읽힙니다.
2011년 구글의 연구 책임자 피터 노빅은 이 논쟁을 두 문화의 차이로 정리했습니다. 한쪽은 현상을 가장 잘 예측하는 모형을, 다른 쪽은 왜 그런지 설명하는 이론을 찾는다는 것입니다. 철학에도 같은 갈림길이 있습니다. 오스트리아 출신의 철학자 비트겐슈타인은 『철학적 탐구』(1953)에서 낱말의 뜻은 많은 경우 언어 안에서의 쓰임이라고 썼는데, 이것은 퍼스의 분포 가설과 멀지 않습니다. 반면 미국의 철학자 존 설의 '중국어 방'(1980)은 규칙대로 기호를 옮기는 것만으로는 이해가 생기지 않는다고 말합니다(「기계가 풀 수 없는 문제」 8절). 엘리자를 보며 바이첸바움이 품었던 걱정, 곧 말을 잘하는 기계를 사람들이 너무 쉽게 믿는다는 걱정도 다시 현실의 문제가 되었습니다.
20세기의 두 흐름. 수학 줄(파랑)의 마르코프, 섀넌, 촘스키, 비터비가 과학 줄(청록)의 말뭉치와 번역 기계로 이어지고, 역사 줄(분홍)의 냉전과 연구비가 그 속도(velocity)를 바꿉니다. 지도에서는 페테르부르크에서 벨 연구소, MIT, IBM, 실리콘밸리로 무대가 옮겨 가는 것을 보세요.
9 · 이어지는 길말과 수학이 만나는 곳
규칙과 확률, 두 전통은 수학의 여러 갈래와 이어집니다. 규칙 쪽에는 촘스키 위계가, 확률 쪽에는 지프의 법칙, 마르코프 연쇄와 n-그램 언어 모델, 정보 엔트로피, 은닉 마르코프 모델, 그리고 트랜스포머가 있었습니다.
- 기계의 한계로: 위계의 꼭대기 너머에는 어떤 기계도 풀 수 없는 문제가 있습니다. '계산할 수 있다'의 뜻을 정하려는 처치–튜링 논제(Church–Turing thesis)와 람다 계산(lambda calculus)까지, 「기계가 풀 수 없는 문제」에서 이어집니다.
- 어려움의 등급으로: 문맥 자유 문법의 구문 분석(parsing)은 문장 길이의 세제곱 시간이면 되지만, 더 강한 문법에서는 빠른 방법이 있는지조차 모르는 문제가 나옵니다. 확인은 쉽고 찾기는 어려워 보이는 문제들의 이야기는 P 대 NP 문제(P versus NP problem)입니다.
- 세는 법으로: 글자의 빈도로 암호를 푼 알킨디와 비밀의 정보량을 잰 섀넌은 「나머지로 지키는 비밀」에, 확률이라는 생각 자체의 탄생은 「도박판에서 온 편지」에 있습니다. 파니니와 같은 전통에서 음절의 무늬를 빠짐없이 센 인도의 운율학자들, 그리고 6절에서 구문 나무의 수로 나온 카탈랑 수는 「세지 않고 세기」에서 만납니다.
- 한 계산의 여러 얼굴로: 7절의 비터비 알고리즘, 모든 품사열의 확률을 더하는 전방 알고리즘, 6절의 나무를 표로 세는 CYK 구문 분석, 그리고 최단 경로는 모두 같은 표 채우기이고, 달라지는 것은 덧셈과 곱셈 자리에 무엇을 넣느냐뿐입니다. 반환(semiring)과 동적 계획법의 이 이야기는 「같은 계산, 다른 덧셈」에 있습니다.
- 잡음 통로(noisy channel)로: 위버가 번역을 암호 해독으로 보고, IBM이 프랑스어를 잡음에 일그러진 영어로 본 틀은 섀넌의 통신 모형 그대로입니다. 잡음이 있어도 오류 없이 보낼 수 있는 한계, 곧 통로 용량(channel capacity)과 비터비가 원래 풀던 부호의 이야기는 「잡음 너머로」에서 이어집니다.
- 무한과 타입으로: 유한한 규칙이 가산 무한의 문장을 만든다는 훔볼트의 수수께끼와, 문법으로 적을 수 없는 언어가 셀 수 없이 많다는 대각선 논법(diagonal argument)은 「무한에도 크기가 있다」에 있습니다. 구문 트리를 대수적 자료형으로 적고 그 위의 계산에 타입을 매기는 일이 논리의 증명과 어떻게 맞물리는지는 「증명은 프로그램이다」에 있습니다.
- 압축과 이해로: 섀넌의 추측 게임에서 다음 글자를 잘 맞히는 것은 곧 글을 짧게 적는 것입니다. 그렇다면 잘 압축하는 기계는 언어를 이해하는 것일까요? 8절에서 본 예측과 설명의 갈림길을, 가장 짧은 설명의 길이인 콜모고로프 복잡도(Kolmogorov complexity)와 오컴의 면도날(Occam's razor)로 다시 따지는 이야기는 「압축하는 것이 이해하는 것이다」에 있습니다.
- 뇌를 흉내 낸 기계로: 클리니의 정규 표현식은 맥컬러–피츠의 뉴런 그물에서 나왔고, 반세기 뒤 벤지오의 신경망이 다시 말을 배웠습니다. 뉴런 모형에서 역전파까지의 길은 「배우는 기계」에 있습니다.
- 걷는 법으로: n-그램 기계가 글을 만드는 일은 문맥(2차라면 앞 낱말 하나, 더 높은 차수라면 앞 낱말 몇 개의 묶음)을 점으로 삼은 그래프 위를 확률에 따라 걷는 무작위 행보(random walk)입니다. 그래프가 알맞은 조건(어디서든 어디로든 갈 수 있고, 일정한 주기(period)로 맴돌지 않을 것)을 갖추면, 오래 걸을수록 각 점(문맥)에 머무는 시간의 비율이 더는 변하지 않는 일정한 분포(정상 분포, stationary distribution)에 다가갑니다. 이것이 페이지랭크(PageRank)의 원리입니다(그래프와 그 위를 걷는 이야기는 「일곱 다리의 도시」에 있습니다).
- 오늘의 언어 모델로: 글을 토큰으로 자르는 토큰화, 모델이 커질수록 손실이 거듭제곱으로 줄어든다는 규모의 법칙(scaling laws), 다음 토큰을 고르는 온도와 샘플링, 사람의 선호로 모델을 다듬는 인간 피드백 강화 학습(reinforcement learning)은 「다음 단어를 맞히는 기계」에서 이어집니다. 2022년 이후 선호 학습, 전문가 혼합(mixture of experts), 긴 문맥, 추론 모델이 언제 어떤 순서로 나왔는지는 언어 모델의 발전사에 모여 있습니다.
- 거리로: 철자 교정의 편집 거리, 낱말 벡터의 코사인(cosine), 그리고 수백 차원에서 거리가 이상해지는 차원의 저주(curse of dimensionality)까지, 「까마귀와 택시」에서 다룹니다.