자연언어 처리
인공지능 입문 - 그림으로 풀어본 : 도우치 준이치 지음, 최기선 옮김, 미래사, 1992, page 97~123
인간을 정의할 때 '인간은 언어를 사용하는 동물이다' 라고 표현하기도 한다. 이렇듯 말을 하고 (또는 글을 쓰고) 그것을 이해하는 것은 인간만이 지닐 수 있는 능력이다. 그런데 이러한 인간 고유의 능력을 기계가 할 수 있도록 하는 것이 바로 자연언어처리라고 불리는 분야이다.
자연언어를 이해하는 데는 두 가지 측면이 있다. 첫째는 문법 (구문) 적 이해이다. 각 단어의 품사를 인식하여, 한 문장 안에서 단어가 어떻게 구성되었는가를 인식하는 것이다. 또 한 측면은 의미적 이해이다. 문장을 문법적 지식만으로는 완전히 이해할 수 없다. 예를 들면, "아름다운 한국의 나" 라는 문구에서 '아름답다' 가 '한국' 을 수식하는가 '나' 를 수식하는가는 문법적인 문제라기 보다는 의미적인 문제이다. 따라서 자연언어의 의미적 구조를 명확히 하기 위한 문법도 고려되고 있다.
다음 절에서는 구문을 표현하는 문법과 의미를 표현하는 문법을 소개하였다.
문장의 구문을 표현하기 위한 대표적인 문법에는 다음 두 가지가 있다.
① 구(句)구조문법 (문맥자유형 문법)
② 확장천이(ATN : Augmented Transition Network) 문법
문장은 구(句)가 모여 이루어진 것이므로,
문장의 구조를 명확히 하기 위해서는 구의 구성을 아는 것이 기본이라는 데서 출발한
것이 구구조문법이다. 구체적으로 말하자면, 문장의 처음부터 끝까지에 바꿔쓰기
규칙 (rewriting rule) 을 적용함으로써 그 문장을 표현하는 해석트리를 구성해 나가는
것이다.
확장천이문법은 재귀적으로 천이하는 천이표를 문장의 앞에서부터
끝까지 차례로 적용함으로써 문장의 구조를 명확히 하는 것이다. '확장' 이라는 의미는,
이 문법이론을 기초로 이루어진 재귀천이문법 (RTN : Recursive Transition Network)
의
방식을 컴퓨터처리용으로 확장한다는 데서 붙여졌다.
영문은 명사구, 동사구라는 구 (句) 의 결집이라고 할 수 있다. 다음의 영문을 보자.
The boy broke the window with a hammer.
이 영문의 구조는 그림 1과 같다.

그림 1 문장의 구(句)구조
각각의 약호는 다음과 같다.
|
S = 문장 PP = 전치사구 |
NP = 명사구
|
VP = 동사구
|
이와 같이 문장은 구의 결집이라는 생각이 구구조문법의 기본이다. 구구조문법에서는 구구조를 해명하기 위해 예를 들면, 다음 그림과 같이 바꿔쓰기 규칙을 사용한다.
|
(a) S → NP·VP·PP |
(b) |
VP → V·NP |
이 바꿔쓰기 규칙은 각각 다음의 것을 나타내고 있다.
(a)
명사구, 동사구, 전치사구가 차례로 이어진 것이 문장이다.
(b) 동사, 명사구가
차례로 이어진 것이 동사구이다.
(c) 관사, 명사가 차례로 이어진 것이 명사구이다.
(d)
명사는 그 자체로 명사구이다.
(e) 전치사, 명사구가 차례로 이어진 것이 전치사구이다.
(f)
boy, window, hammer 는 각각 명사이다.
(g) the, a 는 각각 관사이다.
(h) broke
는
동사이다.
(i) with 는 전치사이다.
이러한 법칙을 문장의 처음부터
끝까지 적용시킴으로써 그림 1 과 같은 해석트리를 얻을 수 있는 것이다. 중간까지의
적용결과를 보자.

