図1に示されているように、コンピュータ化予約システム(CRS)10は、サーバー12およびサーバー12と通信ネットワーク14を介して通信するように結合されたクライアントデバイス16を備える。CRS10は、情報の格納および取り出しを行い、飛行機旅行のオンライン検索、ブッキング、および購入などの、物とサービスに関係するオンライン取引を実施するために使用され得る。飛行機旅行に関して、CRS10は、所定の旅行プランの条件を満たす特定のフライトを識別することによって旅行検索クエリに応答し、それらのフライトを予約するか、または予約をブッキングするように構成される。CRSは、航空運賃、スケジュール、および利用できる座席数および他のデータへのリアルタイムアクセスを可能にする専用コンピュータシステムであってよく、またブッキングをするために、旅行代理店、オンライン旅行会社、および旅行事業会社などの旅行会社によってアクセスされ得る。CRS10は、横断的販売網(GDS)で具現化されるものとしてよく、これは、複数の航空会社に対する航空券、さらにはホテル、レンタカーなどの他の旅行関係商品のブッキングおよび販売を行う一種のCRSである。
クライアントデバイス16のリモートにあるサーバー12は、一般的に、ローカルおよび/またはリモートに配置され、サーバー12に関連付けられている1つまたは複数のオペレーションを実行するように構成された1つまたは複数の相互接続されたコンピューティングデバイス/システムを備えることができる。通信ネットワーク14は、一般的に、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆通信回線(例えば、インターネットサービスプロバイダを利用するインターネット)、エンタープライズプライベートネットワーク、セルラーネットワーク、および/またはこれらの組み合わせを含む、1つまたは複数の相互接続された通信ネットワークを含む。サーバー12とクライアントデバイス16とを接続するインターフェースは、ユーザーデータグラムプロトコル/インターネットプロトコル(UDP/IP)、および/または伝送制御プロトコル/インターネットプロトコル(TCP/IP)などの、情報をネットワーク14上で交換し、通信するためのルールおよびデータ形式を定義する1つまたは複数の好適な通信プロトコルを採用するものとしてよい。
与えられたセッションにおいて、クライアントデバイス16のユーザーは、旅行プランを立てる代表的な目的のためにサーバー12と通信ネットワーク14上で通信しているものとしてよい。しかし、単一のクライアントデバイス16が図1に示されているが、複数の異なるユーザーが異なるクライアントデバイス16を使用して同じ目的のためにサーバーと通信することができることは理解される。複数の異なるユーザーは、情報を同じインタラクティブフォーム40(図3)のフィールドまたはコントロールに入力することによって旅行検索クエリを作成することを目的としてサーバー12と通信するユーザーのプールを構成する。
簡単に言うと、ユーザーによってクライアントデバイス16におけるインタラクティブフォーム40のフィールドまたはコントローラに入力された値は、ネットワーク14上でサーバー12に伝達される。サーバー12における推奨モジュール62は、受信されたコントロール値を履歴データベース80内に格納し、双方向矢印13によって示されているように、履歴データベース80から格納されている値を取り出すことができる。格納されている値は、ユーザープリファレンスおよびユーザー履歴を確立するために履歴データベース80のレコードに載っている特定のユーザーに関連付けられ得る。サーバー12における推奨モジュール62は、推奨ルールデータベース64にクエリを実行して、推奨ルールデータベース64に格納されている推奨ルールセットにアクセスし、インタラクティブフォーム40のコントロールに対する推奨の形態で提案を論理的に生成する。取り出された推奨ルールは、クエリの照合を行い、推奨ルールが確立されているインタラクティブフォーム40における相互に関係付けられたコントロールを反映する。推奨ルールデータベース82のクエリは、図1の双方向矢印15によって表される。推奨は、比較的高い確率の予測されるコントロール値を表し、インタラクティブフォーム40のユーザーが例えば旅行ブッキングクエリ(trip booking query)を生成するのに必要なインタラクティブフォーム40の1つまたは複数のコントロールに対する値を選択する必要を省くために利用され得る。推奨は、サーバー12からクライアントデバイス16に伝達され、インタラクティブフォーム40を適応させるためにクライアントデバイス16によって使用される。推奨プロセスは、コントロール値のユーザー入力およびクライアントデバイス16からの連続的データフローと同期し得る。監視モジュール66は、受信されたコントロール値を監視するために推奨モジュール62のオペレーションと連携して以下で説明されているように機能する。
学習モジュール64は、履歴データベース80にクエリを実行して、矢印17に示されているように、インタラクティブフォーム40のコンロールに対する履歴的ユーザー入力項目の格納されている値を取り出す。学習モジュール64は、アルゴリズムを使用して、インタラクティブフォーム40の相互に関係付けられたコントロールに対する推奨ルールを計算する。学習モジュール64は、双方向矢印19に示されているようなビジネスルールデータベース84に格納されている予め定義されたビジネスルールおよび/または双方向矢印21によって示されているようなパラメータデータベース86に格納されている静的パラメータにアクセスすることができる。学習モジュール64は、矢印23に示されているように、新しい推奨ルールを挿入し、既存の推奨ルールを更新または削除することによって推奨ルールデータベース82の内容を操作するように構成される。学習モジュール64によって計算されるそれぞれの推奨ルールは、相互に関係付けることが論理的に可能である異なるコントロールを相互に関係付ける。
同じ番号は図1における同じ特徴を指している図2に示されているように、クライアントデバイス16は、本発明の実施形態と一致する1つまたは複数のオペレーションを実行する、および/またはそれらのオペレーションをクライアントデバイス16のコンポーネントに実行させるための1つまたは複数の命令を実行するように構成された1つまたは複数の処理ユニット20を備える。クライアントデバイス16は、典型的にはインタラクティブフォーム40と相互作用して旅行関係検索クエリを実行するために使用される携帯電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータなどの任意の種類の電子デバイスであってよい。
クライアントデバイス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から読み出せるプログラムコードとして格納されている1つまたは複数の命令を備える。これらの命令は、処理ユニット20によって実行されたときに、それぞれの処理ユニット20に、1つまたは複数のオペレーションを実行しそれによって本発明のさまざまな実施形態を具現化するステップ、要素、および/またはブロックを実行するのに必要なステップを実行させることができる。
メモリ30は、コンピュータのメインストレージ、さらには補助的レベルのメモリ、例えば、キャッシュメモリ、不揮発性もしくはバックアップメモリ(例えば、プログラム可能もしくはフラッシュメモリ)、大容量ストレージメモリ、リードオンリーメモリ(ROM)などを含むランダムアクセスメモリ(RAM)を代表するものとしてよい。それに加えて、メモリ30は、別の場所に物理的に配置されているメモリストレージ、例えば、クライアントデバイス16と通信するコンピューティングシステムのプロセッサ内のキャッシュメモリ、さらにはクライアントデバイス16と通信するコンピューティングシステム上のストレージデバイス(例えば、リモートストレージデータベース、リモートコンピューティングデバイスのメモリデバイス、クラウドストレージなど)を含むことが企図され得る。
メモリ30内のクライアントアプリケーション32は、クライアントデバイス16上のローカルで実行され、そのプログラムコードは、それぞれの処理ユニット20によって実行されたときに、インタラクティブフォーム40(図3)の作成およびオペレーションを容易にする命令を含み得る。インタラクティブフォーム40は、クライアントデバイス16のユーザーとクライアントデバイス16のリモートの場所に配置されているサーバー12との間のインターフェースを形成する。したがって、ユーザーは、ディスプレイ24に表示されるインタラクティブフォーム40(図3)と相互作用することができる。
クライアントアプリケーション32は、インタラクティブフォーム40をクライアントデバイス16のディスプレイ24に表示してユーザーに示すことができる。インタラクティブフォーム40は、フォーム40に対する情報およびアクションがグラフィカルアイコンおよび視覚的インジケータを通じてクライアントデバイス16のユーザーに利用可能であるグラフィカルユーザーインターフェースに表示され得る。例えば、インタラクティブフォーム40は、オペレーティングシステム34に関連付けられ、ウェブ閲覧機能を実現したソフトウェアアプリケーションによって構成され得る、ブラウザ50(図3)上にウェブページとして表示されるものとしてよい。ブラウザ50は、携帯電話またはタブレットなどの、モバイルデバイス上で使用するように特に設計されているモバイルブラウザを含み得る。ハイパーテキストマークアップ言語(HTML)などのマークアップ言語で、ブラウザ50に表示するためのインタラクティブフォーム40を作成する。例えば、マークアップ言語は、インタラクティブフォーム40の挙動に影響を及ぼすスクリプト言語からのスクリプトを埋め込むことができる。代替的に、クライアントアプリケーション32は、スマートフォン、タブレットコンピュータ、または他のモバイルデバイス上で実行するように設計され、ネットワークアクセス可能な場所(例えば、モバイルアプリケーションストアまたはアクセス可能なデータベース、コンピュータ可読記憶媒体など)などのアプリケーション配布プラットフォームからダウンロードされるモバイルアプリケーション(すなわち、モバイルアプリ)も含み得る。
クライアントデバイス16は、処理ユニット20からアクセス可能なローカルキャッシュ38をさらに備えることができる。ローカルキャッシュ38は、例えばサーバー12から受信されるデータのコピーをローカルに格納するように構成されたメモリ30の1セクションであってもよい。
図3に示されているように、インタラクティブフォーム40は、ユーザーがクライアントデバイス16でデータを入力し、次いで、入力されたデータを処理のためネットワーク14上でサーバー12に伝達することを可能にする。アクティブフォーム40は、さまざまな異なるユーザーインターフェース要素、特に、コントロール値などの内容のユーザー入力を容易にするコントロール42、43、44、45、46の形態のユーザーインターフェース要素を備えることができる。追加のコントロール(図示せず)は、インタラクティブフォーム40のインターフェース要素として表示され得る。インタラクティブフォーム40に入力されるデータは、代表的な実施形態において説明されているような旅行ブッキングを目的とする旅行検索クエリなどの旅行に関係付けられたものであってよい。しかし、インタラクティブフォームにも大きく依存する旅行プラン管理、フライト状況などの他の種類の旅行関係アプリケーション、およびインタラクティブフォームフローは、本発明の実施形態の恩恵を受け得る。
コントロール42、43、44、45、46は、ボタン、スライダー、スピナー、リストボックス、ドロップダウンリスト、およびコンボボックスを含み得る。それぞれのコントロールは、コントロールに対する値として入力され得る対象にテキストによるコンテキストを付与する1つまたは複数のラベルもしくはキャプションを備えることができる。インタラクティブフォーム40上のコントロール42、43、44、45、46は、ユーザー入力値を含む新しいデータに対する入力テンプレートとして機能し、例えば、サーバー12から供給されるコントロール値からインタラクティブフォーム40に供給されるデータを表示することができる。
ボタンは、アクションを実行するためにクリックされ得るコントロールである。代表的なボタンとして、限定はしないが、オプションの選択または選択解除(すなわち、トグル)するためにクリックされ得るチェックボックス、一度に1つのオプションを選択できるオプション群の選択からオプションを選択するためにクリックされ得る一組のラジオボタン、および典型的には何らかの既定のアクションを伴う、ボタンの機能を関係する二次アクションを促すドロップダウンリストと組み合わせるスプリットボタンが挙げられる。
スライダーは、項目に対する値を選択するために垂直方向または水平方向に移動され得るインジケータを有するか、または2つのインジケータが存在する場合、項目に対する値の範囲の選択を可能にするダブルスライダーを含む。スピナーは、ユーザーが値の範囲内を一段ずつ辿ることを可能にする上向き矢印および下向き矢印ボタンを持つ値入力コントロールである。
リストボックスでは、ユーザーは、静的な複数行テキストボックス内に含まれるリストから1つまたは複数の項目を選択することができる。ドロップダウンリストは、ユーザーが選択できる項目のリストが表示されるという点でリストボックスに類似している。リストボックスと異なり、ドロップダウンリストは、リストの項目を示すために永続的に展開されたままにされず、その代わりに動的である。ドロップダウンリストが非アクティブである場合、単一の項目が表示される。ドロップダウンリストがアクティブ化された場合、ユーザーが項目を1つ選択できる項目のリストが表示される。ユーザーが新しい項目を選択した後、ドロップダウンリストは、非アクティブ状態に戻り、選択された値を表示する。コンボボックスは、ユーザーが項目のリストから1つまたは複数の入力項目を消せるように編集可能なテキスト入力フィールドをリストボックスと組み合わせるドロップダウンリストの変更形態である。
フォームは、1つまたは複数のテキストボックスを備えることもできる。テキストボックスは、編集可能なテキスト入力フィールドに関連付けられ、ユーザーがインタラクティブフォーム40内にテキストの1つまたは複数の行もしくは文字列を値として入力することを可能にする。ユーザーは、キーボードを使用してテキストを入力し、キーボード、マウス、またはタッチスクリーンを使用してテキストの一部分をナビゲートし、選択し、すでに入力されているテキストを編集することができる。
インタラクティブフォーム40のコントロール42、43、44、45、46は、旅行特有のコントロールを含み得る。旅行特有のコントロールの種類の1つは、名前もしくは国際航空運送協会(IATA)コードによる特有の場所の選択を容易にする旅行検索クエリに対する出発地または旅行検索クエリに対する目的地などの場所に対するオートコンプリート選択グループである。他の旅行特有のコントロールとして、限定はしないが、幼児の数を選択するために使用されるインファントセレクター(infant selector)、旅行が往復であるかどうかを選択する往復トグル、日付の選択を可能にするカレンダーコントロールを備える日付ピッカー、日付範囲の選択を可能にするカレンダーコントロールである開始および終了日付ピッカー、12時間または24時間セレクターを備える時間スライダー、ダブルスライダーのインタラクティブフォーム40内の時間範囲セレクター、ユーザーが旅行に対する特別な好みを入力することを可能にする特別サービス要求セレクター、ならびにサービスキャビンセレクター(service cabin selector)(エコノミー、ビジネスクラスなど)が挙げられる。
コントロール42、43、44、45、46のうちの特定の1つに対する1つまたは複数の選択肢が、ディスプレイ24および/または外部デバイス26(図2)を使用してユーザーによって指示され、および/または選択され得る。選択を行うために、ユーザーは、キーボード上のキーを押下することによってコントロールに対する値を選択するか、またはマウスのボタンをクリックし、キーボードもしくはマウスを使用する、指先もしくは電気機械的入力デバイスでディスプレイ54の画面にタッチする、音声認識システムに話しかけるなどによってカーソルを位置決めすることができる。
インタラクティブフォーム40は、インタラクティブフォーム40の動的作成および修正を可能にするように、Java(登録商標)Scriptなどのスクリプト言語を通じて制御され、機能を充実化することができる。特に、スクリプト言語は、コントロール42、43、44、45、46の内容および視覚的挙動に影響を及ぼす機能を有する。例えば、チェックボックスが事前選択される、ドロップダウンリストに対する選択オプションが重要度の順に並べ替えられる、スライダーに対する日付範囲がプリセットされる、テキストボックスにデータが事前に埋め込まれる、テキストボックスのオートコンプリートオプションが設定される、などが可能である。インタラクティブフォーム40の制御および充実化は、事前に書かれているJava(登録商標)ScriptのJava(登録商標)Scriptライブラリおよびクライアントアプリケーション32(図2)を含むJava(登録商標)Scriptインタプリタによって実現され得る。Java(登録商標)Scriptインタプリタは、Java(登録商標)ScriptライブラリのJava(登録商標)Scriptソースコードを解釈し、スクリプトをしかるべく実行する。スクリプト言語は、インタラクティブフォーム40を構築し、インタラクティブフォーム40のユーザーインターフェース要素は、コントロールに入力される内容を受け入れ、コントロールに入力されるデータを事前検証し、および/またはクライアントデバイス16からサーバー12に送信するフォームデータを準備し、サーバー12からクライアントデバイス16によって受信された内容を、ユーザー入力によって書き込まれるかもしくは他の何らかの処理がなされおよび/またはインタラクティブフォーム40上でユーザーに対して表示されることがまだなされていないコントロール42、43、44、45、46に出力させる。
クライアントアプリケーション32は、クライアントデバイス16とサーバー12との間のデータ交換を可能にするプログラムコードをさらに含み得る。一実施形態において、データ交換は、AJAX、拡張可能メッセージングおよびプレゼンスプロトコル(XMPP)などを使用して非同期非ブロッキング方式で行うことができ、クライアントデバイス16によって開始される。クライアントアプリケーション32は、データを送信することと、サーバー12からデータを取り出すこととを、非同期に、好ましくはインタラクティブフォーム40の表示および挙動に干渉することなくバックグラウンドで行うことができる。代替的に、データ交換に対する要求がサーバー12によって開始されるプッシュ技術が使用されてもよい。
同じ番号は図1における同じ特徴を指している図4に示されているように、サーバー12は、1つまたは複数の命令を実行して、本発明の実施形態と一致する1つまたは複数のオペレーションを実行する、および/またはクライアントデバイス16と相互作用して本発明の実施形態と一致する1つまたは複数のオペレーションを実行する1つまたは複数の処理ユニット58を備える。サーバー12は、1つまたは複数の処理ユニット58によってアクセス可能なメモリ60を備える。サーバー12のメモリ60は、ソフトウェアアプリケーションもしくはモジュール62、64、66、68、および/またはオペレーティングシステム70を格納するように構成され、モジュール62、64、66、68およびオペレーティングシステム70はそれぞれ、一般に、それぞれの処理ユニット58によってメモリ60から読み出せるプログラムコードとして格納されている1つまたは複数の命令を備える。これらの命令は、処理ユニット58によって実行されたときに、それぞれの処理ユニット58に、1つまたは複数のオペレーションを実行しそれによって本発明のさまざまな実施形態を具現化するステップ、要素、および/またはブロックを実行するのに必要なステップを実行させることができる。
メモリ60は、コンピュータのメインストレージ、さらには補助的レベルのメモリ、例えば、キャッシュメモリ、不揮発性もしくはバックアップメモリ(例えば、プログラム可能もしくはフラッシュメモリ)、大容量ストレージメモリ、ROMなどを含むRAMを代表するものとしてよい。それに加えて、メモリ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(Wi-Fi)リンクなどのワイヤレスネットワークプロトコルを使用するワイヤレスリンク、またはサーバー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内に格納されている推奨ルールセットを呼び出すユーザー入力の一部分に基づき確率論的推論プロセスに供給するためにも使用される。部分的旅行検索クエリに応答して、推奨モジュール62は、推奨ルールデータベース82にクエリを実行し、クエリのコンテキストに適している1つまたは複数の推奨ルールを受信する。クエリは、構造化照会言語(SQL)などの、照会言語を使用して作成され得る。
推奨モジュール62は、記入済みフォームコントロールに対する知られている値セットからインタラクティブフォーム40内の未記入コントロールに対する予測される値を決定するために推奨ルールを適用する。例えば、複数のコントロールに対する複数の知られている値は、統計上の相関関係を有する1つまたは複数の未記入コントロールに対する推奨、および好ましくは、確率論的依存関係の形態で統計上の相関関係を有する複数のコントロールのそれぞれに対する1つまたは複数の値の推奨をもたらし得る。推奨のそれぞれの推奨値は、サーバー12からクライアントデバイス16に伝達され得る。
クライアントデバイス16におけるクライアントアプリケーション32は、サーバー12から受信された推奨値を使用して、ユーザーがコントロールに入力する前にコントロールのうちの1つにデータを事前記入または事前投入する、コントロールにおいてユーザーに提案されるべき値を順序付ける、インタラクティブフォーム40に対して他の形で適応を行う(例えば、コントロール内のオプションをマスクする)、などを行うことができる。その結果、インタラクティブフォーム40内の1つまたは複数の記入済みコントロールの知られているセットに基づき、インタラクティブフォーム40内の1つまたは複数の未記入コントロールの値またはあり得そうな値を具現化する少なくとも1つの推奨ルールが、インタラクティブフォーム40内の未記入コントロールにデータを投入する機能に対して推奨モジュール62によって適用され、それによって、クライアントデバイス16のユーザーによる旅行検索クエリの簡素化された入力を容易にする。
推奨モジュール62によって行われる推奨では、クライアントデバイス16におけるユーザーの個人履歴データを考慮することもできる。例えば、ユーザーの素性が知られており(すなわち、登録ユーザーである)、推奨モジュール62は、過去の推奨に関するユーザーの個人履歴データにアクセスすることができる。ユーザーは、コントロールに対する値のプリファレンスが格納され、それによって個人履歴データとして知られる登録ユーザーであるものとしてよい。個人履歴データから導出されたコントロールに対するユーザープリファレンスは、推奨ルールから導出されたコントロール値と併せて考慮され得る。
推奨モジュール62によって行われる推奨では、クライアントデバイス16のコンテキストに関係する情報も考慮し得る。例えば、クライアントデバイス16は、推奨を行う際に使用するサーバー12へのデータとして、場所などのデバイス依存情報を伝達することができる。クライアントデバイス16は、時刻、曜日などのクライアントデバイス16上に見つかる、および/または計算され得るデータを含む他の種類のデバイス独立情報を伝達することもできる。これらの種類の情報も、推奨を行うときに推奨モジュール62よって考慮され得る。
学習モジュール64は、複数のデータソースからデータを入力し、データに関係する予測などの推奨ルールを生成するために使用される予測アルゴリズムを学習させるように構成される。特に、学習モジュール64は、相互に関係付けられた(すなわち、相互に関連する)インタラクティブフォーム40のコントロール間の推奨ルールを生成する。予測アルゴリズムは、インタラクティブフォーム40のコントロールのうちの一部分または全部が、1つまたは複数のコントロールへの値の入力が1つまたは複数の他のコントロールに対する予測値に影響を及ぼすようにおそらくコントロールの相関する対としてまたはコントロールの相関するグループとして、統計的に相関するという仮定に基づく。1つまたは複数のコントロールは、推奨ルールのベースであり、推奨ルールを計算するために予測アルゴリズムによって適用される相互関係をもたらすように1つまたは複数の他のコントロールと統計的に相関し得る。例えば、複数のコントロールが、相互関係をもたらすように複数の他のコントロールと統計的に相関し得る。
学習モジュール64は、推奨ルールを格納するためのリポジトリとして使用される、推奨ルールデータベース82に推奨ルールを供給する。学習モジュール64の実行は、推奨モジュール62の実行から切り離されている。例えば、学習モジュール64は、規則正しい周期で(例えば、1時間に1回)、ユーザーのインタラクティブな操作によるトリガーなしで、非同期に実行され得る。特に、学習モジュール64は、クライアントデバイス16においてユーザーのインタラクティブな操作による任意の種類のトリガーに関係なく推奨ルールを決定することができる。
学習モジュール64にデータを供給するデータソースの1つは、モジュール62、64の両方にアクセス可能であるユーザーから蓄積された履歴協調データを含む、履歴データベース80である。履歴データベース80は、生データまたは集約データとしてデータを格納することができる。推奨モジュール62は、履歴データベース80にインタラクティブフォーム40のすべてのユーザーの選択を表すデータを書き込む。履歴データベース80は、クライアントデバイス16からユーザー選択が受信されるときにリアルタイムで更新されるものとしてよく、データインスタンスはすべて、生データであろうと集約データであろうと、増分的な仕方でリフレッシュされる。
学習モジュール64は、推奨ルールを生成する際に使用するために履歴データベース80からのフォーム選択の協調履歴データを読み取る。履歴データベース80からの入力データは、観察されているユーザー選択の間の可能な関係のインスタンスを表し、推奨モジュール62は、履歴データベース80内のデータの知られていない基本的な確率分布の注目する特性を取り込む。
履歴データベース80は、クライアントデバイス16におけるインタラクティブフォーム40のそれぞれの特定のユーザーと相関するフォーム選択の個人履歴データも含み得る。推奨モジュール62は、推奨ルールデータベース82からの推奨ルールの適用から導出される推奨と併せて推奨を生成する際に使用するために履歴データベース80からこの個人履歴データを読み取ることができる。
協調履歴データが、履歴データベース80内に生データとして格納される場合、学習モジュール64は、予測アルゴリズムがユーザー選択のパターンの変化を検出することができるように制限なしですべての協調履歴データにアクセスすることができる。例えば、現在は重要でないまたは際立っていないユーザー選択に関係するパラメータは、将来、重要または際立つことになることもあり得、したがって、学習モジュール64が変更に適応できるように生データが必要である。多数のレコードに対応できるように、生データは、データの繰り返しを回避すること、および可能ならば精度を失うことなく個別のレコードではなくカウントを格納することなど、インテリジェントな仕方で組織化されなければならない。
協調履歴データが、集約され、履歴データベース80内に集約データとして格納される場合、学習モジュール64は、生の形態の場合よりも素早くデータを処理することができる。集約形式でデータを格納することで、学習モジュール64が実行される毎にデータを集約する必要がなくなる。
他のデータソースは、推奨ルールを決定するプロセスにおいて学習モジュール64によってアクセスされ得る。例えば、そのようなデータソースの1つは、予め定義されたビジネスルールを含む、ビジネスルールデータベース84であるものとしてよい。例えば、代表的なビジネスルールは、観光旅行の大半が土曜の夜の滞在を含むというものであってよい。学習モジュール64によってアクセスされ得るさらに別のデータソースは、静的パラメータを含む、パラメータデータベース86である。例えば、代表的静的パラメータは、インタラクティブフォーム40のコントロールに対する特定の値を無視する命令である。
学習モジュール64は、1つまたは複数の予測アルゴリズムを使用して、旅行者の確率的性向に基づき推奨ルールデータベース82に対する推奨ルールを計算することができる。一般的に、推奨ルールでは、最大の割合のユーザーによって選択されるコントロールに対する値を追跡するコントロール値を予測する。推奨ルールは、履歴データベース80内の協調履歴データを使用して計算され得る。代表的予測アルゴリズムは、例えば、協調フィルタリングまたはニューラルネットワークに基づくものとしてよい。ある学習期間が過ぎた後、アルゴリズムの出力は、推奨ルールを定義する予測因子であり、これは、部分的に記入されたインタラクティブフォーム40内の既存のユーザー入力項目に基づきコントロールに対する値を提案するために推奨モジュール62によって使用され得る。履歴データベース80からの履歴協調データは、アルゴリズムに初期学習セットして提供され得る。
協調フィルタリングは、教師なし学習の代表的な実施形態を提供し、一般的に、複数のデータソースからのデータを処理するアルゴリズムを使用して大量の情報をフィルタリングする。協調フィルタリングは、フォームのコントロール内の異なる変数に対する選択された値の間の(例えば、選択された値の対の間の)相関を確定し、少なくともこれに基づき推奨ルールに対する推奨を生成する。協調フィルタリングは、履歴データベース80内の協調履歴データから旅行者の過去の挙動(すなわち、フォーム選択)を導出し、その協調履歴データを使用して、機会が与えられた場合に旅行者が選択する可能性のある選択を予測する。これらの予測は、ビジネスルールデータベース84およびパラメータデータベース86からのビジネス論理を使用してフィルタリングされる。このようにして、学習モジュール64は、協調フィルタリングを使用して、インタラクティブフォーム40のコントロールのファイル内に使用選択として潜在的に出現し得る値の間の関係を指定する項目別行列を推奨ルールデータベース82内に構築することができる。
ニューラルネットワークは、教師あり学習の代表的な実施形態を提供し、一般的に、履歴データベース80内の協調履歴データのパターンを見つけるために使用される数学的モデルまたは計算モデルによって表される。ニューラルネットワークは、学習フェーズにおいて供給される履歴旅行者データに基づきその構造が変化し得るという点で適応システムである。履歴データベース80から受信された協調履歴データに基づき、ニューラルネットワークは、与えられたコスト基準を最小化する許容モデルのセットからモデルを計算することができる。
学習モジュール64は、履歴データベース80内の協調履歴データに関連付けられているフォームコントロールの値に対する最適なレベルの集約を決定する1つまたは複数の集約アルゴリズムも特徴とする。集約は、1つまたは複数のフォームコントロールおよびそれらの関連付けに対する値のセットに対して実行されるものとしてよく、通常は、旅行、例えば、出発地、目的地、出発日、帰国日、航空会社などに特有である。集約アルゴリズムは、例えば、利用可能であるデータセットのサイズに基づきコントロール値を集約するかどうか、および/または特定のコントロールが際立っているかどうかを決定する。
推奨ルールを定義するためデータを集約する決定において使用される因子の1つは、履歴データベース80内に格納されているコントロールの値に対するデータセットのサイズである。セットのサイズを条件として、集約アルゴリズムは、次第に粗くなる精度に従ってコントロール値を集約し、推奨の統計的有意性を改善することを決定することができる。例えば、出発地から特定の目的地に対する値は、出発地としての主要民間機専用空港、出発地としての単一の国の地域に限定されている複数の主要民間機専用空港を含む地理的地域、または出発地として単一の国内のすべての主要民間機専用空港などのなおいっそう広い地理的地域に従って集約され得る。特定の例では、ニース-ロンドン旅行に対する集約アルゴリズムに供給される履歴データは、少なすぎて統計的に有意な予測を得ることができない。そのような成り行きでは、集約アルゴリズムは、ニース-ロンドン旅行に対する1つまたは複数の推奨ルールを代表するような、より粗い精度を有し、より高い統計的有意性を有する、すべてのフランス-ロンドン旅行に対するデータを集約することを決定することができる。
集約は、履歴データベース80内のコントロール値のそれぞれのセットについて決定される。特定の例において、より粗い集約は、推奨ルールデータベース82に供給されるニース-ロンドン旅行に対する推奨ルールにおける出発地としてニースに特有である。しかし、ニース-ロンドン推奨は、フランス-ロンドンデータに基づき決定されるという事実は、集約アルゴリズムがロンドンへの旅行に対する出発地としてのフランスの他の空港に対する推奨をフランス-ロンドンデータの集約に基づかせることを決定することを意味しない。例えば、履歴データベース80は、集約が出発地と目的地とのその特定の対に対して必要でないと集約アルゴリズムが決定することができるようにパリ-ロンドン旅行プランに対して十分なデータを保持することができる。
集約アルゴリズムは、複数の集約が必要であると決定し得る。例えば、ニース-ソルトレークシティ旅行プランに対する履歴データベース80内のデータは、小さすぎて、集約アルゴリズムによって統計的に有意であるとみなされず、フランス国のより大きな地理的単位におけるすべての主要民間機専用空港からソルトレークシティへの旅行に対する履歴データベース80内のデータも同様である。この場合、集約アルゴリズムは、ニースからソルトレークシティへの旅行に対する推奨ルールを決定する際に使用するためにフランスのすべての主要民間機専用空港から米国西部のすべての主要民間機専用空港への旅行に対するデータを集約するなどのより高いレベルでの集約を実行することを決定することができる。
推奨ルールを定義するためデータを集約することを決定する際に使用される因子の1つは、特定のフォームコントロールが際立っていると考えられ得ることである。例えば、航空会社の選択が、出発地と目的地との与えられた対に対する滞在期間に強く依存しない場合、滞在期間は、航空会社の推奨の決定について集約アルゴリズムによって考慮される際立ったフォームコントロールではない。したがって、滞在期間は、無視され、さまざまな滞在期間に対するデータレコードが集約され得る。
推奨ルールを計算するときに、学習モジュール64は、ビジネスルールデータベース84のレコードに含まれるビジネスルールおよびパラメータデータベース86内の静的パラメータも利用する。ビジネスルールおよび静的パラメータでは、専門家の判断を推奨ルールを定義するプロセスに導入する。しかし、学習モジュール64は、構成がなされていないとしても、関連する推奨ルールが既存のユーザートラフィックからのデータに基づき決定されるように設計される。
推奨ルールの一例は、金曜日の外回りのフランス-ロンドン旅行に対するユーザーのプールへの滞在期間の分配に基づくものとしてよい。推奨ルールは、可能性が最も高い滞在期間は2日間であり、可能性が2番目に高い滞在期間は3日間であり、可能性が3番目に高い滞在期間は7日間である、などと指定することができる。サーバー12において受信された部分的旅行検索クエリが、与えられた週の金曜日に出発するフランスからロンドンへの旅行である場合、推奨モジュール62は、推奨ルールを呼び出して可能性が最も高い帰国日を決定する。次いで、推奨モジュール62は、サーバー12に、帰国日の少なくとも1つをクライアントデバイス16に伝達してユーザーに提示することを行わせる。例えば、可能性が最も高い単一の帰国日が、クライアントデバイス16に伝達され、テストボックスであるインタラクティブフォーム40内のコントロールに投入されるか、または複数の帰国日が、クライアントデバイス16に伝達され、リストボックスであるインタラクティブフォーム40内のコントロールに投入され、確率に従って順位付けされ得るリストをユーザーに提示することができる。
監視モジュール66は、推奨ルールに基づきクライアントデバイス16に供給される推奨をユーザーの実際の選択と比較するように構成され得る。監視モジュール66によって行われた比較は、例えば、管理モジュール68によって使用され得る。
管理モジュール68は、管理者がシステムの機能および推奨プロセスを観察することを可能にする管理コンソールを備えるように構成され得る。この分析結果に基づき、管理者は、管理モジュール68を介してビジネスルールデータベース84内のビジネスルールおよび/またはパラメータデータベース86内の静的パラメータを修正するか、または他の何らかの形で変更し、学習モジュール64の学習プロセスに、またそれによって推奨ルールデータベース内の推奨ルールに影響を及ぼすことができる。代替的に、管理者は、管理モジュール68を介してビジネスルールデータベース84に対するビジネスルールおよび/またはパラメータデータベース86に対する静的パラメータを定義することができる。管理モジュール68は、与えられた頻度で学習モジュール64の実行を手動でまたは自動的にトリガーすることもできる。管理モジュール68は、例えば、食い違いを検出するか、または既存の推奨プロセスの障害および弱点を追跡することができる。
本発明の代替的一実施形態では、クライアントデバイス16のローカルキャッシュ38(図2)内に保持されているデータは、サーバー12から受信された1つまたは複数の推奨を含み得る。ローカルキャッシュ38は、完全な旅行検索クエリの一部分のみの入力に基づきインタラクティブフォーム40(図3)内のコントロール42、43、44、45、46のうちの1つまたは複数に投入する際に使用する推奨を一時的に保持することができる。例えば、ローカルキャッシュ38は、ストレージ領域の物理的サイズによって制約されるような多数の出発地のうちのそれぞれを出発地とする旅行プランに対する推奨として最も人気のある多数の(例えば、3つの)目的地を格納することができる。推奨の一部分または全部をクライアントデバイス16に持たせることで、推奨プロセスを高速化することができる。クライアントデバイス16におけるインタラクティブフォーム40において行われた選択は、特に人気の低い選択の実際の入力後に、ネットワーク14を介してサーバー12にやはり伝達され得る。サーバー12における推奨モジュール62も、ユーザーへの提示のため同じコントロールもしくは異なるコントロールに対する追加の推奨をクライアントデバイス16に送信させ得るか、および/または本明細書で説明されているようにユーザー選択を履歴データベース80に格納することができる。
本発明の代替的実施形態において、クライアントデバイス16におけるクライアントアプリケーション32は、推奨モジュール62に対するアルゴリズム全体、または少なくとも、推奨モジュール62のアルゴリズムの一部分を含み得る。ローカルの推奨は、推奨を提供するためにユーザーによってフォームコントロールに入力され、ローカルキャッシュ38内に保持されている値に依存し得る(例えば、ローカルキャッシュ38内のユーザー履歴に基づく最も人気のある3つの目的地)。クライアントデバイス16において実行されるアルゴリズムの割合は、クライアントデバイス16の処理能力、メモリなどに左右され得る。推奨アルゴルズムの全部または一部分をクライアントデバイスに置くことで、推奨プロセスを高速化することができる。クライアントデバイス16に推奨アルゴリズムの全部または一部分が存在しているにも関わらず、サーバー12は、依然として、推奨値をクライアントデバイス16にプッシュすることができる。このようにして、限られた数の推奨コントロール値は、サーバー12からの同じコントロールについて可能である追加の推奨コントロール値の到着を待ちながらローカルキャッシュ38からクライアントデバイス16において利用可能にされ得る。
本発明の他の代替的実施形態において、クライアントデバイス16のローカルキャッシュ38(図2)は、クライアントデバイス16のユーザーによって入力された値をローカルの履歴として一時的に格納するために使用され得る。クライアントデバイス16は、サーバー12が履歴データベース80を更新できるようにローカルキャッシュ38内のローカルの履歴の内容をネットワーク14上でサーバー12に送信することができる。例えば、クライアントデバイス16は、ネットワーク14上のトラフィックが比較的軽い時刻にローカルの履歴の内容をサーバー12にダンプすることができる。他の例では、クライアントデバイス16がモバイルデバイスである場合、ローカルの履歴は、ネットワーク14と最初に接続されたときにクライアントデバイス16からサーバー12に伝達され得る。
図5を参照して、推奨の提供と併せてフォームデータを受信し、処理することについて説明する。ユーザーは、ブラウザでウェブサイト(例えば、旅行代理店のウェブサイト)にナビゲートするか、またはクライアントデバイス16におけるモバイルアプリを開き、ネットワーク14と接続し、インタラクティブフォーム40を使用してサーバー12とネットワーク14上で通信するセッションを開始する(ブロック100)。代表的な実施形態において、ユーザーは、インタラクティブフォーム40を使用して旅行検索クエリの入力を開始する。しかし、ユーザーが入力する前に、インタラクティブフォーム40のコントロールのうちの1つまたは複数は、推奨値を事前記入され得る。事前記入を開始するために、1つまたは複数の推奨が、クライアントデバイスにおけるローカルキャッシュ38から取り出されて、事前記入を行うために使用され得る。
ユーザーは、クライアントデバイス16において、インタラクティブフォーム40のコントロールのすべてではなく、インタラクティブフォーム40内のコントロールのうちの1つまたは複数のそれぞれに値を投入して、旅行検索クエリを部分的に入力することができる(ブロック102)。クライアントアプリケーション32は、インタラクティブフォーム40内への部分的旅行検索クエリの入力を検出し、処理ユニット20に、関わっているコントロール内に入力される値を処理させる。クライアントデバイス16におけるプロセッサ20上で実行しているクライアントアプリケーション32は、クライアントデバイス16に、少なくとも1つの入力された値または少なくとも1つの入力された挙動、ならびに好ましくは、すべての入力された値および挙動を、データとしてネットワーク14上でサーバー12に伝達させる(ブロック104)。クライアントデバイス16は、推奨プロセスで使用するためにクライアントデバイス16のコンテキストに関係する情報(場所、時刻など)をサーバー12に伝達することもできる。
推奨モジュール62は、伝達されたデータを受信し、クライアントデバイスから受信された値を履歴データベース80に格納する(ブロック106)。推奨モジュール62は、受信された値を、一組の推奨ルールを呼び出すインテリジェント型の推論プロセスに通し、インタラクティブフォーム40内の未記入コントロールのうちの1つまたは複数に対する1つまたは複数の推奨を予測する(ブロック108)。クライアントデバイス16において計算されるか、または見つけられ、サーバー12に伝達されるデバイス独立情報(例えば、場所)およびデバイス依存情報(例えば、時刻または曜日)も、推奨の計算において推奨モジュール62によって使用され得る。それぞれの推奨は、ユーザーによってすでに記入されているコントロール以外の、旅行関係検索の他の部分を表すインタラクティブフォーム40内の未記入コントロールのうちの1つまたは複数に対する1つまたは複数の推奨値を含み得る。このプロセスフローは、追加の値がインタラクティブフォーム40のコントロール内に入力されるのが適切である限り繰り返すことができる。好ましくは、ブロック104ですべての値が入力された後に、インタラクティブフォーム40の複数のコントロールのデータ投入は、ブロック108で決定された推奨と共にインタラクティブフォーム40の少なくとも1つの他のコントロールに影響を及ぼすことができる。
例えば、サーバー12との情報のインタラクティブな交換のためにクライアントデバイス16においてユーザーによってセッションが開始された後、クライアントデバイス16におけるプロセッサ20上で実行されているクライアントアプリケーション32は、インタラクティブフォーム40内のコントロール42、43のうちの一方または両方に旅行ブッキングに対する出発地および目的地を投入するための推奨を取り出すことができる。一実施形態において、プロセッサ20は、ローカルキャッシュ38から推奨を取り出し、それらの推奨をコントロール42、43で提示することができる。代替的に、クライアントデバイス16は、セッション開始をサーバー12に伝達し、サーバー12におけるプロセッサ上で実行されている推奨モジュール62は、推奨ルールデータベース82内の推奨ルールを使用してコントロール42、43に対する推奨を決定させ、サーバー12からクライアントデバイス16に戻す形で伝達させることができる。ソースに関係なく、クライアントアプリケーション32は、インタラクティブフォーム40内のコントロール42、43に、推奨値(複数可)がより高い順位で提示されるように適宜並べ替えられた値と共にコントロール42、43のコンテキストに適している推奨および他の値を投入することができる。
他の例では、サーバー12と情報をインタラクティブに交換するためにセッションがクライアントデバイス16においてユーザーによって開始された後、ユーザーは、インタラクティブフォーム40内のコントロール42に、旅行ブッキングに対する出発地を表す入力項目としてテキスト文字列を投入することができる。クライアントデバイス16におけるプロセッサ20上で実行されているアプリケーション32は、ローカルキャッシュから推奨を取り出し、インタラクティブフォーム40内のコントロール43に旅行ブッキングに対する1つまたは複数の目的地を投入することができる。代替的に、クライアントデバイス16は、出発地をサーバー12に伝達し、サーバー12におけるプロセッサ上で実行されている推奨モジュール62は、推奨ルールデータベース82内の推奨ルールを使用してコントロール43に対する推奨を決定させ、サーバー12からクライアントデバイス16に戻す形で伝達させることができる。サーバー12からクライアントデバイス16において受信された推奨は、出発地が与えられた場合に可能性が最も高い目的地に対する1つの推奨値、または出発地が与えられた場合に可能性が最も高い目的値に対する複数の推奨値(すなわち、複数の推奨目的地)を有するテキスト文字列であってよい。コントロール43に、推奨値(複数可)がリスティング内でより高い順位で提示されるように適宜並べ替えられた値と共にコントロール43のコンテキストに適している推奨および適宜他の値を投入することができる。ユーザーは、手作業でコントロール43に入力することなく、また値のリストをスクロールさせることなく、推奨値または推奨値のうちの1つを選択することができる。
他の例として、クライアントデバイス16においてセッションが開始された後、ユーザーは、コントロール42、43に、出発地および目的地をそれぞれ表すテキスト文字列を投入し、コントロール44に出発日を投入することができる。クライアントデバイス16におけるプロセッサ20上で実行されているアプリケーション32は、インタラクティブフォーム40内のコントロール45に帰国日に対する推奨を投入することができる。プロセッサ20は、クライアントデバイス16におけるローカルキャッシュ38から推奨を取り出すことができる。代替的に、クライアントデバイス16は、ユーザーによって入力されたコントロール42、43、44に対する値をサーバー12に伝達し、サーバー12におけるプロセッサ上で実行されている推奨モジュール62は、推奨ルールデータベース82内の推奨ルールを使用してコントロール45に対する推奨を決定させ、クライアントデバイス16に戻す形で伝達させることができる。推奨の日付値は、推奨ルールデータベース82内に推奨ルールを構築するために使用されるユーザー入力項目の履歴値に基づき出発地、目的地、および出発日が与えられた場合に可能性の最も高い帰国日を表し得る。ユーザーは、帰国日を選択する作業を免れ、ブッキングプロセスの次のステップに直接進むことができる。帰国日が選択されていない場合でも、コントロール45内の帰国日を修正するプロセスは、予測される帰国日が例えば現在の日付よりも実際の帰国日にカレンダー上で近い場合には簡素化され得る。
推奨ルールに基づく推奨値は、適宜、クライアントデバイス16において部分的旅行検索クエリを入力した同時期のユーザーの履歴データベース80内の個人履歴データからの推奨値と組み合わされるか、またはそれによって調整され得る。組み合わせを行うための一アプローチは、インタラクティブフォーム40のすべてのユーザーに基づくそれぞれの推奨値とクライアントデバイス16の同時期のユーザーに対する個人的な推奨値との加重平均である。
インタラクティブフォーム40のそれぞれの関わるコントロールに対する1つまたは複数の推奨が、サーバー12からクライアントデバイス16に戻す形で伝達される(ブロック110)。受信した後、クライアントデバイス16におけるクライアントアプリケーション32は、それぞれの推奨に基づきインタラクティブフォーム40を適応させる(ブロック112)。クライアントアプリケーション32は、インタラクティブフォーム40内の特定の関わるコントロールに、サーバー12から受信された1つもしくは複数の推奨値を投入するか、またはインタラクティブフォーム40内の特定の関わるコントロールに、1つもしくは複数の推奨値および推奨されない他の値を投入することができる。クライアントアプリケーション32は、推奨値を反映するようにインタラクティブフォーム40内の特定の関わるコントロールの状態を変更することもできる。
クライアントデバイス16におけるインタラクティブフォーム40のユーザーは、それぞれの適応されたコントロールに表示される推奨値を採用または選択することができる。代替的に、ユーザーは、適応されたコントロールのうちの1つに対する推奨されない値を入力することができ、したがって、これらの推奨に含まれない値を選択することができる。例えば、ユーザーは、適応されたコントロールに投入する複数の推奨値(例えば、目的地)のうちから1つの推奨値(例えば、目的地)を選択することができる。推奨は、ユーザーによって選択されていない場合であっても、クライアントデバイスのユーザーが1つまたは複数のコントロールに対する選択を行うのを助けることもできる。例えば、推奨値は、日付ピッカーに置かれている現在の日付と異なる日付であってもよく、カレンダー上で日付を選択することを可能にする。推奨値が選択されていない場合でも、クライアントデバイス16のユーザーは、現在の日付よりも時間的に推奨値に近い日付を日付セレクターを使用して選択することができ、これにより、選択プロセスが軽減され得る。
上で説明されているようなインタラクティブフォーム40のコントロールに対する推奨値を提供することは、ユーザーがインタラクティブフォーム40を完成させるのを補助し、したがって、インタラクティブフォーム40の完成前にインタラクティブフォーム40に記入する過程で実行されることに留意されたい。例えばすべてのコントロール42、43、44、45、46によって表される完全な旅行検索クエリ(代替的実施形態では、完全な旅行検索クエリは、コントロール42、43、44、45、46のサブセットによって許容可能な範囲ですでに構成されている場合がある)は、インタラクティブフォーム40内に入力された値の条件を満たす旅行に対して行われるべき検索を実行するために使用され得る。この目的のために、クライアントデバイス16は、完全な旅行検索クエリを各旅行サーバーに送信する。結果は、クライアントデバイス16に伝達され、クライアントデバイス16上でユーザーに対して表示され、これにより評価し、旅行の1つを潜在的にブッキングすることができる。
図6を参照して、推奨ルールデータベースに対する推奨ルールを生成するため履歴データベース80内に格納されているフォームデータの処理について説明する。学習モジュール64は、すべてのクライアントデバイスユーザーのプールによってインタラクティブフォーム40のさまざまなコントロール内で行われた選択を記録している履歴データベース80内に格納されているユーザーデータにアクセスする(ブロック150)。学習モジュール64は、ビジネスルールデータベースにクエリを実行して、推奨プロセスに関連するビジネスルールを受信することができる(ブロック152)。学習モジュール64は、パラメータデータベースにクエリを実行して、推奨プロセスに関連する静的パラメータを受信することができる(ブロック154)。学習モジュール64の1つまたは複数の予測アルゴリズムは、ビジネスルールデータベースおよびパラメータデータベースからの情報と併せて履歴的ユーザーデータを分析し、推奨ルールを生成する(ブロック156)。推奨プロセスは、インタラクティブフォーム40のコントロールを記入するときのユーザーの挙動に基づくものとしてよく、また人間の専門家の判断から独立していてもよい。しかし、人間の専門家の判断は、ビジネスルールおよび静的パラメータを通じて推奨に影響を及ぼすために使用され得る。履歴的ユーザーデータは、上で説明されているように、推奨ルールを定義するため集約されるものとしてよく、これは、履歴データベース80内に格納されているコントロールの値に対するデータセットのサイズである。データセットのサイズを条件として、集約アルゴリズムは、次第に粗くなる精度に従ってコントロール値を集約し、推奨の統計的有意性を改善することを決定することができる。学習モジュール64は、推奨ルールデータベース82にこれらの推奨ルールを供給し格納する(ブロック158)。次いで、このルーチンは終了する(ブロック160)。上で説明されたように、推奨モジュール62は、推奨ルールデータベース82の推奨ルールにアクセスし、部分的ユーザー入力に基づきクライアントデバイス16におけるユーザーの将来のセッションにおけるインタラクティブフォーム40のコントロールに対する値を提案する。
本発明の複数の実施形態を実装するためにサーバー12およびクライアントデバイス16の1つまたは複数の処理ユニットによって実行され得るルーチンおよび/または命令は、オペレーティングシステムもしくは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、またはそれぞれの処理ユニットによって実行される一連のオペレーションの一部分として実装されていようといまいと、本明細書では「プログラムモジュール」、「コンピュータプログラムコード」、または単に「モジュール」もしくは「プログラムコード」と称される。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むものとしてよい。本発明の態様に対するオペレーションを実行するためのコンピュータプログラムコードは、Java(登録商標)、Smalltalk、C++、または同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの伝統的な手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の組み合わせで書くことができる。コンピュータコードをルーチン、プロシージャ、メソッド、モジュール、オブジェクト、および同様のものに組織化することができる多くの方法、さらにはプログラム機能を典型的なコンピュータ内の常駐するさまざまなソフトウェアレイヤ(例えば、オペレーティングシステム、ライブラリ、API、アプリケーション、アプレットなど)間に割り振ることができるさまざまな方法に鑑みて、本発明の実施形態は、本明細書で説明されているプログラム機能の特定の組織化および割り振りに限定されないことは理解されるであろう。
フローチャート、ブロック図、およびシーケンス図は、本明細書では、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能、およびオペレーションを示している。この点に関して、フローチャート、ブロック図、またはシーケンス図中のそれぞれのブロックは、プログラムコードのセグメントまたは一部分を表すものとしてよく、これは指定された論理機能および/または活動を実装するための1つまたは複数の実行可能命令を含む。プログラムコードは、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上にロードされ、これにより、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の動作ステップが実行され、コンピュータまたは他のプログラム可能な装置上で実行される命令が本明細書に記載のフローチャート、シーケンス図、および/またはブロック図のブロックで指定された機能/活動を実装するためのプロセスを実現するようにコンピュータ実装プロセスを構成することができる。いくつかの代替的実装では、ブロック内に記述される機能は、図示され、説明されているのと異なる順序で実行され得る。例えば、連続して実行されるように説明され、図示されている一対のブロックは、その代わりに、同時に実行され得るか、または2つのブロックが、ときには、関連する機能に応じて、逆順に実行され得る。それぞれのブロック、およびブロックの組み合わせは、指定された機能または活動を実行する専用のハードウェアベースのシステムによって、または専用のハードウェアとコンピュータ命令との組み合わせによって実装することができる。
本明細書で説明されているアプリケーションのいずれかで具現化されるプログラムコードは、さまざまな異なる形態のプログラム製品として個別に、またはまとめて配布することができる。特に、プログラムコードは、コンピュータ可読記憶媒体および通信媒体を含み得る、コンピュータ可読媒体を使用して配布され得る。コンピュータ可読記憶媒体は、本質的に非一時的であり、コンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータなどの情報を格納するための方法または技術で実装される揮発性および不揮発性、ならびに取り外し可能および取り外し不可能な、有形の媒体を含むものとしてよい。コンピュータ可読記憶媒体は、RAM、ROM、消去可能プログラム可能リードオンリーメモリ(EPROM)、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM)、フラッシュメモリ、または他のソリッドステートメモリ技術、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、または所望の情報を格納するために使用することができ、コンピュータによって読み出すことができる他の媒体を含み得る。通信媒体は、コンピュータ可読命令、データ構造体、または他のプログラムモジュールを具現化し得る。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、およびその他のワイヤレス媒体などのワイヤレス媒体でよい。上記のいずれの組み合わせもコンピュータ可読媒体の範囲に収まるものとしてよい。
本明細書で使用されている用語は、特定の実施形態のみを説明することを目的としており、本発明の実施形態の範囲を制限することは意図されていない。本明細書で使用されているように、「1つの(または使わない場合もある)」および「その(使わない場合もある)」(英語原文の単数形の冠詞「a」、「an」、および「the」)は、文脈上明らかにそうでないことを示していない限り、複数形も含むことが意図されている。さらに、「備える、含む」および/または「備えること、含むこと」という言い回しは、本明細書内で使用されている場合、記載されている特徴、整数、ステップ、動作、要素、および/またはコンポーネント(または構成要素)の存在を意味し、1つもしくは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント(または構成要素)、および/またはそれらからなる群の存在もしくは追加を除外しないことも理解されるであろう。さらに、「含む(includes)」、「有している(having)」、「有する(has)」、「持つ、備える(with)」、「からなる(comprised of)」という言い回し、またはこれらの変形が詳細な説明または請求項内で使用されている範囲において、このような言い回しは、「含む、備える(comprising)」という言い回しと同様に包含的であることが意図されている。
本発明はさまざまな実施形態の記述により例示され、またこれらの実施形態はかなり詳細に記述されているが、付属の請求項の範囲をそのような詳細に制限するか、またはどのような形であれ限定することは出願人の意図するものではない。追加の利点および修正点は、当業者に容易にわかるであろう。例えば、本発明の実施形態は、インタラクティブフォームおよびインタラクティブフォームフローにも大きく依存する旅行プラン管理、フライト状況などの旅行ブッキングおよび旅行検索クエリとは別の他の旅行関係アプリケーションと併せて使用され得る。したがって、そのより広い態様における本発明は、図示し述べた特定の詳細、代表的な方法ならびに説明に役立つ例に限定されない。したがって、出願人の一般的な発明の概念の精神または範囲から逸脱することなく、そのような詳細からの逸脱を行うことができる。