자연어 이해

 

인공지능의 이론과 실제 : 김화수.고순주, 집문당, 1993, page 221~243

1. 자연어 소개

2. 자연어처리 문제

     2.1 문 제 점

     2.2  자연어 분석

     2.3  자연어 분석단계

3. 단수문장 (Single Sentence) 이해 

     3.1  단어 이해 (Word Understanding)

     3.2  문장 이해 (Sentence Understanding)

     3.3  언어 이해 (Language Understanding) 방법

4. 자연어 응용분야 : 데이터베이스 Front-end

 

1. 자연어 소개

자연어란 프로그래밍 언어들, 즉 FORTRAN, COBOL, PASCAL, C, C++, Ada, LISP 및 PROLOG 등과 같은 인공 언어와는 다르게, 어법이 정해진 규칙만을 따르지 않고 일상적으로 사용되는 언어의 구조적인 체계를 말한다. 요약하면 자연어는 어떤 정돈된 완벽한 문법이나 형식적인 의미가 없는 언어를 말한다.

인간과 인간이 통신을 하고자 할 때에는 문어 (written language) 및 구어 (spoken language) 에 의한 수단으로 할 수 있다. 문어는 구어에 비해 문장의 애매모호함의 정도가 작은데, 그 이유는 정돈된 문법을 어느 정도 따르기 때문이다. 반면에 구어는 어떤 정돈된 완벽한 문법이나 형식적인 의미에 구애받지 않고 사용되므로 구어를 이해하기 위해서는 모든 잡음과 가청신호의 애매함을 처리할 수 있는 충분한 지식이 있어야 하므로 구어를 이해하는 것은 문어를 이해하는 것보다 훨씬 어렵다.

그러므로, 자연어 처리에서는 구어 및 문어를 동시에 이해하는 것이 필요하다. 즉 전체 자연어 이해를 위해서는 다음 두 가지를 동시에 만족해야 한다.

첫째, 자연어의 어휘분석 (lexical), 구문분석 (syntactic) 및 의미분석 (semantic) 지식을 이용하여 문어의 내용을 이해할 수 있어야 한다.

둘째, 담화하는 과정에서 발생하는 불확실한 것들을 처리하기 위해 충분히 주어진 정보를 이용하여 구어의 내용을 이해할 수 있어야 한다.

자연어 이해 (자연어 understanding) 란 한 가지 표현방법에서 다른 표현 방법으로 변환시켜 자연어의 숨은 뜻을 정확히 알아내는 것을 말하는 것으로서, 자연어를 완벽하게 이해한다는 것은 충분한 사전지식이 없으면 결코 쉬운 일이 아니다.

예를 들면, Kim: "What do you like tonight, LG or Hai-Tai?" 즉 김 X X 가 "오늘밤 럭키금성 혹은 해태 중 어느 것을 좋아하는가 : 라고 질문을 하였다. 이때 만약 우리가 이러한 질문을 완전히 이해하였다면 오늘 저녁 TV에서 중계하는 야구게임에서 럭키금성과 해태가 경기를 하는데 어느 팀을 좋아하는가를 질문하는 것임을 알아야 한다. 또한, 질의 응답 지원을 위한 전문가 시스템상에서 '가능한 빨리 알고 싶다'라고 말하였을 시, 이러한 시스템을 완벽하게 이해하였다면 가능한 빨리 알고 싶어하는 질의에 대한 해 (solution) 를 찾게 될 것이다.

Rich의 항공기 예약 시스템에서 자연어 이해를 살펴보면 다음과 같다. 항공기 예약 시스템에서, "I want to go to N.Y. as soon as possible." 라고 말한다면 이러한 시스템에서는 N.Y. 에 가는 첫 비행기를 찾아내라는 것으로 이해를 하게 될 것이다. 그러나 만약에 당신의 가족이 N.Y. 에 살고 있다는 것을 아는 여자친구에게 동일한 이야기를 하였다면, 그 여자친구는 당신의 가족에 어떤 문제가 생겼다는 의미로 이해를 할 수도 있기 때문에 자연어를 완벽하게 이해한다는 것은 결코 쉬운 일이 아니다.

또한, 영어나 우리말도 동일한 단어가 여러 개의 의미를 갖는 것이 많다. 예를 들면 영어의 'diamond' 는 보석이 될 수 있고, 야구장의 다이아몬드를 의미할 수도 있으며, 우리말의 '배'를 보면 바다나 강에서의 교통 수단인 배가 될 수 있고, 과일로서 먹는 배가 될 수 있으며, 인간 및 동물 등의 신체부분인 배의 의미가 될 수 있으므로 더욱 자연어를 완벽히 이해한다는 것은 쉬운 일이 아님을 강조한다. 

2. 자연어 처리 문제

2.1 문 제 점