문법을 바꿔쓰는 규칙이 아니라, 그림 2 와 같은 천이네트워크 (TN : Transition Network) 로 나타낸 것을 확장천이문법 (ATN) 이라 한다.

그림 2 확장천이문법
여기서 대문자 (NP, VP 등) 는 다른 천이네트워크로
이동하는 것을 나타내고, 종단기호 (terminal symbol) 에 도달하면 처음의 천이네트워크로
되돌아온다. 문장 (S) 의 종단기호에 이르러 모든 단어를 다 거쳤으면 처리는 완료된다.
한편 소문자 (det, n 등) 는 처리중인 단어의 품사를 표시한다.
이 천이네트워크를
사용하여 앞의 문장을 해석해 보자.
① 우선 상태 S11 에서부터 시작해 보자.
대문자는 다른 천이네트워크로 이동하는 것을 나타낸다. 따라서 바로 상태 S31
로
이동한다.
② 최초의 단어 (The) 는 관사이므로 상태 S32 로
이동한다.
③ 다음 단어 (boy) 는 명사이므로 상태 S33 으로
이동한다. 상태 S33 은 종단이다. 이때는 처음의 천이네트워크로 되돌아간다.
결국 상태는 S12 로 변한다. 거기에는 VP 가 있으므로 S21
로
이동한다.
이렇게 상태를 변화시켜 가면서 문장을 해석하는 것이다. 최종적인 상태의 천이를 그림 3 에서 보여주고 있다.

그림 3 상태의 천이
그 결과, 앞의 그림 1 과 동일한 해석트리를 얻을 수 있다.
문장을 문법적 구조가 아니라 의미적인 구조로써 표현하려는 시도가 있다. 예를 들면, 다음 두 개의 문장은 의미가 완전히 같다.
그는 그녀에게 책을 주었다.
그녀는
그에게서 책을 받았다.
그런데 문법적인 해석트리에서는 이것이 명확하지 않다. 두 문장은 같은 의미이기 때문에, 의미적으로도 같은 구조로 표현되어야 한다.
반대로, 같은 문장이라도 그 의미에 있어 구조가 다른 것이 있다. 앞에서 든 '아름다운 한국의 나' 등도 '아름답다'가 '한국'을 수식하는가 '나'를 수식하는가에 따라 문장의 의미구조는 다르다. 지금부터는 이러한 의미구조를 표현하는 문법을 설명하겠다.
의미네트워크는 앞 절에서 설명했듯이 지식표현의 한 수단으로, 문장의 의미구조를 나타내는 데도 사용한다. 이를 위해 그림 4 와 같은 다섯 종류의 결합기호가 사용된다.

그림 4 의미네트워크의 결합기호
다음 문장의 의미를 네트워크를 사용하여 표현해보자.
I threw the man in the ring.
이 영문의 의미는 다음 세 가지로 해석될 수 있다.
While in the ring I threw the man.
링
안에서 나는 그 남자를 던졌다. - A
I threw the man who was in the ring.
링
안에 있는 남자를 나는 던졌다(던진 후 남자가 어디에 있었는지는 알 수 없다).
- B
I threw the man into the ring.
나는 그 남자를 링 안으로 던졌다.
- C
같은 문장이어도 의미가 다르면, 그 의미구조는 다르다. 세 가지 의미를 의미네트워크를 사용하여 표기하면 그림 5 와 같다.

그림 5 의미네트워크에 의한 의미표현
격 (格) 문법은 술어 (동사) 를 중심에 두고, 여기에 대하여 각 단어의 의미적인 관계를 기술함으로써 의미구조를 표현하는 문법이다. 단어 사이의 의미관계는 격 (格) 이라 불리며, 그 종류는 다음과 같다.
(Agt : agent, P : patient, I : instrument, S : source, L : location, D : direction, R : result)
다음의 영문을 보자.
John broke the window with his hammer.
'존은 망치로 창을 깨뜨렸다.' 는 것인데, 이 문장의 의미를 격문법을 사용하여 나타내면 그림 6 과 같다.

그림 6 격문법에 의한 의미표현
다음 문장의 의미도 그림 6 과 똑같이 표현되는데 주의하기 바란다.
The window was broken by John with his hammer.
단어가 가지는 개념에 주목하여 개념으로 문장의 의미를 설명하는 것이 개념의존이론 (Conceptual Dependency Structure = CD이론) 이다.
예를 들면, 사과와 apple 이란 단어는 전혀 다르지만 동일한 것 (개념) 을 나타내고 있다. 문자에 있어서도 마찬가지이다.
나는 학교에 갔다.
I went to school.
이 두 문장은 언어의 종류는 달라도 개념은 같다. 또한 같은 언어에서도,
나는 그에게 사과를 주었다.
그는 나에게서
사과를 받았다.
의 두 문장은 능동태, 수동태라는 차이는 있어도 의미적으로는 완전히 같은 개념이다.
이처럼 단어를 언어에 의해서가 아니라 의미소
(意味素,
개념소) 로 표현하여, 의미소의 구조로 문장의 의미를 표현하는 것이 CD이론이다.
CD이론에서는 개념의 형태를 물건, 행동, 시간, 장소, 물건의 속성, 동작의
속성이라는 여섯 가지로 분류한다. 행동의 형태도 14개로 분류하며, 동사의 의미는
그 중 하나를 사용하여 나타낸다.
예를 들면, 앞의 두 문장을 CD이론에
의해 표현해 보면 그림 7 과 같다.

그림 7 CD이론에 의한 의미표현(1)
물론 영어의
He got apples from me.
도 동일하게 표현된다.
다른 문장의 예를 보자.
I have a book.
이것은 CD 이론에 의하면 그림 8 로 표현된다.

그림 8 CD이론에 의한 의미표현(2)
자연언어를 논리식으로
표현하려는 것이 몬테규문법의 발상이다. 단, 이때 자연언어란 정상적인 (진위를 논할
수 있는) 문장이어야 한다.
예를 들면, 다음 문장을 논리식으로 변환하는
것을 생각해 보자.
모든 사람은 잠을 잔다.
이 문장은 다음과 같이 바꾸어 말할 수 있다.
만약 x 가 사람이라면, x 는 잠을 잔다.
이것을 이론식으로 나타내면 다음과 같다.
∀x[사람(x)→잠을 잔다(x)]
여기에서 ∀x 는 '모든 x 에 대하여', 괄호 왼쪽의 사람 (x) 은 'x가 사람이라면' 이라는 조건, 괄호 오른쪽의 잠을 잔다 (x) 는 'x는 잠을 잔다' 는 결론을 나타낸다.
그러면 자연언어는 어떤 순서를 밟아서
논리식으로 변환되는가? 우선, 문장을 문법적으로 해석하는 해석트리를 만든다 (그림
9 참조).
다음은, 밑의 노드 (node) 또는 가지에서 차례로 논리식으로 변환한다
(그림
10 참조).
①∼⑤의 순서대로 논리식이 작성된다. 여기서 어떤 노드에
대한 의미표현은, 그 노드 이하의 의미표현으로부터 자동적으로 합성된다는 것에
주의해야 한다. 이것은 '전체의 의미는 부분의 의미로부터 합성된다'는 원리에 기초한
것이다. 이렇게 하여 ⑤의 논리식이 최종적으로 완성되는 것이다.

그림 9 문장의 해석트리(1)

