실제 ENQ의 구축에 대한 부분 이에요... ^_^

도메인, 개체, 관계를 설정해 주어야 합니다.

구축부분이니 신경써서 보시면 많은 도움이 되실 겁니다. ^_^

 

 

English Query 도메인 저작하기

English Query 응용 프로그램을 만드는 첫번째 단계는 자신의 의미론적인 문제 도메인을 모델링하는 것이다.

영어의 개체(명사) 개체간의 관계들(동사, 형용사, 특징, 부분 집합) 데이터베이스의 테이블과 필드로 어떻게 연결되고 결합되는 지에 대해 명세화 필요가 있다.

English Query 저작 도구(인스톨하면 생기는 English Query 프로그램 그룹 내에 있다.) 사용하여 작업을 수행할 있다.

File  메뉴에서 New Application 선택한 Structure loaded from database 클릭한다.

이로써 SQL 서버 스키마로부터 데이터베이스 탭을 테이블과 필드들로 채우는 작업이 수행되면서 데이터베이스 구조가 초기화된다.

그림 2. SQL 서버 pubs 데이터베이스 샘플의 구조를 보여 준다.

데이터베이스내의 테이블중의 어느 하나라도 기본키가 없다면, 편집하여 하나 이상의 필드를 기본키로 지정해야 한다.

하부에서 기초가 되는 데이터베이스 자체가 기본키를 가질 필요는 없으나, 모든 테이블들은 응용 프로그램을 세우는 저작 도구에서 정의된 기본키를 가지고 있어야 한다.

질의문에서 테이블들이 서로 관련 있다면, 필요한 테이블들간에 조인 관계가 정의되어 있어야 한다.

보통 데이터베이스에서 정의된 외래 키들로 조인 관계가 설정된다.

필요한 외래 키가 없을 경우(보통 외래키들은 참조적 무결성을 강제 받는다.) 수작업으로 저작 도구에서 조인 관계를 만들 필요가 있다.

 

 

 그 첫 번째 작업인 도메인의 구축입니다....

별로 어려운 내용들은 업지요 ^_^

엔티티의 설정부분입니다.

 

 

개체 만들기

이제 의미 개체들을 붙이는 작업을 시작해 보기로 하자.

개체를 넣기 위해 Semantics 탭의 Entities 분기에 오른쪽 마우스 클릭을 하라.

개체를 기술하기 위해 단어들(예를 들어, 저자나 작자) 제공하라.기본 개체 이름은 첫번째에 와야 한다.

이름이 사람이나 장소, 혹은 시간이라면 타입을 명세한다. 데이터베이스의 어느 부분, 어떤 테이블이나 레코드가 개체를 나타내는지를 정의한다.

주요 개체들은 일반적으로 전체 테이블에 대응한다.

주요 개체라면, 개체를 표현하기 위해 사용되야 하는 필드들을 제시한다.

필드들로는 사람의 성이나 이름이 수도 있고, 회사의 이름이나 주소가 수도 있다.

pubs데이터베이스의 author개체의 예시가 다음 스크린 화면에 제시되어 있다.

주요 개체들은 names(이하 이름) traits(이하 특색) 종류의 개체들과 관련되어 있다.

이름은 개체가 질문과 진술들에서  어떻게 나타내는지를 가리킨다.

author개체에 대해 Autoname 클릭하면 성과 이름 필드로 표현되는 author 개체의 이름을 나타내는 개체가 만들어진다.

전체 테이블들로 나타내지는 주요 개체에 대해서 그러한 이름 개체들을 만들 있으므로 사용자는 질문시 특정 개체를 가리키는 방법을 가지게 된다.

Autotrait 클릭하면 개체의 특색, 주요 개체가 가지고 있는 개체들을 만들 있다.

Accept All 클릭하면 주요 개체와 새로 만들어진 개체간의 특색 관계뿐만 아니라 모든 의미 있는 필드들에 대한 개체들을 만들 있다.

사용자가 질문할   있는 다른 모든 주요 명사들에 대해서 (이름과 특색이 곁들여진) 개체들을 계속해서 만들 있다.

pubs 예에서 보면 책들과 출판업자들이 것이다.

 

 

도메인의 일부인 개체의 생성이었구요.. ^_^

역시 구현에는 거의 어렵지 않으나.. 실제 개발시는 엄청난 닭질이 예상 되지요. -.-;;

 

다음은 가장 중요한 관계를 정의해주는 부분입니다. ^_^

 

 

관계 만들기

주요 개체들에 대해서 특색을 확립하는 것은 아주 적은 관계를 설정하는 것으로 모델 관계 설정의 시작이다.

특색을 갖는 것들에 대해서 다른 의문이 있을 있다.

어떤 저자들이 시애틀시에 있는가?” “저자들과 그들의 도시들을 보여라

어느 책의 제목이The Busy Executive's Database Guide 인가?”

프랑스에 있는 출판업자는 누구인가?”

데이터베이스에 정말로 흥미 있는 질문을 할려면 주요 개체간에 관계가 설정될 필요가 있다.

저자들은 책을 쓴다

출판업자들은 책을 출판한다등이 관계의 예이다.

relationships 분기에서 오른쪽 마우스를 클릭하거나 Insert Relationship 클릭하면 관계 정의 대화 상자가 나타난다.