자연어를 이해하는 데에는 (i) 매칭 (matching) 되는 목적표현이 복잡하고, (ii) 대응 (mapping) 의 형태가 복잡하며, 즉 1대 1 (one-to-one), 1 대 다수 (one-to-many), 다수 대 1 (many-to-one), 그리고 (iii) 소스 (source) 표현 요소들간의 상호작용의 정도 때문에 자연어를 이해하는 데 어려움이 따르게 되는 것이다. 상기 (i), (ii) 및 (iii) 의 상세한 문제점은 다음과 같다.

        'A Prolog program consists of a set of facts and rules.'

그림 1   1 대 1 대응 형태 

 

그림 2  a + a*(b - c) + (b - c)*d 의 파서 트리

     John saw the boy in the park with a telescope.

                                           S
                                         /   \
                                    NP        VP
                                     |       /  |   \
                               JOHN   V      NP     PP
                                         |     /   | \    △
                                     saw  DET N   PP  with a telescope
                                               \   \   △
                                              the  boy  in the park

     John saw the boy in the park with a dog.

                                           S
                                         /   \
                                    VP        VP
                                     |       /  |   \
                               JOHN   V      NP     PP
                                         |     /   | \    △
                                     saw  DET N   PP  with a dog
                                               \   \   △
                                              the  boy  in the park                    

     John saw the boy in the park with a statue

                                           S
                                         /   \
                                    NP        VP
                                     |         /   \
                               JOHN       V      NP    
                                              |     /   | \    
                                           saw  DET N   PP  
                                              |     |        △  in the park
                                            the   boy     △ 
                                                                   with a statue

그림 3  구성요소들간의 상호작용이 큰 경우

이렇게 자연어를 이해하는 데는 작업과정의 난이성에 따르는 세 가지 요소인 목적 표현의 복잡성, 대응 형태의 다양성 및 구성요소들간의 상호작용의 복잡성 정도가 커다란 영향을 미치게 된다는 것을 살펴보았다.

2.2  자연어 분석

자연어란 그 자체는 매우 복잡한 현상을 지니고 있다. 그 이유는 자연어 처리과정을 포함해서 음성 혹은 기록으로 인식하는 정도에 따라서 의미 자체가 쉽게 변화할 수 있기 때문이다. 이러한 매우 복잡한 자연어를 다루기 위하여 언어학자들은 자연어를 분석하는데 다음과 같은 수준 (level) 으로서 정의하였다.

2.3  자연어 분석단계

자연어 분석단계는 서로 다른 철학과 응용에 따라서 변경될 수 있으나 일반적으로 다음과 같이 네 단계를 거친다.

그림 4  어휘분석 (Parsing) 단계 

그림 5  의미해석 (Semantic Interpretation) 단계

그림 6  확장된 지식해석 단계

3. 단수문장 (Single Sentence) 이해 

단수문장이란 각각의 단어에 의미를 부과하여 전체적인 문장에 대한 뜻을 표현하는 구조를 형성하기 위하여 이러한 단어들을 배치하는 것을 말한다.
다시 말하면, 단수문장에서는 문장 가운데서 한 부분을 이해하기 위해서는 문장들 사이의 관계를 알아낼 필요가 없는데, 그 이유는 하나의 문장을 이해하기 때문이다.
단수문장을 이해하기 위해서는 먼저 단어 (word) 의 이해 단계를 거쳐서 문장 (sentence) 을 이해하여야만 하므로, 다음 3.1 절에서는 단어 이해를 3.2절에서는 문장의 이해를 살펴본다. 

3.1  단어 이해 (Word Understanding)

일반적으로 단어 그 자체를 이해하는 것은 매우 쉬운 듯 생각되나, 실제적으로는 결코 쉬운 일이 아니다. 왜냐하면 하나의 단어가 여러 개의 의미를 갖고 있는 것이 실세계에 많이 존재하기 때문이다. 이미 기술하였듯이, 예를 들면 '배' 라는 의미는 다음과 같은 여러 의미를 가지고 있다.

다음과 같은 문장에서 '쪽'이란 단어에 대하여 완벽한 의미를 선택하기 위해서는 사전에 각각 세 가지 '쪽' 의 의미를 명확히 인식하고 있어야 한다.
각 단어의 정확한 의미를 결정하기 위해서는 어휘 (lexical) 를 수록해 놓은 어휘 목록집에 있는 각 단어에 각각의 의미가 나타낼 수 있는 문맥들에 관한 정보들을 연관시켜서 문장에 있는 각 단어들이 어떤 문맥의 한 부분으로 결정되어야만 하는 것으로서, 이러한 것을 단어의미 애매모호 제거화 (word-sense disambiguation) 라고 말한다.

