도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨터 시스템 환경(100)은 적합한 컴퓨팅 환경의 한 예일 뿐이고, 본 발명의 사용 또는 기능의 범위에 대해 임의의 제한을 제안하려고 의도되지 않는다. 컴퓨팅 환경(100)은 운영 환경(100)의 예에서 설명된 구성요소들 중의 임의의 것 또는 조합에 관련된 임의의 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
본 발명은 다수의 기타 일반 목적 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작한다. 본 발명과 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 퍼스널 컴퓨터들, 서버 컴퓨터들, 핸드 핼드 또는 랩탑 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서 기반의 시스템들, 셋탑 박스들, 프로그램 가능한 소비자 전자 제품들, 통신망 PC들, 미니 컴퓨터들, 메인프래임 컴퓨터들, 전화 시스템들, 상술한 시스템들 또는 디바이스들 중의 임의의 것을 포함하는 분산 컴퓨팅 환경들, 및 기타를, 하지만 거기에 국한되지 않고, 포함한다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행가능 명령들의 일반 컨텍스트로 기재될 수 있다. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 추상 데이타 타입들을 구현하는 루틴들, 프로그램들, 객체들, 구성요소들, 데이타 구조들, 기타를 포함한다. 본 발명은 작업들이 통신망을 통해 링크된 원격 프로세싱 디바이스들에 의해 수행되는 분산 컴퓨팅 환경들에서 실시되도록 디자인된다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저 장 디바이스들을 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 위치된다.
도 1의 참조에서, 본 발명을 구현하는 시스템의 한 예는 컴퓨터(110)의 형태의 일반 목적 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 구성요소들은 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 구성요소들을 프로세싱 유닛(120)에 연결하는 시스템 버스(121)를, 하지만 거기에 국한되지 않고, 포함할 수 있다. 시스템 버스(121)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 구조들 중의 임의의 것을 사용하는 로컬 버스를 포함하는 몇 개 타입들의 버스 구조들 중의 임의의 것일 수 있다. 예를 들어, 그런 구조들은 산업 표준 아키텍춰 (ISA) 버스, 마이크로 채널 아키텍춰 (MCA) 버스, 진보된 ISA (EISA) 버스, 비디오 전자 표준 협회 (VESA) 로컬 버스, 및 메자닌 버스라고도 알려진 주변 구성요소 상호연결 (PCI) 버스를, 하지만 거기에 국한되지 않고, 포함한다.
컴퓨터(110)는 다양한 컴퓨터 판독가능 매체를 전형적으로 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스 가능한 임의의 이용가능 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함할 수 있다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를, 하지만 거기에 국한되지 않고, 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령들, 데이타 구조들, 프로그램 모듈들, 또는 기타 데이타와 같은 정보 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체 모두를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리, 또는 기타 메모리 기술, CD-ROM, 디지탈 다용도 디스크들 (DVDs), 또는 기타 광 디스크 저장, 자기 카세트들, 자기 테입, 자기 디스크 저장 또는 기타 자기 저장 디바이스들, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 기타 매체를, 하지만 거기에 국한되지 않고, 포함한다. 통신 미디어는 컴퓨터 판독가능 명령들, 데이타 구조들, 프로그램 모듈들, 또는 캐리어 웨이브 또는 기타 운송 메카니즘과 같은 변조 데이타 내의 기타 데이타를 전형적으로 구현하고, 임의의 정보 배달 매체를 포함한다. 변조 데이타 신호라는 용어는 신호의 정보를 인코드하기 위한 방식으로 한 개 이상의 그자체의 특징들이 세트되거나 변경되는 신호를 의미한다. 예를 들어, 통신 매체는 유선 통신망 또는 직접 유선 연결과 같은 유선 매체, 및 음향, RF, 적외선, 및 기타 무선 매체와 같은 무선 매체를, 하지만 거기에 국한되지 않고, 포함한다. 상술한 것들 중의 임의의 것의 조합들은 컴퓨터 판독가능 매체의 범위 내에 또한 포함된다.
시스템 메모리(130)는 읽기용 메모리 (ROM)(131) 및 랜덤 액세스 메모리 (RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 스타트업 동안 같은 때, 컴퓨터(110) 내의 소자들 간에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입/출력 시스템 (BIOS)(133)은, ROM(131)에 전형적으로 저장된다. RAM(132)는 즉시 액세스 가능하고, 그리고/또는 프로세싱 유닛(120)에 의해 현재 동작되는 데이타 및/또는 프로그램 모듈들을 포함한다. 예를 들어, 도 1은 운영 체제(134), 응용 프로그램들(135), 기타 프로그램 모듈들(136), 및 프로그램 데이타(137)를, 하지만 거기에 국한되지 않고, 도시한 다.
컴퓨터(110)는 기타 분리형/비분리형 휘발성/비휘발성 컴퓨터 저장 매체를 또한 포함할 수 있다. 예로써, 도 1은 비분리형 비휘발성 자기 매체에서 읽고 쓰는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)에서 읽고 쓰는 자기 디스크 드라이브(151), 및 CD ROM 또는 기타 광 매체와 같은 분리형 비휘발성 광 디스크(156)에 읽고 쓰는 광 디스크 드라이브(155)를 도시한다. 운영 환경의 예에서 사용될 수 있는 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는, 자기 테입 카세트들, 플래쉬 메모리 카드들, 디지탈 다용도 디스크들, 디지탈 비디오 테입, 반도체 ROM, 반도체 RAM, 및 기타를, 하지만 거기에 국한되지 않고, 포함한다. 하드 디스크 드라이브(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)에 커맨드들 및 정보를 입력할 수 있다. 기타 입력 디바이스들로는 (도시 안됨) 조이 스틱, 게임 패드, 위성 접시, 스캐너, 또는 기타를 포함할 수 있다. 이런 그리고 기타 입력 디바이스들은 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)으로 종종 연결되지만, 병렬 포트, 게임 포트, 또는 범용 직렬 버스(USB)와 같은 기타 인터페이스 및 버스 구조들에 의해 연결될 수 있다. 모니터(191) 또는 기타 타입의 디스플래이는 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 또한 연결된다. 모니터에 추가해서, 컴퓨터들은 출력 주변 인터페이스(195)를 통해 연결될 수 있는 스피커들(197) 및 프린터(196)와 같은 기타 주변 출력 디바이스들을 또한 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 한 개 이상의 원격 컴퓨터들과 논리 연결들을 사용해서 통신망 환경에서 동작한다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 핸드 핼드 디바이스, 서버, 라우터, 통신망 PC, 피어 디바이스, 또는 기타 일반 통신망 노드일 수 있고, 컴퓨터(110)에 관련해서 상술한 소자들 중 다수 또는 전체를 전형적으로 포함한다. 도 1에서 도시된 논리 연결들은 구내 통신망 (LAN)(171) 및 광역 통신망 (WAN)(172)을 포함하지만, 기타 통신망들을 또한 포함할 수 있다. 그런 통신망 환경들은 사무실, 기업 기반 컴퓨터 통신망들, 인트라넷 들, 및 인터넷에서 일반적이다.
LAN 통신망 환경에서 사용될 때, 컴퓨터(110)는 통신망 인터페이스 또는 어뎁터(170)를 통해 LAN(171)에 연결된다. WAN 통신망 환경에서 사용될 때, 컴퓨터(110)는 인터넷과 같은 WAN(173)을 통해 통신을 개통하기 위한 모뎀(172) 또는 기타 수단을 전형적으로 포함한다. 외장 또는 내장일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 연결될 수 있다. 통신망 환경에서, 컴퓨터(110)와 관련해서 도시되는 프로그램 모듈들, 또는 그것들의 일부들은 원격 메모리 저장 디바이스에 저장될 수 있다. 예를 들어, 도 1은 원격 컴퓨터(180)에 상주하는 원격 응용 프로그램들(185)을 도시한다. 도시된 통신망 연결들은 예들일 뿐이고 컴퓨터들 간에 통신 링크를 개통하는 기타 수단이 사용될 수 있음이 이해될 것이다.
본 발명은 입력 텍스트가 서툴게 형성되거나 단편적일지라도 입력 텍스트의 세만틱 구조들을 효과적으로 식별하기 위한 방법 및 장치를 제공한다. 본 발명의 시스템을 도시하는 블럭도는 도 2에 제공되고, 세만틱 구조를 식별하는 방법은 도 3의 흐름도에서 도시된다.
도 3의 스텝(300)에서, 스키마(200)는 스키마 타입들 및 확률들(202), 마르코브 (Markov) 확률들(204), 및 세만틱 규칙들(206)을 포함해서 정의된다. 스키마의 일부의 한 예는 도 4에 도시된다.
도 4에서, 스키마는 <Schema> 태그(400)에서 시작해서 </Schema> 태그(402)에서 끝나는 XML 포맷을 사용해서 정의된다. 한 스키마 타입은 <Entity> 태그들 (404, 406)과 같은 <Entity> 태그들 내에 정의된다. 시작 <Entity> 태그 내에, 엔터티 (entity)의 신원 (identity)은 "타입 (Type)" 속성을 위한 값으로서 리스트된다. 예를 들어, <Entity> 태그(400)에 대해, 엔터티는 "항공편 (Flight)"으로서 식별된다. 시작 <Entity> 태그는 훈련 데이타 세트에 이 엔터티가 발생한 횟수를 표시하는 "횟수 (seen)" 속성을 또한 포함한다. 예를 들어, "항공편" 엔터티는 훈련 데이타에서 121 번 나타난다.
시작 및 끝 <Entity> 태그들 사이에, <With> 태그들 (408, 410, 412, 414, 및 416) 과 같은 <With> 태그들의 세트가 발견될 수 있다. 각 <With> 태그는 시작 <Entity> 태그에 리스트된 엔터티를 위한 자식 엔터티로서 나타날 수 있는 엔터티를 식별하는 "엔터티 타입 (Entity Type)" 속성을 포함한다. 예를 들어, <With> 태그(408)는 "시간 엔터티 (TimeEntity)"가 태그(404)에 발견되는 "항공편" 엔터티에 자식 엔터티로서 나타날 수 있다. 각 <With> 태그는, <With> 태그의 엔터티가 <Entity> 태그의 엔터티의 자식 엔터티로서 발견되는 횟수를 표시하는 "횟수" 속성을 또한 포함한다. 예를 들어, 태그(414)는 "항공사 (Airline)" 엔터티가 "항공편"의 자식 엔터티로서 39 번 발견됨을 표시한다.
<With> 태그의 일부 엔터티들은 "타입" 속성의 제한 세트에 의해 더 정의된다. 예를 들어, <With> 태그들(410, 412)은 모두 "도시 (City)" 엔터티에 대한 것이다. 그러나, 태그(410)는 여행의 "목적지" 또는 목적지인 도시에 제한되고, 태그(412)는 여행의 "출발지" 또는 출발지인 도시에 제한된다.
<Entity> 태그 내의 또 다른 태그는 <Denoted> 태그이다. 2 개의 <Denoted> 태그들 사이의 워드 또는 프레이즈 (phrase)는 훈련 데이타에 나타나고 이 엔터티와 연계된 워드 또는 프레이즈이다. 예를 들어, 워드 "항공편들 (flights)"은 훈련 텍스트에서 발견되고 <Denoted> 태그(418)에 의해 표시되는 것처럼 "항공편 (flight)" 엔터티와 연계된다. <Denoted> 태그는, <Denoted> 태그들 사이에 워드 또는 프레이즈가 이 엔터티와 연계되는 횟수를 표시하는 "횟수" 속성을 포함할 수 있다. 예를 들어, 워드 "항공편들"는 "항공편" 엔터티와 79 번 연계된다.
도 3의 참조에서, 스키마가 정의된 후에, 스키마는 세만틱 구조 테이블(210)을 구성하기 위해 테이블 구성 유닛(208)에 의해 스텝(302)에서 사용된다. 구체적으로, 스키마의 <Entity> 태그들 사이에 정의된 세만틱 타입들(202)은 세만틱 구조 테이블(210)을 구성하기 위해 사용된다.
구조 테이블(210)은 스키마의 각 가능한 엔터티들의 쌍에 대한 분리된 엔트리로 구성된다. 각 엔트리는, 두 엔터티들이 모두 존재할 수 있게 형성 될 수 있는 구조들의 전체 리스트를 포함한다. 이러한 구조들은, 2 개의 엔트리들이 서로 직접 연결된 구조들, 및 2 개의 엔터티들이 또 다른 엔터티를 통해 연결된 구조들을 포함함을 주목한다. 상기 2 개의 엔터티들 사이에 연결을 형성하기 위해 요구되는 그런 엔터티들만이 테이블에서 임의의 1 개의 구조에 대해 리스트된다. 초기에 이 테이블을 생성해서, 본 발명은 2 개의 엔터티들이 스키마 내에서 서로 연결될 수 있는 상이한 방법들을 식별하기 위해 실행시에 수행되어야 하는 계산들의 횟수를 감소시킨다.
스텝(304)에서, 텍스트(212)는 스텝(306)에서 텍스트에 의해 표현될 수 있는 모든 엔터티들을 식별하는 세만틱 엔터티 식별기(214)에 의해 수신된다. 이를 위해, 엔터티 식별기는 스키마(200)의 <entity> 태그들의 <Denoted> 태그들을 사용한다. 텍스트로부터의 워드 또는 프레이즈가 <Denoted> 태그들의 쌍에서 발견되면, 세만틱 노드는 워드 또는 프레이즈에 대해 생성되고, <Denoted> 태그를 포함하는 엔터티는 그 노드의 가능한 엔터티로서 추가된다. 1 개 노드는 복수의 엔터티들을 가질 수 있음을 주목한다. 또한, 2 개의 엔터티들 (엔터티들과 연계된 워드 또는 프레이즈)의 스팬 (span)이 부분적으로 겹치면, 그들은 동일 세만틱 노드의 일부로서 고려된다. 결과는 세만틱 엔터티 래티스 (lattice)이다.
도 5는 스텝(306)을 통해 형성된 엔터티 래티스의 예를 도시하는 다이어그램을 제공한다. 도 5에서, 서툴게 형성된 입력 시퀀스 "나는 보스턴에 있으며, 화요일에 디트로이트에 있고 싶다, 유나이티드 (United)의 항공편들을 보여라 (I am in Boston and I want to be in Detroit on Tuesday, show me United flights)"는 엔터티 래티스를 식별하기 위해 프로세스된다. 이 프로세스 동안, "보스톤 (Boston)" 및 "디트로이트 (Detroit)"는 2 개의 순차적 세만틱 노드들을 나타내는 2 개의 분리된 "도시 이름 (cityname)" 엔터티들(500, 502)에 맵핑된다. "화요일 (Tuesday)"는 제 3 세만틱 노드에서 "요일 (daysofweek)" 엔터티(504)에 맵핑된다. 워드 "안내 (show)"는 제 4 노드에서 겹치는 4 개의 가능한 엔터티들에 맵핑된다. 구체적으로, "안내"는 "운행 항공사 안내 (ShowAirlineServed)" 엔터티(506), "항공편 안내 (ShowFlight)" 엔터티(508), "교통 수단 (ListTransport)" 엔터티(510), 및 "정원 안내(ShowCapacity)" 엔터티(512)에 맵핑된다. 워드들 "유나이티드 (United)" 및 "항공편들 (flights)"는 래티스에서 마지막 2 개의 세만틱 노드들을 표현하는 "항공사 (Airline)" 엔터티(514) 및 "항공편(Flight)" 엔터티(516) 각각에 맵핑된다.
스텝(308)에서, 세민틱 규칙들(206)은 스텝(306)에서 식별된 엔터티들에 적용된다. 그런 세만틱 규칙들의 예들은 <GrammarRule> 태그들(420 및 422) 및 <GrammarRule> 태그들(424 및 426)과 같은 <GrammarRule> 태그들 사이에 도 4의 스키마의 예에서 도시된다.
<GrammarRule> 태그들의 각 쌍 사이에, <Constit> 태그(428)와 같은 한 개 이상의 <Constit> 태그들이 있다. 각 <Constit> 태그는 "엔터티 (Entity)" 속성에 의해 <Constit> 태그 내에 식별되는 한 엔터티를 표현한다. 특정 그래머 (grammar) 규칙이 실행되어야 하는지를 판정하기 위해, 스텝(306)에서 형성된 엔터티 래티스는, 상기 규칙의 <Constit> 태그들 내에 리스트된 모든 엔터티들이 래티스에서 분리된 세만틱 노드들에 존재하는지를 보기 위해 검사된다. 일부 실시예들에서, 엔터티들은 <Constit> 태그들과 동일한 순서로 래티스에 나타나야 한다. 예를 들어, 그래머 규칙이 다음의 태그들의 시퀀스를 포함한다면:
<Constit Number="0" Entity="Number" />
<Constit Number="1" Entity="항공편">
"숫자 (Number)" 엔터티는 그래머 규칙이 실행되기 위해 엔터티 래티스에 "항공편" 엔터티의 좌측에 나타나야만 한다.
위에 도시된 바와 같이, <Constit> 태그들은 "숫자" 속성을 또한 포함한다. 상기 속성은 상기 규칙의 실행 동안 엔터티를 식별하기 위해 사용될 수 있는 엔터티에 값을 할당한다. 동일 엔터티 타입의 2 개의 엔터티들은 한 개의 그래머 규칙에서 사용될 수 있으므로, 상기 값은 필요하다.
일반적으로, 각 그래머 규칙은 <Constit> 태그들에서 발견되는 구성요소 엔터티들을 조합해서 상기 구성요소들이 임베디드되는 (embeded) 새로운 엔터티를 형성한다. 한 가지 타입의 그래머 규칙은 각 구성요소 엔터티가 부모 엔터티의 자식이 되는 부모 엔터티를 형성한다. 그런 규칙들은 부모로서 사용되는 엔터티를 식별하는 "엔터티" 속성을 갖는 <Parent> 태그를 사용한다. 상기 태그가 대면되고, <Constit> 태그의 엔터티들이 엔터티 래티스에 존재할 때, <Constit> 태그들의 개별 엔터티들은 삭제되고, <Constit> 태그의 엔터티들이 <Parent> 태그에서 발견되는 엔터티의 자식 엔터티들이 되는 세만틱 구조가 생성된다. 그 다음, 상기 구조의 스팬 (span)은 자식 엔터티들의 스팬의 조합이다.
그래머 규칙들은 <Constit> 태그들의 엔터티들이 복수 레벨 구조들을 통해 조합되거나 엔터티의 속성들이 변경되거나 엔터티 그자체가 변경되는 더 복잡한 구조 형태를 포함할 수 있다. 상기 규칙들은 <Constit> 태그들의 "숫자" 속성을 통해 할당된 값들을 사용해서 구성요소 엔터티들로부터 형성되는 최종 구조를 표시하는 <Rule> 태그를 포함한다. 예를 들어,
<Constit Number="0" Entity="도시"
Restriction="출발지" />
<Constit Number="1" Entity="도시"
Restriction="목적지" />
<Constit Number="2" Entity="도시"
Restriction="목적지" />
<Rule>{Flight[(Source,City,0)(Via,City,1)
(Goal,City,2)]}</Rule>
는 부모 "항공편" 엔터티, 엔터티 "0"로서 표시된 도시 엔터티로 채워지는 자식 출발 도시 (source city) 엔터티, 엔터티 "1"로서 표시되는 도시 엔터티로 채워지는 자식 경유 도시 (via city) 엔터티, 및 엔터티 "2"로서 표시되는 도시 엔터티로 채워지는 자식 도착 도시 (goal city) 엔터티를 갖는 "항공편" 구조를 생성한다. 상기 규칙에서, 엔터티 "1"로서 표시되는 도시 엔터티는 "목적지 (goal)" 엔터티에서 "경유지 (via)" 엔터티로 변경된다.
위의 예에서, "제한 (Restriction)" 속성은 특수 타입의 엔터티이다. 기타 엔터티들 처럼, 제한 엔터티는 어느 워드들이 상기 엔터티를 생성하는지를 표시하는 그자신의 정의에서 <Denoted> 태그들을 포함한다. 예를 들어, "목적지" 제한 엔터티는 워드 "~ 에 (to)" 또는 프레이즈 "~ 에 도착함(arriving at)"에 의해 기술된다. 제한 엔터티들은 구조에서 동일 레벨의 다른 엔터티를 수정한다는 점에서 다른 엔터티들과 상이하다. 그러므로, 목적지 (Goal), 출발지 (Source), 및 경유 (Via)는 도시 (City) 엔터티를 수정한다. 제한 엔터티 및 수정되는 엔터티는 함께 제한을 갖는 한 개 엔터티를 형성한다. 아래 기재에서, 제한 엔터티는 단지 제한으로서 종종 언급된다.
스키마에서, 엔터티가 제한을 갖는 다른 엔터티를 수용하면, 상기 제한은 <With> 태그의 "타입" 속성을 사용해서 식별된다. 예를 들어, <With> 태그(416)는 "항공편" 엔터티는 "경유지" 제한을 갖는 "도시" 엔터티를 수용함을 표시한다.
도 6은 도 5의 엔터티 래티스에 도 4에서 발견된 그래머 규칙들을 수행한 결과들을 도시한다. 구체적으로, <GrammarRule> 태그들(424, 426) 내에서 발견된 그래머 규칙은 "도시 이름 (CityName)" 엔터티들 (500, 502)에 적용된다. 이는 부모 "도시" 엔터티들(604, 606) 및 자식 "도시 이름" 엔터티들(500, 502)을 갖는 "도시" 세만틱 구조들(600, 602)을 생성한다. <GrammarRule> 태그들(420, 422) 내의 그래머 규칙은 "요일" 엔터티(504)에 적용되어서 "시간 엔터티" 부모 노드(610) 및 "요일" 자식 엔터티(504)를 갖는 "시간 엔터티" 구조(608)를 생성한다.
세만틱 규칙들이 실행된 후에, 처음 2 개의 세만틱 노드들은 스텝(310)에서 선택된다. 대부분의 실시예들에서, 이것은 2 개의 좌측끝 세만틱 노드들을 선택하는 것과 관련있다.
스텝(312)에서, 구조 생성기(216)는 세만틱 구조 테이블(210)을 사용해서 2 개의 선택된 세만틱 노드들을 위해 리스트된 엔터티들을 사용해서 형성될 수 있는 모든 가능한 구조들을 식별한다. 예를 들어, 제1 노드가 엔터티들 A 및 B를 포함하고 제2 노드가 엔터티들 C 및 D를 포함하면, 엔터티 쌍들 AC, AD, BC, 및 BD 엔터티 쌍들에 대해 분리된 구조들이 식별된다. 복수 구조들은 각 엔터티 쌍에 대해 식별될 수 있음을 주목한다. 각 엔터티 쌍에 대해 가능한 구조들은 이전에 식별되고 구조 테이블(210)에 저장되므로, 상기 프로세스는 실행시에 신속하게 수행될 수 있다.
도 6의 수정된 엔터티 래티스의 처음 2 개의 엔터티들로부터 생성되는 구조들의 예들은 도 7에 도시된다. 도 6의 처음 2 개의 세만틱 노드들의 각각에 대해 단지 한 개의 엔터티가 있으므로, 고려할 단지 한 개 엔터티 쌍이 있다. 그러나, 구조 생성기는 상기 한 개의 엔터티 쌍으로 형성될 수 있는 6 개의 분리된 구조들을 식별했다. 구체적으로, 6 개의 "항공편" 세만틱 구조들 (700, 702, 704, 706, 708, 및 710)이 식별된다.
식별된 세만틱 구조들 전체는 "항공편" 구조들이지만, 그들 각각은 "도시" 세만틱 구조(600) ("도시" 엔터티(604) 및 "도시 이름=보스톤" 엔터티(500)로 구성됨) 및 "도시" 세민틱 구조(602) ("도시" 엔터티(606) 및 "도시 이름=디트로이트" 엔터티(502)로 구성됨)를 사용해서 "항공편" 구조의 상이한 슬롯들을 채운다. 구체적으로, 각 "도시" 세만틱 구조는 "항공편" 엔터티에서 발견된 제한된 엔터티들 "출발 도시", "경유 도시", 및 "목적 도시"에 대한 3 개의 슬롯들 중의 한 개를 채우기 위해 사용될 수 있다. 그러므로, 6개의 "항공편" 구조들은 2 개의 "도시" 세만틱 구조들에 대한 6 개의 상이한 가능 할당 조합들 (assignment combinations)을 나타낸다.
예를 들어, "항공편" 구조(700)에서, "도시" 엔터티(604)는 "출발지" 도시 슬롯(720)을 채우고, "도시" 엔터티(606)는 "목적지" 도시 슬롯(722)를 채운다. 그러나, "항공편" 구조(702)에서, "도시" 엔터티(604)는 "목적지" 도시 슬롯(724)을 채우고, "도시" 엔터티(606)는 "출발지" 도시 슬롯(726)을 채운다.
"항공편" 구조(704)에서, "도시" 엔터티(604)는 "출발지" 도시 슬롯(728)을 채우고, "도시" 엔터티(606)는 "경유지" 도시 슬롯(730)을 채우고, "항공편" 구조(706)에서, "도시" 엔터티(604)는 "경유지" 도시 슬롯(732)을 채우고, "도시" 엔터티(606)는 "출발지" 도시 슬롯(734)을 채운다.
마지막으로, "항공편" 구조(708)에서, "도시" 엔터티(604)는 "목적지" 도시 슬롯(736)을 채우고, "도시" 엔터티(606)는 "경유지" 도시 슬롯(738)을 채우고, "항공편" 구조(710)에서, "도시" 엔터티(604)는 "경유지" 도시 슬롯(740)을 채우고, "도시" 엔터티(606)는 "목적지" 도시 슬롯(742)을 채운다.
도 7의 세만틱 구조들에서, "항공편" 엔터티는, 각 도시 엔터티가 "항공편" 엔터티의 정의 내에 <With> 태그에 리스트된 도시 엔터티들 각각에의 부모 엔터티이다. 그러므로, 각 도시 엔터티는 세만틱 구조에서 "항공편" 엔터티 아래 있는 것으로 고려되는 자식 엔터티이다.
상기 2 개의 노드들에 대한 모든 가능한 구조들이 생성된 후에, 구조들은 스텝(314)에서 각 구조를 스코어링 (scoring)하는 구조 스코어링 모듈(218)에 제공된다. 본 발명 하에서, 각 구조에 대한 스코어는 3 개의 세미-오쏘고널 (semi-orthogonal) 스코어들의 결과이다. 이런 스코어들 중의 한 개는 세만틱 구조의 확률에 기반하고, 상기 스코어들 중의 다른 한 개는 세만틱 엔터티들이 입력 텍스트에 표현된 순서에 기반하고, 마지막 스코어는 세만틱 구조의 신텍틱 구조의 신텍틱 정확성에 기반한다.
제 1 스코어는 세만틱 스코어라고 일컬어지고, 다음과 같이 계산된다.
여기서, Ej는 엔터티 구조 S에서 분리된 엔터티들이고, CE는 엔터티 Ej의 전체 자식 엔터티들이고, p(Ej)는 엔터티 Ej의 확률이고, p(ci|Ej)는 주어진 엔터티 Ej에서 자식 엔터티 ci의 확률이다.
세만틱 확률의 확률들은 <Entity> 태그들 및 <With> 태그들의 "횟수" 속성들을 사용해서 스키마로부터 결정된다. 구체적으로, 엔터티의 확률은 상기 엔터티에 대한 <Entity> 태그의 "횟수" 속성의 값을 상기 스키마의 전체 엔터티들의 <Entity> 태그들의 "횟수" 속성들의 값들의 합계로 나누어서 결정된다. 주어진 부모 엔터티에서 자식 엔터티의 확률은 자식 엔터티의 <With> 태그의 "횟수" 속성의 값을 부모 엔터티의 <Entity> 태그의 "횟수" 속성의 값으로 나누어서 결정된다.
본 발명의 일부 실시예들에서, 수식 1의 세만틱 스코어는, 엔터티가 텍스트로부터 직접 유도되지 않고 그대신 그 텍스트로부터 유도된 2 개의 엔터티들을 연결하기 위해 생성되면, 엔터티의 확률을 감소시키기 위해 적용되는 패널티 인자 (penality factor)가 추가된다. 예를 들어, 도 7에서, "항공편" 엔터티(750)의 확률은, "항공편" 엔터티가 2 개의 "도시" 엔터티들을 연결하기 위해 세만틱 구조에 위치되지만, 텍스트로부터 생성된 엔터티 래티스로부터 직접 얻어지지 않았으므로, 패널티 인자에 의해 감소될 것이다. 일부 실시예들에서, 패널티 인자는 .90이다.
세만틱 엔터티들이 입력 텍스트에 표현되는 그 순서에 기반한, 제2 스코어는 마르코브 (Markov) 스코어 또는 전이 (transition) 스코어라고 언급된다. 한 실시예에서, 마르코브 스코어는 세만틱 구조의 상등 레벨에 있는 각 엔터티들의 쌍에 대한 전이 확률들의 곱셈으로 계산된다. 예를 들어, 도 7의 세만틱 구조(700)에 대한 마르코브 확률은 출발 도시 다음에 목적 도시를 갖는 단지 전이 확률로서 계산될 수 있다. 목적 도시 다음에 상등 레벨에 또 다른 자식 노드가 있다면, 추가 전이 확률이 목적 도시 다음에 추가 엔터티를 갖기 위해 결정될 수 있다.
상등 레벨 엔터티들의 쌍에 대한 전이 확률은 스키마(200) 내에 <TransitionProb> 태그들 (도 2에서 마르코브 확률들(204)로서 도시됨)로부터 결정된다. 상기 <TransitionProb> 태그들의 예들은 도 4에서 <TransitionProb> 태그들 (430, 432)로서 발견된다.
<TransitionProb> 태그들 내에, 엔터티들의 순서는 "R1", "E1", "R2", 및"E2" 속성들을 사용해서 기재된다. "R1" 및 "E1" 속성들은 2 개의 엔터티들 중의 좌측끝 엔터티에 대해 제한 및 엔터티를 각각 식별하고, "R2" 및 "E2" 속성들은 2 개 엔터티들의 우측끝 엔터티에 대해 제한 및 엔터티를 식별한다. 그러므로, <Transitionprob> 태그(430)의 전이 확률은 목적 도시 다음에 출발 도시가 오는 것에 대한 것이고, <Transitionprob> 태그(432)의 전이 확률은 출발 도시 다음에 목적 도시가 오는 것에 대한 것이다. 각 <Transitionprob> 태그는 또한 상기 2 개의 엔터티들이 태그의 순서 리스트에 함께 발견되는 횟수를 표시하는 "횟수" 속성을 또한 포함한다.
2 개의 엔터티들의 특정 순서에 대한 확률을 결정하기 위해, 상기 2 개의 엔터티들을 포함하는 전체 <Transitionprob> 태그들의 위치가 파악된다. (1 개 또는 2 개의 상기 태그들이 있음) 상기 2 개의 엔터티들의 특정 순서의 확률은 상기 순서에 대한 "횟수" 값을 상기 2 개의 엔터티들을 포함한 전체 <Transitionprob> 태그들에 대한 "횟수" 값들의 합계로 나누어서 결정된다. 예를 들어, 도 4의 목적 도시 다음에 출발 도시가 오는 확률은 2/71로 계산되고, 출발 도시 다음에 목적 도시가 오는 확률은 69/71로 계산된다.
그 다음, 각 상등 레벨 엔터티들의 쌍에 대한 개별 전이 확률들의 곱셈은 상기 구조를 위한 마르코브 확률을 형성하기 위해 결정된다. 단지 2 개의 엔터티 전이 확률들이 위에서 사용되지만, 임의의 수의 엔터티들이 전이 확률들을 결정하기 위해 사용될 수 있음을 주목한다.
세만틱 구조의 신텍틱 정확성을 표시하는 마지막 확률은 신텍틱 스코어로서 언급된다. 상기 스코어는 다수의 상이한 방식들로 생성될 수 있다. 한 실시예에서, 신텍틱 파스 구조는 세만틱 구조를 기반으로 형성된다. 구체적으로, 세만틱 구조의 엔터티들에 의해 스팬되는 워드들은 세만틱 구조의 상기 엔터티들과 동일한 상대 위치에 신텍틱 구조에서 위치된다. 그 다음, 결과적 신텍틱 파스 트리의 스코어는 결정되고, 상기 세만틱 구조에 대한 신텍틱 스코어로서 사용된다.
본 발명의 또 다른 실시예에서, 신텍틱 스코어는 세만틱 구조에서 각 부모-자식 관계에 대한 분리된 스코어를 결정해서 계산된다. 각 부모-자식 관계에서, 부모 엔터티에 의해 스팬되는 워드 또는 프레이즈의 토큰 위치 (token position) 및 자식 엔터티에 의해 스팬되는 워드 또는 프레이즈의 토큰 위치는 식별되고, 토큰 위치는 문장의 시작에서 상기 워드 또는 프레이즈까지 토큰들의 수이다. 토큰은 1 개 엔터티로서 동작하는 개별 워드 또는 프레이즈를 포함한다.
그 다음, 토큰 위치들은 자식 엔터티가 토큰 위치 Y에 있을 때 토큰 위치 X에 있는 부모 엔터티의 확률을 표현하는 확률을 식별하기 위해 사용된다. 그러므로, 신텍틱 스코어는 다음과 같이 계산된다:
여기서, Px는 전체 부모 엔터티들의 세트이고, CY는 각 부모 엔터티에 대한 자식 엔터티들의 세트이고, X는 부모 엔터티의 토큰 위치이고, Y는 자식 엔터티의 토큰 위치이다.
세만틱 스코어, 마르코브 스코어, 및 신텍틱 스코어의 곱셈은 각 세만틱 구조에 대한 전체 스코어이다. 서툴게 형성된 문장들로부터 생성된 후보 구조들은 낮은 신텍틱 스코어들을 가질 수 있지만, 그래도 그들은 세만틱으로 스코어링이 되고 상기 세만틱 스코어는 상기 구조들 중 적어도 1 개가 실용가능의 세만틱 구조가 되게 충분히 높을 수 있기 때문에, 상기 3 개의 세미-오써고널 (semi-orthogonal) 스코어들을 병합해서, 서툴게 형성된 텍스트로부터도 세만틱 구조들을 식별하는 것은 가능하다. 추가로, 세만틱 구조의 점진적 구성 동안 상기 스코어의 신텍틱 구성요소 및 세만틱 구성요소를 병합해서, 본 발명은 텍스트로부터 세만틱 구조를 식 별하기 위해 필요한 시간을 매우 감소시킨다.
세만틱 구조들이 스텝(314)에서 스코어링이 된 후, 1 개 이상의 구조들은 스텝(316)에서 프루닝 시스템 (pruning system)(220)에 의해 고려 대상에서 프루닝(pruning) 된다. 상기 프루닝은 상위 N 세만틱 구조들을 택하거나 상위 스코어링 세만틱 구조의 임계치 이내의 상기 세만틱 구조들을 택해서 수행될 수 있다. 도 7의 예에서, 상위 4 개의 세만틱 구조들이 보유된다. 구체적으로, 구조들 (700, 704, 708, 및 710)이 보유된다.
프루닝 후에, 래티스는 스텝(318)에서 검사되어서 프로세스할 임의의 기타 세만틱 노드들이 있는지가 결정된다. 프로세스할 추가 세만틱 노드들이 있으면, 다음 노드의 엔터티들은 구조 생성기(216)에 의해 보유된 세만틱 구조들과 조합되어서 스텝(320)에서 엔터티들과 보유된 구조들의 모든 가능한 조합들을 형성한다.
한 실시예에서, 순서화된 검색은 어떻게 엔터티가 세만틱 구조에 부착될 수 있는지를 판정하기 위해 수행된다. 첫 번째, 새 엔터티가 세만틱 구조의 엔터티들 중의 임의의 것 아래에 적합한 구조들을 발견하기 위해 검색이 수행된다. 두 번째, 세만틱 구조의 헤드 (head)가 상기 새 엔터티 아래 적합한 구조들을 발견하기 위해 검색이 수행된다. 마지막으로, 세만틱 구조의 헤드와 새 엔터티 간에 공통 조상 (ancestor)이 있는지를 찾기 위해 검색이 수행된다. 상기 검색들의 각각은 세만틱 구조 테이블(210)을 사용해서 수행된다.
도 7의 구조들 및 "시간 엔터티" 엔터티로부터 형성된 새 구조들의 예들은 도 8에 도시된다. 구체적으로, 구조들 (800, 802, 804, 및 806)은 구조들 (700, 704, 708, 및 710) 각각으로부터 형성된다. 상기 전체 구조들에서, "시간 엔터티" 엔터티는 "항공편" 엔터티에 자식 노드로서 추가된다.
스텝들(314, 316)은 세만틱 구조들의 각각을 스코어링하고 구조들의 세트를 프루닝하기 위해 반복된다. 도 8의 예에서 단지 4 구조들만이 있으므로, 상기 구조들은 프루닝 되지 않는다.
그 다음, 스텝들(318, 320)은 도 8의 구조들과 다음 세만틱 노드의 "운행 항공사 안내 (ShowAirlineServed)" 엔터티(506), "항공편 안내 (ShowFlight)" 엔터티(508), "교통 수단 리스트 (ListTransport)" 엔터티(510), 및 "정원 안내 (ShowCapacity)" 엔터티(512)를 조합하기 위해 수행된다.
다음 세만틱 노드의 4 개의 엔터티들 중에, 단지 "항공편 안내" 엔터티만이 도 8의 구조들과 조합될 수 있다. 추가로, "항공편 안내" 엔터티는, "항공편 안내" 엔터티가 "항공편" 엔터티를 그자신의 직계 자식으로 갖고 상기 구조의 헤드가 되도록, 상기 구조들의 각각에 단지 조합될 수 있다. 이것은 도 8의 구조들 (800, 802, 804, 및 806)에 대응하는 도 9의 세만틱 구조들 (900, 902, 904, 및 906)로 귀결한다.
스코어링 및 프루닝 스텝들(314, 316)은 스텝(318)에서 프로세스할 추가 세만틱 노드들이 있는지를 판정하기 전에 새로운 세만틱 구조들(900, 902, 904, 및 906)에 대해 반복된다. 그 다음, "항공사" 엔터티는 스텝(320)에서 세만틱 구조들(900, 902, 904, 및 906)에 추가된다. 상기 구조들의 각각에 대해, 이것은 "항공사" 엔터티를 "항공편" 엔터티의 자식 노드로서 추가하는 것과 관련 있다. 결과 구조들은 도 10에서 세만틱 구조들(1000, 1002, 1004, 및 1006)으로서 도시된다.
그 다음, 스텝들(314, 316, 및 318)은 도 10의 구조들에 "항공편" 엔터티를 추가하기 전에 상기 새 구조들에 대해 반복된다. "항공편" 엔터티는 2 개의 도시 엔터티들을 연결하기 위해 생성되므로, "항공편" 엔터티는 상기 구조들에 추가될 필요가 없다. 그러나, "항공편" 엔터티가 래티스에서 발견되는 사실은 상기 세만틱 구조들에 대한 스코어들은 "항공편" 엔터티의 생성을 위한 패널티 인자를 더 이상 포함하지 않음을 의미한다.
상기 새로운 구조들을 스코어링하고 프루닝한 후에, 스텝(318)에서 프로세스할 더 이상의 세만틱 노드들이 없고, 도 3의 프로세스는 최고 스코어링 (highest-scoring) 구조가 커맨드 식별기(222)에 의해 검사되고 그것이 커맨드 구조인지를 판정하는 스텝(322)에 계속된다. 커맨드 구조는 스키마(200)에 "참 (True)"으로 세트된 "커맨드" 속성을 갖는 엔터티에 의해 시작된다. 최고 스코어링 세만틱 구조가 커맨드 구조이면, 상기 구조는 커맨드로서 텍스트에 의해 표현되는 스텝(324)에서 리턴된다.
스텝(322)에서 최고 스코어링 세만틱 구조가 커맨드 엔터티가 아니면, 커맨드 식별기(222)는 스텝(236)에서 상기 최고 스코어링 구조를 수용할 수 있는 커맨드들을 식별하기 위해 시도한다. 그 다음, 최고 스코어링 구조는 상기 커맨드 구조들 각각에 병합되고, 상기 커맨드 구조들은 스텝(328)에서 스코어링 된다. 그 다음, 최고 스코어링 커맨드 구조는 텍스트로 표현되는 커맨드로서 리턴된다.
본 발명이 특정 실시예들에의 참조로 기재되었지만, 그 기술에 숙련자들이라 면, 본 발명의 취지 및 범위에서 벗어나지 않고 형태 및 상세성에서 변경될 수 있음을 인식할 것이다. 특히, 스코어링 함수들은 본 발명의 범위 내에 수정되거나 조합될 수 있다.