그림 10 문장의 해석트리(2)
구(句)구조문법과 확장천이문법은 유럽과 미국의 언어를 중심으로 사고하여 만들어졌기 때문에, 한국어 해석에는 맞지 않은 점이 있다. 한국어에는 한국어에 적합한 해석문법이 있어야 한다. 이 절에서는 한국어의 특징과 그 해석법에 대해 서술하겠다.
영문은 구(句)의 집합이라고 볼 수 있기 때문에, 영문의 해석은 문장을 구성하는 구를 분석하는데 주안점이 있다. 그러나 한국어 문장의 경우는 좀 다르다.
한국어 문장의 경우는 다음과 같이 낱말 사이의 수식관계가 문장 구조의 기본을 이룬다.
나는 오늘 컴퓨터 책을 샀다.
'나는' '오늘' '책을' 이 모두 '샀다' 에 걸리고, '컴퓨터' 가 '책을' 에 걸린다.
한국어가 영문과 다른 또 한 가지는 어순이 비교적 자유롭다는 것이다. 예를 들어, 앞의 문장은 다음과 같이 바꿔써도 뜻이 완전히 같다.
오늘 컴퓨터 책을 나는 샀다.
이러한 특징을 가진 한국어의 의미해석에는, 동사를 중심으로 하는 격문법이 가장 바람직하다. 예를 들면, 앞의 두 문장은 동일하게 그림 11 의 격구조로 표현될 수 있다. 영문의 격을 결정하는 데에는 어순이 큰 영향을 미치지만, 한국어 문장의 격은 조사가 결정적인 역할을 한다.

그림 11 논리식으로의 변환과정
한국어 문장은 어절의 나열로 이루어진다. 각 어절은 하나 이상의 단어가 복잡한 법칙에 따라 붙여쓰기를 한다. 따라서 한국어 해석에 있어 또 하나 중요한 점은, 한 어절 안의 붙여쓴 단어들을 단어별로 나누는 문제이다. 영문에서는 각 단어 뒤에 띄어쓰기를 해서 단어를 잘라주기 때문에, 한국어에서와 같은 문제가 발생하지 않는다. 그러나 한국어에서는 어절 별로 띄어쓰기를 하여, 기계가 어절 안의 단어를 식별하지 않으면 안된다. 이러한 어절 안에서 나누어 주어야 할 단어를 좀더 전문적인 용어로 형태소 (形態素) 라고 부른다. 따라서 위와 같은 해석의 가정을 형태소 해석이라고 하는데, 구문해석 전에 반드시 이 과정을 거쳐야 한다.
그러면, '나는 오늘 컴퓨터 책을 샀다.' 라는 문장에 대한 형태소 해석의 예를 보자. 아래에서 [] 로 묶은 것은 한 어절을 뜻한다.
|
나 |
는 |
오늘 |
컴퓨터 |
책 |
을 |
샀다 |
|
[명사 |
조사] |
[부사] |
[명사] |
[명사 |
조사] |
[동사(완료형)] |
자연언어를
컴퓨터로 처리하는 경우의 일반적 흐름을 따라가 보자. 자연언어에 의한 질의응답
시스템은 그림 12 와 같이 구성된다.