이러한 단어의미 애매모호 제거화에 대한 방법은 간단하지가 않다. 예를 들면, 다이아몬드라는 단어는 다음과 같은 여러 가지 의미를 가지고 있다.

 "John saw Susan's diamond shimmering from across the room." 의 문장이 있을 때, 이러한 다이아몬드에 대한 정확한 단어를 이해하기 위하여는 다이아몬드가 반짝거려야 하는 특징이 있는 반면에 다른 의미를 갖는 것, 즉 야구장 및 네 개의 동일한 면을 갖는 기하학적인 구조들은 반짝거리지 않아야 되는 특징으로 분류되어야 한다. 이렇게 하여야만, 다이아몬드가 이 문맥에서 반짝이는 보석으로서의 적절한 의미로서 선택될 수 있다.

3.2  문장 이해 (Sentence Understanding)

문장은 단어의 집합으로 이루어져 있다. 제 3.1 절에서 단어 이해 (Word Understanding) 를 살펴보았듯이 부분적인 단어의 의미를 완벽하게 이해하였으면, 다음 단계로는 '어떻게 하면 단어들을 잘 배열 합성하여 하나의 문장을 형성하여 뜻을 나타내는 구조를 형성하는가?' 하는 것 또한 중요한 문제이다. 이러한 문제는 언어학적인 것으로서 언어의 지식, 언어에 대한 관습, 속어, 비어 등 다양한 언어지식 소스 (source) 에 따라 좌우된다.

이러한 문장 이해를 위해서는 일반적으로 다음의 세 가지 요소들을 다룬다.

3.3  언어 이해 (Language Understanding) 방법

단수언어를 이해하는 방법에는 일반적으로 다음의 세 가지 방법을 사용한다.

다음과 같은 질의 문장이 입력되었다 하자.
"Show me two people who are appropriate to work overseas.", "Is Kim very young?" 그러면, 첫번째 질의에서 command 는 'show', number 는 'two', name 과 hedge 에 해당되는 단어는 없으며, goal 에는 'oversea' 가 매칭이 된다.
두 번째 질의에서는 'is' 가 command, 'Kim' 은 name, 'very' 는 hedge 에 그리고 'young' 은 goal 에 각각 해당된다. 이러한 noise-disposal parser 방법의 구현은 다음 프로그램을 참고 바란다.

        <스캐닝 및 필터링>

        <파  싱>

        <질의 평가>

        <데이터베이스 검색>

        <오차 탐지>

                                                                     (문    장)
                                                                       /      \
                                                               (주어부)    (술어부)
                                                               /      \              |
                                                          (명사)   (조사)      (동사)
                                                             |           |            |
                                                            나         는       공부한다

그림 7  "나는 공부한다"의 파스-트리 생성

4. 자연어 응용분야 : 데이터베이스 Front-end

자연어 이해를 위한 프로그램을 설계하는 데 중요한 병목현상 (bottleneck) 은 구어의 영역에 관한 충분한 지식을 획득하는 문제이다. 현재의 기술은 이러한 범주에 관하여 매우 잘 정의된 의미론적인 문법을 가지고는 매우 협소한 영역에 제한되어 활용되고 있는 실정이다.

비록 데이터베이스는 대용량의 정보를 저장하고 있지만, 그러한 정보는 크게 규칙적 (regular) 이고 영역이 협소하며, 더군다나 데이터베이스의 의미는 잘 정의되어 있다. 이러한 양사에 비추어 볼 때 데이터베이스의 유틸리티 (utility) 와 함께 자연어 질의를 받아들일 수 있고, 데이터베이스 Front-end 는 자연어 이해 기술의 중요한 응용 분야가 된다는 것을 알 수 있다.

데이터베이스 Front-end 의 임무는 자연어로 질문을 할 것을 데이터베이스 언어상의 잘 형성된 (well-formed) 질의어로 변환시켜 주는 역할을 한다. 예를 들면, SQL 이라는 데이터베이스 언어를 사용하여 자연어 Front-end 는 "Who hired John Smith?" 라는 질문을 다음 질의어로 변환시켜 준다.

이러한 변환 과정을 수행하는 데 있어서, 프로그램은 원래의 질의를 변환시키는 것에 부가하여, 데이터베이스 (the Manager_of_htre 관계) 의 어느 곳을 검사해야 하는가, 접근해야 하는 필드명 (field name) 여기서는 Manager 및 질의상의 제약조건 (Employee = 'John Smith') 을 반드시 결정해야 한다.

