Gurugail NLP/Eliza
NLP

Eliza

I. Eliza란...

인간과 컴퓨터와의 사이에 어느 정도 자유로운 대화가 가능하려면, 인간이 어떤 것을 컴퓨터에게 이야기했는지를 분석하여 그것에 잘 대응되는 회답을 해야만 한다. 이것이 가능하기 위해서는 사실 '언어의 이해'라는 본질적인 문제를 해결해야만 한다. 그러나 그와 같은 깊은 내용의 이해가 없어도 어느 정도 응답도 가능하기도 하다. 이런 응답이 가능한 프로그램이 바로 Eliza이다. 다시 말해, Eliza란 자연어 처리 방식의 초기 방식으로 기본적인 패턴 매칭과 스크립트 기반으로 진행되는 대화형 프로그램이다. 웹 상에서 간단한 대화도 바로 진행할 수 있다.

Eliza는 1964년에서 1966년 까지 Joseph Weizenbaum 이라는 사람이 환자들과 대화할 수 있도록 만든 프로그램으로 시작되었다. (이름하여 DOCTOR) 대화라고 할 수 없을 정도로 간단한 알고리즘을 사용하고 있지만, Eliza 방식이 사용되고 있다. Eliza가 단순한 방법으로도 아직까지도 자연어 처리에서 언급되는 이유는 대화형 프로그램으로는 거의 최초이기 때문이다. Eliza는 본질적으로는 슬롯(slot)법에 의한 문생성 메카니즘을 가지고 있다. 아래는 Eliza가 구성되는 기본적인 방식 중 하나이다.

  • 문장 생성 - 슬롯(slot)법

문을 생성하는 가장 간단한 방법은 문의 골격을 만들어 두고 그 속에 몇 개의 단어를 적절히 결정함으로써 문을 만드는 방법이다. 예를 들어, 열차의 출발안내 같은 경우에는 발화되는 문의 형태를 결정해 두고 나서 몇 개 부분만 문의 구성에 따라 변경하면 된다.

[1] 지금 선에 도착한 열차는 ...시 ...분발 ...행 ...열차입니다.
[2] 시 분발 행 열차는 선에서 출발합니다.
[3] 호의 정차역은 , ..., 입니다.

라는 문을 만드는 것은 간단하다. 여기서 역명, 새마을호, 무궁화호, 시간 등만 설정하면 간단하게 문장이 완결되는 것이다.

하지만 슬롯법이 간단하기는 하지만 형태소적인 정합이나 의미적, 문법적 정합성의 검사를 할 필요가 있다.

  • 패턴 매칭

우선 입력문을 조사하여 I, you 등의 키워드를 검출한다. 각 키워드에는 득점이 매겨져 있어서 가장 높은 득점의 키워드를 정한다. 컴퓨터에는 각 키워드에 대해 그 키워드를 포함하는 문장으로 인간이 발화하는 듯한 문장의 형태가 이미 저장되어 있다. 일치하는 문형을 발견하면 그것에 대응하여 준비된 복수개의 출력문형의 문에서 순서대로 문형을 하나씩 끄집어낸다. 하나의 입력문에 대해서 몇 개의 출력문이 준비되어 있는 것은, 같은 입력 문형에 대해 항상 같은 응답문이 나오는 것을 방지하기 위한 것이다. 가령 'You are very helpful'이라는 입력문에 대해 아래 그림과 같은 과정을 거쳐서 출력문을 이끌어 낸다.

그림. 입력 문형과 출력 문형과의 대응 ( Eliza 처리 방식 )

만약 일치하는 입력문형이 없을 때는

Why do you ask? 혹은 
Is that an important question?

등의 답을 하여 다음 질문을 유도한다. 또 입력문 중에 키워드가 없을 때는

Please go on. 혹은 I see

등으로 맞장구를 친다.

이 대화 시스템 Eliza는 정신병 환자와의 대화에 사용하여 진찰자료로 활용하려는 시도도 이루어졌다. 비록 간단하지만 최초의 시도였다는 점에서 의미가 있다.

(계속)

II. 참조