Add Entity 클릭하면 관계에 참여하는 모든 개체들이 표시된 상자가 나타난다.

특정 개체를 선택한다.

관계가 어떤 시간이나 장소에서 일어난다면, 시간이나 장소 개체를 포함함으로써 English Query 어떤 유형의 질문들에 답하는 것에 도움을 받을 있다.

저자가 책을 쓴다라는 관계에 관련된 개체들이 다음 스크린 화면에 나타날 것이다.

  다음으로 관계에 대해 phrasing 만든다.

동사구(“저자는 책을 쓴다”), 전치사구(“출판업자들은 도시 있다”), 형용사구(“책이 인기있”), 부분구(“몇몇 책들은 베스트셀러다”) 등이 있다.

대부분의 특색구(“책은 로열티 지불된다”) 이름구(“저자 이름은 저자의 이름이다”) 등은 이미 기술했듯이 Autotrait Autoname에서 만들어진다.

스크린 화면에 보여 지는 것은 저자들이 책을 쓴다 동사구로 정의한 예이다.

관계가 특정 시간이나 장소에서 일어날 경우, 위의 사용은 사용자의 몇몇 타입의 질문에 답하는 도움을 주고, Time/Location탭의 날짜나 위치 개체를 공급하는데도 유용하다.

예에서, 관계가 일어난 시점을 정의하는 개체로서 PUBDATE 공급할 있다.

사용자가 요구할 있는 모든 종류의 질문에 대해서 관계를 만들 있을 것이다.

예를 들어, 도시에 있는 저자들에 대한 질문에 응할 있는 모델을 만들려고 한다면, “저자는 도시와 관계한다라는 관계로 돌아가서 저자는 도시에 있다 새로운 전치사구를 공급하면 된다.

Microsoft English Query Developer’s Guide (마이크로소프트 English Query 프로그램 그룹에 아이콘이 있다) 응용 프로그램 제작 참조하면 전체적인 저작 과정에 대해 상세히 있다.

 

 

별다른 어려움 없이 설정이 가능하겠지요....

여기서 역시 어려움이겠지요.....

실제 자연어들의 관계를 지정한다.. 라는게 얼마나 어려운지.. 아마 아실 거에요...

이에 몇몇 예를 주어서 그에 따르는 관계를 몇 개 지정해 주는건데....

실제 관계라면? -.-;;;

상상만 해도 끔찍하지요...

 

다음으로는 모델 테스트입니다. ^_^

 

 

모델 테스트

개발 과정 어느 시점에서건 Tools메뉴의 Test Application 선택함으로써 지금까지 만든 모델을 테스트해볼 있다.

저자는 책을 쓴다라는 관계만 설정된 지금 시점에서도 English Query 누가 가장 많은 책을 썼는가?”, “누가 ‘Sushi, Anyone’이라는 책을 썼는가?”, “Anne Ringer 책은?” 등의 질문에 답할 있다.

다음 화면은 Test Application 대화 상자를 보여 준다.

question 필드에 영어 문장으로 질의를 입력하고 Submit 버튼을 클릭해 보라.

질의의 결과로 생성된 SQL문이 하단에 보일 것이다.

선택된 Execute SQL 있다면 질의는 SQL 서버로 전달되어 답이 보일 것이다.

방금 했던 질문을 나중에 계속적으로 테스트해 필요가 있다면 Add to Question File 클릭하면 된다.

 Tools 메뉴의 Regression Test 항목은 Question File 있는 모든 질의를 수행하고 결과를 참조 파일(보통 첫번째 Regression 수행시 생성된다) 비교한다.

이것은 시간이 지날수록 점점 복잡해지는 모델이 아직까지는 유효하다는 것을 확신할 있는 좋은 방법이다.

Question File 질문들은 페이지에 제시되어 사용자들로 하여금 어떤 종류의 질문이 답변 가능한 지를 가늠할 있게 해주는 데에도 사용될 있다.

 

 

모델테스트 인데요.. 재미있는 부분이며 가장 중요한 부분이지요...

실제 자연어를 바로 SQL문으로 바꿔주는 엔진으로 테스트를 해 보는 부분입니다... ^_^

정말 부러운 부분이고....

얼렁 한국어로도 가능해 져야 할텐데.. T.T

 

살짝 더인 개발과 배치 입니다.

 

개발과 배치

English Query 저작 도구로 모델을 개발하고 만족할 만큼 테스트해 보았다면 응용 프로그램을 만들 차례이다.

Tools 메뉴의 Build Application 항목으로 English Query 도메인(EOD: English Query Domain, 이하 EOD) 파일을 작성할 있다.

EOD 파일과 English Query 엔진(COM 서버인 “MSEQ.Session”) COM 지원하는 어떤 응용 프로그램안에라도 배치될 있다.

 

 

 그 응용에대해서 살짝 전해주는 전언 이지요... ^_^

ASP로든 VB, VC어플리케이션으로 이든지.....

COM만 지원한다면... 가능하다... 멋지지요..

 

다음은 마지막으로 ENQ를 자신의 웹사이트에 추가하는 부분을 보시겠습니다.. ^_^

 


 

 4. English Natural Language Query _ 3. 영문 자연어 질의 기술백서(2) 문서의 끝입니다.





profile

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.

코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터