관계형 데이터베이스 (relational data base) 는 엔티티 (entity) 의 영역에 걸쳐 데이터 상호의 관계를 나타낸다. 예를 들면 고용인 (employee) 의 데이터베이스 형성 및 모든 고용인의 봉급 및 고용원을 채용한 매니저 (manager) 들을 접근 (access) 하고자 한다고 가정하자.
이러한 데이터베이스는 세 개의 영역 (domain) 인 매니저의 집합, 고용인의 집합 및 봉급의 집합으로 구성됨을 알 수 있다. 만약 우리가 이러한 데이터들을 두 개의 관계로 구성하고자 할 때, employee salary (고용인과 고용인의 봉급관계를 나타냄), manager of hire (고용인과 고용인의 매니저의 관계를 나타냄)로 나타낼 수 있다.
관계형 데이터베이스에서 관계는 일반적으로 관계의 예 (instance) 를 열거한 테이블 (table) 로써 나타낸다. 테이블의 종행 (column) 은 이름을 표시하고, 이러한 이름들을 관계의 속성 (attribute) 이라고 한다.

그림 8 은 employee_salary 및 manager_of_hire 의 관계를 테이블로 표시한 것이다.

      employee                        salary

                 manager_of_hire

Hwa Soo Kim
Young Sun Park
Myung Gyun Hwang
Jong Tae Park
Chang Hwan Oh

$30.000
$25.000
$23,000
$22,000
$21,000

Hwa Soo Kim
Young Sun Park
Myung Gyun Hwang
Jong Tae Park
Chang Hwan Oh

Yong Soo Ra
Hwa Soo Kim
Yong Soo Ra
Hwa Soo Kim
Chang Sub Yoon

그림 8  employee 데이터베이스의 관계

그림 8 에서 manager_of_hire 는 두 개의 속성인 employee 및 manager 를 가지고 있다. 이때의 관계값은 emjployee 및 manager 의 쌍 (pair) 으로 이루어져 있다. 만약에 employee 가 오직 하나의 이름만 가지고 있다고 한다면, employee 이름은 salary 및 manager 모두에 대한 키 (key) 가 된다.

다음 그림 9 는 employee_salary 및 manager_of_hire 관계를 위한 엔티티 (entity) 관계 그래프를 나타낸다.

영어는 형식적인 질의 (formal query) 로 변환할 때, 응답 (answer) 을 포함하고 있는 레코드 (record) 를 반드시 결정해야 하고, 응답을 포함하고 있는 레코드의 필드 (field) 를 반드시 되돌려 주어야 하며, 그러한 필드를 결정하기 위한 키 (key) 의 값을 결정해야 한다.

영어를 데이터베이스 언어로 직접 변환한다기보다 영어를 개념 그래프 (conceptual graph) 와 같은 설명적인 그래프로 변환시키는 것이 필요하다. 먼저 설명적인 그래프로 변환시키는 것이 필요한 이유는 많은 영어 질의들은 애매모호하거나 혹은 잘 형성된 (well-formed) 데이터베이스 질의를 생성하기 위하여 부가적인 해석 (설명) 이 요구되기 때문이다. 즉 아주 좋은 설명적인 표현언어는 이러한 과정에 대단히 도움을 줄 수 있다.

예를 들면, "Who hired Young Sun Park?" 을 생각해 보자. 이러한 질의에 대하여, 그림 10 과 같은 "hire" 동사에 대한 지식베이스 입력 (entry) 들을 살펴볼 수 있다.

그림 9  Entity 관계 그래프

그림 10  "hire" 질의에 대한 지식베이스

의미 해석기 (semantic interpreter) 는 사용자의 질의 그래프를 생성하고 이러한 그래프는 적절한 지식 베이스 입력 (entry) 과 결합하게 된다. 만약 부가된 엔티티 관계 그래프에 있어서 키 (key) 들이 질문의 목표에 사상 (mapping) 된다면, 프로그램은 이러한 엔티티 관계 그래프를 사용하여 데이터베이스 질의를 형성한다.

그림 11 에서는 "Who hired Young Sun Park?" 의 질문에 대한 질의 그래프를 나타낸다. 그림 11 은 그림 10 의 지식베이스 입력과의 결합에 의한 결과를 나타낸 것임을 유의하기 바란다.

        SQL 언어의 질의 : Seloect manager
                                 From manager_fo_hire
                                 Where Employee="Young Sun Park"

그림 11  자연어 입력 그래프로부터 데이터베이스 질의 (query) 개발

이것은 또한 그래프로부터 형성된 SQL 질의를 나타낸다. 중요한 것은 적절한 레코드명, 목적 필드 및 질의에 대한 키 (key) 들은 자연어 질의 내에서 세분화되지 않았다. 이러한 것들은 지식 베이스에 의하여 얻어진다.

지금까지 자연어를 데이터베이스 front-end 에 응용한 예를 간략하게 설명하였다. 즉, 자연언어 데이터베이스 front-end 를 형성하는 데 지식베이스 접근방법의 사용을 설명하였다. 개념 레코드상에 표현된 예제를 설명하였으나 프레임이나 혹은 논리-베이스 언어와 같은 다른 표현방법에도 적용될 수 있을 것이다.