자연언어의 기계적인 분석과 생성
연세대 독어독문학과 이민행
인지 과학
(마음, 언어, 기계)
: 한광희, 임중우, 김민식, 이일병,
변혜란,
김진우, 김상문, 이승종, 이익환, 이민행, 임춘성, 박창균, 나동렬 공저, 학지사, 2000.
Page 327~353
이 장에서는 인공지능언어인 프롤로그 (PROLOG) 를 사용하여 전산언어학의 두 핵심 주제인 분석과 생성과정을 기술하고, 이를 기반으로 하여 실험적인 한-영 기계번역 시스템에 대해서 논의한다. 이러한 논의를 위해서 프롤로그의 논리적인 토대를 먼저 살펴본다. 프롤로그는 1972 년에 프랑스 마르세이유 대학의 A. Colmerauer 에 의해 개발된 인공언어로서 제 1 차 술어논리를 근간으로 한다.
여기에서 논의되는 내용들을 정리하자면 다음과 같다. 먼저 프롤로그의 통사론에 대해 논의하면서 그 기반이 된 제 1 차 술어논리의 통사론과의 관계를 기술한다. 다음으로 프롤로그의 한정절들로 구성되는 한정절 문법 (Definite Clause Grammar) 을 이용하여, 자연언어를 분석하고 생성하는 과정을 기술한다. 한국어를 영어로 자동번역하는 보편언어기반의 실험적인 한-영 기계번역 시스템의 설계구조와 자동번역의 과정을 기술한다.
프롤로그는 '논리로 프로그램 짜기 (PROgramming in LOGic)' 라는 그 명칭이 말해주듯이 형식논리를 기반으로 한 인공언어이다. 이제 제 1 차 술어논리의 통사론에 대한 논의를 시작해 보자.
제 1 차 술어논리의 통사론은 어휘부와 통사규칙부로 구성된다. 먼저 어휘부에는 다음의 <1> a ~ f 에 제시된 어휘들이 들어 있다 (이익환, 1995, 347 이하).
|
<1> b. 개체정항 : x, y, z, … c. 술어 : P, Q, R, … 각 술어는 '항가 (Arity)' 라고 불리는 일정한 수의 논항자리를 가진다. d. 명제논리의 논리정항 다섯 : ㄱ, ∨, ∧, →, ↔ e. 두 개의 양화사 : ∀, ∃ f. 보조기호 : '(', ')', '[' 과 ']' |
다음의 <2> a ~ d 에 제시된 통사규칙부를 구성하는데, 이 규칙들에 의해 술어논리 언어의 문장형식 (formula) 들이 정해진다.
|
<2> a. P 가 n 항 술어이고 t1, …, tn 이 명사 (term) 들이면, P(t1, …, tn) 은 문장형식이다. b. Φ 와 Ψ 가 문장형식이면, ㄱΦ, (Φ ∧ Ψ), (Φ ∨ Ψ), (Φ → Ψ) 와 (Φ ↔ Ψ) 들이 문장형식이다. c. Φ 가 문장형식이고 x 가 개체변항이면 (∀x) Φ 와 (∃x) Φ 는 문장형식이다. d. 술언논리언어의 문장형식들은 통사규칙 a ~ c 의 제한된 횟수의 적용에 의해서만 생성될 수 있다. |
앞의 <2>a ~ <2>c 에서 정의된 문장형식들 중 다음의 <3>a ~ b 에 제시된 두가지 조건을 충족시킨 문장형식들을 절 (clause) 이라 부른다.
|
<3> a. 문자성분 (literal) 이라 불리는 유한한 수의 문장형식들이 선접되어 있다. b. 모든 개체변항들이 결속되어 (bound) 있다. |
예를 들어 아래의 <4>a ~ f 에 나열된 문장형식들은 정의에 따라 절이라 할 수 있다.
|
<4> a. ㄱh ∨ p ∨ ㄱq b. (∀x) [ㄱp ∨ ㄱC(x)] c. ㄱc d. (∀x) [ㄱp ∨ ㄱC(x) ∨ ∃yR(y)] e. ∃x [C(x) ∨ d] f. ㄱh ∨ p ∨ q |
위 술어논리의 문장형식들 중에서, <4>a ~ d 와 같이 최대한 하나의 긍정적인 (positive) 문장성분을 가진 형식을 다른 문장형식들과 구분지어 혼절 (Horn Clause) 이라 명명하는데, 이 명칭은 논리학자 혼 (Horn) 의 이름에서 유래한 것이다. 반면, <4>e 와 <4>f 는 혼절이 아니다. 왜냐 하면, <4>e 와 <4>f 에는 긍정적인 문자성분이 두 개 나타나 있기 때문이다.
우리가 앞으로 논의하게 될 인공지능언어 프롤로그의 프로그램은, 제 1 차 술어논리의 혼절에 대응하는 한정절 (Definite Clause) 들의 집합이다. 프롤로그의 한정절에는 존재양화사나 전칭양화사 등이 명시적으로 나타나지 않는다는 점에서 제 1 차 술어논리의 혼절과 차이가 있어 보인다. 그러나 프롤로그의 한정절은 전칭양화사를 암묵적으로 가지는 것으로 가정되어지며, 술어논리의 혼절은 모두 전칭양화사가 절의 전방에 위치하는 이른바 스콜렘 (Skolem) 형태로 변형될 수 있기 때문에, 제 1 차 술어논리의 혼절과 프롤로그의 한정절은 결국 등치관계에 있다고 할 수 있다. 정리하자면, 프롤로그의 한정절은 전칭양화사만이 나타나는 스콜렘 형태를 갖는다.
술어논리의 임의의 혼절은 전칭양화사만이 절의 전방에 위치하는 이른바 스콜렘 형태로 변형하는 일련의 과정을 스콜렘화 (Skolemization) 라 하며, 이 과정은 아래 <5>a, b 에 정리되어 있는, 두 개의 단계를 선행절차로 하여 진행된다. 이 선행 절차의 첫단계는 양화사선치 과정으로, 두번째 단계는 연접화 과정으로 명명될 수 있다. 그리고 이 절차의 결과로 연접 정상형이 생성된다.
|
<5> a. 절이 동일한 진리치를 갖는 전방형 (prenex form) 으로 변형된다. b. 이런 형태의 본체 (matrix) 는 등치의 연접 정상형 (conjunctive normal form) 으로 변형된다. |
다음 <6>a ~ <6>g 은 하나의 술어논리 혼절이 양화사선치 알고리즘에 의해 연접 정상형, 곧 전방형 (prenex form) 으로 변형과정을 보여준다.
|
<6> a. ∀x [P(x) ∧ ∀y ∃x (ㄱㄱQ(x, y) → ∀zR(a, x, y))] b. ∀x [P(x) ∧ ∀y ∃x (ㄱㄱQ(x, y) ∨ ∀zR(a, x, y))], 함의 연산자 삭제 (elimination of the connective) c. ∀x [P(x) ∧ ∀y ∃u (ㄱㄱQ(x, y) ∨ ∀zR(a, x, y))], 재명명 (renaming) d. ∀x [P(x) ∧ ∀y ∃x (ㄱㄱQ(x, y) ∨ R(a, u, y))] 무용한 양화사의 삭제 (suppression of a useless quantification) e. ∀x [P(x) ∧ ∀y ∃u (Q(x, y) ∨ R(a, u, y))], 부정연산자에 다시쓰기 규칙 적용 (application of rewriting rules for negation) f. ∀x ∀y ∃u [P(x) ∧ (Q(u, y) ∨ R(a, u, y))], 양화사 이동 (transfer of quantification) |
위 <6>g 의 연접 정상형은 스콜렘화 알고리즘에 의해 다음 <6>h 와 같은 스콜렘 형식으로 변형된다.
|
<6> h. ∀x ∀y [P(x) ∧ (Q(f(x, y), y) ∨ R(a, f(x, y), y))], 스콜렘화 알고리즘 |
위의 <6>h 에 제시된 형식은 전칭양화사만이 형식의 전방에 나타나는 스콜렘 형태를 보여준다.
이제 술어논리 내에서의 혼절과 관련한 논의를 더 자세히 살펴보기로 한다. 술어논리에서는 특정한 혼절들의 집합이 정합성 (Consistency) 을 갖는지의 여부를 판별하기 위한 용해원리 (Resolution Principle) 가 고안되어 있다. 이 원리는 다음의 <7> 과 같이 정의된다.
|
<7> 용해원리 (Resolution Principle) 하나의 절 c1 이 어떤 긍정적인 문자성분 L1 을 가지고 있고, 다른 하나의 절 c2 가 그것에 상응하는 부정적인 문자성분 ㄱL2 를 가지고 있으며, L1 과 L2 가 서로 통합될 수 있다면, 그 두 개의 절은 용해되어 용해체 (resolvent) 라 불리는 새로운 절이 생성된다. 이 용해체는 L1 과 ㄱL2 를 각각 c1 과 c2 에서 삭제한 후에 두 절을 선접함으로써 얻어진다. 이러한 용해과정은 빈 절로 표현되는 모순이 나타날 때까지 계속된다. |
위의 <7> 에 제시된 용해원리의 정의에는 통합 (Unification) 이라는 개념이 나타나는데, 이 통합절차는 다시 아래의 <8>a ~ d 와 같은 규칙들에 의해 이루어진다.
|
<8> 통합 (Unification) a. L1 과 L2 가 모두 같은 값을 가진 개체정항이거나 개체변항이면 L1 과 L2 는 통합된다. b. L1 이 개체정항이고 L2 가 개체변항이면 L1 과 L2 는 통합되어지는데, 이 때 개체변항 L2 에 개체정항 L1 이 할당된다. c. L1 과 L2 가 모두 술어-논항-구조를 가지고 있을 경우에, L1 의 술어와 L2 의 술어가 동일하고, L1 의 논항수와 L2 의 논항수가 동일하며, L1 과 L2 의 각 논항자리의 논항들이 서로서로 통합될 수 있으면, L1 과 L2 는 통합된다. d. 위의 a ~ c 에서 제시된 경우 이외에 통합이 이루어지는 경우는 없다. |
여기에서 용해원리와 통합규칙에 의거한 용해의 예들을 살펴보자.
|
<9>
|
위의 <9> 에서 두 전제절 (<9>a) 과 (<9>b) 가 용해원리와 통합규칙 (<8>a) 에 의해 용해되어 용해체 (<9>c) 가 생성된다.
|
<10>
|
위의 <10> 에서도 두 전제절 (<10>a) 와 (<10>b) 가 용해원리와 통합규칙 (<8>c) 에 의해 용해되어 용해체 (<10>c) 가 생성된다. 여기서는 부정적인 문자성분 q(b, c) 와 그에 상응하는 긍정적인 문자성분 q(b, c) 가 상쇄된다.
|
<11>
|
위의 <11> 에서는 두 전제절 (<11>a) 과 (<11>b) 가 용해원리와 통합규칙 (<8>c) 에 의해 용해되어 용해체 (<11>c) 가 생성된다. 이 과정에서 부정적인 문자성분 q(b, c) 와 그에 상응하는 긍정적인 문자성분 q(x, y) 가 상쇄되기 위해서 각 문자 성분의 논항인 개체정항 b, c 과 개체변항 x, y 가 각각 통합되어야 한다. 이 경우 앞서 (<8>b) 에 제시된 통합규칙에 의해서 변항 x 에 정항 b 가 할당되고, 변항 y 에 정항 c 가 할당된다. 그에 따라 용해체 (<11>c) 이 생성된다.
|
<12>
|
위의 <12> 에서도 두 전제절 (<12>a) 과 (<12>b) 가 용해원리와 통합규칙 (<8>a) 에 의해 용해되어 빈 절 (<12>c) 이 생성된다. 이 때 빈 절은 모순이 발생한 것을 의미한다.
이상의 예를 통해 우리는 용해원리가 술어논리에서의 논리적인 추론을 위해 사용될 수 있다는 것을 알 수 있다. 다른 한편, 우리는 하나의 절 C 가 전제가 되는 절들인 H1, …, Hn 의 집합으로부터 논리적으로 추론가능하다는 것을 증명하기 위해, 이 전제절들과 절 C 의 부정적인 대응체인 ㄱC 를 새로운 집합으로 하여 이 집합에 용해원리를 적용해 보다 모순이 나타나는지를 검증해 볼 수 있다. 용해원리를 반복적으로 적용하여 빈 절이 유도될 경우에 우리는 절 C 가 바로 전제절들인 H1, …, Hn 으로부터의 논리적인 추론이라는 것을 확인할 수 있다. 일종의 간접증명법 (refutation method) 이다. 예를 들어 다음 <13>a ~ <13>d 의 전제절들로부터 <14> 의 절이 추론되는지를 검증해 보자. 먼저 절 <14> 에 대한 부정절과 <13>a ~ <13>d 의 전제절들을 하나로 포괄하는 절의 집합을 <15> 와 같이 가정하고서 여기에 용해 원리를 적용한다.
|
<13> P(a) ∨ ㄱQ(a, b) <13>a (∀x ∀y [Q(x, y) ∨ ㄱR(x, y)] <13>b S(b) <13>c R(a, b) <13>d <14> P(a) <15> P(a) ∨ ㄱQ(a, b) <15>a (∀x ∀y [Q(x, y) ∨ R(x, y)] <15>b S(b) <15>c R(a, b) <15>d ㄱP(a) <15>e |
위의 집합 <15> 에 용해원리를 적용하여 빈 절로 표현되는 모순을 추론해 내는 과정은 다음의 <16> 과 같다.
|
<16> a ㄱQ(a, b) <15>a, <15>e b ㄱR(a, b) <15>b, <15>a c □(empty clause) <15>d, <15>b |
지금까지의 논의를 정리하자면, 용해원리를 적용하는 절차는 일종의 간접추론방식이다. 특정한 절들의 집합이 비정합적 (inconsistent) 이라는 것을 보이기 위해 용해원리가 반복 적용됨으로써 빈 절 (empty clause) 로 표현되는 논리적인 모순이 유도되는 것을 간접증명한 것이다. 다음 절에서 우리는 인공지능언어인 프롤로그의 통사론에 간접증명법이 어떻게 반영되어 있는지를 논의한다.
프롤로그의 프로그램은 다음의 <17> 과 같은 형식으로 일반화될 수 있는 절 (Clause) 들의 집합이다.
|
<17> HEAD : - BODY (결론부) (조건부) |
위 <17> 안의 연산자 ':-' 는 바로 명제논리와 술어논리에서의 함의 (implication) 연산자에 대응되는데, 전제부와 조건부가 뒤바뀐 것이 양자의 차이이다. 예를 들어 다음의 <18>a 는 프롤로그의 절을 나타낸 것인데, 이 절을 술어논리로 표현하면 <18>b 와 같다.
|
<18> a p : - q b q → p |
위 <18>a 는 다음 <19> 의 선접된 문장형식과 논리적으로 등가이다. 따라서 <18>a 의 프롤로그 표현이 <19> 에 있는 술어논리의 문장형식에도 대응된다고 할 수 있다.
|
<19> ㄱq ∨ p |
그런데 프롤로그의 경우, 다음의 <20>a 과 같이 연산자 ':-' 의 조건부에는 다수의 문장형식이 나타날 수 있으나, <20>b 에서처럼, 결론부에 여러 개의 문장형식이 나타날 수는 없다.
|
<20> a. p : - q1, q2, q3 b. p1, p2, p3 : - q |
<20>a 의 절을, 그에 대응되는 술어논리의 형식으로 바꾸면 <21>a 과 <21>b, <21>c 과 같다. 프롤로그에서의 ',' 는 술어논리에서의 연접사 '∧' 에 대응된다.
|
<21> a. q1 ∧ q2 ∧ q3 → p b. ㄱ(q1 ∧ q2 ∧ q3) ∨ p c. ㄱq1 ∨ ㄱq2 ∨ ㄱq3 ∨ p |
위의 <21>c 와 같은 문장형식은 단 하나의 긍정적인 문자성분을 가진 것으로서 바로 혼절 (Horn Clause) 혹은 한정절 (Definite Clause) 에 해당한다.
이런 맥락에서 우리는 '프롤로그의 프로그램이 한정절들의 집합이다' 라는 진술을 이해할 수 있다. 앞서 <17> 에 제시된 일반화된 한정절을 세분화하여 다음의 <22>a ~ c 와 같이 세 가지 유형으로 나누어볼 수 있다.
|
<22> a. HEAD : - BODY. 이때, HEAD = / = Φ, BODY = / = Φ (결론부) (전제부) b. HEAD : -. 이때, HEAD = / = Φ c. : - BODY. 이때, BODY = / = Φ |
위 <22>a 의 한정절은 결론부와 전제부가 모두 채워져 있는 형태이고, <22>b 의 한정절은 결론부만이 채워져 있으며 <22>c 의 한정절은 전제부만이 채워져 있다. 프롤로그에서 <22>a 의 한정절 형식은 규칙 (rule) 을 표현하기 위해서, <22>b 의 한정절 형식은 사실 (fact) 을 나타내기 위해, 그리고 <22>c 의 한정절 형식은 질의 (question) 를 나타내기 위해 사용된다.
프롤로그는 대화형 인공언어로서 사실과 규칙들로 이루어진 지식 베이스 (knowledge base) 에 의거하여 사용자에 의해 질의의 형식으로 제시된 새로운 사실을 추론하는 기능을 수행한다. 곧, 사용자에 의해 던져지는 질의가 프롤로그에 의해 그 사실을 부정하는 하나의 새로운 사실로 받아들여져 기존의 지식 베이스에 첨가된다. 그리고 이 확장된 지식 베이스에 앞 절에서 논의한 용해원리가 적용된다. 이러한 관계들을 정리하여 다음의 <23> 과 같이 나무 구조로 나타낼 수 있다.
|
<23> 프롤로그 - 프로그램 / \ 지식 베이스 질의 / \ 사실들 규칙들 |
우리는 앞 절에서 정의하고 논의한 용해원리를 프롤로그의 한정절에 적용해 볼 수 있겠는데, 다음의 <24> 에 하나의 예가 제시되어 있다.
|
<24>
|
위의 한정절 <24>a 은 다음 <25>a 의 술어논리형식과 동일하고, 한정절 <24>b 는 다음 <25>b 의 술어논리형식과, 한정절 <24>c 은 다음 <25>c 의 술어논리형식과 동일하다.
|
<25>
|
용해원리에 의해 <25>a 과 <25>b 로부터 <25>c 이 추론된 것처럼, <24>a 과 <24>b 로부터 <24>c 이 추론되도록 하기 위해 앞 절에서 제시한 용해원리를 프롤로그의 한정절형식으로 수정할 필요가 있다. 다음의 <26> 에는 수정 용해원리가 제시되어 있다.
|
<26> 수정 용해원리 (Revised Resolution Principle) 하나의 한정절 dc1 내에서 연산자 ':-' 다음의 전제부에 속하는 하나의 구성 성분 L1 이 존재하고, 그것에 상응하는 구성성분 L2 가 다른 하나의 한정절 dc2 의 연산자 ':-' 앞의 결론부에 존재하고, 그 두 구성성분 L1 과 L2 가 서로 통합될 수 있으면, 그 두 한정절은 용해되어 용해체 (resolvent) 라 불리는 새로운 한정절이 생성된다. 이 용해체는 두번째 한정절 dc2 의 전제부 전체가 첫번째 한정절 dc1 의 해당 구성성분 L1 을 대치함으로써 얻어진다. 이러한 용해과정은 빈 한정절로 표현되는 모순이 나타날 때까지 계속된다. |
위의 정의 <26> 에서 사용된 통합개념은 앞 절의 <8> 에서 정의한 것과 동일하다. 이해의 편의를 위해, 이 개념을 여기서 다시 제시해 보면 다음과 같다.
|
<8> 통합 (Unification) a. L1 과 L2 가 모두 같은 값을 가진 개체정항이거나 개체변항이면 L1 과 L2 는 통합된다. b. L1 이 개체정항이고 L2 가 개체변항이면 L1 과 L2 는 통합되어지는데, 이 때 개체변항 L2 에 개체정항 L1 이 할당된다. c. L1 과 L2 가 모두 술어-논항-구조를 가지고 있을 경우에, L1 의 술어와 L2 의 술어가 동일하고, L1 의 논항수와 L2 의 논항수가 동일하며, L1 과 L2 의 각 논항자리의 논항들이 서로서로 통합될 수 있으면, L1 과 L2 는 통합된다. d. 위의 a ~ c 에서 제시된 경우 이외에 통합이 이루어지는 경우는 없다. |
수정된 용해원리에 의거하여 하나의 프롤로그 프로그램 내에서 새로운 사실이 추론되는 과정을 살펴보자.
|
<27> computer_linguist(Mimi) : - programs_in(Mimi, prolog). <27>a programs_in(X, Y) : - knows(X, Y) <27>b a_program_language(prolog) : -. <27>c knows(Mimi, prolog) : -. <27>d |
위 <27> 에 제시된 프로그램은 하나의 지식베이스로서 두 개의 규칙과 두 개의 사실로 이루어져 있다. 우리는 이 지식베이스로부터 <28> 과 같은 하나의 새로운 사실을 추론하려고 한다.
|
<28> computer_linguist(Mimi) : -. |
용해원리에 의한 추론시에 술어논리에서와 마찬가지로 우리는 사실 <28> 을 부정하는 하나의 한정절을 <27> 의 지식베이스에 첨가하여 <30> 과 같이 용해과정을 시작한다. 사실을 부정하는 것이 프롤로그에서는 질의형식으로 표현되므로, 곧 사실 <28> 에 대한 부정은 질의 <29> 이다.
|
<29> : - computer_linguist(Mimi). <30> : - programs_in(Mimi, prolog). a <29>, <27>a : - knows(Mimi, prolog). b <30>a, <27>b, <8> :-. (empty clause). c <30>b, <27>d |
<30> 의 용해과정은 <28> 에 제시된 사실을 부정하는 <29> 와 같은 질의에서 출발함으로써, (<30>c) 에서와 같은 빈 한정절로 표현되는 논리적인 모순이 추론되어지는 과정을 보여준다. 이와 같이 어떤 사실을 부정함으로써 논리적인 모순이 결과한 경우에 우리는 거꾸로 그 사실이 논리적으로 추론가능하다고 결론짓는다.
지금까지 우리는 절 (clause) 들의 집합에 적용되는 용해원리와 통합기재를 중심으로 프롤로그의 추론과정과 제 1 차 술어논리의 추론과정을 비교, 논의했다. 이제 앞 절의 <1>a ~ <1>f, <2>a ~ <2>d 에 제시된 제 1 차 술어논리의 어휘부와 통사규칙에 대응하는 프롤로그의 어휘부 그리고 통사규칙에 대해 간단히 살펴본다. 프롤로그에서도 제 1 차 술어논리에서와 마찬가지로 개체정항과 개체변항을 구분한다. 개체정항의 경우 영문 소문자로 시작하는 문자열로, 개체변항은 영문 대문자로 시작하는 문자열로 표기한다. 정수도 개체정항에 속한다. 제 1 차 술어논리에서처럼 프롤로그에서도 개체정항과 개체변항이 명사 (term) 에 속하는데, 이들 외에 술어 (논항1, …, 논항n) 의 형식을 가진 하나의 구조 (structure) 도 명사에 속하는 것으로 간주된다. 구조의 경우에, 술어가 항가라고 불리는 고정된 숫자의 논항자리를 가지는 점에서 제 1 차 술어논리에서의 술어와 동일하나, 프롤로그의 술어는 변항으로 나타날 수 없기 때문에 술어 이름이 영문 소문자로 시작하는 문자열이어야 한다. 논리정항의 경우, 부정연산자는 'not' 으로, 선접사는 ':' 로 표현된다. 연접사는 ',' 로, 함의연산자는 ':-' 로 각각 표현되며 그러나 술어논리의 쌍방함의 연산자 '↔' 에 대응하는 연산자는 정의되어 있지 않다. 프롤로그에서는 양화사가 명시적으로 표현되지 않고, 모든 개체변항은 암묵적으로 보편양화사 ∀ 에 의해 결속되는 것으로 간주된다. 보조기호로 '(' 과 ')', '.' 혹은 '?' 이 사용될 수 있다. 이상의 논의를 정리하면 다음의 <31>a ~ <31>e 와 같다.
|
<31> a 개체정항 : j, m, … b 개체정항 : X, Y, Z, … c 구조 : p1(arg1, …, arg n), p2(arg1, …, arg n), …, pn(arg1, …, arg n) d 논리정항 : not, ':', ',', ':-' e 보조기호 : '(', ')', '.', '?' |
술어논리의 문장형식 (formula) 에 대응하는 프롤로그의 한정절 (definite clause) 은 다음의 통사규칙에 의해 정의된다.
|
<31> a p 가 n 항 술어이고 t1, ..., tn 이 명사들이면, p(t1, ..., tn) 은 하나의 원자절 (atomic clause) 이다. b Φ 와 Ψ 가 원자절이면 not(Φ), (Ψ : Φ), (Ψ, Φ) 들이 복합절 (compund clause) 이다. c Ψ, Φ 가 원자절이고 P 가 복합절이면, (Ψ.) 나 혹은 (:-Φ.), (:-P.) 나 (Ψ:-Φ.), (Ψ:-P.) 이 한정절이다. |
위의 통사규칙 <32>c 에서 함의연산자 ':-' 앞에 원자절만이 나타날 수 있도록 제한함으로써 본래의 한정절의 개념이 유지되도록 했다. <32>a ~ <32>c 에 제시된 통사규칙은 제 1 차 술어논리에 대응되는 것들 만으로 국한된 것이다.
이 절에서는 한정절 문법을 이용하여 문장을 분석하고 생성하는 방법을 논의한다. 한정절문법은 Pereira, Warren(1980) 에 의해 제안된 문법형식으로, 문맥자유문법 (Context-Free Grammar) 이 프롤로그에 의해 해석됨으로써 언어분석이 이루어지도록 고안되었다. 따라서 여기서는 먼저 하나의 문맥자유문법의 형식적인 특성을 논의한 다음, 이 문법에 의해 언어가 어떻게, 구체적으로 영어의 문장구조가 어떻게 분석되어지는지를 살펴보고, 마지막으로 이 문맥자유문법을 프롤로그의 한정절문법으로 어떻게 변환하는지를 기술하겠다.
문맥자유문법은 보다 일반적으로 다음의 <33> 과 같이 정의되는 형식문법 G 의 한 유형이다.
|
<33> G = <N, T, P, S> a. N 은 비종단어휘의 유한한 집합이고, b. T 는 종단어휘의 유한한 집합이며, c. P 는 p → q 의 형태를 가진 생성규칙들의 유한한 집합이며, d. S 는 N 의 한 원소로서 초기기호이다. |
위의 형식문법의 정의 중 세번째 <33>c 에 제시된 생성규칙의 형태가 어떠냐에 따라, 무제한문법, 문맥의존문법, 문맥자유문법, 정규문법 등 여러 유형의 문법들이 정의되는데, 문맥자유문법의 생성규칙은 화살표 다음의 q 가 빈 기호연쇄가 아니라는 제약을 가진다 (이민행, 1995, 139).
다음의 <34> 에 제시된 영어를 위한 구절구조문법은 앞의 정의에 따라 문맥자유문법으로 분류될 수 있다.
|
<34> ENG-G 1 N = {S, NP, VP, DET, N, PN, V} T = {a, boy, Mimi, Chelswu, sleeps, likes} P = {p1 : S → NP VP, p2 : NP → PN, p3 : NP → DET N, p4 : VP → V NP, p5 : VP → V, p6 : DET → a, p7 : N → boy, p8 : N → book, p9 : PN → Mimi, p10 : PN → Chelswu, p11 : V → sleeps, p12 : V → likes … … } |
위 문법에서 N 은 비종단어휘의 집합이고, T 는 종단어휘의 집합이며, P 는 생성규칙들의 집합이고, S 는 초기기호이다. 이 영어문법 ENG-G 1 에 의해 다음의 영어문장 <34>a, b 가 문법적인 것으로 인식된다 (recognition).
|
<35> a. Mimi likes a boy. b. Mimi likes Chelswu. |
곧 어떤 하나의 문장이 주어진 문법에 의해 생성가능한 문장이면, 그 문장은 그 문법에 의해 인식된다고 할 수 있다. 위의 예 <35>a 가 생성되는 과정은 다음의 <36> 과 같이 기술될 수 있다.
|
<36> a. S (초기기호) b. NP VP (규칙 p1) c. PN VP (규칙 p2) d. PN V NP (규칙 p4) e. PN V DET N (규칙 p3) f. Mimi V DET N (규칙 p9) g. Mimi likes DET N (규칙 p12) h. Mimi likes a N (규칙 p6) i. Mimi likes a boy (규칙 p7) |
위의 문장생성 과정은 생성규칙의 화살표 왼편의 비종단기호가 오른편의 기호들로 대치되는 과정이 반복됨으로써 하나의 영어 문장이 생성되는 것을 보여준다. 이러한 기호들의 대치과정을 언어학에서는 다시쓰기 (rewriting) 라 부르며, 다시쓰기에 이용되는 생성규칙을 다시쓰기규칙 (rewriting rule 이라 부르기도 한다. 곧 문장 'Mimi likes a boy' 는 위의 문법 ENG-G 1 에 의해 생성이 되는 문장이기 때문에 문법적인 문장으로 인식된다고 할 수 있다. 마찬가지로 위 문장 <36>b 도 이 문법에 의해 생성되는 문장이고 문법적으로 인식된다. 반면 'Mimi a boy likes' 는 문법 ENG-E 1 에 의해 생성되지 않으면, 문장 'Mimi sleeps a book' 은 이 문법에 의해서 생성되어 문법적인 것으로 인식이 되지만, 실제적으로 영어의 모국어화자에게는 비문법적이다. 이런 맥락에서 우리는 두 가지 종류의 문법을 구분해 볼 수 있는데, 그것은 언어학자에 의해 인공적으로 만들어져서 어떤 언어표현의 분석, 생성과 문법성 판정에 이용될 수 있는 인공문법 (Artificial Grammar) 과 천부적으로 언어표현을 분석하고, 생성하며 그 문법성 여부를 판정할 언어능력을 갖춘 모국어화자를 지칭하는 자연문법 (Natural Grammar) 이다. 이는 우리가 언어를 자연언어와 인공언어로 구분하듯이 문법도 자연문법과 인공문법으로 구분지을 수 있다는 의미이다. 이론언어학자나 전산언어학자의 기능 중의 하나는 바로 자연문법에 가까운 인공문법을 설계하는 일일 것이다.
이와 같이 영어문장의 생성과 분석에 사용되는 문맥자유문법 ENG-G 1 을 프롤로그가 이해할 수 있는 형식으로 바꾸어 표현할 수 있다면, 곧바로 프롤로그의 해석기나 컴파일러의 도움으로 주어진 문장들을 인식하거나 분석할 수 있을 것이다. 한정절문법의 제안자들인 Pereiara, Warren 는 문맥자유규칙 혹은 생성규칙을 프롤로그의 한정절로 바꾸어 표현함으로써 이러한 방향의 시도를 한 것이다. 예컨대 다음 <37>a 에 제시된 문맥자유규칙이, 곧 문법 ENG-G 1 의 생성규칙 p1 이 한정절문법에서는 <37>b 와 같이 표현된다. <37>b 는 프롤로그에서 내부적으로 <37>c 로 이해된다.
|
<37> a. S → NP VP b. s → np, vp. c. s(X, Z) : - np(X, Y), vp(Y, z). |
한편, 생성규칙의 화살표 오른쪽에 종단어휘가 나타나는 규칙의 경우에는 DCG 에서 다음의 <37>b 에서와 같이 표현된다. 또한 <38>b 는 프롤로그에서 내부적으로 <38>c 로 이해된다.
|
<38> a. DET → a b. det → [a]. c. det([a|R], R). |
하나의 문맥자유규칙이 한정절문법의 규칙으로 변환되는 관계는 일반화시켜 다음과 같이 얘기할 수 있다. 화살표의 오른쪽에 비종단어휘가 나타나는 문맥자유규칙의 경우에는 DCG 에서 다음의 <39>b 의 형태로 바뀌고, 이 DCG 의 규칙은 프롤로그에서 내부적으로 <39>c 로 이해된다. 화살표의 오른쪽에 종단어휘가 나타나는 문맥자유규칙의 경우에는 DCG 에서 아래의 <40>b 의 형태로 바뀌고, 이 DCG 의 규칙은 프롤로그에서 내부적으로 <40>c 로 이해된다.
|
<39> a. NT → A_1, A_2, …, A_n b. nt → a_1, a_2, …, a_n. c. nt(L, Ln) : - a_1(L, L1), a_2(L1, L2), …, a_n(Ln_1, Ln). <40> a. NT → T b. nt → [t]. c. nt([t|R], R). |
위의 제시된 일반화된 변환규칙에 의해 앞의 문맥자유문법 ENG-G 1 의 생성규칙들을 한정절문법의 규칙들로 바꾸면 다음의 <41>a ~ <41>l 과 같다.
|
<41> (가) /* ENG-DCG 1*/ a. s → np, vp. /* S → NP VP */ b. np → pn. /* NP → PN */ c. np → det, n. /* NP → DET N */ d. vp → v, np. /* VP → V NP */ e. vp → v. /* VP → V */ f. det → [a]. /* DET → a */ g. n → [boy]. /* N → boy */ h. n → [book]. /* N → book */ i. pn → [Mimi]. /* PN → Mimi */ j. pn → [Chelswu]. /* PN → Chelswu */ k. v → [sleeps]. /* V → sleeps */ l. v → [likes]. /* V → likes */ (나) a'. s(L, L2) : - np(L, L1), vp(L1, L2). /* S → NP VP */ b'. np(L, L1) : - pn(L, L1). /* NP → PN */ c'. np(L, L2) : - det(L, L1), n(L1, L2). /* NP → DET N */ d'. vp(L, L2) : - v(L, L2), np(L, L2). /* VP → V NP */ e'. vp(L, L2) : - v(L, L2). /* VP → V */ f'. det([a|R], R). /* DET → a */ g'. n([boy|R], R). /* N → boy */ h'. n([book|R], R). /* N → book */ i'. pn([Mimi|R], R). /* PN → Mimi */ j'. pn([Chelswu|R], R). /* PN → Chelswu */ k'. v([sleeps|R], R). /* V → sleeps */ l'. v([likes|R], R). /* V → likes */ |
위의 규칙들 중 a 에서 e 까지는 <37>b 의 패턴을 따라서 변환된 것이고, f 에서 i 까지는 <38>b 의 패턴을 따라 변환된 것이다. 이 DCG - 규칙들이 프롤로그에서 내부적으로는 각각 위의 <41>a'-(41)i' 로 이해된다. 한정절문법 ENG-G 1 을 하나의 지식베이스 <42>a 로 간주하여 다음의 <42>b 과 같이 컴파일한 다음, <42>c 과 같이 ? - s([Mimi, likes, a, boy], [ ]). 라는 질의를 하면 프롤로그의 해석기는 yes 라는 답을 내보낼 것이다.
|
<42> a. /* edcg1. pl (ENG-DCG 1) */ s → np, vp. np → pn. np → det, n. vp → v, np. vp → v. det → [a]. n → [boy]. n → [book]. pn → [mimi]. pn → [chelswu]. v → [sleeps]. v → [likes]. b. ? - consult (edcg1). c. ? - s([Mimi, likes, a, boy], [ ]). yes. |
위의 질의 ? - s([Mimi, likes, a, boy], [ ]). 의 의미는 리스트 [Mimi, likes, a, boy] 에서 빈 리스트 [ ] 를 빼고, 남은 리스트가인 [Mimi, likes, a, boy] 가 s 라는 범주에 속하는 표현인가를 묻는 것이다. 곧 주어진 한정절문법 ENG-G 1 에 의해 [Mimi, likes, a, boy] 이 문장으로 인식되는지를 묻는 것이다. 이 과정을 일괄적으로 기술하면 다음의 <43> 과 같다.
<42> 의 이 한정절문법 ENG-DCG 1 은 하나의 표현체가 어떤 범주에 속하는 언어표현인지 아닌지의 여부만을 판정해 줄 뿐, 그 표현체의 통사구조에 대한 정보를 제공하지는 않는다. 그런 의미에서 이 문법은 인식기 (Recognizer) 의 기능만 가질 뿐 분석기 (Parser) 로써 기능하지 못한다고 얘기할 수 있다. 그런데, 이 한정절 문법을 다음의 ENG-DCG 2 와 같이 확대할 경우에 분석기의 기능도 갖게 된다.
|
<43> /* edcg2. pl (ENG-DCG 2) */ s(s(NP, VP)) → np(NP), vp(VP). np(np(PN)) → pn(PN). np(np(DET, N)) → det(DET), n(N). vp(vp(V, NP)) → v(V), np(NP). vp(vp(V)) → v(V). det(det(a)) → [a]. n(n(boy)) → [boy]. n(n(book)) → [book]. pn(pn(Mimi)) → [Mimi]. pn(pn(Chelswu)) → [Chelswu]. v(v(sleeps)) → [sleeps]. v(v(like)) → [likes]. |
이제 이 한정절 문법을 기반으로 하여, 다음의 <44>a 과 같은 질의를 하면 <44>b 와 같은 답을 얻게 된다.
|
<44> a ? - s(STRUCTURE, [Mimi, likes, a, boy], [ ]). b STRUCUTRE = s(np(pn(Mimi)), vp(v(like), np(det(a), n(boy)))). |
우리는 유틸리티 프로그램을 사용하여 위의 <44>b 의 술어-논항구조를, 문장구조를 나타내기 위해 언어학에서 많이 이용되는 수형도로 어렵지 않게 표현할 수 있다 (Lehner 1990).
|
<45>
|
이러한 분석을 위한 한정절문법은 언어표현의 생성에도 이용될 수 있다. 예컨대, 구조를 제시하고 그 구조에 상응하는 언어표현체를 찾아내라는 주문을 할 수도 있다. 이 경우에 프롤로그 해석기는 통합기재에 의해서 적당한 표현체를 찾아낸다. 다음의 예를 보자.
|
<45> a. ? - s(s(np(pn(Mimi)), vp(v(like), np(det(a), n(boy)))), Eng_Sentence, [ ]). b. Eng_Sentence = [Mimi, likes, a, boy]. |
위 <46>a 의 질의는 구조 s(np(pn(mimi))), vp(v(like), np(det(a), n(boy)))) 를 갖는 영어문장 EngSentence 는 무엇인지를 묻는다. 이에 대한 답으로 [Mimi, likes, a, boy] 가 제시된다. 이처럼 한정절 문법은 문장의 인식과 분석에 사용될 수 있을 뿐만 아니라 문장의 생성에도 쓰일 수 있다. 다음 절에서는 한정절 문법의 구조분석기능과 언어생성기능을 이용하여 간단한 한-영 기계번역을 할 수 있는지를 논의한다.
여기에서 기술하는 실험적인 한국어-영어 기계번역 시스템은 언어보편적인 (interlingual) 모델에 속하는 것으로 그 구조는 다음과 같다.
|
<45>
|
이제 예를 통해서 한국어 문장이 영어로 기계번역되는 과정에 대해서 살펴보자. 한국어 문장을 분석하는 역할은 하향식 (top-down) 과 상향식을 혼합한 좌측-코너-통사분석기 (Left-Corner Parser) 가 떠맡는다. 이 분석기는 하나의 리스트를 입력으로 하여 술어-논항-구조의 형태로 되어 있는 언어보편적인 표현체를 출력으로 내놓는다. 언어보편적인 표현체와 관련하여, 이 시스템에서는 영어와 한국어가 시제구 (Tense Phrase), 격구 (Case Phrase) 를 가지는 것으로 가정하고, 여기서의 격은, 행위자격 (agent), 대상격 (patiens) 등 의미적인 격을 가리킨다. 언어보편적인 표현체로부터 영어의 문장을 생성하는 과정을 통합기반 (unification-based) 의 자질구조가 보강된 한정절문법이 책임진다. 이 시스템은 두 언어에서 격과 시제가 부호화되는 방식이 다름에도 불구하고 어떻게 두 언어 간의 기계번역이 가능한지를 보여준다. 영어의 경우, 격은 형상적으로 시제는 동사에 의해 종합적으로 부호화된 반면, 한국어의 경우, 격과 시제가 모두 해당 형태소에 의해 부호화된다. 이제, 하나의 예를 들어 번역과정을 기술하고자 한다.
|
<45> a. ? - mtkes([토니오, 가, 연극, 을, 좋아하, ㄴ, 다]). b. ? - parse([토니오, 가, 연극, 을, 좋아하, ㄴ, 다], [ ], IL1), IL1 = .. [_, IL]. c. IL1 = smax(smas(s(cp(dp(d(Tonio)), case(ag)), !!! tp(vp(cp(dp(det(d_), n(theater)), case(pa)), v(like_)), tense(pres))), mood(decl)) ). Interlingual Representation in F-A-Structure IL = smax(s(cp(dp(d(Tonio)), case(ag)), tp(vp(cp(dp(det(d_), n(theater)), case(pa)), v(like_)), tense(pres)), mood(decl)). d. Interlingual Representation in C-Structure
e. mtkes(KS) : - parse(KS, [ ], L), L =.. [_, L1], esmax(S, [ ], L1, F), nl, write(S), nl, nl, write( '>>> Information Structure'), nl, nl, print_fstr(F). <49> a. ? - esmax(S, [ ], smax(s(cp(dp(d(Tonio)), case(ag)), tp(vp(cp(dp(det(the), n(theater)), case(pa)), v(like_)), tense(pres))), mood(decl)), F). b. >>> K-E-Translation: S = [Tonio, likes, the, theater]. c. F = [phon : likes, cat : v, subc : [first:[agr:[num:sg, per: 3|_], case : nom, phon : Tonio, cat : det|_], second : [case : acc, phon : the, cat : det, comp : [phon : theater, cat : n |_]|_]|_], mood : [phon : ., cat : mood|_]|_]. d. Information Structure I → phon : likes I → cat : v I → subc I I → first I I I → agr I I I I → num : sg I I I I → per : 3 I I I → case : nom I I I → phon : Tonio I I I → cat : det I I → second I I → case : acc I I → phon : the I I → cat : det I I → comp I I → phon : theater I I → cat : n I → mood I → phon :. I → cat : mood |
전체 기계번역 과정을 관장하는 술어는 1 항 술어인 mtkes/1 이고, 이 술어는 <48>a 에 정의되어 있다. 좌측-코너 통사분석기의 3 항 술어 parse/3 는 한국어 문장을 언어보편적인 구조로 변환하는 기능을 수행한다. 곧, <48>b 에서 술어 parse/3 가 리스트 [Tonio, ka, yeonkuk, ul, choaha, n, ta] (토니오가 연극을 좋아한다) 를 입력으로 하여 형상적인 구조인 <48>c 의 IL1 을 출력한다. <49>c 에서 구조 IL1 을 논항으로 하고 있는 함수 smax 를 제거하면, 언어보편적인 표현체인 IL 이 <48>c 에서처럼 얻어진다. 술어-논항 구조의 형태로 되어 있는 이 IL 은 하나의 유틸리티 술어의 도움으로 <48>d 와 같은 수형도로 나타내질 수 있다. <49>a 의 술어 emax/3 는 언어 보편적인 구조를 입력으로 하여 목표언어의 문자열 리스트를 출력하는 기능을 한다. 곧 영어 문장의 생성에 책임이 있다. <49>b 의 리스트 [Tonio, likes, the, theater] (Tonio likes the Theater) 가 언어보편적인 구조 <49>a 로부터 생성된 영어의 결과문장이다. 이 영어 문장에 대한 정보는 <49>c 에 자질구조로 표현되어 있고, 이 구조도 또한 <49>d 와 같은 행렬구조로 변환될 수 있다.
지금까지, 프롤로그의 논리적인 토대에 대한 논의를 출발로 하여, 프롤로그를 사용한 언어의 기계적인 분석과 생성과정을 기술하였다. 또한 이를 바탕으로 하여 실험적인 한-영 기계번역 시스템의 설계구조에 대해서 논의했다. 이 과정에서 한국어와 영어 간의 형태적ㆍ통사적인 차이에도 불구하고, 언어보편적인 구조를 상정함으로써 한국어에서 영어로의 기계번역이 가능하다는 것을 보였다. 여기서 속한 기계번역 시스템은 극히 제한된 통사구조의 한국어와 영어 문장을 대상으로 하는 실적인 연구목적의 시스템이었다.