KR101676219B1 - 상호작용식 검색 폼을 위한 추천 엔진 - Google Patents

상호작용식 검색 폼을 위한 추천 엔진 Download PDF

Info

Publication number
KR101676219B1
KR101676219B1 KR1020157019482A KR20157019482A KR101676219B1 KR 101676219 B1 KR101676219 B1 KR 101676219B1 KR 1020157019482 A KR1020157019482 A KR 1020157019482A KR 20157019482 A KR20157019482 A KR 20157019482A KR 101676219 B1 KR101676219 B1 KR 101676219B1
Authority
KR
South Korea
Prior art keywords
recommendation
controls
server
values
client device
Prior art date
Application number
KR1020157019482A
Other languages
English (en)
Other versions
KR20150097744A (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
Priority claimed from US13/716,864 external-priority patent/US9268759B2/en
Priority claimed from EP12290442.8A external-priority patent/EP2743875A1/en
Priority claimed from US13/716,882 external-priority patent/US9201856B2/en
Application filed by 아마데우스 에스.에이.에스. filed Critical 아마데우스 에스.에이.에스.
Publication of KR20150097744A publication Critical patent/KR20150097744A/ko
Application granted granted Critical
Publication of KR101676219B1 publication Critical patent/KR101676219B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements
    • G06Q30/0255Targeted advertisements based on user history
    • G06Q30/0256User search
    • G06F17/30654
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0631Item recommendations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/14Travel agencies

Landscapes

  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Economics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Tourism & Hospitality (AREA)
  • Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • Human Resources & Organizations (AREA)
  • General Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

상호작용식 폼과 상호작용하기 위한 시스템들, 방법들 및 컴퓨터 프로그램 물건들이 제공된다. 상호작용식 폼의 제1 제어 중 하나 이상의 값들이 서버에서 수신된다. 각각의 값은 클라이언트 디바이스에서 입력된 여행-관련 검색 질의의 부분을 표현할 수 있다. 상호작용식 폼의 제1 제어와 상이한 상호작용식 폼의 제2 제어에 대한 적어도 하나의 추천 값이 결정되고 서버로부터 클라이언트 디바이스로 전달된다.

Description

상호작용식 검색 폼을 위한 추천 엔진{RECOMMENDATION ENGINE FOR INTERACTIVE SEARCH FORMS}
본 발명은 컴퓨터들 및 컴퓨터 소프트웨어에 관한 것이며, 보다 구체적으로는, 상호작용식 여행-관련 검색 폼으로 추천들을 제공하기 위한 시스템들, 방법들 및 컴퓨터 프로그램 물건들에 관한 것이다.
컴퓨터 예약 시스템들은 정보를 저장 및 리트리브(retrieve)하고 비행기 여행(air travel)에 관련된 트랜잭션들을 수행하는데 이용된다. 컴퓨터 예약 시스템은 특정한 항공사의 예약들을 하기 위해 이용될 수 있다. 대안적으로, 컴퓨터 예약 시스템은 단일화된 시스템에서 다수의 항공사들에 대한 예약들을 하는데 있어 여행 에이전시들 및 다른 분배 채널들을 지원하는 글로벌 분배 시스템을 포함할 수 있다. 승객 여행은 컴퓨터 예약 시스템을 이용하여 부킹(book)될 수 있다.
예약을 하기 위한 전제조건으로서, 장래의 여행자 또는 여행 에이전트는 클라이언트 디바이스 상의 온라인 애플리케이션을 이용하여 컴퓨터 예약 시스템의 서버에 여행 검색 질의를 제출할 수 있다. 여행 검색 질의를 제출하기 위한 가장 흔한 매커니즘은 클라이언트 디바이스 상에 상주하는 폼의 제어들(controls)에 값들을 입력하도록 사용자에게 요구한다. 데이터는, 출발지(origin) 및 트립(trip)에 대한 목적지들, 트립에 대한 출국 및 귀국 날자 등과 같은 검색 항목들(search terms)을 포함할 수 있다. 여행 검색 질의를 제출하기 위한 종래의 접근법은 폼의 제어들에, 값들과 같은 검색 항목들을 입력하는 것이다. 입력된 데이터는, 입력된 데이터에 기초하여 검색을 수행하고, 사용자에게 제시하도록 매칭하는 여정(matching itineraries)을 클라이언트 디바이스에 리턴하는 컴퓨터 예약 시스템의 서버에 전송된다.
WO 2001/80177 A2는 사용자가 찾는 것을 이해하고 데이터베이스 내의 데이터를 이해하고, 정당한 정보를 찾도록 바로 유용한 제안들을 제시할 수 있는 검색 엔진 및 데이터 관리 기술을 개시한다. 사용자가 지능적으로 그리고 적응적으로, 검색을 실시간으로 더 좁거나 더 넓게 하는 것을 가능하게 하는, "스마트 팁들(Smart Tips)"로서 또한 지칭되는 실행 가능한 제안들이 개시된다. 스마트 팁들은 검색 및 대응하는 검색 기준들을 설명하고 이들 검색 기준들에 따라 사용자가 획득하는 실제 검색 결과들에 관한 정보를 제공한다. 시스템은 제안 엔진 및 하나 이상의 제안 공간들을 갖는다. 스마트 팁들의 다양한 폼들이 있는데; 정적인 스마트 팁들은 단순히 사이트 내의 특정한 페이지들에서 항상 나타나는 정적인 텍스트 메시지들이다. 동적인 스마트 팁들은 사용자가 사이트 상에서 취한 몇몇 동작에 기초하여 그리고 사용자가 사이트 상의 어디에 있는지 또는 사용자가 무엇을 달성하고자 하는지에 관련하여 나타나게 되는 팁들이다. 이것은 동적인 동적 스마트 팁의 실제 텍스트가 아니라, 이들 팁들이 나타나는 시간 및 위치이다. 정적 또는 동적 스마트 팁들은 예를 들어, 사용자가 전문가 프로필(professional profile), 일자리 공시 등과 같은 폼을 채우는 동안 이용된다. WO 2001/80177 A2의 시스템은 이어서 폼들이 올바르게 완성되었음을 보장하는 것을 돕기 위해, 또는 사용자가 특정한 필드를 완전히 또는 제안된 콘텐츠로 채우는 것을 조장하게 하도록 정적 또는 동적 스마트 팁들을 제시한다.
개선된 시스템들, 방법들 및 컴퓨터 프로그램 물건들은 여행-관련 검색 질의를 입력할 때 상호작용식 여행 검색 폼의 사용자를 보조할 필요가 있다.
본 발명의 실시예에 따라, 상호작용식 폼(interactive form)과 상호작용하는 방법이 제공된다. 이 방법은 서버에서 상호작용식 폼의 제1 제어의 값을 수신하는 단계, 및 서버에서 상호작용식 폼의 제1 제어 및 제2 제어를 상호관련시키는 추천 규칙을 적용하여 제2 제어에 대한 적어도 하나의 추천 값을 결정하는 단계를 포함할 수 있으며, 제2 제어는 제1 제어의 값이 서버에서 수신될 때 채워지지 않고, 적어도 하나의 추천 값은 여행-관련 검색 질의의 다른 부분을 표현한다. 이 방법은 서버로부터 클라이언트 디바이스로 상호작용식 폼의 제2 제어에 대한 적어도 하나의 추천 값을 전달하는 단계를 더 포함할 수 있고, 클라이언트 디바이스는 여행-관련 검색 질의를 전송한다. 제1 제어 및 제2 제어는 각각 버튼, 슬라이더(slider), 스피너(spinner), 리스트 박스, 드롭-다운 리스트(drop-down list) 및 콤보 박스(combo box) 중 하나이다. 이 방법은 컴퓨터 프로그램 물건에서 실현될 수 있다.
본 발명의 다른 실시예에 따라, 상호작용식 폼으로 클라이언트 디바이스와 상호작용하는 방법이 제공된다. 이 방법은 클라이언트 디바이스에서, 상호작용식 폼의 제1 제어 내에 입력된 값을 수신하는 단계, 및 제1 제어의 값의 수신에 응답하여, 클라이언트 디바이스의 로컬 캐시(local cache)로부터 제2 제어에 대한 적어도 하나의 추천 값을 리트리브(retrieve)하기 위해 상호작용식 폼의 제1 제어 및 제2 제어를 상호 관련시키는 추천 규칙을 적용하는 단계를 포함하고 제2 제어는 제1 제어의 값이 클라이언트 디바이스에 수신될 때 채워지지 않고, 적어도 하나의 추천 값은 여행-관련 검색 질의의 다른 부분을 표현한다. 이 방법은 또한 클라이언트 디바이스에서 상호작용식 폼의 제2 제어에 대한 적어도 하나의 추천 값을 디스플레이하는 단계를 더 포함하고, 클라이언트 디바이스는 여행-관련 검색 질의를 전송한다. 제1 제어 및 제2 제어는 각각 버튼, 슬라이더, 스피너, 리스트 박스, 드롭-다운 리스트 및 콤보 박스 중 하나이다. 이 방법은 컴퓨터 프로그램 물건에서 실현될 수 있다.
본 발명의 다른 실시예에 따라, 서버에서 상호작용식 폼의 복수의 제어들에 대한 복수의 값들을 수신하고 서버에서 상호관련된 제어들에 대한 값들에 기초하여 복수의 추천 규칙들을 결정하는 방법이 제공된다. 각각의 값은 복수의 사용자들 각각에 의해 상호작용식 폼의 제어들 중 하나 내로 입력되는 여행-관련 검색 질의의 부분을 포함한다. 각각의 추천 규칙은 상호관련된 제어들 중 2개 이상을 논리적으로 상호연결한다. 제어들 각각은 버튼, 슬라이더, 스피너, 리스트 박스, 드롭-다운 리스트 및 콤보 박스 중 하나이다. 이 방법은 컴퓨터 프로그램 물건에서 실현될 수 있다.
본 발명의 다른 실시예에 따라, 클라이언트 디바이스에서 이용하기 위한 장치가 제공된다. 이 장치는 프로세서를 포함하는 서버, 및 상호작용식 폼과 상호작용하기 위해 프로세서에 의해 실행되도록 구성되는 프로그램 코드를 포함한다. 프로그램 코드는 프로세서로 하여금, 상호작용식 폼의 제1 제어에 대한 값을 수신하게 하고, 상호작용식 폼의 제1 제어 및 제2 제어를 상호관련시키는 추천 규칙을 적용하여 제2 제어에 대한 적어도 하나의 추천 값을 결정하게 하고, 서버로부터 클라이언트 디바이스로 제2 제어 대한 적어도 하나의 추천 값을 전달하게 하도록 구성된다. 제2 제어는, 제1 제어에 대한 값이 서버에서 수신될 때 채워지지 않고, 제1 제어에 대한 값 및 제2 제어에 대한 적어도 하나의 추천 값은 여행-관련 검색 질의의 상이한 부분들을 표현한다. 제1 제어 및 제2 제어는 각각 버튼, 슬라이더, 스피너, 리스트 박스, 드롭-다운 리스트 및 콤보 박스 중 하나이다.
본 발명의 다른 실시예에 따라, 장치는 적어도 하나의 프로세서 및 로컬 캐시를 포함하는 클라이언트 디바이스를 포함한다. 이 장치는 상호작용식 폼과 상호작용하기 위해 프로세서에 의해 실행되도록 구성되는 프로그램 코드를 더 포함한다. 프로그램 코드는, 프로세서로 하여금, 상호작용식 폼의 제1 제어에 대한 값을 수신하게 하고, 상호작용식 폼의 제1 및 제2 제어를 상호관련시키는 추천 규칙을 적용하여 상호작용식 폼 내에 입력된 제1 제어의 값의 수신에 응답하여 제2 제어에 대한 적어도 하나의 추천 값을 클라이언트 디바이스의 로컬 캐시로부터 리트리브하게 하고, 클라이언트 디바이스에서 상호작용식 폼의 제2 제어에 대한 적어도 하나의 추천 값을 디스플레이하게 하고, 그리고 제1 제어의 값 및 제2 제어에 대한 적어도 하나의 추천 값을 포함하는 여행-관련 검색 질의를 전송하게 하도록 구성된다. 제2 제어는 제1 제어의 값이 클라이언트 디바이스에서 수신될 때 채워지지 않고, 제1 제어의 값 및 제2 제어에 대한 적어도 하나의 추천 값은 여행-관련 검색 질의의 상이한 부분들을 표현한다. 제1 제어 및 제2 제어는 각각 버튼, 슬라이더, 스피너, 리스트 박스, 드롭-다운 리스트 및 콤보 박스 중 하나이다.
본 발명의 다른 실시예에 따라, 장치는 프로세서를 포함하는 서버, 및 상호작용식 폼과 상호작용하기 위해 프로세서에 의해 실행되도록 구성되는 프로그램 코드를 포함한다. 프로그램 코드는 프로세서로 하여금, 상호작용식 폼의 복수의 제어들에 대한 복수의 값들을 수신하게 하고 상호관련된 제어들에 대한 값들에 기초하여 복수의 추천 규칙들을 결정하게 하도록 구성된다. 각각의 값은 복수의 사용자들에 의해 상호작용식 폼의 제어들 중 하나 내로 입력되는 여행-관련 검색 질의의 부분을 표현하고, 각각의 추천 규칙은 상호관련된 제어들 중 2개 이상을 논리적으로 연결한다. 제1 제어 및 제2 제어는 각각 버튼, 슬라이더, 스피너, 리스트 박스, 드롭-다운 리스트 및 콤보 박스 중 하나이다.
본 명세서에 포함되고 본 명세서의 부분을 구성하는 첨부 도면들은 본 발명의 다양한 실시예들을 예시하며, 위에서 주어진 본 발명의 일반적인 설명과 아래에서 주어지는 실시예들의 상세한 설명과 함께, 본 발명의 실시예들을 설명하도록 역할한다.
도 1은 본 발명의 실시예들에 따라, 서버 및 서버와 통신하는 클라이언트 디바이스를 포함하는 컴퓨터 예약 시스템의 블록도이다.
도 2는 도 1의 클라이언트 디바이스의 블록도이다.
도 3은 클라이언트 디바이스 상에 상주하는 상호작용식 폼의 개략도이다.
도 4는 도 1의 서버의 블록도이다.
도 5는 추천 프로세스를 예시하는 흐름도이다.
도 6은 추천 프로세스에서 이용하기 위한 추천 규칙들을 준비하는 서버의 러닝 프로세스를 예시하는 흐름도이다.
도 1을 참조하면, 컴퓨터화된 예약 시스템(computerized reservation system; CRS)(10)은 서버(12), 및 통신 네트워크(14)를 통해 서버(12)와 통신하게 커플링되는 클라이언트 디바이스(16)를 포함한다. CRS(10)는 정보를 저장 및 리트리브(retrieve)하고 비행기 여행을 위한 티켓들의 온라인 검색, 부킹(booking) 및 구매와 같은 서비스들 및 상품들과 관련되는 온-라인 트랜잭션(on-line transaction)들을 수행하는데 이용된다. 비행기 여행의 맥락에서, CRS(10)는 주어진 여정을 만족시키는 특정한 항공편들을 식별함으로써 여행 검색 질의들에 응답하고 이들 항공편들을 예약하거나 예약을 부킹하도록 구성된다. CRS는 항공사 운임들, 스케줄들, 및 좌석 가용성(seating availability) 및 다른 데이터에 대한 실시간 액세스를 허용하는 사유 컴퓨터일 수 있고, 여행 에이전시들, 온라인 여행 벤더들, 및 여행사들과 같은 여행 벤더들에 의해 부킹을 하도록 액세스될 수 있다. CRS(10)는 다수의 항공사들에 대한 비행기 여행 티겟들은 물론 호텔들, 렌터카들 등과 같은 다른 관련된 여행 아이템들을 부킹 및 판매하는 CRS의 타입인 글로벌 분배 시스템(global distribution system; GDS)에서 실현될 수 있다.
클라이언트 디바이스(16)로부터 원격인 서버(12)는 일반적으로, 서버(12)와 연관된 하나 이상의 동작들을 수행하도록 구성되고 국부적으로 및/또는 원격으로 로케이팅되는 하나 이상의 상호연결된 컴퓨팅 디바이스들/시스템들을 포함할 수 있다. 통신 네트워크(14)는 일반적으로, 예를 들어, 로컬 영역 네트워크(local area network; LAN), 광역 네트워크(wide area network; WAN), 공개 네트워크(예를 들어, 인터넷 서비스 제공자를 이용한 인터넷), 기업 사설 네트워크, 셀룰러 네트워크 및/또는 이들의 결합을 포함하는 하나 이상의 상호연결된 통신 네트워크들을 포함한다. 서버(12) 및 클라이언트 디바이스(16)를 연결하는 인터페이스는 사용자 데이터그램 프로토콜/인터넷 프로토콜(User Datagram Protocol/Internet Protocol; UDP/IP) 및/또는 전송 제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protocol; TCP/IP)과 같이, 네트워크(14) 상에서 통신하고 정보를 교환하기 위한 규칙들 및 데이터 포맷들을 정의하는 하나 이상의 적합한 통신 프로토콜들을 이용할 수 있다.
주어진 세션 동안, 클라이언트 디바이스(16)의 사용자는, 트립(trip)에 대한 여정을 계획하는 대표적 목적을 위해 통신 네트워크(14) 상에서 서버(12)와 통신할 수 있다. 그러나 단일 클라이언트 디바이스(16)가 도 1에서 도시되지만, 상이한 클라이언트 디바이스들(16)을 이용하여 다수의 상이한 사용자들이 동일한 목적을 위해 서버와 통신할 수 있다는 것이 이해된다. 다수의 상이한 사용자들은 동일한 상호작용식 폼(40)(도 3)의 필드들(fields) 또는 제어들 내로 정보를 입력함으로써 여행 검색 질의를 하기 위해 서버(12)와 통신하는 사용자들의 풀(pool)을 구성한다.
요약하면, 클라이언트 디바이스(16)에서 상호작용식 폼(40)의 필드들 또는 제어들 내로 사용자에 의해 입력된 값들은 통신 네트워크(14) 상에서 서버(12)로 전달된다. 서버(12)에서 추천 모듈(62)은 쌍촉 화살표(13)에 의해 표시되는 바와 같이, 수신된 제어 값들을 이력 데이터베이스(80)에 저장하고 이력 데이터베이스(80)로부터 저장된 값들을 리트리브할 수 있다. 저장된 값들은 사용자 선호도들 및 사용자 이력을 설정하도록 이력 데이터베이스(80)의 레코드에서 특정한 사용자와 연관될 수 있다. 서버(12)의 추천 모듈(62)은 상호작용식 폼(40)의 제어들에 대한 추천들의 형태의 제안들을 논리적으로 생성하기 위해, 추천 규칙 데이터베이스(64)에 저장된 추천 규칙들의 세트에 액세스하도록 추천 규칙 데이터베이스(64)에 질의한다. 리트리브된 추천 규칙들은 질의를 매칭시키고 추천 규칙들이 설정된 상호작용식 폼(40)에서 상호관련된 제어들을 반영한다. 추천 규칙 데이터베이스(82)의 질의는 도 1에서 쌍촉 화살표(15)에 의해 표현된다. 추천들은 비교적 높은 가능성의 예측된 제어 값들을 표현하고, 상호작용식 폼(40)의 사용자가 예를 들어, 트립 부킹 질의를 생성하는데 필수적인 상호작용식 폼(40)의 하나 이상의 제어들에 대한 값들을 선택하도록 요구되는 것을 완화시키도록 역할할 수 있다. 추천들은 서버(12)로부터 클라이언트 디바이스(16)로 전달되고 상호작용식 폼(40)을 적응시키도록 클라이언트 디바이스(16)에 의해 이용된다. 추천 프로세스는 클라이언트 디바이스(16)로부터의 연속적인 데이터 흐름 및 제어 값들의 사용자 입력과 동기화될 수 있다. 모니터링 모듈(66)은 수신된 제어 값들을 모니터링하도록 추천 모듈(62)의 동작과 함께 아래에서 설명되는 바와 같이 기능한다.
러닝 모듈(learning module)(64)은 화살표(17)에 의해 표시된 바와 같이, 상호작용식 폼(40)의 제어들에 대한 이력적 사용자 입력들의 저장된 값들을 리트리브하도록 이력 데이터베이스(80)에 질의한다. 러닝 모듈(64)은 상호작용식 폼(40)의 상호관련된 제어들에 대한 추천 규칙들을 컴퓨팅하기 위한 알고리즘을 이용한다. 러닝 모듈(64)은 쌍촉 화살표(19)에 의해 표시된 바와 같이 비즈니스 규칙 데이터베이스(84)에 저장된 미리 정의된 비즈니스 규칙들 및/또는 쌍촉 화살표(21)에 의해 표시된 바와 같이 파라미터 데이터베이스(86)에 저장된 정적 파라미터들에 액세스할 수 있다. 러닝 모듈(64)은 화살표(23)에 의해 표시된 바와 같이, 새로운 추천 규칙들을 삽입하고 기존의 추천 규칙들을 업데이트 또는 삭제함으로써 추천 규칙 데이터베이스(82)의 콘텐츠를 조작하도록 구성된다. 러닝 모듈(64)에 의해 컴퓨팅되는 각각의 추천 규칙은 논리적으로 상호관련될 수 있는 상이한 제어들을 상호관련시킨다.
유사한 참조 번호들이 도 1의 유사한 특징들을 지칭하는 도 2를 참조하면, 클라이언트 디바이스(16)는, 클라이언트 디바이스(16)의 컴포넌트들이 본 발명의 실시예들에 부합하는 하나 이상의 동작들을 수행하게 하고 그리고/또는 이들을 수행하기 위한 하나 이상의 명령어들을 실행하도록 구성되는 하나 이상의 프로세싱 유닛들(20)을 포함한다. 클라이언트 디바이스(16)는 모바일 전화, 스마트폰, 태블릿 컴퓨터, 개인용 디지털 보조기기(PDA), 데스크톱 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터 등과 같이, 통상적으로 여행-관련 검색 질의를 수행하기 위해 상호작용식 폼(40)과 상호작용하는데 이용되는 임의의 타입의 전자 디바이스일 수 있다.
클라이언트 디바이스(16)는 입력/출력("I/O") 인터페이스(22), 디스플레이(24), 및 외부 디바이스들(26)을 포함한다. 클라이언트 디바이스(16)의 I/O 인터페이스(22)는 프로세싱 유닛(20)에 전달되는, 디스플레이(24)로부터의 데이터 및 외부 디바이스들(26)로부터의 데이터를 수신하도록 구성될 수 있고 프로세싱 유닛(20)으로부터의 데이터를 디스플레이(24) 및 외부 디바이스들(26)에 출력하도록 구성될 수 있다. 디스플레이는 예를 들어, 컴퓨터 모니터 또는 모바일 전화 또는 태블릿 상의 스크린일 수 있다. 대안적으로, 디스플레이(24)는 사용자가 출력 데이터를 수신하고 보게 허용하도록 기능하는 것은 물론, 예를 들어, 온스크린 가상 키보드를 이용하여 사용자가 데이터를 입력하게 허용하도록 기능하는 터치 스크린일 수 있다. 외부 디바이스들(26)은 예를 들어, 키보드, 키패드, 마우스, 마이크로폰 등과 같은 부가적인 사용자 입력 디바이스들 및 스피커들 등과 같은 부가적인 사용자 출력 디바이스들을 포함할 수 있다. 클라이언트 디바이스(16)는 또한 네트워크(14)와의 물리적 연결을 제공하고 네트워크(14)를 통해 서버(12)로부터 데이터를 수신하고 데이터를 서버(12)에 전송하도록 구성되는, 트랜시버 또는 네트워크 인터페이스 카드와 같은 네트워크 어댑터(28)를 포함할 수 있다. 일 실시예에서, 클라이언트 디바이스(16)는 당 분야에 알려진 바와 같이 모바일 서비스 제공자와의 합의 하에 네트워크(14)와 통신할 수 있다.
클라이언트 디바이스(16)의 메모리(30)는 소프트웨어 모듈 또는 애플리케이션(32) 및/또는 운영 체제(34)를 저장하도록 구성되며, 클라이언트 애플리케이션(32) 및 운영 체제(34)는 각각 일반적으로, 각각의 프로세싱 유닛(20)에 의해 메모리(30)로부터 판독될 수 있는 프로그램 코드로서 저장된 하나 이상의 명령어들을 포함할 수 있다. 명령어들은, 프로세싱 유닛(20)에 의해 실행될 때, 각각의 프로세싱 유닛(20)이 하나 이상의 동작들을 수행하게 하여서, 본 발명의 다양한 실시예들을 실현하는 단계들, 엘리먼트 및/또는 블록들을 실행하는데 필요한 단계들을 수행할 수 있다.
메모리(30)는, 컴퓨터의 메인 저장소를 포함하는 랜덤 액세스 메모리(RAM)는 물론, 임의의 보충 레벨의 메모리, 예를 들어, 캐시 메모리들, 비-휘발성 또는 백업 메모리들(예를 들어, 프로그래밍 가능한 또는 플래시 메모리), 대용량 저장 메모리, 판독 전용 메모리(ROM) 등을 표현할 수 있다. 또한, 메모리(30)는 물리적으로 다른 곳에 로케이팅되는 메모리 저장소, 예를 들어, 클라이언트 디바이스(16)와 통신하는 임의의 컴퓨팅 시스템의 프로세서 내의 캐시 메모리는 물론, 클라이언트(16)와 통신하는 임의의 컴퓨팅 시스템 상의 임의의 저장 디바이스(예를 들어, 원격 저장 데이터베이스, 원격 컴퓨팅 디바이스의 메모리 디바이스, 클라우드 저장소 등)를 포함하도록 고려될 수 있다.
메모리(30) 내의 클라이언트 애플리케이션(32)은 클라이언트 디바이스(16) 상에서 국부적으로 실행되고, 그의 프로그램 코드는, 각각의 프로세싱 유닛(20)에 의해 실행될 때, 상호작용식 폼(40)(도 3)의 생성 및 동작을 용이하게 하는 명령어들을 포함할 수 있다. 상호작용식 폼(40)은 클라이언트 디바이스(16)와 클라이언트 디바이스(16)로부터 원격 위치에 로케이팅되는 서버(12) 간의 인터페이스를 제공한다. 이에 따라, 사용자는 디스플레이(24) 상에 디스플레이되는 상호작용식 폼(40)(도 3)과 상호작용할 수 있다.
클라이언트 애플리케이션(32)은 클라이언트 디바이스(16)의 디스플레이(24) 상에서 사용자에게 상호작용식 폼(40)을 디스플레이할 수 있다. 상호작용식 폼(40)은, 폼(40)에 대한 정보 및 동작들이 그래픽 아이콘들 및 시각적 표시자를 통해 클라이언트 디바이스(16)의 사용자에게 이용 가능한 그래픽 사용자 인터페이스로 디스플레이될 수 있다. 예를 들어, 상호작용식 폼(40)은, 웹 브라우징 기능성을 제공하고 운영체제(34)와 연관된 소프트웨어 애플리케이션에 의해 구성될 수 있는, 브라우저(50)(도 3) 상의 웹 페이지로서 디스플레이될 수 있다. 브라우저(50)는 모바일 전화 또는 태블릿과 같은 모바일 디바이스 상에서 이용하기 위해 특별히 설계된 모바일 브라우저를 포함할 수 있다. 하이퍼텍스트 마크업 언어(HyperText Markup Language; HTML)와 같은 마크업 언어는 브라우저(50)에 디스플레이하기 위한 상호작용식 폼(40)을 생성한다. 예를 들어, 마크업 언어는 상호작용식 폼(40)의 행동에 영향을 주는 스크립트 언어로부터의 스크립트들을 임베딩할 수 있다. 대안적으로, 클라이언트 애플리케이션(32)은 또한, 스마트폰, 태블릿 컴퓨터, 또는 다른 모바일 디바이스 상에서 실행되도록 설계되고 네트워크-액세스 가능한 위치(예를 들어, 모바일 애플리케이션 스토어 또는 액세스 가능한 데이터베이스), 컴퓨터-판독 가능한 저장 매체들 등과 같은 애플리케이션 분배 플랫폼으로부터 다운로드되는 모바일 애플리케이션(즉, 모바일 앱)을 포함할 수 있다.
클라이언트 디바이스(16)는 추가로 프로세싱 유닛(20)에 액세스 가능한 로컬 캐시(38)를 포함할 수 있다. 로컬 캐시(38)는, 예를 들어, 서버(12)로부터 수신되는 데이터의 사본들을 국부적으로 저장하도록 구성되는 메모리(30)의 섹션일 수 있다.
도 3을 참조하면, 상호작용식 폼(40)은 사용자가 클라이언트 디바이스(16)에 데이터를 입력하고 이어서 프로세싱을 위해 네트워크(14) 상에서 입력된 데이터를 서버(12) 전달하도록 허용한다. 상호작용식 폼(40)은 다양한 상이한 사용자 인터페이스 엘리먼트들 및 특히, 제어 값들과 같은 콘텐츠의 사용자 입력을 용이하게 하는 제어들(42, 43, 44, 45, 46)의 형태의 사용자 인터페이스 엘리먼트들을 포함할 수 있다. 부가적인 제어들(도시되지 않음)은 상호작용식 폼(40)의 인터페이스 엘리먼트들로서 나타날 수 있다. 상호작용식 폼(40) 내에 입력된 데이터는, 대표적인 실시예에서 설명되는 바와 같이 여행 부킹의 목적을 위한 여행 검색 질의와 같이 여행에 관련될 수 있다. 그러나 여정 관리, 항공편 상태 등과 같이, 상호작용식 폼들 및 상호작용식 폼 흐름들에 또한 몹시 의존하는 다른 타입들의 여행-관련 애플리케이션들이 본 발명의 실시예로부터 혜택을 받을 수 있다.
제어들(42, 43, 44, 45, 46)은 버튼, 슬라이더, 스피너(spinner), 리스트 박스(list box), 드롭-다운 리스트(drop-down list) 및 콤보 박스를 포함할 수 있다. 각각의 제어는 제어에 대한 입력으로서 입력될 수 있는 주제에 대한 텍스트 콘택스트(textual context)를 제어에 제공하는 하나 이상의 라벨들 또는 캡션(caption)들을 포함할 수 있다. 상호작용식 폼(40) 상의 제어들(42, 43, 44, 45, 46)은 사용자-입력 값들을 포함하는 새로운 데이터에 대한 입력 템플릿으로서 기능하고 예를 들어, 서버(12)로부터 공급된 제어 값들로부터 상호작용식 폼(40)에 공급되는 데이터를 디스플레이할 수 있다.
버튼은 동작을 수행하도록 클릭(click)될 수 있는 제어이다. 대표적 버튼들은 옵션을 선택 또는 선택해제(즉, 토클)하도록 클릭될 수 있는 체크 박스, 한 번에 단지 하나의 옵션이 선택될 수 있는 옵션들의 선택으로부터 옵션을 선택하도록 클릭될 수 있는 라디오 버튼의 세트 및 몇몇 디폴트 동작을 통상적으로 인보크(invoke)하도록 버튼의 기능성과 관련된 보조 동작들을 촉구하는 드롭-다운 리스트와 결합하는 분할 버튼(split button)을 포함(그러나 이들로 제한되지 않음)한다.
슬라이더(slider)는 아이템에 대한 값을 선택하기 위해 수직으로 또는 수평으로 이동될 수 있는 표시자를 갖거나, 또는 2개의 표시자들이 존재하는 경우, 아이템에 대한 값들의 범위의 선택을 허용하는 이중 슬라이더를 포함한다. 스피너(spinner)는 사용자가 값들의 범위를 통해 스텝핑(step)하도록 허용하는 화살표-상승 및 화살표-하강 버튼들을 갖는 값 입력 제어이다.
리스트 박스는 사용자가, 정적인 다수의 라인 텍스트 박스 내에 포함되는 리스트로부터 하나 이상의 아이템들을 선택하도록 허용한다. 드롭-다운 리스트는 사용자가 선택할 수 있는 아이템들의 리스트가 디스플레이되는 리스트 박스와 유사하다. 리스트 박스와 달리, 드롭-다운 리스트는 리스트의 아이템들을 도시하도록 영구적으로 확장되는 것이 아니라 대신 동적이다. 드롭-다운 리스트가 비활성일 때, 단일 아이템이 디스플레이된다. 드롭-다운 리스트가 활성화될 때, 사용자가 아이템들 중 하나를 선택할 수 있는 아이템들의 리스트가 디스플레이된다. 사용자가 새로운 아이템을 선택한 이후, 드롭-다운 리스트는 비활성 상태로 복귀되고, 선택된 값을 디스플레이한다. 콤보 박스는 편집 가능한 텍스트 입력 필드를 리스트 박스에 결합하여서 사용자가 아이템들의 리스트에는 없는 하나 이상의 입력들을 하게 할 수 있는 드롭 박스 리스트의 변동이다.
폼은 또한 하나 이상의 텍스트 박스들을 포함할 수 있다. 텍스트 박스는 편집 가능한 텍스트 입력 필드와 연관되고 사용자가 상호작용식 폼(40)에 대한 값들로서 하나 이상의 라인들 또는 텍스트의 스트링들의 입력을 허용한다. 사용자는 키보드를 이용하여 텍스트를 입력하고 키보드, 마우스, 또는 터치 스크린을 이용하여 텍스트의 부분을 네비게이팅(navigate) 및 선택하고 이전-입력된 텍스트를 편집할 수 있다.
상호작용식 폼(40)의 제어들(42, 43, 44, 45, 46)은 여행-특정 제어들을 포함할 수 있다. 하나의 타입의 여행-특정 제어는, 명칭 또는 국제 항공 운송 협회(International Air Transport Association; IATA) 코드에 의해 특정한 위치의 선택을 용이하게 하는, 여행 검색 질의에 대한 출발지 또는 여행 검색 질의에 대한 목적지와 같은 위치들에 대한 자동-완성-및-선택 그룹(auto-complete-and-select group)이다. 다른 여행-특정 제어들은 유아들의 수를 선택하는데 이용되는 유아 선택기, 트립이 왕복 트립인지를 선택하는 왕복 트립 토글, 날자의 선택을 허용하도록 캘린더 제어를 제공하는 날자 피커(date picker), 날자 범위의 선택을 허용하는 캘린더 제어인 시작 및 종료일 피커, 12-시간 또는 24-시간 선택기를 제공하는 시간 슬라이더, 이중 슬라이더의 상호작용식 폼(40)의 시간 범위 선택기, 사용자가 트립에 대한 특별한 선호도들을 입력하도록 허용하는 특별 서비스 요청 선택기, 및 서비스 캐빈 선택기(이코노미, 비즈니스 클래스 등)를 포함(그러나 이들로 제한되지 않음)할 수 있다.
제어들(42, 43, 44, 45, 46 ) 중 특정한 하나에 대한 하나 이상의 선택들은 디스플레이(24) 및/또는 외부 디바이스들(26)(도 2)을 이용하여 사용자에 의해 표시되고 그리고/또는 선택될 수 있다. 선택을 위해, 사용자는 키보드 상의 키 또는 마우스 상의 클릭 버튼을 누르고 키보드 또는 마우스를 이용함으로써 커서를 포지셔닝하고, 손가락 끝 또는 전자기계 입력 디바이스로 디스플레이(54)의 스크린을 터치하고, 음성-인식 시스템에 대해 말하는 등을 행함으로써 제어에 대한 값들을 선택할 수 있다.
상호작용식 폼(40)은 상호작용식 폼(40)의 동적 생성 및 변형을 허용하도록 자바스크립트와 같은 스크립트 언어를 통해 제어되고 강화된다. 특히, 스크립트 언어는 제어들(42, 43, 44, 45, 46)의 콘텐츠 및 시각적 행동에 영향을 주도록 기능한다. 예들로서, 체크-박스가 미리-선택될 수 있고, 드롭-다운 리스트에 대한 선택 옵션들이 중요도에 의해 정렬될 수 있고, 슬라이더에 대한 날자 범위가 미리 설정되고 텍스트 박스가 데이터로 미리 채워질 수 있고, 텍스트 박스의 자동-완성 옵션들이 세팅될 수 있는 식이다. 상호작용식 폼(40)의 제어 및 강화는 클라이언트 애플리케이션(32)(도 2)에 포함되는 미리-작성된 자바스크립트의 자바스크립트 라이브러리 및 자바스크립트 인터프리터에 의해 제공될 수 있다. 자바스크립트 인터프리터는 자바스크립트 라이브러리 내의 자바스크립트 소스 코드를 인터프리팅하고 스크립트를 상응하게 실행한다. 스크립트 언어는 상호작용식 폼(40)을 구축하고, 상호작용식 폼(40)의 사용자 인터페이스 엘리먼트들은 제어들 내로의 콘텐츠 입력을 수락하고, 제어들 내로의 데이터 입력을 미리-입증하고 그리고/또는 클라이언트 디바이스(16)로부터 서버(12)로 송신할 폼 데이터를 준비하고, 서버(12)로부터 클라이언트 디바이스(16)에 의해 수신된 콘텐츠가, 아직 채워지지 않았거나 제그렇지 않으면 사용자 입력에 의해 어드레싱되지 않은 제어들(42, 43, 44, 45, 46)에 출력되게 하고 그리고/또는 상호작용식 폼(40) 상에서 사용자에게 디스플레이되게 한다.
클라이언트 애플리케이션(32)은 클라이언트 디바이스(16)와 서버(12) 간의 데이터 교환을 가능하게 하는 프로그램 코드를 또한 포함할 수 있다. 일 실시예에서, 데이터 교환은 AJAX, 확장 가능한 메시징 및 프리슨스 프로토콜(Extensible Messaging and Presence Protocol; XMPP) 등을 이용하여 비동기식의 비-차단 방식으로 발생할 수 있고, 클라이언트 디바이스(16)에 의해 개시된다. 클라이언트 애플리케이션(32)은 비동기식으로, 그리고 바람직하게는 상호작용식 폼(40)의 행동 및 디스플레이를 간섭함 없이 백그라운드로, 서버(12)로부터 데이터를 리트리브하고 서버(12)로 데이터를 송신할 수 있다. 대안적으로, 데이터 교환에 대한 요청들이 서버(12)에 의해 개시되는 푸시 기술들(push technologies)이 이용될 수 있다.
유사한 참조 번호들이 도 1의 유사한 특징들을 지칭하는 도 4를 참조하면, 서버(12)는 본 발명의 실시예들에 부합하는 하나 이상의 동작들을 수행하기 위해 클라이언트 디바이스(16)와 상호작용하도록 및/또는 이 동작들을 수행하도록 하나 이상의 명령어들을 실행하기 위한 하나 이상의 프로세싱 유닛들(58)을 포함한다. 서버(12)는 하나 이상의 프로세싱 유닛들(58)에 의해 액세스 가능한 메모리(60)를 포함한다. 서버(12)의 메모리(60)는 소프트웨어 애플리케이션들 또는 모듈들(62, 64, 66, 68) 및/또는 운영 체제(70)를 저장하도록 구성되며, 여기서 애플리케이션들 또는 모듈들(62, 64, 66, 68) 및/또는 운영 체제(70)는 각각 일반적으로, 각각의 프로세싱 유닛(58)에 의해 메모리(60)로부터 판독될 수 있는 프로그램 코드로서 저장되는 하나 이상의 명령어들을 포함한다. 프로세싱 유닛(58)에 의해 실행될 때, 명령어들은 각각의 프로세싱 유닛(58)으로 하여금, 하나 이상의 동작들을 수행하게 하여서, 본 발명의 다양한 실시예들을 실현하는 단계들, 엘리먼트들 및/또는 블록들을 실행하는데 필수적인 단계들을 수행할 수 있다.
메모리(60)는, 컴퓨터의 메인 저장소를 포함하는 랜덤 액세스 메모리(RAM)는 물론, 임의의 보충 레벨의 메모리, 예를 들어, 캐시 메모리들, 비-휘발성 또는 백업 메모리들(예를 들어, 프로그래밍 가능한 또는 플래시 메모리), 대용량 저장 메모리, 판독 전용 메모리(ROM) 등을 표현할 수 있다. 또한, 메모리(60)는 물리적으로 다른 곳에 로케이팅되는 메모리 저장소, 예를 들어, 서버(12)와 통신하는 임의의 컴퓨팅 시스템의 프로세서 내의 캐시 메모리는 물론, 서버(12)와 통신하는 임의의 컴퓨팅 시스템 상의 임의의 저장 디바이스(예를 들어, 원격 저장 데이터베이스, 원격 컴퓨팅 디바이스의 메모리 디바이스, 클라우드 저장소 등)을 포함하도록 고려될 수 있다.
서버(12)는 추가로 입력/출력("I/O") 인터페이스(72), 디스플레이(74), 및 외부 디바이스들(76)을 포함한다. 서버(12)의 I/O 인터페이스(72)는 프로세싱 유닛(58)에 전달되는, 디스플레이(74)로부터의 데이터 및 외부 디바이스들(76)로부터의 데이터를 수신하도록 구성될 수 있고 프로세싱 유닛(58)으로부터 데이터를 디스플레이(74) 및 외부 디바이스들(76)에 출력하도록 구성될 수 있다. 디스플레이(74) 및 외부 디바이스들(76)은 관리자와 같은 사용자가 서버(12)로부터의 출력 데이터를 수신하고 그리고/또는 입력 데이터를 서버(12)에 공급하도록 허용하게 기능할 수 있다. 서버(12)는 또한 네트워크(14)와의 물리적 연결을 제공하고 네트워크(14) 상에서 데이터를 클라이언트 디바이스(16)에 전송하고 그리고/또는 클라이언트 디바이스(16)로부터 데이터를 수신하도록 구성되는 네트워크 어댑터(78)를 포함할 수 있다. 네트워크 어댑터(78)는 IEEE 802.3(이더넷) 링크와 같은 하드와이어 링크, 802.11(와이-파이) 링크와 같은 무선 네트워크 프로토콜을 이용한 무선 링크 또는 서버(12)와 네트워크(14)를 인터페이싱하기 위한 임의의 다른 적합한 링크일 수 있다.
메모리(60)는 이력 데이터베이스(80), 추천 규칙 데이터베이스(82), 비즈니스 규칙 데이터베이스(84), 및 파라미터 데이터베이스(86)를 또한 포함한다. 데이터베이스들(80, 82, 84, 86) 각각은 데이터를 포함하고 데이터를 저장 및 구성하는 지지 데이터 구조들을 포함한다. 특히, 데이터베이스들(80, 82, 84, 86) 각각은 관계 데이터베이스, 계층 데이터베이스, 네트워크 데이터베이스 및/또는 이들의 결합을 포함(그러나 이것으로 제한되지 않음)해서, 임의의 데이터베이스 구성 및/또는 구조로 배열될 수 있는 데이터의 구조화된 모음을 표현한다. 프로세싱 유닛(58) 상에서 명령어들로서 실행되는 컴퓨터 소프트웨어 애플리케이션의 형태의 데이터베이스 관리 시스템은 질의에 응답하여 데이터베이스들(80, 82, 84, 86)의 레코드들에 저장된 정보 또는 데이터에 액세스하는데 이용된다. 데이터베이스들(80, 82, 84, 86) 각각은 데이터가 효율적으로 이용될 수 있도록 데이터 내의 대응 데이터를 구성 및 저장한다. 데이터의 구성은 정보를 요구하는(예를 들어, 추천 규칙들 데이터베이스(82)에서 추천 규칙을 발견하는) 프로세스들을 지원할 수 있다.
서버(12)의 추천 모듈(62)은 클라이언트 디바이스(16)와 직접 상호작용한다. 추천 모듈(62)은 상호작용식 폼(40)의 제어들(42, 43, 44, 45, 46)에 입력되거나, 상호작용식 폼(40)의 제어들(42, 43, 44, 45, 46)에서 사용자에 의해 선택되는 값들을 수신한다. 추천 모듈(62)은 이력 데이터베이스(80)에서 상호작용식 폼(40)으로부터 수신된 모든 사용자-선택 값들을 저장한다. 저장 프로세스와 나란히, 수신된 값들은 또한 추천 규칙 데이터베이스(82)에 저장된 추천 규칙들의 세트를 인보크(invoke)하는 부분적 사용자 입력에 기초하여 확률 추론 프로세스(probabilistic reasoning process)를 피딩하는데 이용된다. 부분적 여행 검색 질의에 응답하여, 추천 모듈(62)은 추천 규칙 데이터베이스(82)에 질의하고, 질의의 맥락에 적절한 하나 이상의 추천 규칙들을 수신한다. 질의는 구조화된 질의 언어(Structured Query Language; SQL)와 같은 질의 언어를 이용하여 구성될 수 있다.
추천 모듈(62)은 채워진 폼 제어들에 대한 알려진 값들의 세트로부터 상호작용식 폼(40)의 채워지지 않은 제어들에 대한 예측된 값들을 결정하도록 추천 규칙들을 적용한다. 예를 들어, 다수의 제어들에 대한 복수의 알려진 값들은, 통계적 상관을 갖는 하나 이상의 채워지지 않은 제어들에 대한 추천 및 바람직하게는, 확률 의존들의 형태의 통계 상관을 갖는 몇 개의 제어들 각각에 대한 하나 이상의 값들에 대한 추천을 야기할 수 있다. 추천의 각각의 추천 값은 서버(12)로부터 클라이언트 디바이스(16)로 전달될 수 있다.
클라이언트 디바이스(16)의 클라이언트 애플리케이션(32)은 제어 내로의 임의의 사용자 입력 이전에 제어들 중 하나를 미리-채우거나 미리-파퓰레이팅(pre-populating)하기 위해, 제어에서 사용자에게 제안될 값들을 순서화하기 위해, 상호작용식 폼(40)에 대한 다른 적응들(예를 들어, 제어의 마스크 옵션들)을 행하기 위해, 기타 등을 위해 서버(12)로부터 수신된 추천 값을 이용할 수 있다. 그 결과는, 상호작용식 폼(40)에서 하나 이상의 채워진 제어들의 알려진 세트에 기초하여, 상호작용식 폼(40)에서 하나 이상의 채워지지 않은 제어들의 값 또는 유망한 값들을 실현하는 적어도 하나의 추천 규칙이, 상호작용식 폼(40)에서 채워지지 않은 제어들을 파퓰레이팅하는 기능을 위해 추천 모듈(62)에 의해 적용되고, 그에 의해, 클라이언트 디바이스(16)의 사용자에 의한 여행 검색 질의의 단순화된 입력을 용이하게 한다는 것이다.
추천 모듈(62)에 의해 이루어지는 추천들은 클라이언트 디바이스(16)의 사용자의 개인 이력 데이터를 또한 고려할 수 있다. 예를 들어, 사용자의 아이덴티티는 알려져 있을 수 있고(즉, 등록된 사용자), 추천 모듈(62)은 과거 추천들에 관한 사용자의 개인 이력 데이터에 액세스할 수 있다. 사용자는 등록된 사용자이며 이들의 제어들에 대한 값들의 선호도들은 저장되고 그에 의해 개인 이력 데이터로서 알려질 수 있다. 개인 이력 데이터로부터 유도된 제어에 대한 사용자 선호도들은 추천 규칙들로부터 유도되는 제어 값들과 함께 고려될 수 있다.
추천 모듈(62)에 의해 이루어지는 추천은 클라이언트 디바이스(16)의 맥락에 관련되는 정보를 또한 고려할 수 있다. 예를 들어, 클라이언트 디바이스(16)는 추천들을 하는데 있어 이용하기 위해 서버(12)로, 위치와 같은 디바이스-의존적 정보를 데이터로서 전달할 수 있다. 클라이언트 디바이스(16)는 또한 시각, 요일 등과같이, 클라이언트 디바이스(16) 상에서 발견되고 그리고/또는 컴퓨팅될 수 있는 데이터를 포함하는 다른 타입들의 디바이스-독립적 정보를 전달할 수 있다. 이런 타입들의 정보는 또한 추천들을 할 때 추천 모듈(62)에 의해 또한 고려될 수 있다.
러닝 모듈(learning module)(64)은 복수의 데이터 소스들로부터의 데이터를 입력하도록 그리고 데이터에 관련된 예측들로서 추천 규칙들을 생성하는데 이용되는 예측 알고리즘을 트레이닝(train)하도록 구성된다. 특히, 러닝 모듈(64)은 상호관련되는(즉, 서로 관련되는) 상호작용식 폼(40)의 제어들 간의 추천 규칙들을 생성한다. 예측 알고리즘은 상호작용식 폼(40)의 제어들 중 일부 또는 모두 다가, 아마도 상관된 제어들의 쌍들로서 또는 상관된 제어들의 그룹들로서 통계적으로 상관되어서, 하나 이상의 제어들로의 값들의 입력은 더욱 더 많은 다른 제어들에 대한 예측된 값들에 영향을 주게 된다는 가정에 기초한다. 하나 이상의 제어들은 추천 규칙들의 토대인 상호관계들(interrelationships)을 제공하기 위해 하나 이상의 다른 제어들과 통계적으로 상관되고 추천 규칙들을 컴퓨팅하도록 예측 알고리즘에 의해 적용될 수 있다. 예를 들어, 다수의 제어들은 상호관계를 제공하도록 다수의 다른 제어들과 통계적으로 상관될 수 있다.
러닝 모듈(64)은 추천 규칙들을 저장하기 위한 저장소로서 역할하는 추천 규칙 데이터베이스(82)에 추천 규칙들을 공급한다. 러닝 모듈(64)의 실행은 추천 모듈(62)의 실행으로부터 디커플링된다. 예를 들어, 러닝 모듈(64)은 사용자 상호작용들에 의한 트리거 없이 그리고 정규적 사이클들(예를 들어, 시간 당 한번)로 비동기식으로 실행될 수 있다. 특히, 러닝 모듈(64)은 클라이언트 디바이스(16)에서의 사용자 상호작용에 의한 임의의 타입의 트리거링에 독립적인 추천 규칙들을 결정할 수 있다.
러닝 모듈(64)에 피딩(feeding)하는 하나의 데이터 소스는, 모듈들(62, 64) 둘 다에 액세스 가능한 사용자로부터 누적된 이력적 협력 데이터를 포함하는 이력 데이터베이스(80)이다. 이력 데이터베이스(80)는 미가공 데이터 또는 어그리게이팅된 데이터(aggregated data)로서 데이터를 저장할 수 있다. 추천 모듈(62)은 상호작용식 폼(40)의 모든 사용자들의 선택을 표현하는 데이터를 이력 데이터베이스(80)에 기록한다. 이력 데이터베이스(80)는 사용자 선택들이 클라이언트 디바이스(16)로부터 수신될 때 실시간으로 업데이트될 수 있고, 모든 데이터 인스턴스들은, 미가공 데이터 또는 어그리게이팅된 데이터든지 간에, 증분적인 방식(incremental manner)으로 리프레시(refresh)된다.
러닝 모듈(64)은 추천 규칙들을 생성하는데 이용하기 위해 이력 데이터베이스(80)로부터 폼 선택들의 협력적 이력 데이터를 판독한다. 이력 데이터베이스(80)로부터의 입력 데이터는 관찰된 사용자 선택들 간의 가능한 관계들의 인스턴스들을 표현하고, 추천 모듈(62)은 이력 데이터베이스(80)에서 데이터의 미지의 근본적인 확률 분포의 관심의 특징들을 포착한다.
이력 데이터베이스(80)는 또한 클라이언트 디바이스(16)에서 상호작용식 폼(40)의 각각의 특정한 사용자와 상관되는 폼 선택들의 개인 이력 데이터를 포함할 수 있다. 추천 모듈(62)은 추천 규칙 데이터베이스(82)로부터의 추천 규칙들의 적용으로부터 유도되는 추천과 함께 추천을 생성하는데 이용하기 위해 이력 데이터베이스(80)로부터 이러한 개인 이력 데이터를 판독할 수 있다.
협력적 이력 데이터가 미가공 데이터로서 이력 데이터베이스(80)에 저장되는 경우, 러닝 모듈(64)은, 예측 알고리즘이 사용자 선택의 패턴들의 변화들을 검출할 수 있도록 제한들 없이 모든 협력적 이력 데이터에 대한 액세스를 가질 것이다. 예를 들어, 현재 중요하거나 차별적이지 않은 사용자 선택에 관한 파라미터는 미래에 중요하거나 차별적이 될 수 있고, 그에 따라 미가공 데이터는 러닝 모듈(64)이 변화에 적응할 수 있도록 요구된다. 매우 다수의 레코드들을 수용하기 위해, 미가공 데이터는 데이터 반복 방지, 가능한 입도(granularity) 손실이 없을 때마다 개별 레코드들보단 카운트들의 저장과 같이 지능형 방식으로 구성되어야 한다.
협력적 이력 데이터가 어그리게이팅되고 이력 데이터베이스(80)에 어그리게이팅된 데이터로서 저장되는 경우, 러닝 모듈(64)은 미가공 형태로 있는 경우 보단 훨씬 빠르게 데이터를 프로세싱할 수 있다. 어그리게이팅된 포맷으로 데이터를 저장하는 것은 러닝 모듈(64)이 실행될 때마다 데이터를 어그리게이팅할 필요성을 제거한다.
다른 데이터 소스는 추천 규칙들을 결정하는 프로세스 동안 러닝 모듈(64)에 의해 액세스될 수 있다. 예를 들어, 하나의 이러한 데이터 소스는 미리 정의된 비즈니스 규칙들을 포함하는 비즈니스 규칙 데이터베이스(84)일 수 있다. 예를 들어, 대표적인 비즈니스 규칙은 레저 트립들 대부분이 토요일 밤 숙박(Saturday night stay)을 포함하는 것일 수 있다. 러닝 모듈(64)에 의해 액세스될 수 있는 또 다른 데이터 소스는 정적인 파라미터들을 포함하는 파라미터 데이터베이스(86)이다. 예를 들어, 대표적 정적 파라미터는 상호작용식 폼(40)의 제어에 대한 특정한 값을 무시하는 명령어이다.
러닝 모듈(64)은 여행자들의 확률론적 동향들에 기초하여 추천 규칙 데이터베이스(82)에 대한 추천 규칙들을 계산하기 위해 하나 이상의 예측 알고리즘들을 이용할 수 있다. 일반적으로, 추천 규칙들은 사용자들의 최대 비율에 의해 선택된 제어들에 대한 값들을 트래킹하는 제어 값들을 예측할 것이다. 추천 규칙들은 이력 데이터베이스(80) 내의 협력적 이력 데이터를 이용하여 컴퓨팅될 수 있다. 대표적인 예측 알고리즘들은 예를 들어, 협력적 필터링 또는 뉴럴 네트워크에 기초할 수 있다. 특정한 트레이닝 기간 이후, 알고리즘의 출력은 부분적으로-채워진 상호작용식 폼(40) 내의 기존의 사용자 입력들에 기초하여 제어들에 대한 값들을 제안하기 위해 추천 모듈(62)에 의해 이용될 수 있는, 추천 규칙들을 정의하는 예측기이다. 이력 데이터베이스(80)로부터의 이력적 협력 데이터는 알고리즘에 대해 세팅된 초기 트레이닝으로서 제공될 수 있다.
협력적 필터링은 자율 러닝(unsupervised learning)의 대표적인 실시예를 제공하고 일반적으로 다수의 데이터 소스로부터의 데이터를 프로세싱하는 알고리즘들을 이용하여 대량의 정보를 필터링한다. 협력적 필터링은 폼의 제어들에서 상이한 변수들에 대해 선택된 값들 간의(예를 들어, 선택된 값들의 쌍들 간의) 상관들을 설정하고 적어도 이를 토대로 하여 추천 규칙들에 대한 추천들을 생성한다. 협력적 필터링은 이력 데이터베이스(80) 내의 협력적 이력 데이터로부터 여행자들의 과거 행동(즉, 폼 선택들)을 유도하고, 기회가 주어지는 경우 여행자가 선택할 수 있는 선택들을 예측하기 위해 그 협력적 이력 데이터를 이용한다. 예측들은 비즈니스 규칙 데이터베이스(84) 및 파라미터 데이터베이스(86)로부터 비즈니스 로직을 이용하여 필터링된다. 이러한 방식으로, 러닝 모듈(64)은 상호작용식 폼(40)의 제어들의 파일들에서 이용 선택들로서 잠재적으로 나타날 수 있는 값들 간의 관계들을 특정하는 추천 규칙 데이터베이스(82) 내의 아이템×아이템 매트릭스를 구축하도록 협력적 필터링을 이용할 수 있다.
뉴럴 네트워크는 지도 러닝(supervised learning)의 대표적인 실시예를 제공하고 이력 데이터베이스(80) 내의 협력적 이력 데이터에서 패턴들을 발견하는데 이용되는 수학적 모델 또는 계산 모델에 의해 일반적으로 표현된다. 뉴럴 네트워크는 러닝 단계 동안 공급되는 이력적 여행자 데이터에 기초하여 그의 구조가 변화할 수 있다는 점에서 적응형 시스템이다. 이력 데이터베이스(80)로부터 수신되는 협력적 이력 데이터에 기초하여, 뉴럴 네트워크는 허용된 모델들의 세트로부터 주어진 비용 기준을 최소화하는 모델을 컴퓨팅할 수 있다.
러닝 모듈(64)은 또한 이력 데이터베이스(80) 내의 협력적 이력 데이터와 연관되는 폼 제어들이 값들에 대한 최적의 레벨의 어그리게이션을 결정하는 하나 이상의 어그리게이션 알고리즘들을 특징으로 한다. 어그리게이션은 하나 이상의 폼 제어들 및 그의 연관들에 대한 임의의 값들의 세트 상에서 수행될 수 있고, 보통 여행에 특유한데, 예를 들어, 출발지, 목적지, 출국 날자, 귀국 날자, 항송사 등이다. 어그리게이션 알고리즘은 예들로서, 이용 가능한 데이터 세트의 크기에 기초하여 제어 값들을 어그리게이팅할지 및/또는 특정한 제어가 차별적인지 아니면 차별적이지 않은지에 관한 판단을 내린다.
추천 규칙을 정의하기 위해 데이터를 어그리게이팅하도록 하는 판단에서 이용되는 하나의 팩터는 이력 데이터베이스(80)에 저장된 제어들의 값들에 대한 데이터 세트의 크기이다. 데이터 세트 크기에 따라, 어그리게이션 알고리즘은 추천들의 통계적 중요도를 개선하기 위해 점차 거친 입도(increasingly coarse granularity)에 따라 제어 값들을 어그리게이팅하도록 판단할 수 있다. 예를 들어, 특정한 목적지로의 출발지에 대한 값들은 출발지로서 주요 상업용 공항, 출발지로서 단일 국가의 영역으로 제한되는 다수의 주요 상업용 공항들을 포함하는 지리적인 영역, 또는 출발지로서 단일 국가의 모든 주요 상업용 공항들과 같은 훨씬 더 큰 지리적인 영역에 따라 어그리게이팅될 수 있다. 특저한 예로서, 니스에서 런던으로의(Nice-to-London) 트립들에 대한 어그리게이션 알고리즘에 공급되는 이력적 데이터는 통계적으로 의미있는 예측을 획득하기에 너무 불충분할 수 있다. 그 경우에, 어그리게이션 알고리즘은 니스에서 런던으로의 트립에 대한 하나 이상의 추천 규칙들을 대표하는 것으로서, 더 거친 입도 및 더 높은 통계적 중요도를 갖는, 모든 프랑스에서 런던으로의(France-to-London) 트립들에 대한 데이터를 어그리게이팅하도록 판단할 수 있다.
어그리게이션들은 이력 데이터베이스(80)에서 제어 값들의 각각의 세트에 대해 결정된다. 특정한 예에서, 더 거친 어그리게이션은 추천 규칙 데이터베이스(82)에 공급되는 니스에서 런던으로의 트립들에 대한 추천 규칙들에서 출발지로서 니스에 특유하다. 그러나 니스에서 런던으로의 추천들이 프랑스에서 런던으로의 데이터에 기초하여 결정된다는 사실은, 어그리게이션 알고리즘이 프랑스에서 런던으로의 데이터의 어그리게이션 시에 런던으로의 여행에 대한 출발지로서 프랑스의 임의의 다른 공항에 대한 추천들을 토대로 하는 것으로 판단한다는 것을 의미하지 않는다. 예를 들어, 이력 데이터베이스(80)는 파리에서 런던으로의 여정들에 대한 충분한 데이터를 보유할 수 있어서, 어그리게이션이 출발지 및 목적지들의 그 특정한 쌍에 대해 필요로 되지 않는다고 어그리게이션 알고리즘이 판단할 수 있다.
어그리게이션 알고리즘은 다수의 어그리게이션들이 필요하다고 판단할 수 있다. 예를 들어, 니스에서 솔트레이크 시티로의 여정에 대한 이력 데이터베이스(80) 내의 데이터는 물론, 더 큰 지리적인 단위인 국가 프랑스의 모든 주요 상업용 공항들로부터 솔트 레이크 시티로의 여행에 대한 데이터베이스(80) 내의 데이터도, 어그리게이션 알고리즘에 의해 통계적으로 의미있는 것으로 고려되기에 너무 작을 수 있다. 이 예에서, 어그리게이션 알고리즘은 니스에서 솔트 레이크 시티로의 여행에 대한 추천 규칙들을 결정하는데 있어 이용하기 위해 프랑스의 모든 주요 상업용 공항들로부터 미국 서부의 모든 주요한 상업용 공항들로의 여행에 대한 데이터를 어그리게이팅하는 것과 같이, 더 상위 레벨의 어그리게이션을 수행하도록 판단할 수 있다.
추천 규칙을 정의하기 위한 데이터를 어그리게이팅하도록 하는 판단에 있어 이용되는 하나의 팩터는, 특정한 폼 제어들이 차별적인 것으로 고려될 수 있다는 것이다. 예를 들어, 항공사에 대한 선택이 출발지 및 목적지들의 주어진 쌍에 대하여 체류 기간에 강하게 의존하지 않는 경우, 체류 기간은 항공사의 추천들의 결정을 위해 어그리게이션 알고리즘에 의해 고려되는 차별적 폼 제어가 아니다. 이에 따라, 체류 기간은 무시될 수 있고 다양한 체류 기간들에 대한 데이터 레코드들이 어그리게이팅될 수 있다.
추천 규칙들을 컴퓨팅할 때, 러닝 모듈(64)은 또한 비즈니스 규칙 데이터베이스(84)의 레코드들에 포함되는 비즈니스 규칙들 및 파라미터 데이터베이스(86) 내의 정적인 파라미터들을 활용한다. 비즈니스 규칙들 및 정적인 파라미터들은 추천 규칙들을 정의하는 프로세스에 전문가 판단(expert judgment)을 도입한다. 그러나 러닝 모듈(64)은, 어떠한 구성(configuration)도 없더라도, 관련된 추천 규칙들이 기존의 사용자 트래픽으로부터의 데이터에 기초하여 결정되도록 하는 방식으로 설계된다.
추천 규칙의 예는 금요일 아웃바운드 레그(outbound leg)를 갖는 프랑스에서 런던까지의 트립들에 대한 사용자들의 풀 중에서 체류 기간들의 분포에 기초할 수 있다. 추천 규칙은, 가장 유망한 체류 기간이 2일이고, 두 번째 가장 유망한 체류 기간은 3일이고, 세 번째 가장 유망한 체류 기간은 7일인 식으로 특정할 수 있다. 서버(12)에서 수신된 부분적 여행 검색 질의는 주어진 주(given week)의 금요일에 출발하는 프랑스에서 런던까지의 여행에 대한 것인 경우, 추천 모듈(62)은 가장 유망한 귀국 날자를 결정하기 위해 추천 규칙을 인보크할 것이다. 추천 모듈(62)은 이어서, 서버(12)로 하여금, 사용자에게 제시하기 위해 귀국 날자 중 적어도 하나를 클라이언트 디바이스(16)에 전달하게 할 것이다. 예를 들어, 가장 유망한 단일 귀국 날자는 테스트 박스인 상호작용식 폼(40) 내의 제어를 파퓰레이팅하도록 클라이언트 디바이스(16)에 전달될 수 있거나, 또는 다수의 귀국 날자들이 가능성에 따라 랭크될 수 있는 리스트를 사용자에게 제시하도록 리스트 박스인 상호작용식 폼(40) 내의 제어를 파퓰레이팅하도록 클라이언트 디바이스(16)에 전달될 수 있다.
모니터링 모듈(66)은 추천 규칙들에 기초하여 클라이언트 디바이스(16)에 공급되는 추천들을 사용자들의 실제 선택들에 비교하도록 구성될 수 있다. 모니터링 모듈(66)에 의해 이루어지는 비교는 예를 들어, 관리 모듈(68)에 의해 이용될 수 있다.
관리 모듈(68)은 관리자가 시스템 및 추천 프로세스의 기능을 관찰하도록 허용하는 관리 콘솔을 제공하게 구성될 수 있다. 이 분석에 기초하여, 관리자는, 러닝 모듈(64)의 러닝 프로세스 및 이에 따라 추천 규칙 데이터베이스 내의 추천 규칙들에 영향을 주도록 관리 모듈(68)을 통해 파라미터 데이터베이스(86)의 정적인 파라미터들 및/또는 비즈니스 규칙 데이터베이스(84)를 수정하거나, 그렇지 않으면 변경할 수 있다. 대안적으로, 관리자는 관리 모듈(68)을 통해 파라미터 데이터베이스(86)에 대한 정적인 파라미터들 및/또는 비즈니스 규칙 데이터베이스(84)에 대한 비즈니스 규칙들을 정의할 수 있다. 관리 모듈(68)은 또한 주어진 주파수로의 러닝 모듈(64)의 실행을 수동으로 또는 자동으로 트리거할 수 있다. 관리 모듈(68)은 예를 들어, 불일치들을 검출하거나, 또는 기존의 추천 프로세스의 장애들 및 취약성들을 트래킹할 수 있다.
본 발명의 대안적인 실시예에서, 클라이언트 디바이스(16)의 로컬 캐시(38)(도 2)에 보유된 데이터는 서버(12)로부터 수신된 하나 이상의 추천들을 포함할 수 있다. 로컬 캐시(38)는, 완성된 여행 검색 질의의 단지 일부의 입력에 기초하여 상호작용식 폼(40)의 제어들(42, 43, 44, 45, 46)(도 3) 중 하나 이상을 파퓰레이팅하는데 이용하기 위한 추천들을 일시적으로 보유할 수 있다. 예를 들어, 로컬 캐시(38)는 저장 공간의 물리적 크기에 의해 제약되기 때문에 다수의 출발지 각각에서 발생하는 여정들에 대한 추천들로서 다수(예를 들어, 3개)의 가장 인기있는 목적지들을 저장할 수 있다. 클라이언트 디바이스(16)에 추천들 중 일부 또는 모두 다를 갖는 것은 추천 프로세스를 빠르게 할 수 있다. 클라이언트 디바이스(16)에서 상호작용식 폼(40)으로 이루어지는 선택들은, 특히 덜 인기있는 선택의 실제 입력 시에, 네트워크(14) 상에서 서버(12)로 여전히 전달될 수 있다. 서버(12)의 추천 모듈(62)은 또한 동일한 제어 또는 상이한 제어에 대한 부가적인 추천들이 사용자에게로의 제시를 위해 클라이언트 디바이스(16)에 송신되게 할 수 있고 그리고/또는 본 명세서에서 설명된 바와 같이 이력 데이터베이스(80)에 사용자 선택들을 저장할 수 있다.
본 발명의 대안적인 실시예들에서, 클라이언트 디바이스(16)의 클라이언트 애플리케이션(32)은 추천 모듈(62)에 대한 전체 알고리즘, 또는 추천 모듈(62)의 알고리즘 중 적어도 일부를 포함할 수 있다. 로컬 추천은 사용자에 의해 폼 제어 내로 입력되고 추천들(예를 들어, 로컬 캐시(38) 내의 사용자 이력에 기초하여 3개의 가장 인기있는 목적지들)을 제공하기 위해 로컬 캐시(38)에 보유되는 값들에 의존할 수 있다. 클라이언트 디바이스(16)에서 실행되는 알고리즘의 비율은 클라이언트 디바이스(16)의 프로세싱 전력, 메모리 등에 좌우될 수 있다. 클라이언트 디바이스에 추천 알고리즘 중 일부 또는 모두 다를 배치하는 것은 추천 프로세스를 빠르게 할 수 있다. 클라이언트 디바이스(16)에 추천 알고리즘의 일부 또는 모두 다가 있음에도 불구하고, 서버(12)는 클라이언트 디바이스(16)에 추천 값들을 여전히 푸시(push)할 수 있다. 이러한 방식으로, 제한된 수의 추천된 제어 값들은, 서버(12)로부터, 동일한 제어에 대해 가능한 부가적인 추천된 제어 값들의 도달을 대기하면서 로컬 캐시(38)로부터 클라이언트 디바이스(16)에서 이용 가능하게 될 수 있다.
본 발명의 다른 대안적인 실시예에서, 클라이언트 디바이스(16)의 로컬 캐시(38)(도 2)는 로컬 이력으로서 클라이언트 디바이스(16)의 사용자에 의해 입력된 값들을 일시적으로 저장하는데 이용될 수 있다. 클라이언트 디바이스(16)는, 서버(12)가 이력 데이터베이스(80)를 업데이트할 수 있도록 네트워크(14)를 통해 서버(12)로 로컬 캐시(38) 내의 로컬 이력의 콘텐츠들을 전송할 수 있다. 예를 들어, 클라이언트 디바이스(16)는 네트워크(14) 상의 트래픽이 비교적 가벼운(light) 시각에 서버(12)에 로컬 이력의 콘텐츠를 덤핑(dump)할 수 있다. 다른 예로서, 클라이언트 디바이스(16)가 모바일 디바이스인 경우, 로컬 이력은 네트워크(14)와의 초기 연결 시에 클라이언트 디바이스(16)로부터 서버(12)로 전달될 수 있다.
도 5를 참조하면, 추천들의 프로비전(porvision)과 함께 폼 데이터의 수신 및 프로세싱이 설명될 것이다. 사용자는 브라우저에서 웹사이트(예를 들어, 여행 에이전시 웹 사이트)로 네비게이팅하거나, 또는 클라이언트 디바이스(16)에서 모바일 앱을 열고, 네트워크(14)에 연결하고, 상호작용식 폼(40)을 이용하여 네트워크(14) 상에서 서버(12)와 통신하기 위한 세션을 개시한다(블록 100). 대표적 실시예에서, 사용자는 상호작용식 폼(40)을 이용하여 여행 검색 질의의 입력을 개시한다. 그러나 임의의 사용자 입력에 앞서, 상호작용식 폼(40)의 제어들 중 하나 이상은 추천 값들로 미리 채워질 수 있다. 미리-채우기(pre-filling)를 개시하기 위해, 하나 이상의 추천들이 클라이언트 디바이스의 로컬 캐시(38)로부터 리트리브되고 미리-채우기를 제공하는데 이용될 수 있다.
사용자는, 여행 검색 질의를 부분적으로 입력하기 위해, 클라이언트 디바이스(16)에서 상호작용식 폼(40)의 하나 이상의 제어들 각각(그러나 상호작용식 폼(40)의 모든 제어들은 아님)을 값들로 파퓰레이팅할 수 있다(블록 102). 클라이언트 애플리케이션(32)은 상호작용식 폼(40) 내로의 부분적 여행 검색 질의의 입력들을 검출하고, 프로세싱 유닛(20)이 연루된 제어들 내로 입력된 값들을 프로세싱하게 한다. 클라이언트 디바이스(16)의 프로세서(20)에서 실행중인 클라이언트 애플리케이션(32)은, 네트워크(14) 상에서 데이터로서 클라이언트 디바이스(16)가 적어도 하나의 입력된 값 또는 적어도 하나의 입력된 행동 및 바람직하게는, 모든 입력된 값들 및 행동들을 서버(12)에 전달하게 한다(블록 104). 클라이언트 디바이스(16)는 또한 추천 프로세스에서의 이용을 위해 클라이언트 디바이스(16)의 맥락에 관련된 정보(위치, 시각 등)를 서버(12)에 전달할 수 있다.
추천 모듈(62)은 전달된 데이터를 수신하고 이력 데이터베이스(80)에서 클라이언트 디바이스로부터 수신된 값들을 저장한다(블록 106). 추천 모듈(62)은 수신된 값들이, 상호작용식 폼(40)에서 채워지지 않은 제어들 중 하나 이상에 대한 하나 이상의 추천들을 예측하기 위해 추천 규칙들의 세트를 인보크하는 지능형 추론 프로세스에 처해지게 한다(블록 108). 클라이언트 디바이스(16)에 의해 컴퓨팅되거나 클라이언트 디바이스(16)에서 발견되고 서버(12)에 전달되는 디바이스-독립 정보(예를 들어, 위치) 및 디바이스 의존 정보(예를 들어, 시각 또는 요일)는 또한 추천들의 계산 시에 추천 모듈(62)에 의해 이용될 수 있다. 각각의 추천은 사용자에 의해 이미 채워진 제어들 이외의 다른 여행-관련 검색 부분들을 표현하는 상호작용식 폼(40)의 채워지지 않은 제어들 중 하나 이상에 대한 하나 이상의 추천 값들을 포함할 수 있다. 프로세스 흐름은 부가적인 값들이 상호작용식 폼(40)의 제어들 내로 입력되는 바와 같이 적절히 반복될 수 있다. 바람직하게는, 모든 값들이 블록(104)에서 입력된 이후 상호작용식 폼(40)의 다수의 제어들의 파퓰레이팅은 블록(108)에서 결정된 추천들과 관련된 상호작용식 폼(40)의 적어도 하나의 다른 제어에 영향을 줄 수 있다.
예를 들어, 세션이 서버(12)와의 정보의 상호작용식 교환을 위해 클라이언트 디바이스(16)에서 사용자에 의해 개시된 이후, 클라이언트 디바이스(16)의 프로세서(20) 상에서 실행중인 클라이언트 애플리케이션(32)은 트립 부킹을 위해 출발지 및 목적지들에 관련된 상호작용식 폼(40) 내의 제어들(42, 43) 중 하나 또는 둘 다를 파퓰레이팅하기 위한 추천들을 리트리브할 수 있다. 일 실시예에서, 프로세서(20)는 로컬 캐시(38)로부터 추천들을 리트리브하고 제어들(42, 43)에서 이들 추천들을 제시할 수 있다. 대안적으로, 클라이언트 디바이스(16)는 서버(12)에 세션 개시를 전달하고 서버(12)의 프로세서에서 실행중인 추천 모듈(62)은 제어들(42, 43)에 대한 추천들이 추천 규칙 데이터베이스(82) 내의 추천 규칙들을 이용하여 결정되게 하고, 서버(12)로부터 클라이언트 디바이스(16)로 역으로 전달되게 할 수 있다. 소스에 무관하게, 클라이언트 애플리케이션(32)은 상호작용식 폼(40) 내의 제어들(42, 43)이 추천들 및 제어(42, 43)의 맥락에 대해 적절한 다른 값들로 파퓰레이팅되게 할 수 있으며, 값들은 선택적으로, 추천 값(들)을 보다 높게 랭크되게 제시하도록 정렬된다.
다른 예로서, 정보를 서버(12)와 상호작용식으로 교환하기 위해 클라이언트 디바이스(16)의 사용자에 의해 세션이 개시된 이후, 사용자는 트립 부킹을 위한 출발지를 표현하는 입력으로서의 텍스트 스트링으로 상호작용식 폼(40) 내의 제어(42)를 파퓰레이팅할 수 있다. 클라이언트 디바이스(16)의 프로세서(20)에서 실행중인 애플리케이션(32)은 트립 부킹을 위한 하나 이상의 목적지들과 관련된 상호작용식 폼(40) 내의 제어(43)를 파퓰레이팅하기 위해 로컬 캐시로부터 추천을 리트리브할 수 있다. 대안적으로, 클라이언트 디바이스(16)는 서버(12)에 출발지를 전달할 수 있고 서버(12)의 프로세서에서 실행중인 추천 모듈(62)은, 제어(43)에 대한 추천이, 추천 규칙 데이터베이스(82) 내의 추천 규칙들을 이용하여 결정되고 서버(12)로부터 클라이언트 디바이스(16)로 역으로 전달되게 한다. 서버(12)로부터 클라이언트 디바이스(16)에서 수신된 추천은, 출발지가 주어지면 가장 유망한 목적지에 대한 하나의 추천 값 또는 출발지가 주어지면 가장 유망한 목적지에 대한 다수의 추천 값들(즉, 다수의 추천된 목적지들)을 갖는 텍스트 스트링일 수 있다. 제어(43)는 추천 및 선택적으로는, 제어(43)의 맥락에 적절한 다른 값들로 파퓰레이팅될 수 있으며, 값들은 선택적으로는 추천 값(들)이 리스트에서 보다 높이 랭크되게 제시하도록 정렬된다. 사용자는 제어(43)에 대한 수동 입력 없이 그리고 값들의 리스트를 통한 스크롤링(scrolling) 없이 추천 값 또는 추천 값들 중 하나를 선택할 수 있다.
다른 예로서, 세션이 클라이언트 디바이스(16)에서 개시된 이후, 사용자는 출발지 및 목적지를 각각 표현하는 텍스트 스트링들로 제어들(42, 43)을 파퓰레이팅할 수 있고 출국 날자로 제어(44)를 파퓰레이팅할 수 있다. 클라이언트 디바이스(16)의 프로세서(20)에서 실행중인 애플리케이션(32)은 상호작용식 폼(40) 내의 제어(45)를 귀국 날자에 대한 추천으로 파퓰레이팅할 수 있다. 프로세서(20)는 클라이언트 디바이스(16)의 로컬 캐시(38)로부터 추천을 리트리브할 수 있다. 대안적으로, 클라이언트 디바이스(16)는 서버(12)로 사용자에 의해 입력된 제어들(42, 43, 44)에 대한 값들을 전달하고 서버(12)의 프로세서 상에서 실행중인 추천 모듈(62)은 제어(45)에 대한 추천이, 추천 규칙 데이터베이스(82) 내의 추천 규칙들을 이용하여 결정되고 클라이언트 디바이스(16)에 역으로 전달되게 한다. 추천의 날자 값은 추천 규칙 데이터베이스(82) 내의 추천 규칙들을 구축하는데 이용되는 사용자 입력들의 이력 값들에 기초하여 출발지, 목적지 및 출국 날자가 주어지면 가장 유망한 귀국 날자를 표현할 수 있다. 사용자는 귀국 날자를 선택하는 작업으로부터 완화될 수 있고 부킹 프로세스의 다음 단계로 직접 진행될 수 있다. 귀국 날자가 선택되지 않더라도, 제어(45)에서 귀국 날자를 수정하는 프로세스는, 예를 들어, 예측된 귀국 날자가 캘린더 상에서 현재 날자보다 실제 귀국 날자에 더 근접한 경우 단순하게 될 수 있다.
추천 규칙들에 기초하여 추천 값들은, 선택적으로 클라이언트 디바이스(16)에서 부분적 여행 검색 질의를 입력한 동시 사용자의 이력 데이터베이스(80)에서 개인 이력 데이터로부터 추천 값들과 결합되거나 그에 의해 조정될 수 있다. 결합을 하는 하나의 접근법은 클라이언트 디바이스(16)의 동시 사용자에 대한 추천 값 및 상호작용식 폼(40)의 모든 사용자들에 기초하여 각각의 추천 값의 가중화된 평균이다.
상호작용식 폼(40)의 각각의 연루된 제어를 위한 하나 이상의 추천들은, 서버(12)로부터 클라이언트 디바이스(16)로 역으로 전달된다(블록 110). 수신 시에, 클라이언트 디바이스(16)의 클라이언트 애플리케이션(32)은 각각의 추천에 기초하여 상호작용식 폼(40)을 적응시킨다(블록 112). 클라이언트 애플리케이션(32)은 서버(12)로부터 수신된 하나 이상의 추천 값들로 상호작용식 폼(40) 내의 특정한 연루된 제어를 파퓰레이팅하거나, 또는 하나 이상의 추천 값들 및 추천되지 않은 다른 값들로 상호작용식 폼(40) 내의 특정한 연루된 제어를 파퓰레이팅할 수 있다. 클라이언트 애플리케이션(32)은 또한 추천 값을 반영하도록 상호작용식 폼(40) 내의 특정한 연루된 제어의 상태를 변화시킬 수 있다.
클라이언트 디바이스(16)의 상호작용식 폼(40)의 사용자는 각각의 적응된 제어에서 나타나는 추천 값을 채택 또는 선택할 수 있다. 대안적으로, 사용자는 적응된 제어들 중 하나에 대한 비-추천 값을 입력할 수 있고, 그에 따라 추천들 간에 있지 않은 값을 선택할 수 있다. 예를 들어, 사용자는 적응된 제어를 파퓰레이팅하는 다수의 추천 값들(예를 들어, 목적지들)에서 하나의 추천 값(예를 들어, 목적지)을 선택할 수 있다. 추천은, 이용자에 의해 선택되지 않는 경우 조차도, 하나 이상의 제어들에 대한 선택을 하는데 있어 클라이언트 디바이스의 사용자를 또한 도울 수 있다. 예로서, 추천 값은 데이트 피커(date picker)에 배치되고 캘린더 상의 날자의 선택을 허용하는, 현재 날자와 상이한 날자일 수 있다. 추천 값이 선택되지 않는 경우조차도, 클라이언트 디바이스(16)의 사용자는 선택 프로세스를 용이하게 할 수 있는, 현재 날자보다 추천된 날자에 대해 시간적으로 더 근접한 날자를 날자 선택기를 이용하여 선택할 수 있다.
위에서 설명된 바와 같이 상호작용식 폼(40)의 제어들에 대한 추천 값들의 프로비전은 사용자가 상호작용식 폼(40)을 완성하는데 원조하며, 이에 따라 상호작용식 폼(40)의 완성 이전에 상호작용식 폼(40)을 채우는 과정에서 수행된다는 것이 주의된다. 예를 들어, 모든 제어들(42, 43, 44, 45, 46)의 값들에 의해 표현되는 완성된 여행 검색 질의(대안적인 실시예들에서, 완성된 여행 검색 질의는 제어들(42, 43, 44, 45, 46)의 서브세트에 의해 이미 인정될 수 있게 구성될 수 있음)는 검색이 상호작용식 폼(40) 내에 입력된 값들을 만족하는 트립에 대해 이행되도록 수행하는데 이용될 수 있다. 이를 위해, 클라이언트 디바이스(16)는 각각의 여행 서버로 완성된 여행 검색 질의를 전송한다. 결과들은 클라이언트 디바이스(16)에 전달되고 평가 및 잠재적으로 트립들 중 하나의 부킹을 위해 클라이언트 디바이스(16) 상에서 사용자에게 디스플레이될 수 있다.
도 6을 참조하면, 추천 규칙 데이터베이스에 대한 추천 규칙을 생성하기 위해 이력 데이터베이스(80)에 저장된 폼 데이터의 프로세싱이 설명될 것이다. 러닝 모듈(64)은 모든 클라이언트 디바이스 사용자의 풀에 의해 상호작용식 폼(40)의 다양한 제어들에서 이루어진 선택들을 열거하는(chronicles) 이력 데이터베이스(80)의 저장된 사용자 데이터에 액세스한다(블록 150). 러닝 모듈(64)은 추천 프로세스에 관련된 비즈니스 규칙들을 수신하도록 비즈니스 규칙 데이터베이스에 질의할 수 있다(블록 152). 러닝 모듈(64)은 추천 프로세스에 관련된 정적인 파라미터들을 수신하도록 파라미터 데이터베이스에 질의할 수 있다(블록 154). 러닝 모듈(64)의 하나 이상의 예측 알고리즘들은 추천 규칙들을 생성하기 위해 파라미터 데이터베이스 및 비즈니스 규칙 데이터베이스로부터의 정보와 함께 이력 사용자 데이터를 분석한다(블록 156). 추천 프로세스는 상호작용식 폼(40)의 제어들을 채울 때 사용자들의 행동에 기초할 수 있고, 인간 전문가 판단에 독립적일 수 있다. 그러나 인간 전문가 판단은 비즈니스 규칙들 및 정적 파라미터들을 통한 추천들에 영향을 주도록 이용될 수 있다. 이력 사용자 데이터는 위에서 논의된 바와 같이 추천 규칙을 정의하기 위해 이력 데이터베이스(80)에 저장된 제어들의 값들에 대한 데이터 세트의 크기로 어그리게이팅될 수 있다. 데이터 세트 크기에 따라, 어그리게이션 알고리즘은 추천들의 통계적 중요도를 개선하기 위해 점차 거친 입도에 따라 제어 값들을 어그리게이팅하도록 판단할 수 있다. 러닝 모듈(64)은 저장을 위해 추천 규칙 데이터베이스(82)에 이들 추천 규칙들을 공급한다(블록 158). 루틴은 이어서 종료한다(블록 160). 위에서 설명된 바와 같이, 추천 모듈(62)은 부분적 사용자 입력들에 기초하여 클라이언트 디바이스(16)의 사용자의 미래의 세션들 동안 상호작용식 폼(40)에서 제어들에 대한 값들을 제안하기 위해 추천 규칙 데이터베이스(82)의 추천 규칙들에 액세스한다.
본 발명의 실시예들을 구현하기 위해 서버(12) 및 클라이언트 디바이스(16)의 하나 이상의 프로세싱 유닛들에 의해 실행될 수 있는 루틴들 및/또는 명령어들은, 운영 체제 또는 특정한 애플리케이션, 컴포넌트, 프로그램, 객체, 모듈 또는 각각의 프로세싱 유닛에 의해 실행되는 동작들의 시퀀스의 부분으로서 구현되든지 간에, "프로그램 모듈들", "컴퓨터 프로그램 코드" 또는 단순히 "모듈들" 또는 "프로그램 코드"로서 본 명세서에서 지칭될 것이다. 일반적으로, 프로그램 모듈들은, 특정한 작업들을 수행하거나 특정한 추상 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들 컴포넌트들, 로직, 데이터 구조들 등을 포함할 수 있다. 본 발명의 양상들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 자바, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 프로시저 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어들의 임의의 결합으로 작성될 수 있다. 컴퓨터 코드가 루틴들, 프로시저들, 방법들, 모듈들, 객체들 등으로 구성될 수 있는 다수의 방식들은 물론, 프로그램 기능성이 통상적인 컴퓨터 내에 상주하는 다양한 소프트웨어 층들(예를 들어, 운영 체제들, 라이브러리들, API의 애플리케이션들, 애플릿들 등) 간에 할당된다고 것을 고려하면, 본 발명의 실시예들은 본 명세서에서 설명된 프로그램 기능성의 특정한 구성 및 할당으로 제한되지 않는다는 것이 인지되어야 한다.
본 명세서에서의 흐름도들, 블록도들 및 순서도들은 본 발명의 다양한 실시예들에 따라 시스템들, 방법들 및 컴퓨터 프로그램 물건들의 가능한 구현들의 아키텍처, 기능성 및 동작을 예시한다. 이것에 관하여, 흐름도, 블록도 또는 순서도의 각각의 블록은 특정한 로직 함수(들) 및/또는 작동(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어들을 포함하는 프로그램 코드의 세그먼트 또는 부분을 표현할 수 있다. 프로그램 코드는 컴퓨터 구현 프로세스를 생성하기 위해 컴퓨터, 다른 프로그래밍 가능한 장치 또는 다른 디바이스 상에서 일련의 동작 단계들이 수행되게 하기 위해 컴퓨터, 다른 프로그래밍 가능한 데이터 프로세싱 장치들 또는 다른 디바이스 상에 로딩되어서, 컴퓨터 또는 다른 프로그래밍 가능한 장치 상에서 실행되는 명령어들이 본 명세서에서의 흐름도들, 순서도들 및/또는 블록도들의 블록들에서 특정되는 함수들/작동들을 구현하기 위한 프로세스들을 제공하게 한다. 특정한 대안적인 구현들에서, 블록에서 언급되는 함수들은 도시되고 설명된 것과 상이한 순서로 발생할 수 있다. 예를 들어, 연속적으로 실행되는 것으로 설명되고 도시되는 블록들의 쌍은, 관련된 기능성에 의존하여, 대신 동시에 수행될 수 있거나, 또는 2개의 블록들이 역순으로 때때로 실행될 수 있다. 각각의 블록 및 블록들의 결합들은 특수 목적 하드웨어 및 컴퓨터 명령어들의 특정한 함수들, 또는 작동들 또는 이들의 결합들을 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다.
본 명세서에서 설명된 애플리케이션들 중 임의의 것에서 실현되는 프로그램 코드는 다양한 상이한 형태들의 프로그램 물건으로서 개별적으로 또는 집합적으로 분배될 수 있다. 특히, 프로그램 코드는 컴퓨터 판독 가능한 저장 매체들 및 통신 매체들을 포함할 수 있는 컴퓨터 판독 가능한 매체들을 이용하여 분배될 수 있다. 본질적으로 비-일시적인 컴퓨터 판독 가능한 저장 매체들은 컴퓨터-판독 가능한 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비-휘발성 및 이동식 및 고정식 유형의 매체들을 포함할 수 있다. 컴퓨터 판독 가능한 저장 매체들은 추가로 RAM, ROM, 소거 가능한 프로그래밍 가능한 판독 전용 메모리(erasable programmable read-only memory; EPROM), 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(electrically erasable programmable read-only memory; EEPROM), 플래시 메모리 또는 다른 고상 메모리 기술, 휴대용 콤팩트 디스크 판독 전용 메모리(compact disc read-only memory; CD-ROM) 또는 다른 광학 저장소, 자기 카세트들, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스, 또는 컴퓨터에 의해 판독될 수 있고, 원하는 정보를 저장하는데 이용될 수 있는 임의의 다른 매체를 더 포함할 수 있다. 통신 매체들은 컴퓨터 판독 가능한 명령어들, 데이터 구조들 또는 다른 프로그램 모듈들을 실현할 수 있다. 제한이 아닌 예로서, 통신 매체들은 유선 네트워크 또는 직접-유선 연결과 같은 유선 매체들, 및 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체들을 포함할 수 있다. 이들의 임의의 결합들이 또한 컴퓨터 판독 가능한 매체들의 범위 내에 포함될 수 있다.
본 명세서에서 이용된 용어는 특정한 실시예들을 단지 설명하기 위한 것이고 본 발명의 실시예들의 제한으로 의도되지 않는다. 본 명세서에서 이용된 바와 같이, 단수형태는, 문맥에서 달리 명확히 표시되지 않는 한, 복수 형태를 포함하도록 의도된다. "포함하다" 및/또는 "포함하는"이란 용어들은, 본 명세서에서 이용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 엘리먼트 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹의 존재 또는 부가를 배제하지 않는다는 것이 추가로 이해될 것이다. 또한, 용어 "포괄하는", "갖는", "구비한", "구성되는" 또는 이들의 변형들의 용어들은 상세한 설명 또는 청구항 중 어느 하나에서 이용되는 한, 이러한 용어들은 "포함하는" 이란 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
본 발명이 다양한 실시예들의 설명에 의해 예시되고 이들 실시예들이 상당히 상세히 설명되었지만, 출원인들은 이러한 세부사항들로 첨부된 청구항들의 범위를 어떠한 방식으로도 제한하거나 한정하도록 의도하는 것은 아니다. 부가적인 이점들 및 변형들은 당업자들에게 쉽게 나타나게 될 것이다. 예를 들어, 본 발명의 실시예들은 상호작용식 폼들 및 상호작용식 폼 흐름들에 또한 매우 의존하는 여정 관리, 항공편 상태와 같이 여행 부킹 및 여행 검색 질의들 이외의 다른 여행-관련 애플리케이션들과 함께 이용될 수 있다. 광의의 양상들에서 본 발명은 이에 따라 도시되고 설명된 특정한 세부사항들, 대표적 방법들 및 예시적인 예들로 제한되지 않는다. 이에 따라 출원인의 일반적인 진보적인 개념의 사상 및 범위로부터 벗어남 없이 이러한 세부사항들로부터의 변경들이 이루어질 수 있다.

Claims (18)

  1. 상호작용식 폼(interactive form)과 상호작용하는 방법에 있어서,
    서버에서, 상호작용식 폼(interactive form)의 복수의 제어들에 대한 복수의 값들을 수신하는 단계로서, 각각의 값은 복수의 사용자들 각각에 의해 상기 상호작용식 폼의 상기 제어들 중 하나의 제어 내로 입력되는 여행-관련 검색 질의의 부분을 포함하는 것인, 상기 복수의 값 수신 단계;
    상기 서버에서, 상호관련된 제어들에 대한 상기 값들에 기초하여 복수의 추천 규칙들을 결정하는 단계로서, 각각의 추천 규칙은 상호관련된 제어들 중 2개 이상의 제어들을 논리적으로 연결하는 것인, 상기 복수의 추천 규칙 결정 단계;
    이력 데이터베이스 내의 협력적 이력 데이터를 이용하여 상기 복수의 추천 규칙들을 컴퓨팅하는 단계; 및
    데이터 세트의 크기가 문턱값 미만이면, 거친 입도(coarse granularity)의 증가에 따라 상기 이력 데이터베이스 내의 상기 협력적 이력 데이터 내에 적어도 하나의 데이터 세트를 어그리게이팅(aggregating)하는 단계로서, 상기 증가하는 거친 입도에 기초한 상기 적어도 하나의 데이터 세트의 어그리게이션(aggregation)은 상기 복수의 추천 규칙들의 통계적 중요도를 개선하는 것인, 어그리게이팅 단계를 포함하는, 상호작용식 폼과 상호작용하는 방법.
  2. 제1항에 있어서,
    상기 서버에서, 상기 추천 규칙들을 이용하여 상기 상호작용식 폼의 제어들 중 하나의 제어에 대한 적어도 하나의 추천 값을 생성하는 단계; 및
    상기 서버로부터 클라이언트 디바이스로 적어도 하나의 추천 값을 전달하는 단계를 더 포함하는, 상호작용식 폼과 상호작용하는 방법.
  3. 제2항에 있어서,
    상기 클라이언트 디바이스의 로컬 캐시 내에 상기 적어도 하나의 추천 값을 저장하는 단계를 더 포함하는, 상호작용식 폼과 상호작용하는 방법.
  4. 제1항에 있어서,
    상기 서버로부터 클라이언트 디바이스로 상기 추천 규칙들 중 적어도 하나의 추천 규칙을 전달하는 단계; 및
    상기 추천 규칙들 중 상기 적어도 하나의 추천 규칙을 이용하여 상기 클라이언트 디바이스에서 상기 제어들 중 하나의 제어에 대한 적어도 하나의 추천 값을 생성하는 단계를 더 포함하는, 상호작용식 폼과 상호작용하는 방법.
  5. 제1항에 있어서,
    각각의 여행-관련 검색 질의는 클라이언트 디바이스로부터 수신되고, 상기 추천 규칙들은 각각의 여행-관련 검색 질의의 수신 시간에 관하여 비동기적으로 결정되는 것인, 상호작용식 폼과 상호작용하는 방법.
  6. 제1항에 있어서,
    상기 서버에서 수신된 상기 값들을 데이터베이스 내에 저장하는 단계를 더 포함하고,
    상기 서버는 상기 데이터베이스로부터 상기 값들을 판독하여 상기 추천 규칙들을 결정하는 것인, 상호작용식 폼과 상호작용하는 방법.
  7. 제6항에 있어서,
    상기 값들은 다른 크기의 복수의 중첩되는 지리적인 영역들에 대하여 어그리게이팅된 데이터로서 저장되는 것인, 상호작용식 폼과 상호작용하는 방법.
  8. 제1항에 있어서, 상기 서버에서, 제어들에 대한 상기 값들에 기초하여 상기 추천 규칙들을 결정하는 단계는,
    복수의 미리 정의된 비즈니스 규칙들과 복수의 정적 파라미터들을 상기 서버에서 적용하여 상기 추천 규칙들을 결정하는 단계를 포함하는, 상호작용식 폼과 상호작용하는 방법.
  9. 제1항에 있어서, 상기 서버에서, 제어들에 대한 상기 값들에 기초하여 상기 추천 규칙들을 결정하는 단계는,
    예측 알고리즘을 적용하여, 상기 제어들에 대한 상기 값들 사이의 확률론적 관계들에 기초하여 상기 추천 규칙들을 컴퓨팅하는 단계를 포함하는, 상호작용식 폼과 상호작용하는 방법.
  10. 컴퓨터 판독 가능한 저장 매체에 있어서,
    상기 컴퓨터 판독 가능한 저장 매체 상에 저장되는 프로그램 코드를 포함하고,
    상기 프로그램 코드는 적어도 하나의 프로세서에 의한 실행 시에,
    서버에서, 상호작용식 폼(interactive form)의 복수의 제어들에 대한 복수의 값들을 수신하고 - 각각의 값은 복수의 사용자들 각각에 의해 상기 상호작용식 폼의 상기 제어들 중 하나의 제어 내로 입력되는 여행-관련 검색 질의의 부분을 포함함 - ;
    상기 서버에서, 상호관련된 제어들에 대한 상기 값들에 기초하여 복수의 추천 규칙들을 결정하고 - 각각의 추천 규칙은, 상호관련된 제어들 중 2개 이상의 제어들을 논리적으로 연결함 - ;
    이력 데이터베이스 내의 협력적 이력 데이터를 이용하여 상기 복수의 추천 규칙들을 컴퓨팅하고;
    데이터 세트의 크기가 문턱값 미만이면, 거친 입도(coarse granularity)의 증가에 따라 상기 이력 데이터베이스 내의 상기 협력적 이력 데이터 내에 적어도 하나의 데이터 세트를 어그리게이팅(aggregating) - 상기 증가하는 거친 입도에 기초한 상기 적어도 하나의 데이터 세트의 어그리게이션(aggregation)은 상기 복수의 추천 규칙들의 통계적 중요도를 개선함 - 함으로써 복수의 추천 규칙들을 결정하도록 구성되는 것인, 컴퓨터 판독 가능한 저장 매체.
  11. 클라이언트 디바이스에서 이용하기 위한 장치에 있어서,
    프로세서를 포함하는 서버; 및
    상호작용식 폼과 상호작용하기 위해 상기 프로세서에 의해 실행되도록 구성되는 프로그램 코드를 포함하고,
    상기 프로그램 코드는 상기 프로세서로 하여금,
    상기 상호작용식 폼의 복수의 제어들에 대한 복수의 값들을 수신하고, 이력 데이터베이스 내의 협력적 이력 데이터를 이용하여 상호관련된 제어들에 대한 상기 값들에 기초하여 복수의 추천 규칙들을 결정하게 하도록 구성되며,
    각각의 값은 상기 상호작용식 폼의 복수의 사용자들에 의해 상기 제어들 중 하나의 제어 내로 입력되는 여행-관련 검색 질의의 부분을 표현하며, 각각의 추천 규칙은, 상호관련된 제어들 중 2개 이상의 제어들을 논리적으로 연결하는 것이며,
    상기 프로그램 코드는 상기 프로세서로 하여금,
    데이터 세트의 크기가 문턱값 미만이면, 거친 입도(coarse granularity)의 증가에 따라 상기 이력 데이터베이스 내의 상기 협력적 이력 데이터 내에 적어도 하나의 데이터 세트를 어그리게이팅(aggregating)하게 하도록 구성되며,
    상기 증가하는 거친 입도에 기초한 상기 적어도 하나의 데이터 세트의 어그리게이션(aggregation)은 상기 복수의 추천 규칙들의 통계적 중요도를 개선하는 것인, 장치.
  12. 제11항에 있어서,
    상기 프로세서로 하여금, 상기 추천 규칙들을 이용하여 상기 상호작용식 폼의 제어들 중 하나의 제어에 대한 적어도 하나의 추천 값을 생성하게 하도록 구성되는 프로그램 코드; 및
    상기 프로세서로 하여금, 상기 서버로부터 클라이언트 디바이스로 적어도 하나의 추천 값을 전달하게 하도록 구성되는 프로그램 코드를 더 포함하는 장치.
  13. 제11항에 있어서,
    상기 프로세서에 커플링되는 추천 규칙 데이터베이스; 및
    상기 프로세서로 하여금 상기 추천 규칙 데이터베이스 내에 상기 추천 규칙들을 저장하게 하도록 구성되는 프로그램 코드를 더 포함하는 장치.
  14. 제11항에 있어서,
    상기 프로세서로 하여금 상기 서버로부터 클라이언트 디바이스로 상기 추천 규칙들 중 적어도 하나의 추천 규칙을 전달하게 하도록 구성되는 프로그램 코드를 더 포함하는 장치.
  15. 제11항에 있어서,
    상기 서버에 커플링되는 데이터베이스를 더 포함하고,
    상기 데이터베이스는 상기 서버에서 수신된 상기 값들을 저장하도록 구성되며, 상기 서버는 상기 데이터베이스로부터 상기 값들을 판독하여 상기 추천 규칙들을 결정하도록 구성되는 것인 장치.
  16. 제15항에 있어서,
    상기 데이터베이스는 다른 크기의 복수의 중첩되는 지리적인 영역들에 대하여 어그리게이팅된 데이터로서 상기 값들을 저장하는 것인 장치.
  17. 제11항에 있어서,
    복수의 미리 정의된 비즈니스 규칙들을 포함하는 제1 데이터베이스; 및
    복수의 정적 파라미터들을 포함하는 제2 데이터베이스를 더 포함하고,
    상기 프로세서는 상기 제1 데이터베이스의 미리 정의된 비즈니스 규칙들과 상기 제2 데이터 베이스의 정적 파라미터들에 기초하여 상기 추천 규칙들을 결정하는 것인 장치.
  18. 제11항에 있어서,
    상기 프로세서로 하여금 상호관련된 제어들에 대한 상기 값들에 대하여 상기 상호관련된 제어들에 관련된 추천 규칙들을 결정하게 하도록 구성되는 프로그램 코드는,
    상기 프로세서로 하여금 예측 알고리즘을 적용하여, 상기 제어들에 대한 상기 값들 사이의 확률론적 관계들에 기초하여 상기 추천 규칙들을 컴퓨팅하게 하도록 구성되는 프로그램 코드를 더 포함하는 장치.
KR1020157019482A 2012-12-17 2013-12-12 상호작용식 검색 폼을 위한 추천 엔진 KR101676219B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13/716,882 2012-12-17
US13/716,864 US9268759B2 (en) 2012-12-17 2012-12-17 Recommendation engine for interactive search forms
EP12290442.8A EP2743875A1 (en) 2012-12-17 2012-12-17 Recommendation engine for interactive search forms
EP12290442.8 2012-12-17
US13/716,882 US9201856B2 (en) 2012-12-17 2012-12-17 Recommendation engine for interactive search forms
US13/716,864 2012-12-17
PCT/EP2013/003758 WO2014095008A1 (en) 2012-12-17 2013-12-12 Recommendation engine for interactive search forms

Publications (2)

Publication Number Publication Date
KR20150097744A KR20150097744A (ko) 2015-08-26
KR101676219B1 true KR101676219B1 (ko) 2016-11-14

Family

ID=49759255

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157019482A KR101676219B1 (ko) 2012-12-17 2013-12-12 상호작용식 검색 폼을 위한 추천 엔진

Country Status (6)

Country Link
JP (1) JP6328135B2 (ko)
KR (1) KR101676219B1 (ko)
CN (1) CN104854609B (ko)
AU (1) AU2013362233B2 (ko)
CA (1) CA2893806C (ko)
WO (1) WO2014095008A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160125175A (ko) * 2015-04-21 2016-10-31 네이버 주식회사 서버 장치,사용자 단말 및 이들에 의한 항공권 정보 제공 방법
US10257256B2 (en) * 2016-01-20 2019-04-09 Google Llc IOT interaction system
CN106530010B (zh) * 2016-11-15 2017-12-12 平安科技(深圳)有限公司 融合时间因素的协同过滤方法和装置
CN109240693A (zh) * 2018-11-23 2019-01-18 四川长虹电器股份有限公司 一种基于react的多条件组合搜索控件的创建方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012043366A (ja) * 2010-08-23 2012-03-01 Canon Inc データ検索装置、データ検索方法及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578022B1 (en) * 2000-04-18 2003-06-10 Icplanet Corporation Interactive intelligent searching with executable suggestions
KR100390929B1 (ko) * 2000-06-07 2003-07-10 주식회사 마이디지털 인터넷을 이용한 여행 상품 검색 시스템 및 이를 이용한여행 상품 추천 방법
JP2002024256A (ja) * 2000-07-03 2002-01-25 Fujitsu Ltd 情報処理システムおよび情報入力支援プログラム記憶媒体
JP2004287874A (ja) * 2003-03-24 2004-10-14 Hitachi Ltd データ分析方法および営業支援システム
CN100410922C (zh) * 2005-01-28 2008-08-13 联想(北京)有限公司 用户信息管理系统及方法
CN101233508B (zh) * 2005-06-03 2012-07-04 奥姆尼图雷有限公司 单击分段定义
JP4958476B2 (ja) * 2006-05-24 2012-06-20 株式会社日立製作所 検索装置
US7890442B2 (en) * 2006-10-20 2011-02-15 International Business Machines Corporation Method and system for autocompletion of multiple fields in electronic forms
US7647353B2 (en) * 2006-11-14 2010-01-12 Google Inc. Event searching
KR20100063833A (ko) * 2008-11-25 2010-06-14 주식회사 케이티 컨텐츠 추천 조건의 모니터링을 통해 컨텐츠를 추천하는 장치 및 방법
EP2224358A1 (en) * 2009-02-27 2010-09-01 AMADEUS sas Graphical user interface for search request management
US9009145B2 (en) * 2010-08-04 2015-04-14 Amadeus S.A.S. Travel booking method and system
KR101598620B1 (ko) * 2010-11-17 2016-03-02 네이버 주식회사 사용자별 관심 주기를 이용하여 전송하기 위한 광고를 결정하는 광고 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012043366A (ja) * 2010-08-23 2012-03-01 Canon Inc データ検索装置、データ検索方法及びプログラム

Also Published As

Publication number Publication date
JP2016505951A (ja) 2016-02-25
CN104854609B (zh) 2019-04-12
JP6328135B2 (ja) 2018-05-23
CN104854609A (zh) 2015-08-19
AU2013362233B2 (en) 2016-07-21
CA2893806A1 (en) 2014-06-26
WO2014095008A1 (en) 2014-06-26
AU2013362233A1 (en) 2015-07-09
KR20150097744A (ko) 2015-08-26
CA2893806C (en) 2020-12-29

Similar Documents

Publication Publication Date Title
US9201856B2 (en) Recommendation engine for interactive search forms
CN105320766B (zh) 信息推送方法和装置
CN104169950B (zh) 利用面向批处理的计算的数据库系统
JP6129953B2 (ja) 旅行関連検索結果の分類およびランク付け
US20130290324A1 (en) Categorizing and ranking travel-related database query results
CN110334289B (zh) 出行目的地的确定方法和目标用户的确定方法
KR101676219B1 (ko) 상호작용식 검색 폼을 위한 추천 엔진
CA2944652A1 (en) Inference model for traveler classification
AU2018299827B2 (en) System and method for dynamically delivering content
US7707202B2 (en) Method and system for improving a reservation or a purchase process of an entity
EP2171656A1 (en) A method and system for searching for availability of an entity for purchase or reservation
JP6641529B1 (ja) 検索システム、検索方法、及びプログラム
US20210133641A1 (en) Multi-passenger and multiattribute travel booking platform
US9268759B2 (en) Recommendation engine for interactive search forms
CN105373310B (zh) 基于用户操作实时更新页面的方法和装置
JP6646791B1 (ja) 検索システム、検索方法、及びプログラム
EP3540606B1 (en) Product delivery system and method
EP2743875A1 (en) Recommendation engine for interactive search forms
KR102679809B1 (ko) 아이템 추천 방법 및 장치
FR3079040A1 (fr) Systeme et procede de fourniture de produits
Daheche et al. Development of Numidia Tours Travel Agency Online Management System for Saving Client’s Time
JP2017084358A (ja) 多目的地旅行計画方法
US20240184776A1 (en) Device, system and method for reducing bandwidth usage by performing provider object adjustments at an intermediation server based on historical data
CN116957724A (zh) 一种航司辅营产品推荐方法和装置
WO2024142016A1 (en) System and method for integrated temporal external resource allocation

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