그림 12 자연언어 질의응답의 처리과정
흐름도의 순으로 설명하겠다.
① 우선 자판(키보드) 등으로 자연언어(영어, 한국어 등)를 입력한다. 물론 입력에 앞서 컴퓨터에서 입력요구 메시지가 나오는 것도 있다.
② 다음으로, 입력된 문장을 문법적으로 해석한다. 이때 단어의 품사 등의 정보를 가진 단어사전을 참조한다. 한국어의 경우, 형태소해석에 의해 단어별로 나누는 것도 필요하다. 이 결과 구문의 해석트리가 만들어 진다.
③ 구문해석의 결과로서 여러 개의 해석트리가 만들어지는 것이 보통이다.
문법적인 정보만으로는 하나의 해석트리를 만드는 것이 불가능한 경우가 많기 때문이다.
의미해석에서는 의미사전을 참조하여 해석트리를 하나로 결정한다. 의미사전에는
예를 들어, 가능한 상하관계와 수식관계 등이 포함되는데, 이것을 참조하여 불합리한
해석트리는 삭제한다.
의미해석의 결과, 다음의 추론에 대한 준비로서
의미를 표현하는 의미구조가 만들어지기도 한다. 데이터베이스 조작 시스템의 경우는
의미구조가 데이터베이스 조작 명령어로 된다.
④ 의미구조에 의해 데이터베이스와 지식베이스를 검색하여 결과를 얻는 것이 추론이다. 이 결과 질문의 답을 얻거나 데이터베이스와 지식베이스를 갱신한다.
⑤ 추론의 결과를 출력하기 위한 응답문을 만든다.
⑥ 응답문을 디스플레이 등으로 출력한다.
이상은 아주 일반적인 처리과정이다. 이 외에, ① 애매한 문장이 입력되었을 때 입력한 삶에게 그 진짜 의미를 질문하는 기능 ② 문장의 일부로부터 전체 문장을 추맇는 기능 ③ 단순한 문장상의 오류를 자동저그로 정정하는 기능 등을 가진 시스템도 많이 있다.
그림 13 에서는,
Who is the oldest man?
이라는 질문을 입력하면 결과로
Yeongsoo is the oldest man.
이라는 응답문이 출력되기까지의 해석 예를 보여준다.
그림 13 자연언어시스템의 구성
자연언어의 이론적인 연구만이 아니라, 이것을 응용하여 실제로 사용하는 자연언어처리 시스템을 만들려는 시도도 활발하다. 현재까지 개발된 자연언어 시스템은,
등으로 분류된다. 기계번역 시스템에 관해서는 다음 장에서 다루겠고, 여기서는 그 외의 시스템에 대해 알아보자.
두 가지 정도를 구체적으로 보자. 우선, 자연언어처리 시스템의 최초의 성공 예인 유명한 SHRDLU 를 보자.
Pick up a big red block.
이라는 지시를 받고 커다란 빨간 나무토막을 팔로 들어올리는 화면이다. (그림 14 참조).

그림 14 SHRDLU화면
이어서 여행계획의 질의응답 시스템인 GUS 와 고객간의 응답 예를 보여주는 화면이다. 가는 글씨는 GUS 의 말(?), 굵은 글씨는 고객의 말을 나타낸다.

그림 15 GUS의 응답예
표 1 자연언어(영문) 처리 시스템
|
분 야 |
시스템명 |
개 발 |
기 능 |
|
질의 응답 |
SHRDLU |
MIT |
나무쌓기의 QA 시스템 |
|
GUS |
제롯스사 |
여행계획의 QA 시스템 |
|
|
ELIZA |
ditto |
정신분석의 QA 시스템 |
|
|
SCHOLOR |
MIT |
지리학습용 CAI |
|
|
문제해결 |
STUDENT |
MIT |
산수 문제해결 시스템 |
|
Newton |
MIT |
물리 문제해결 시스템 |
|
|
Isaoc |
텍사스대 |
지리 문제해결 시스템 |
|
|
문장해석 |
MARGIE |
스탠퍼드대 |
영문해석 시스템 |
|
TOPLE |
MIT |
대화이해 시스템 |
|
|
LINGOL |
MIT |
영문해석 시스템 |
|
|
데이터베이스 검색 시스템 |
LADDER |
SRI |
대규모 분산 데이터베이스 조회 시스템 |
|
RENDEZOUS |
CODD |
관계 데이터베이스 조작 시스템 |
|
|
LUNAR |
BBN |
지질학에 관한 질의응답 시스템 |
|
|
REQUEST |
IBM |
데이터베이스 검색 시스템 |
|
|
PLANS |
일리노이대 |
항공편에 관한 질의응답 시스템 |
|
|
상용 시스템 |
INTELLECT |
AI |
main flame 의 데이터베이스용 자연언어 인터페이스 |
|
SAVVY |
에쿠스카리바 |
개인컴퓨터용 자연언어 인터페이스 |
|
|
STRAIGHT TALK |
딕타폰 |
워드프로세서와의 자연언어 인터페이스 |
|
|
THEMIS |
프리 어소시에이트 |
VAX-Orode 용 자연언어 데이터베이스 |
|
|
SUPER-NATURAL |
마이크로데이터 |
정보처리시스템과의 자연언어 인터페이스 |
|
|
NATURAL LINK |
AI |
메뉴에 의한 자연언어 DBMS 인터페이스 |
|
|
PEARL |
코그니티브 |
지식베이스와의 자연언어 인터페이스 |