KR101120758B1 - 어플리케이션 컴파일링 방법 및 그 방법을 기록한 컴퓨터 판독가능 기록매체 - Google Patents

어플리케이션 컴파일링 방법 및 그 방법을 기록한 컴퓨터 판독가능 기록매체 Download PDF

Info

Publication number
KR101120758B1
KR101120758B1 KR1020040101220A KR20040101220A KR101120758B1 KR 101120758 B1 KR101120758 B1 KR 101120758B1 KR 1020040101220 A KR1020040101220 A KR 1020040101220A KR 20040101220 A KR20040101220 A KR 20040101220A KR 101120758 B1 KR101120758 B1 KR 101120758B1
Authority
KR
South Korea
Prior art keywords
logic module
computer
semantic
procedural
semantic object
Prior art date
Application number
KR1020040101220A
Other languages
English (en)
Other versions
KR20050076733A (ko
Inventor
시아오-유웬 혼
쿠안산 왕
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050076733A publication Critical patent/KR20050076733A/ko
Application granted granted Critical
Publication of KR101120758B1 publication Critical patent/KR101120758B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Peptides Or Proteins (AREA)

Abstract

본 발명은 컴퓨터 상에서 구현되는 경우 상기 컴퓨터가 정보를 처리하도록 하는 명령문을 구비하는 컴퓨터 판독가능 매체에 관한 것이다. 상기 명령문은 적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 적응된 선언형(declarative) 로직 모듈 및 상기 선언형 로직 모듈을 참조하여 하나의 의미 오브젝트에 대해 수행될 액션을 정의하도록 적응된 절차형(procedural) 로직 모듈을 포함한다.
자연어 입력, 유저 인터페이스, 컴퓨터, 사용자 입력 방법, 로직 모듈

Description

분산된 의미 스키마{DISTRIBUTED SEMANTIC SCHEMA}
도 1은 컴퓨팅 시스템 환경의 블록도.
도 2는 자연 인식 인터페이스를 이용하는 환경의 블록도.
도 3은 컴파일러, 절차형 로직 모듈 및 선언형 로직 모듈간의 상호작용을 도시한 간략화된 블록도.
도 4는 절차형 로직 모듈 및 선언형 로직 모듈을 이용한 예시적 구현의 블록도.
<도면의 주요 부호에 대한 간단한 설명>
200 : 자연 인식 인터페이스
202 : 로직 모듈
204 : 지식 베이스
<관련 출원의 기재>
본 출원은 2004년 1월 22일 출원된 미국특허출원 제60/538,306호에 기초한 것이고, 그 내용이 그대로 참조로 포함되었다.
본 발명은 사용자/컴퓨터 상호작용을 정의하고 핸들링하기 위한 방법 및 시스템에 관한 것이다. 특히, 본 발명은 사용자 입력을 명령 또는 엔티티로 분해하는 시스템에 관한 것이다.
통상의 컴퓨터 시스템에서, 사용자 입력은 고정된 포맷을 갖는 엄격한 세트의 사용자 응답으로 제한되어 왔다. 예를 들면, 명령 라인 인터페이스에 있어서, 사용자 입력은 제한된 특정 도메인의 가능한 변수들로부터 단일 명령 및 선택된 변수를 고유하게 식별하는 특정 형태로 되어 있어야 한다. 유사하게, 그래픽 유저 인터페이스에 있어서, 단지 제한된 세트의 옵션들만이 사용자에게 제시되고, 제한된 세트의 사용자 입력에서 각 특정 사용자 입력에 대해 제한된 세트의 명령 또는 엔티티들로 이루어진 사용자 입력 도메인을 개발자가 정의하는 것은 비교적 간단하다.
사용자를 엄격한 세트의 허용 입력 또는 응답으로 제한함으로써, 컴퓨터 시스템은 사용자 또는 오퍼레이터에게 상당한 레벨의 기술을 요구했다. 전형적으로, 수행하고자 하는 태스크를, 컴퓨터 시스템 상에서 운용되고 있는 어플리케이션에 의해 인식되는 특정 입력으로, 지적으로 번역하는 것은 사용자의 몫이었다. 컴퓨터 시스템의 유용성을 확장하기 위해, 어플리케이션에 자연어(NL) 인터페이스를 제공하려는 노력이 계속되어 왔다. 자연어 인터페이스는 어플리케이션의 기능을 그 제한된 입력 세트 이상으로 확장하고, 자연어 포맷의 입력에 컴퓨터 시스템을 개방한다. 자연어 인터페이스는 비교적 모호하고 매우 컨텍스트 기반인 자연어 영역을 컴퓨터 어플리케이션에서 요구되는 정확하고 엄격한 세트의 입력으로 변환하는 기 능을 담당한다.
자연어 인터페이스는 자연어 입력을 어플리케이션에서 사용되는 정보로 변환하기 위해 의미 오브젝트 및 여러가지 액션을 이용한다. 자연어 인터페이스와 상호작용하는 어플리케이션을 작성(authoring)할 때, 어플리케이션 개발자는 의미 오브젝트 및 액션을 구현하기 위해, 절차형 및 선언형 프로그래밍 언어를 이용한다. C, C++, C# 및 Fortran과 같은 절차형 프로그래밍 언어는 어플리케이션의 동작 동안에 데이터 오브젝트에 대해 수행되는 다양한 액션들을 정의할 수 있다. XML, LISP 및 Prolog와 같은 선언형 프로그래밍 언어는 어플리케이션의 의미 오브젝트를 정의할 수 있다.
그러나, 선언형 언어 코드와 절차형 언어 코드간의 통합은 작성자(author)들이 개발하기 어려웠다. 하나의 접근법에서는 의미 오브젝트를 선언형 언어로 표현하고 있지만, 작성자는 의미 오브젝트를 이용하여 각 액션에 대해 의미 오브젝트 선언을 이중으로 하는 것이 필요하다. 다른 접근법에서는 의미 오브젝트의 모호한 선언이 절차형 언어에 이용되어, 작성자가 의미 오브젝트의 관계를 추적하고 유지하는 것이 필요하다. 결과적으로, 절차형 로직 모듈과 선언형 로직 모듈을 통합하는 작성 툴이 유용할 것이다.
본 발명은 컴퓨터 상에서 구현되는 경우 컴퓨터가 정보를 처리하도록 하는 명령문을 구비하는 컴퓨터 판독가능 매체에 관한 것이다. 상기 명령문은 적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 적응된 선언형 로직 모듈 및 그 선언형 로직 모듈을 참조하여 상기 하나의 의미 오브젝트에 대해 수행될 액션을 정의하도록 적응된 절차형 로직 모듈을 포함한다.
본 발명의 다른 양태는 어플리케이션을 컴파일링하는 방법에 관한 것이다. 방법은 선언형 로직 모듈에 대응하는 절차형 로직 모듈 내의 지정을 식별하는 것을 포함한다. 선언형 로직 모듈 내의 의미 오브젝트가 절차형 로직 모듈의 액션을 수행하기 위해 억세스된다.
또 다른 양태는 자연어 입력을 처리하기 위한 절차형 로직 모듈에 관한 것이다. 모듈은 적어도 하나의 슬롯을 갖는 의미 오브젝트를 정의하는 선언형 로직 모듈에 대응하는 지정 및 의미 오브젝트를 이용하여 선언형 로직 모듈에 대한 액션을 수행하도록 적응된 절차형 코드를 포함한다.
사용자로부터 입력된 자연어를 처리하기 위한 컴퓨터 판독가능 매체는 본 발명의 다른 양태를 포함한다. 컴퓨터 판독가능 매체는 복수의 절차형 로직 모듈을 포함한다. 각 절차형 로직 모듈은 계층적 구조로 배열되는 복수의 의미 오브젝트를 정의하는 선언형 로직 모듈에 대응하는 지정을 포함한다. 부가적으로, 각 의미 오브젝트는 자연어 입력에 의해 파퓰레이트될 수 있는 복수의 슬롯을 포함한다.
<실시예>
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 단지 일례에 불과하고 본 발명의 이용이나 기능의 범주에 관해 어떠한 제한을 암시하려고 하는 것은 아니다. 또한, 컴퓨팅 환경(100)은 예의 동작 환경(100)에 도시된 구성요소 중 임의의 하나 또는 조합에 관련하여 어떠한 의존성 또는 요구조건을 갖는 것으로서 해석되어서는 안 된다.
본 발명은 수많은 다른 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성에서 동작한다. 본 발명과 함께 이용하기에 적합한 잘 알려져 있는 컴퓨팅 시스템, 환경 및/또는 구성의 예들은, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋탑 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 전화 시스템, 상기 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이들에 제한되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령의 일반적인 컨텍스트로 기술된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 구성요소, 데이터 구조 등을 포함한다. 본 발명은 통신 네트워크를 통해 링크되는 원격 처리 디바이스에 의해 태스크들이 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 양자 모두에 배치될 수 있다. 프로그램 및 모듈에 의해 수행되는 태스크를 도면을 참조하여 아래에서 설명한다. 본 기술분야의 숙련자라면 상세한 설명 및 도면을 프로세서 실행가능한 명령으로 구현할 수 있으며, 이는 임의의 형태의 컴퓨터 판독가능 매체 상에 기록될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 구성요소들은 처리 유닛(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 다양한 시스템 구성요소를 처리 유닛(120)에 결합하는 시스템 버스(121)를 포함하지만, 이들에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 다양한 버스 아키텍쳐들 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇가지 타입의 버스 구조들 중 임의의 것이 될 수 있다. 예를 들어, 그러한 아키텍쳐는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standard Association) 로컬 버스 및 메자닌(Mezzanine) 버스로도 알려진 PCI(Peripheral Component Interconnect) 버스를 포함하지만, 이들에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 억세스될 수 있는 임의의 사용가능한 매체가 될 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 양자 모두를 포함한다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만, 이들에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보 저장을 위한 임의의 방법이나 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체 양자 모두를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장장치 디바이스, 또는 원하는 정보를 저장하는데 이용될 수 있고 컴퓨터(110)에 의해 억세스될 수 있는 임의의 다른 매체를 포함하지만, 이들에 제한되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 반송파와 같은 변조된 데이터 신호 또는 다른 전송 메카니즘으로 구현하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 말은 정보를 신호로 인코딩하는 것과 같은 방식으로 설정되거나 변경되는 하나 이상의 특징을 갖는 신호를 의미한다. 예를 들면, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 어쿠스틱, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만, 이들에 제한되는 것은 아니다. 상기의 임의의 조합도 컴퓨터 판독가능 매체의 범주내에 포함된다.
시스템 메모리(130)는 리드 온리 메모리(ROM; 131) 및 랜덤 억세스 메모리(RAM; 132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같이 컴퓨터(110) 내의 소자들간에 정보를 전달하는데 도움을 주는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 통상적으로 ROM(131)에 저장된다. RAM(132)은 통상적으로 처리 유닛(120)에 즉시 억세스 가능하거나 및/또는 이것에 의해 현재 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들면, 도 1은 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 포함하지만, 이들에 제한되는 것은 아니다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1은 비분리형, 비휘발성 자기 매체로부터 판독 또는 이에 기록하는 하드 디스크 드라이브(141), 분리형, 비휘발성 자기 디스크(152)로부터 판독 또는 이에 기록하는 자기 디스크 드라이브(151), 및 CD ROM 또는 다른 광학 매체와 같은 분리형, 비휘발성 광 디스크(156)로부터 판독 또는 이에 기록하는 광 디스크 드라이브(155)를 도시한다. 예의 동작 환경에서 이용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이들에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같이 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 설명되고 도 1에 도시된 드라이브 및 그 연관 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 및 컴퓨터(110)를 위한 데이터의 저장을 제공한다. 도 1에서, 예를 들면, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 어플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로서 도시된다. 이들 구성요소들은 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 상이할 수도 있다. 오퍼레이팅 시스템(144), 어플리 케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 상이한 복제물이라는 것을 도시하도록 다른 숫자가 주어진다.
사용자는 키보드(162), 마이크로폰(163), 및 마우스, 트랙볼 또는 터치 패드와 같은 포인팅 디바이스(161)와 같은 입력 디바이스를 통해 컴퓨터(110)에 명령과 정보를 입력할 수 있다. 다른 입력 디바이스(도시되지 않음)는 조이스틱, 게임 패드, 위성 안테나(satellite dish), 스캐너 등을 포함할 수 있다. 내추럴 유저 인터페이스 어플리케이션에 대해, 사용자는 또한 음성, 핸드라이팅, 응시(눈 움직임), 및 다른 제스츄어를 이용하여 컴퓨터와 통신할 수 있다. 내추럴 유저 인터페이스를 용이하게 하기 위해서는, 컴퓨터는 마이크로폰, 기록 패드, 카메라, 모션 센서, 및 사용자 제스츄어를 캡쳐하기 위한 다른 디바이스를 포함할 수 있다. 이들 및 다른 입력 디바이스들은 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 종종 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 타입의 표시 디바이스는 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터(191)에 부가하여, 컴퓨터는 또한 출력 주변장치 인터페이스(190)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변장치 출력 디바이스를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 핸드헬드 디바이스, 서버, 라우터, 네트워크 PC, 피어(peer) 디바이 스 또는 다른 공통 네트워크 노드가 될 수 있고, 통상적으로 컴퓨터(110)와 관련하여 앞서 기재된 소자들 중 다수 또는 모두를 포함한다. 도 1에 도시된 논리적 접속은 로컬 영역 네트워크(LAN; 171) 및 광역 네트워크(WAN; 173)를 포함하지만, 다른 네트워크를 포함할 수도 있다. 그러한 네트워킹 환경은 사무실, 기업-와이드 컴퓨터 네트워크, 인트라넷 및 인터넷에서 평범한 것이다.
LAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(110)는 통상적으로 모뎀(172) 또는 인터넷과 같이 WAN(173)을 통해 통신을 확립하기 위한 다른 수단을 포함한다. 내부 또는 외부에 존재하는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(110)에 관련하여 도시된 프로그램 모듈, 또는 그 부분들은 원격 메모리 저장 디바이스에 저장될 수 있다. 예를 들어, 도 1은 원격 컴퓨터(180) 상에 상주하는 것으로서 원격 어플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며 컴퓨터들 간의 통신 링크를 확립하는 다른 수단이 이용될 수 있음을 이해해야 한다.
통상적으로, 어플리케이션 프로그램(135)은 명령 라인 또는 사용자 입력 인터페이스(160)를 통한 그래픽 유저 인터페이스(GUI)를 통해 사용자와 상호작용해 왔다. 그러나, 컴퓨터 시스템의 이용을 간소화하고 확대하려는 노력으로, 사용자로부터 자연어 입력을 수신할 수 있는 입력들이 개발되었다. 자연어 또는 스피치(speech)에 비해, 그래픽 유저 인터페이스는 정확하다. 일반적으로, 잘 설계된 그 래픽 유저 인터페이스는 모호한 참조를 생성하거나 인터페이스(160)를 통해 수신된 입력의 특정 해석을 확인하기 위해 기초 어플리케이션을 요구하지 않는다. 예를 들어, 인터페이스는 정확하기 때문에, 통상적으로 사용자가 입력에 관해 추가로 질의받아야 하는 조건, 예를 들면 "'ok'버튼을 클릭했습니까?"가 없다. 통상적으로, 그래픽 유저 인터페이스에 대해 설계된 오브젝트 모델은 매우 기계적이고 그 구현이 엄격하다.
그래픽 유저 인터페이스로부터의 입력에 비해, 자연어 질의 또는 명령은 단지 하나가 아니라 입력 오브젝트 모델로의 일련의 함수 호출로 자주 번역한다. 전형적인 라인 입력 또는 그래픽 유저 인터페이스의 엄격하고 기계적인 제한에 비해, 자연어는 인간 대화자(human interlocutor)가 종종 무의식적으로 서로의 지능에 의존하여 모호성을 해결하는 통신 수단이다. 사실상, 자연어는 기계적이 아니기 때문에 정확하게 "자연스러운" 것으로 간주된다. 인간 대화자들은 발성을 둘러싼 임의의 수의 도메인에 관한 컨텍스트 정보 및 단서에 기초하여 모호성을 해결할 수 있다. 인간 대화자에 있어서, 문장 "Forward the minutes to those in the review meeting on Firday"는 어떤 추가적 설명이 없이 완전하게 이해가능한 문장이다. 그러나, 머신의 기계적 관점에서, 정확하게 어떤 문서이고 어느 모임이 관련되고 있는지 및 정확하게 문서가 누구에게 전송되어야 하는 지와 같은 특정 세부사항이 지정되어야 한다.
도 2는 로직 모듈(202)을 이용하는 다양한 어플리케이션을 위한 자연 이해 인터페이스(200)를 도시한 간소화된 블록도이다. 자연 이해 인터페이스(200)는 예 를 들면 키보드, 손 또는 제스츄어 인식 디바이스, 광 스캐너, 마이크로폰 또는 다른 입력 디바이스를 통해 사용자 입력을 수신한다. 인식 엔진은 사용자 입력의 특징을 식별하는데 이용될 수 있다. 스피치에 대한 인식 특징은 구어에서는 통상적인 반면, 필체에 대한 인식 특징은 통상 사용자의 필체의 스트로크에 대응한다. 일 특정 예에서, 문법은 스피치 발성내의 텍스트를 인식하는데 이용될 수 있다. 주지된 바와 같이, 인식은 또한 시각적 입력에 대해서도 제공될 수 있다. 인식 특징은 하나 이상의 로직 모듈(202)을 이용하는 인터페이스(200)에 의해 처리된다.
로직 모듈(202)은 인터페이스(200) 내의 어플리케이션을 구동하는 절차형 및 선언형 프로그래밍 코드를 포함한다. 예를 들면, 코드는 XML, LISP, Prolog, C, C++, C#, Java 및/또는 Fortran을 이용하여 기록될 수 있다. 어플리케이션은 로직 모듈(202)내의 의미 오브젝트를 이용하여 지식 베이스(204) 내의 정보에 억세스한다. 여기에 이용되는 바와 같이, "의미(semantic)"는 자연어 표현의 의미(meaning)를 언급한다. 의미 오브젝트는 자연어 표현에 대응하는 속성, 방법, 및 이벤트 핸들러를 정의할 수 있다. 본 발명의 일실시예에서, 의미 오브젝트는 하나 이상의 로직 모듈(202)에 의해 이용될 수 있는 엔티티를 언급하는 하나의 방법을 제공한다. 특정 도메인 어플리케이션에 속하는 특정 도메인 엔티티는 다른 방식으로 표현된 동일한 도메인 엔티티를 나타내는 각각의 하나를 갖는 임의의 수의 다른 의미 오브젝트에 의해 식별될 수 있다. 용어 의미 다형성(polymorphism)은 복수의 의미 오브젝트에 의해 식별될 수 있다. 의미 오브젝트의 풍부함, 즉 의미 오브젝트의 개수, 그 상호관계, 및 그 복잡도는 어플리케이션이 그 자연어 인터페이스에 서 가능한 사용자 표현성의 레벨에 대응한다. 다형성의 예로서, "John Doe", "NISD의 VP", 및 "Jim의 매니저"는 모두 동일한 사람(John Doe)을 언급하고 각각 PersonByName, PersonByJob, 및 PersonByRelationship으로 캡쳐된다.
의미 오브젝트는 또한 네스팅되어 회귀적 상호관계(interrelation)를 포함하여 서로에게 상호관계될 수 있다. 다시 말해, 의미 오브젝트는 그 자체가 의미 오브젝트인 구성요소를 가질 수 있다. 예를 들면, "Jim의 매니저"는 2개의 구성요소: 즉 "Person"의미 오브젝트인 "Jim"과 "PersonByRelationship" 의미 오브젝트인 "Jim의 매니저"를 갖는 의미 오브젝트에 대응한다. 이들 관계들은 의미 오브젝트들 간의 관계를 선언하는 의미 스키마에 의해 정의된다. 일실시예에서, 스키마는 부모-자식(parent-child) 계층 트리 구조로서 표현된다. 예를 들면, "SendMail" 의미 오브젝트는 지식 베이스(204)에 저장될 수 있는 특정 사람을 참조하는 "수취인" 속성을 갖는 부모 오브젝트가 될 수 있다. 2개의 예의 자식 오브젝트는 지식 베이스(204)로부터 메일 메시지의 수취인을 식별하는데 이용되는 "PersonByName" 오브젝트 및 "PersonByRelationship" 오브젝트로서 표현될 수 있다.
로직 모듈(202)을 이용하여, 지식 베이스(204)는 수행될 액션 및/또는 로직 모듈(202)의 의미 오브젝트에 기초하여 억세스될 수 있다. 본 기술분야의 숙련자들이 이해하는 바와 같이, 지식 베이스(204)는 관계형 또는 객체 지향형 데이터베이스, 웹 서비스, 로컬 또는 분산된 프로그래밍 모듈 또는 오브젝트, 주석이 있거나 없는 XML 문서 또는 다른 데이터 메커니즘 등과 같은 다수의 형태 -그러나, 이에 제한되는 것은 아님- 로 자신들을 증명할 수 있는 데이터의 다양한 타입 및 구 조를 포함할 수 있다. 특정 예들은 연락처, 약속, 오디오 파일, 비디오 파일, 텍스트 파일, 데이터베이스 등을 포함한다. 이어서, 자연 이해 인터페이스(200)는 지식 베이스(204)의 데이터 및 하나 이상의 로직 모듈(202)에 따라 수행된 액션에 기초하여 사용자에게 출력을 제공할 수 있다.
본 발명의 일양상은 로직 모듈(202)이 절차형 및 선언형 언어 양자 모두를 포함하는 다양한 언어를 이용하여 작성될 수 있게 한다. 그러므로, 어플리케이션 개발자는 다른 언어를 이용하여 수행될 특정 태스크를 최상으로 표현하고 따라서 각 언어에 의해 제공되는 특징들을 이용하는 소스 파일을 작성할 수 있다. 예를 들면, XML 소스 파일은 의미 오브젝트 선언을 포함할 수 있는 반면, C# 소스 파일은 XML 소스 파일에 선언된 의미 오브젝트에 대해 수행될 액션을 포함할 수 있다. 그러므로, 클래스 정의는 다른 언어로 작성되는 수개의 소스 파일에 걸쳐 "분산될"(즉, 억세스가능할) 수 있다. 일실시예에서, 소스 파일들은 공통 언어 런타임(CLR)과 같은 공유 런타임 환경에서 구현될 수 있다.
도 3은 절차형 및 선언형 언어를 이용하여 작성된 로직 모듈을 컴파일링하기 위한 프레임워크를 예시하고 있다. 컴파일러(222)는 적어도 하나의 절차형 로직 모듈(224) 및 적어도 하나의 선언형 로직 모듈(226)로부터 코드를 해석한다. 일실시예에서, 컴파일러(222)는 각 모듈(224, 226) 내의 코드를 프로세서에 의해 판독가능한 기계어로 변환한다. 다른 실시예에서, 복수의 절차형 및 선언형 모듈을 또한 이용할 수 있으며 이들을 컴파일러(222)에 의해 컴파일링할 수 있다. 예를 들면, 절차형 로직 모듈(224)은 선언형 로직 모듈(226)에 정의된 의미 오브젝트에서 수행되는 액션(들)에 대한 코딩을 포함할 수 있다. 예를 들어, 액션들은 C#과 같은 절차형 언어로 분류될 수 있는 반면, 의미 오브젝트는 XML과 같은 선언형 언어를 이용하여 정의될 수 있다.
본 발명의 일실시예에서, 절차형 로직 모듈(224)은 "부분 클래스" 지정을 포함한다. 부분 클래스 지정 또는 참조는 특정 클래스가 복수의 소스 파일에 걸쳐 있음을 컴파일러(222)에 통지한다. 결과적으로, 선언형 로직 모듈(226)에서 선언된 속성, 방법 및/또는 이벤트 핸들러는 절차형 로직 모듈(224)에서 반복될 필요가 없으며, 따라서 컴파일러(222)는 그러한 속성, 방법, 이벤트 핸들러 등이 절차형 로직 모듈(224)에 제공되지 않으므로 컴파일링을 중지시키지 않을 것이다.
XML로 작성되는 이하의 프로그래밍 코드는 타입 "foo2"의 적어도 하나의 슬롯 "Slot1"을 포함하는 타입 "foo1"의 클래스 "Class1"을 선언한다. 다른 슬롯 및 선언들은 또한 "Class1"을 이용하여 특정 어플리케이션에 따라 이 코드에 적용될 수 있다.
<Class1 type= "foo1">
<Slot1 type= "foo2" max= "10"/>
...
</Class1>
"Class1"이 상기와 같이 선언되면, 이하에 제공되는 바와 같은 코드를 포함하는 절차형 프로그래밍 모듈은 "Class1"의 슬롯에 억세스하도록 작성될 수 있다. 예를 들면, 이하의 코드는 부분 클래스 "Class1"를 실증하고, 이는 컴파일러(222) 에게 다른 소스 파일이 "Class1"에 대한 선언을 포함하고 있다고 통지한다. 이하의 코드는 "Class1" 절차에 의해 이용되는 데이터를 유지하기 위한 플레이스 홀더 "noDoubt"를 포함한다. 예로서, "Class1"의 "Slot1"은 이하에 제공되는 "Slot1.Count()"에 의해 억세스된다.
public partial class Class1: SemObj {
public SemObj noDoubt; // clearly a place holder,
not a slot
public void Evaluate () {
int size = Slot1.count();//access Slot1
defined in XML
...//focus on implementing domain logic here
noDoubt = Slot1[0];
}
}
도 4는 의미 오브젝트가 절차형 로직 모듈에서는 선언되지 않은 상태에서 절차형 로직 모듈이 의미 오브젝트에 대한 액션을 수행하는 예시적인 어플리케이션을 그림으로 도시하고 있다. 본 예에서, 절차형 로직 모듈은 항공권 예약 모듈(250), 호텔 예약 모듈(252) 및 렌트카 예약 모듈(254)을 포함한다. 각 절차형 로직 모듈(250, 252, 254)은 의미 오브젝트(256)를 언급하는 부분 클래스 지정을 포함하며, 이는 예를 들면 분리된 "선언" XML 소스 파일에서 선언될 수 있다. 의미 오브젝트 (256)는 여행 수단, 출발 도시, 도착 도시, 출발 날짜 및/또는 복귀 날짜를 포함하여 모듈(250, 252, 254)에 의해 이용되는 여행 데이터를 포함한다.
의미 오브젝트(256)는 부분 클래스 지정을 이용함으로써 각 절차형 로직 모듈(250, 252, 254)에 의해 억세스될 수 있다. 그러므로, 어플리케이션 개발자는 단지 여행 의미 오브젝트(256)의 하나의 경우만을 개발할 필요가 있다. 항공권 예약 모듈(250), 호텔 예약 모듈(252) 및 렌트카 예약 모듈(254)에 작성된 코드는 여행 의미 오브젝트(256)의 데이터 요소들 중 임의의 것 또는 전부에 대해 액션을 수행하도록 실행될 수 있다. 결과적으로, 어플리케이션은 과다한 선언을 줄일 수 있는 시간 효율적인 방식으로 작성될 수 있고 따라서 절차형 및 선언형 로직의 통합으로 생기는 에러를 방지한다.
도 2에 도시된 시스템을 더 참조한 예시적인 실시예에서, 사용자는 "Schedule a flight from Seattle to Minneapolis next Tuesday"라는 자연어 입력을 인터페이스(200)에 제공한다. 이 경우에, 워싱톤 레드몬드의 마이크로소프트사가 제공하는 SAPI 5.2와 같은 스피치 어플리케이션 프로그램 인터페이스는 자연어 입력내의 의미 오브젝트를 식별하는데 이용될 수 있다. 입력은 도 4의 여행 의미 오브젝트(256)를 파퓰레이트하기 위해, 의미 마크업 랭귀지와 같은 언어에 대응하는 포맷으로 의미 태그와 연관된다(즉, 나열된다). 예를 들어, 스피치 어플리케이션 프로그램 인터페이스는 다음과 같은 출력을 제공할 수 있다:
<sml text="Schedule a flight from Seattle to Minneapolis next Tuesday" confidence="90">
<TravelSemanticObject text = "flight">
<TravelMeans type= "airline">
<DepartureCity type="airport code"> SEA
</DepartureCity>
<ArrivalCity type="airport code"> MSP
</ArrivalCity>
<StartDate type="date"> April 27
</StartDate>
</TravelMeans>
</TravelSemanticObject>
</sml>
이어서, 여행 의미 오브젝트(256)의 슬롯은 자연어 입력으로부터의 정보로 적어도 부분적으로 파퓰레이트된다. 이어서, 원한다면, 여행 의미 오브젝트(256)와 연관된 규칙 및/또는 의미 스키마가 이용되어 여행의 복귀 날짜와 같은 나머지 미지의 정보에 대해 사용자에게 프롬프트한다. 여행 의미 오브젝트(256)의 슬롯의 정보를 이용하면, 항공권 예약 모듈(250)이 비행 가격결정(flight pricing), 및 표가 있는지의 여부(availability) 등을 제공하기 위해 지식 베이스(204)에 억세스함으로써 실증될 수 있다. 부가적으로, 호텔 예약 모듈(252) 및 렌트카 예약 모듈(254)은 각 절차형 코딩 모듈 내의 여행 의미 오브젝트(256)의 추가 선언없이 여행 의미 오브젝트(256)에 기초하여 잠재적인 호텔 및 렌트카 예약을 제공하도록 실증 될 수 있다. 그러므로, 여행 의미 오브젝트(256)는 하나의 선언으로 복수의 절차형 프로그래밍 모듈에 의해 억세스될 수 있다.
상기 제공된 실시예들은 성질이 매우 간소화되어 있고 본 발명의 동작을 설명하기 위해 제공되었다. 이들은 본 발명의 동작을 설명하고, 이는 훨씬 더 복잡한 오브젝트 계층으로 확장될 수 있다. 자연어 표현이 사소한 것이 아닌 경우에, 의미 오브젝트의 트리는 적절한 형태로 로직 모듈(202)에 전달될 수 있는 방식으로 발성의 의미를 충분하게 캡쳐하는데 이용될 수 있다.
그러므로, 본 발명은 예를 들면 XML과 같은 선언형 코딩 언어를 이용하거나 C# 또는 C++와 같은 절차형 코딩 언어를 이용하여, 의미 오브젝트가 다수의 프로그래밍 구문으로 선언될 수 있도록 하는 강력한 오퍼레이팅 툴을 제공한다. 따라서, 이러한 프레임워크는 복수의 의미 오브젝트의 선언이 필요없는 선언형 모듈을 이용하는 복수의 절차형 프로그래밍 모듈에 매우 적절하고, 그 역도 마찬가지이다. 오브젝트의 속성, 특성, 방법 및 이벤트 핸들러는 절차형 모듈에 의해 이용되어 하나의 위치에서 절차형 모듈의 보다 용이한 작성을 가능하게 한다.
본 발명이 특정 실시예를 참조하여 설명되었지만, 본 기술분야의 숙련자라면 본 발명의 사상 및 범주에서 벗어나지 않고서도 형태 및 세부 사항에 변형이 가해질 수 있다는 것을 잘 알고 있을 것이다.
본 발명의 컴퓨터 판독가능 매체는 컴퓨터 상에서 구현되는 경우 상기 컴퓨터가 정보를 처리하도록 하는 명령문을 구비하며, 절차형 로직 모듈과 선언형 로직 모듈을 통합하는 작성 툴을 제공할 수 있다.

Claims (23)

  1. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트(semantic object)를 정의하도록 구성된 선언형(declarative) 로직 모듈; 및
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형(procedural) 로직 모듈
    을 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정(partial class designation)을 포함하며,
    상기 선언형 로직 모듈은 관련된 의미 오브젝트들의 스키마를 계층적 구조로 정의하도록 구성된, 컴퓨터 판독가능 기록 매체.
  2. 제1항에 있어서,
    상기 선언형 로직 모듈은 XML, LISP 및 Prolog 중 적어도 하나를 이용하여 구현되는, 컴퓨터 판독가능 기록 매체.
  3. 제1항에 있어서,
    상기 절차형 로직 모듈은 C, C++, Java 및 C# 중 적어도 하나를 이용하여 구현되는, 컴퓨터 판독가능 기록 매체.
  4. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트(semantic object)를 정의하도록 구성된 선언형(declarative) 로직 모듈; 및
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형(procedural) 로직 모듈; 및
    상기 선언형 로직 모듈을 참조하여 상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 제2 절차형 로직 모듈
    을 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정(partial class designation)을 포함하는, 컴퓨터 판독가능 기록 매체.
  5. 삭제
  6. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 구성된 선언형 로직 모듈; 및
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형 로직 모듈
    을 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정을 포함하며,
    상기 의미 오브젝트는 복수의 슬롯을 포함하는, 컴퓨터 판독가능 기록 매체.
  7. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 구성된 선언형 로직 모듈; 및
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형 로직 모듈
    을 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정을 포함하며,
    상기 컴파일러는 상기 선언형 로직 모듈 및 상기 절차형 로직 모듈을 프로세서에 의해 판독가능한 기계어로 변환하도록 구성된 컴퓨터 판독가능 기록 매체.
  8. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 구성된 선언형 로직 모듈;
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형 로직 모듈; 및
    사용자로부터 자연어 입력을 수신하기 위한 인터페이스
    를 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정(partial class designation)을 포함하는, 컴퓨터 판독가능 기록 매체.
  9. 제8항에 있어서,
    상기 선언형 로직 모듈의 적어도 하나의 상기 슬롯은 상기 자연어 입력의 적어도 일부를 이용해 파퓰레이트되도록 구성된, 컴퓨터 판독가능 기록 매체.
  10. 제9항에 있어서,
    상기 절차형 로직 모듈은 파퓰레이트된 적어도 하나의 상기 슬롯에 대해 액션을 수행하는, 컴퓨터 판독가능 기록 매체.
  11. 제9항에 있어서,
    상기 인터페이스는 파퓰레이트된 적어도 하나의 상기 슬롯에 기초하여 지식 베이스(knowledge base)를 억세스하도록 더 구성된, 컴퓨터 판독가능 기록 매체.
  12. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 구성된 선언형 로직 모듈; 및
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형 로직 모듈
    을 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정을 포함하며,
    상기 절차형 로직 모듈은 자연어 입력을 처리하기 위한 것이고, 상기 절차형 로직 모듈은 상기 의미 오브젝트를 사용하여 상기 선언형 로직 모듈에 대한 액션들을 수행하도록 구성된 절차형 코드를 포함하는, 컴퓨터 판독가능 기록 매체.
  13. 제12항에 있어서,
    상기 절차형 로직 모듈은 상기 의미 오브젝트 및 적어도 하나의 상기 슬롯을 사용하여 지식 베이스를 억세스하도록 더 구성되는, 컴퓨터 판독가능 기록 매체.
  14. 제12항에 있어서,
    상기 부분 클래스 지정은 상기 의미 오브젝트를 참조하는, 컴퓨터 판독가능 기록 매체.
  15. 제12항에 있어서,
    상기 의미 오브젝트는 복수의 슬롯을 정의하는, 컴퓨터 판독가능 기록 매체.
  16. 제12항에 있어서,
    상기 부분 클래스 지정은 계층적 구조로 배치된 복수의 의미 오브젝트에 대응하는, 컴퓨터 판독가능 기록 매체.
  17. 컴퓨터 상에서 구현되는 경우, 상기 컴퓨터로 하여금 정보를 처리하도록 하는 명령들을 저장한 컴퓨터 판독가능 기록 매체로서, 상기 명령들은,
    적어도 하나의 의미 슬롯을 갖는 의미 오브젝트를 정의하도록 구성된 선언형 로직 모듈; 및
    상기 의미 오브젝트에 대해 수행될 액션들을 정의하도록 구성된 절차형 로직 모듈
    을 포함하고,
    상기 절차형 로직 모듈은, 상기 의미 오브젝트가 복수의 소스 파일에 걸쳐 있음을 컴파일러에 통지하고 상기 선언형 로직 모듈을 참조하는 부분 클래스 지정을 포함하며,
    상기 컴퓨터는 사용자로부터의 자연어 입력을 처리하게 되고, 상기 명령들은 복수의 절차형 로직 모듈을 포함하며, 각각의 절차형 로직 모듈은 계층적 구조로 배치된 복수의 의미 오브젝트를 정의하는 선언형 로직 모듈에 대응하는 부분 클래스 지정을 포함하고, 각각의 의미 오브젝트는 상기 자연어 입력에 의해 파퓰레이트될 수 있는 복수의 슬롯을 포함하는, 컴퓨터 판독가능 기록 매체.
  18. 어플리케이션을 컴파일링하기 위한 방법으로서,
    선언형 로직 모듈을 참조하고 상기 선언형 로직 모듈에 의해 정의된 의미 오브젝트가 복수의 소스 파일에 걸친 것임을 컴파일러에 통지하는 절차형 로직 모듈 내의 부분 클래스 지정을 식별하는 단계;
    상기 절차형 로직 모듈에서 액션을 수행하기 위해 상기 선언형 로직 모듈 내의 상기 의미 오브젝트에 억세스하는 단계; 및
    복수의 관련된 의미 오브젝트를 계층적 구조로 선언하는 단계
    를 포함하는 컴파일링 방법.
  19. 제18항에 있어서,
    상기 절차형 로직 모듈 및 상기 선언형 로직 모듈을 프로세서에 의해 판독가능한 기계어로 변환하는 단계를 더 포함하는 컴파일링 방법.
  20. 제18항에 있어서,
    복수의 절차형 로직 모듈은 상기 선언형 로직 모듈에 대응하는 상기 부분 클래스 지정을 포함하는 컴파일링 방법.
  21. 삭제
  22. 삭제
  23. 삭제
KR1020040101220A 2004-01-22 2004-12-03 어플리케이션 컴파일링 방법 및 그 방법을 기록한 컴퓨터 판독가능 기록매체 KR101120758B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53830604P 2004-01-22 2004-01-22
US60/538,306 2004-01-22
US10/847,828 US20050166182A1 (en) 2004-01-22 2004-05-18 Distributed semantic schema
US10/847,828 2004-05-18

Publications (2)

Publication Number Publication Date
KR20050076733A KR20050076733A (ko) 2005-07-27
KR101120758B1 true KR101120758B1 (ko) 2012-03-23

Family

ID=34636696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040101220A KR101120758B1 (ko) 2004-01-22 2004-12-03 어플리케이션 컴파일링 방법 및 그 방법을 기록한 컴퓨터 판독가능 기록매체

Country Status (7)

Country Link
US (1) US20050166182A1 (ko)
EP (1) EP1557752B1 (ko)
JP (1) JP2005209176A (ko)
KR (1) KR101120758B1 (ko)
CN (1) CN1645318A (ko)
AT (1) ATE368887T1 (ko)
DE (1) DE602004007872T2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7561673B2 (en) 2004-09-30 2009-07-14 Microsoft Corporation Integration of speech services with telecommunications
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8918716B2 (en) * 2009-09-24 2014-12-23 Oracle International Corporation Context-based smart tags
US9600250B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Declarative programming model with a native programming language
US9600255B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Dynamic data and compute resource elasticity
US9658890B2 (en) 2010-10-08 2017-05-23 Microsoft Technology Licensing, Llc Runtime agnostic representation of user code for execution with selected execution runtime
US9760348B2 (en) 2010-11-29 2017-09-12 Microsoft Technology Licensing, Llc Verification of a dataflow representation of a program through static type-checking
US9851950B2 (en) * 2011-11-15 2017-12-26 Wolfram Alpha Llc Programming in a precise syntax using natural language
US20150293669A1 (en) * 2014-04-09 2015-10-15 Zulahoo, Inc. Apparatus, method, and computer system for generating contained, usable objects that are dynamically configurable
CN116820564B (zh) * 2023-07-06 2024-04-02 四川大学 程序语言的统一形式语义化方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448740A (en) * 1992-12-15 1995-09-05 International Business Machines Corporation Generation of a user interface code from a corresponding declarative language program
US20020040297A1 (en) * 2000-09-29 2002-04-04 Professorq, Inc. Natural-language voice-activated personal assistant
US20020178005A1 (en) * 2001-04-18 2002-11-28 Rutgers, The State University Of New Jersey System and method for adaptive language understanding by computers

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0667586A3 (en) * 1994-02-14 1996-08-28 Digital Equipment Corp Database creation system.
US7146479B2 (en) * 2001-07-18 2006-12-05 City U Research Limited Method and apparatus of storage allocation/de-allocation in object-oriented programming environment
CA2165893C (en) * 1995-12-21 2001-03-13 Richard Denison Mcdonald Visual application partitioning for creating distributed object oriented applications
US6567778B1 (en) * 1995-12-21 2003-05-20 Nuance Communications Natural language speech recognition using slot semantic confidence scores related to their word recognition confidence scores
US6145120A (en) * 1998-03-24 2000-11-07 Lockheed Martin Corporation Declaration programming language extension for procedural programming languages
US6182277B1 (en) * 1998-04-15 2001-01-30 Oracle Corporation Methods and apparatus for declarative programming techniques in an object oriented environment
US6405368B1 (en) * 1999-04-16 2002-06-11 Brian Freyburger Method for separate compilation of templates
WO2001057720A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Automated client-server data validation
US20030233219A1 (en) * 2002-05-23 2003-12-18 Geroge Landers Method and apparatus emulating read only memories with combinatorial logic networks, and methods and apparatus generating read only memory emulator combinatorial logic networks
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
US7047524B1 (en) * 2000-12-30 2006-05-16 Hyperformix Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language
US7246104B2 (en) * 2001-03-21 2007-07-17 Nokia Corporation Method and apparatus for information delivery with archive containing metadata in predetermined language and semantics
US7200627B2 (en) * 2001-03-21 2007-04-03 Nokia Corporation Method and apparatus for generating a directory structure
US7561673B2 (en) * 2004-09-30 2009-07-14 Microsoft Corporation Integration of speech services with telecommunications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448740A (en) * 1992-12-15 1995-09-05 International Business Machines Corporation Generation of a user interface code from a corresponding declarative language program
US20020040297A1 (en) * 2000-09-29 2002-04-04 Professorq, Inc. Natural-language voice-activated personal assistant
US20020178005A1 (en) * 2001-04-18 2002-11-28 Rutgers, The State University Of New Jersey System and method for adaptive language understanding by computers

Also Published As

Publication number Publication date
DE602004007872T2 (de) 2007-12-20
EP1557752A3 (en) 2005-08-17
JP2005209176A (ja) 2005-08-04
KR20050076733A (ko) 2005-07-27
ATE368887T1 (de) 2007-08-15
US20050166182A1 (en) 2005-07-28
CN1645318A (zh) 2005-07-27
EP1557752A2 (en) 2005-07-27
EP1557752B1 (en) 2007-08-01
DE602004007872D1 (de) 2007-09-13

Similar Documents

Publication Publication Date Title
Lucassen et al. Extracting conceptual models from user stories with Visual Narrator
Asher et al. Logics of conversation
Wahlster Smartkom: Symmetric multimodality in an adaptive and reusable dialogue shell
Evermann et al. Toward formalizing domain modeling semantics in language syntax
KR100694734B1 (ko) 대화형 추론 에이전트, 다중에이전트 서버 및 이를구현하는 시스템을 사용하는 모델 및 방법
RU2421784C2 (ru) Моделирование отношений
JP5123291B2 (ja) プログラミング言語における式ツリーの深い埋め込みのためのジェネリックインターフェイス
KR101120758B1 (ko) 어플리케이션 컴파일링 방법 및 그 방법을 기록한 컴퓨터 판독가능 기록매체
White et al. Adapting chart realization to CCG
KR101213890B1 (ko) 강한 데이터 유형을 이용하여 소프트웨어 프로그램에서음성 인식 문법을 나타내기 위한 방법
Wahlster Towards symmetric multimodality: Fusion and fission of speech, gesture, and facial expression
US20040122653A1 (en) Natural language interface semantic object module
Bastianelli et al. Speaky for robots: the development of vocal interfaces for robotic applications
Soares et al. VoiceToModel: an approach to generate requirements models from speech recognition mechanisms
KR101130410B1 (ko) 의미 프로그래밍 언어 및 언어 객체 모델
Paige et al. Metamodelling for grammarware researchers
Frankel et al. The model driven semantic web
Fiorelli et al. Assessing VocBench custom forms in supporting editing of lemon datasets
Bringert et al. Multimodal dialogue system grammars
Van Trijp Argumentstruktur in der Fluid Construction Grammar
Lowden et al. The REMIT System for Paraphrasing Relational Query Expressions into Natural Language.
Kawsar et al. Persona: a portable tool for augmenting proactive applications with multimodal personalization support
Bühler et al. Domain-level reasoning for spoken dialogue systems
Tumuluri et al. Standardized representations and markup languages for multimodal interaction
Sottet et al. A language perspective on the development of plastic multimodal user interfaces

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee