(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-27
(45)【発行日】2023-01-11
(54)【発明の名称】データ可視化ユーザインターフェースにおける自然言語表現の分析
(51)【国際特許分類】
G06F 16/332 20190101AFI20221228BHJP
G06F 16/338 20190101ALI20221228BHJP
【FI】
G06F16/332
G06F16/338
(21)【出願番号】P 2021513434
(86)(22)【出願日】2019-08-23
(86)【国際出願番号】 US2019047892
(87)【国際公開番号】W WO2020060720
(87)【国際公開日】2020-03-26
【審査請求日】2021-06-09
(32)【優先日】2018-09-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-09-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508311813
【氏名又は名称】タブロー ソフトウェア,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】エリクソン,ジェフリー
(72)【発明者】
【氏名】ゴルバベイ,サナズ
(72)【発明者】
【氏名】コーニッシュ,セオドア
(72)【発明者】
【氏名】セトラー,ヴィディヤ,ラガヴァン
(72)【発明者】
【氏名】ジャラリ,アレックス
【審査官】原 秀人
(56)【参考文献】
【文献】特開2013-109725(JP,A)
【文献】特開2009-086837(JP,A)
【文献】米国特許出願公開第2017/0242913(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
方法であって、
ディスプレイと結合されているコンピューティングデバイスであって、1つ以上のプロセッサおよび前記1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを格納するメモリを有する、コンピューティングデバイスにおいて、
前記ディスプレイにグラフィカルユーザインターフェースを表示することと、
第1の用語を含む第1のフレーズに対応する自然言語入力の一部分を識別し、かつ第2のフレーズに対応する前記自然言語入力の第2の部分を識別する、ユーザから受信された前記自然言語入力を分析することと、
前記自然言語入力に対応する自然言語表現を表示し、前記自然言語表現に従ってデータ可視化を表示することであって、前記データ可視化は、折れ線グラフ、円グラフ、棒グラフ、ツリーマップ、散布図、またはマップのうちの1つであることと、
前記第1のフレーズにおける前記第1の用語を修正する第2の入力を、前記ユーザから、受信することと、
前記第2の入力を受信することに応答して、前記修正された第1の用語を有する前記自然言語入力が有効であるかどうか判定するために依存性データベースにおいて検索を実行することによって、前記第2の部分における前記第2のフレーズが前記第1のフレーズの前記第1の用語に機能的に依存していると判定することと、
前記第2の部分における前記第2のフレーズが前記第1のフレーズの前記第1の用語に機能的に依存しているという前記判定に応答して、さらなるユーザ入力なしに、前記第2の入力において受信された前記第1の用語への前記修正に基づいて、前記自然言語表現を有効にするように前記自然言語表現における前記第2のフレーズを更新することと、
前記第2の入力に基づいて前記第2のフレーズを更新することに応答して、
前記グラフィカルユーザインターフェース上に、前記修正された第1のフレーズおよび前記更新された第2のフレーズを含む更新された自然言語表現を表示することと、
前記更新された自然言語表現を表す更新されたデータ可視化を表示することと、を含む、方法。
【請求項2】
前記自然言語入力が、前記グラフィカルユーザインターフェースにおけるユーザインターフェースコントロールで受信される、請求項1に記載の方法。
【請求項3】
前記自然言語入力が、2つ以上の異なるフレーズを含む、請求項1に記載の方法。
【請求項4】
前記第1のフレーズにおける前記第1の用語を修正する前記第2の入力が、前記第1のフレーズにおける前記第1の用語を置き換える第2の用語を含む、請求項1に記載の方法。
【請求項5】
前記第1のフレーズにおける前記第1の用語を修正する前記第2の入力が、前記第1のフレーズにおける前記第1の用語を削除することを含む、請求項1に記載の方法。
【請求項6】
前記第2の入力を受信する前に、前記第1および第2のフレーズに従って、前記更新されたデータ可視化とは異なる初期データ可視化を表示することをさらに含む、請求項1に記載の方法。
【請求項7】
前記第2のフレーズが、前記第1のフレーズのサブ部分を含み、前記第2の入力に基づいて前記第2のフレーズを更新することが、前記第1のフレーズの前記サブ部分を更新することを含む、請求項1に記載の方法。
【請求項8】
前記第1のフレーズおよび前記第2のフレーズが、異なるフレーズである、請求項1に記載の方法。
【請求項9】
前記第2の用語に基づいて前記第2のフレーズを更新することが、第3の用語を置き換えるために、前記第2のフレーズから前記第3の用語を削除することと、前記第2の用語を前記第2のフレーズに追加することと、を含む、請求項
4に記載の方法。
【請求項10】
前記第2の用語に基づいて前記第2のフレーズを更新することが、前記第2のフレーズを削除することを含む、請求項
4に記載の方法。
【請求項11】
ディスプレイと結合されたコンピューティングデバイスであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを格納するメモリと、を含み、前記1つ以上のプログラムが、
前記ディスプレイにグラフィカルユーザインターフェースを表示することと、
第1の用語を含む第1のフレーズに対応する自然言語入力の一部分を識別し、かつ第2のフレーズに対応する前記自然言語入力の第2の部分を識別する、ユーザから受信された前記自然言語入力を分析することと、
前記自然言語入力に対応する自然言語表現を表示し、前記自然言語表現に従ってデータ可視化を表示することであって、前記データ可視化は、折れ線グラフ、円グラフ、棒グラフ、ツリーマップ、散布図、またはマップのうちの1つであることと、
前記第1のフレーズにおける前記第1の用語を修正する第2の入力を、前記ユーザから、受信することと、
前記第2の入力を受信することに応答して、前記修正された第1の用語を有する前記自然言語入力が有効であるかどうか判定するために依存性データベースにおいて検索を実行することによって、前記第2の部分における前記第2のフレーズが前記第1のフレーズの前記第1の用語に機能的に依存していると判定することと、
前記第2の部分における前記第2のフレーズが前記第1のフレーズの前記第1の用語に機能的に依存しているという前記判定に応答して、さらなるユーザ入力なしに、前記第2の入力において受信された前記第1の用語への前記修正に基づいて、前記自然言語表現を有効にするように前記自然言語表現における前記第2のフレーズを更新することと、
前記第2の入力に基づいて前記第2のフレーズを更新することに応答して、
前記グラフィカルユーザインターフェース上に、前記修正された第1のフレーズおよび前記更新された第2のフレーズを含む更新された自然言語表現を表示することと、
前記更新された自然言語表現を表す更新されたデータ可視化を表示することと、を行わせる命令を含む、コンピューティングデバイス。
【請求項12】
前記自然言語入力が、2つ以上の異なるフレーズを含む、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記第1のフレーズにおける前記第1の用語を修正する前記第2の入力が、前記第1のフレーズにおける前記第1の用語を置き換える第2の用語を含む、請求項11に記載のコンピューティングデバイス。
【請求項14】
前記第1のフレーズにおける前記第1の用語を修正する前記第2の入力が、前記第1のフレーズにおける前記第1の用語を削除することを含む、請求項11に記載のコンピューティングデバイス。
【請求項15】
前記第2の入力を受信する前に、前記第1および第2のフレーズに従って、前記更新されたデータ可視化とは異なる初期データ可視化を表示させるための命令をさらに含む、請求項11に記載のコンピューティングデバイス。
【請求項16】
前記第2のフレーズが、前記第1のフレーズのサブ部分を含み、前記第2の入力に基づいて前記第2のフレーズを更新することが、前記第1のフレーズの前記サブ部分を更新することを含む、請求項11に記載のコンピューティングデバイス。
【請求項17】
前記第2の用語に基づいて前記第2のフレーズを更新することが、第3の用語を置き換えるために、前記第2のフレーズから前記第3の用語を削除することと、前記第2の用語を前記第2のフレーズに追加することと、を含む、請求項
13に記載のコンピューティングデバイス。
【請求項18】
前記第2の用語に基づいて前記第2のフレーズを更新することが、前記第2のフレーズを削除することを含む、請求項
13に記載のコンピューティングデバイス。
【請求項19】
1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを格納する非一時的なコンピュータ可読記憶媒体であって、前記1つ以上のプログラムは、
ディスプレイにグラフィカルユーザインターフェースを表示することと、
第1の用語を含む第1のフレーズに対応する自然言語入力の一部分を識別し、かつ第2のフレーズに対応する前記自然言語入力の第2の部分を識別する、ユーザから受信された前記自然言語入力を分析することと、
前記自然言語入力に対応する自然言語表現を表示し、前記自然言語表現に従ってデータ可視化を表示することであって、前記データ可視化は、折れ線グラフ、円グラフ、棒グラフ、ツリーマップ、散布図、またはマップのうちの1つであることと、
前記第1のフレーズにおける前記第1の用語を修正する第2の入力を、前記ユーザから、受信することと、
前記第2の入力を受信することに応答して、前記修正された第1の用語を有する前記自然言語入力が有効であるかどうか判定するために依存性データベースにおいて検索を実行することによって、前記第2の部分における前記第2のフレーズが前記第1のフレーズの前記第1の用語に機能的に依存していると判定することと、
前記第2の部分における前記第2のフレーズが前記第1のフレーズの前記第1の用語に機能的に依存しているという前記判定に応答して、さらなるユーザ入力なしに、前記第2の入力において受信された前記第1の用語への前記修正に基づいて、前記自然言語表現を有効にするように前記自然言語表現における前記第2のフレーズを更新することと、
前記第2の入力に基づいて前記第2のフレーズを更新することに応答して、
前記グラフィカルユーザインターフェース上に、前記修正された第1のフレーズおよび前記更新された第2のフレーズを含む更新された自然言語表現を表示することと、
前記更新された自然言語表現を表す更新されたデータ可視化を表示することと、を行わせるための命令を含む、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実装形態は、概して、データ可視化に関し、より詳細には、ユーザが自然言語表現を使用してデータ可視化と対話することを可能とするシステム、方法、およびユーザインターフェースに関する。
【背景技術】
【0002】
データ可視化アプリケーションは、ユーザが、ビジネス上の意思決定をするのに重要な分布、傾向、外れ値、および他の要因を含むデータセットを視覚的に理解することを可能にする。いくつかのデータセットは、非常に大きいかまたは複雑であり、多くのデータフィールドを含む。様々なツールがユーザに様々なデータセットのデータ可視化を生成させることを助けるために使用され得るが、通常、ユーザに複雑なユーザインターフェースを学習させる必要がある。
【発明の概要】
【0003】
データ可視化を生成するための自然言語表現の使用は、フィールドの更新およびどのようにデータをフィルタリングするのかの変更を含む、データ可視化特徴への優れたアクセス利便性をユーザに提供する。自然言語インターフェースにより、ユーザは、トレーニングをほとんどまたはまったくせずに、有用なデータ可視化を展開することが可能になる。
【0004】
したがって、本開示は、自然言語入力を使用してデータのグラフィカルビューを操作および生成するためのより効率的な方法およびインターフェースを提供する。このような方法およびインターフェースは、ユーザの認知的負担を軽減し、より効率的なマンマシンインターフェースを作り出す。電池駆動のデバイスの場合、このような方法およびインターフェースは電力を節約し、かつ電池の充電間隔を長くする。このような方法およびインターフェースは、データを可視化するために、従来の方法を補完または置き換え得る。他の実装形態および有益点は、本明細書の説明および図面に照らして当業者には明らかであり得る。
【0005】
いくつかの実装形態は、データ可視化を生成するために使用される自然言語表現内の関連フレーズの自動的更新を提供する。例えば、ユーザが自然言語表現における1つのフレーズを変更する場合、エラーの発生を回避するためには、自然言語表現の別のフレーズも更新する必要があり得る。いくつかの実装形態において、自然言語表現のフレーズを更新すると、自然言語表現によって識別されるデータを表すデータ可視化が変更されることになる。
【0006】
いくつかの実装形態によれば、方法は、ディスプレイと結合されたコンピューティングデバイスにおいて実行される。例えば、コンピューティングデバイスは、スマートフォン、タブレット、ノートブックコンピュータ、またはデスクトップコンピュータであり得る。この方法は、ディスプレイ上にグラフィカルユーザインターフェースを表示することを含む。この方法は、ユーザから受信された自然言語入力を分析して、第1の用語を含む第1のフレーズに対応する自然言語入力の一部を識別することを含む。この方法はまた、第2のフレーズに対応する第2の部分を識別する。この方法は、第1のフレーズの第1の用語を修正する第2の入力をユーザから受信することをさらに含む。第2の入力を受信することに応答して、コンピューティングデバイスは、第2の入力に基づいて第2のフレーズを更新する。第2の入力に基づいて第2のフレーズを更新することに応答して、コンピューティングデバイスは、グラフィカルユーザインターフェース上に、修正された第1のフレーズおよび更新された第2のフレーズを含む、更新された自然言語表現を表示し、さらに更新された自然言語表現を表す更新されたデータ可視化を表示する。
【0007】
いくつかの実装形態において、自然言語入力は、グラフィカルユーザインターフェースのユーザインターフェースコントロールにおいて受信される。
【0008】
場合によっては、自然言語入力は、2つ以上の異なるフレーズを含む。
【0009】
場合によっては、第1のフレーズにおける第1の用語を修正する第2の入力は、第1のフレーズにおける第1の用語を置き換える第2の用語を含む。
【0010】
場合によっては、第1のフレーズにおける第1の用語を修正する第2の入力は、第1のフレーズにおける第1の用語を削除する。
【0011】
場合によっては、この方法は、第2の入力を受信する前に、第1および第2のフレーズに従って、更新されたデータ可視化とは異なる初期データ可視化を表示することをさらに含む。
【0012】
いくつかの実装形態において、この方法は、さらにデータベース内でルックアップを実行して、第2のフレーズが第1のフレーズの第1の用語に依存していることを判定する。第2のフレーズの更新は、第2のフレーズが第1のフレーズの第1の用語に依存しているという判定に従って実行される。
【0013】
場合によっては、第2のフレーズは、第1のフレーズのサブ部分であり、第2の入力に基づいて第2のフレーズを更新することは、第1のフレーズのサブ部分を更新する。
【0014】
場合によっては、第1のフレーズおよび第2のフレーズは、異なるフレーズである。
【0015】
場合によっては、第2の用語に基づいて第2のフレーズを更新することは、第3の用語を置き換えるために、第2のフレーズから第3の用語を削除し、かつ第2の用語を第2のフレーズに追加する。
【0016】
場合によっては、第2の用語に基づいて第2のフレーズを更新することは、第2のフレーズを削除する。
【0017】
いくつかの実装形態によれば、方法は、ディスプレイを備えたコンピュータで実行される。例えば、コンピュータは、スマートフォン、タブレット、ノートブックコンピュータ、またはデスクトップコンピュータであり得る。この方法は、ディスプレイ上にグラフィカルユーザインターフェースを表示することを含む。この方法は、第1のデータフィールド、関係、および比較値を含む、フィルタ条件を指定する自然言語入力をユーザから受信することを含む。
【0018】
この方法は、第1のデータフィールドから第2のデータフィールドに切り替えるための入力を受信することをさらに含む。この方法は、ユーザ入力に応答して、第2のデータフィールドのデータタイプに従って第2の比較値を自動的に選択することと、更新されたフィルタに対応する更新されたデータ可視化をグラフィカルユーザインターフェースに表示することと、を含む。
【0019】
場合によっては、第1のデータフィールドのドメインは、第1の比較値を含む。
【0020】
場合によっては、第1のデータフィールドのデータタイプは、第2のデータフィールドのデータタイプとは異なる。
【0021】
いくつかの実装形態において、この方法は、ユーザ更新を受信する前に、フィルタ条件に従って、更新されたデータ可視化とは異なる初期データ可視化をグラフィカルユーザインターフェース上に表示することをさらに含む。
【0022】
いくつかの実装形態において、この方法は、第2の比較値のデフォルト値を識別することをさらに含む。
【0023】
いくつかの実装形態において、コンピューティングデバイスは、1つ以上のプロセッサ、メモリ、ディスプレイ、およびメモリに格納された1つ以上のプログラムを含む。プログラムは、1つ以上のプロセッサによって実行されるように構成される。1つ以上のプログラムは、本明細書に記載の方法のいずれかを実行するための命令を含む。
【0024】
いくつかの実装形態において、非一時的なコンピュータ可読記憶媒体は、1つ以上のプロセッサ、メモリ、およびディスプレイを有するコンピューティングデバイスによって実行されるように構成された1つ以上のプログラムを格納する。1つ以上のプログラムは、本明細書に記載の方法のいずれかを実行するための命令を含む。
【0025】
このように、ユーザが自然言語コマンドを使用してデータ可視化を容易に構築および更新することを可能にする方法、システム、およびグラフィカルユーザインターフェースが開示される。
【図面の簡単な説明】
【0026】
開示されたシステム、方法、およびグラフィカルユーザインターフェース、ならびに自然言語インターフェースを提供する追加のシステム、方法、およびグラフィカルユーザインターフェースをよりよく理解するために、同様の参照番号が図全体を通して対応する部分を指す以下の図面と併せて、以下の発明を実施するための形態を参照されたい。
【0027】
【
図1】いくつかの実装形態によるグラフィカルユーザインターフェースである。
【
図2】いくつかの実装形態によるコンピューティングデバイスのブロック図である。
【
図3A】いくつかの実装形態による自然言語入力を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図3B】いくつかの実装形態による自然言語入力を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図3C】いくつかの実装形態による自然言語入力を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図3D】いくつかの実装形態による自然言語入力を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図3E】いくつかの実装形態による自然言語入力を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図3F】いくつかの実装形態による自然言語入力を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図4A】いくつかの実装形態による自然言語入力の変更に基づいてデータ可視化を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図4B】いくつかの実装形態による自然言語入力の変更に基づいてデータ可視化を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図4C】いくつかの実装形態による自然言語入力の変更に基づいてデータ可視化を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図4D】いくつかの実装形態による自然言語入力の変更に基づいてデータ可視化を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図4E】いくつかの実装形態による自然言語入力の変更に基づいてデータ可視化を更新するためのグラフィカルユーザインターフェースの一連のスクリーンショットを提供する。
【
図5A】いくつかの実装形態による自然言語入力で指定されたフィルタの更新を示す。
【
図5B】いくつかの実装形態による自然言語入力で指定されたフィルタの更新を示す。
【
図5C】いくつかの実装形態による自然言語入力で指定されたフィルタの更新を示す。
【
図5D】いくつかの実装形態による自然言語入力で指定されたフィルタの更新を示す。
【
図6A】いくつかの実装形態による、更新されたデータ可視化を表示するために提供されたプロセスのフローチャートである。
【
図6B】いくつかの実装形態による、更新されたデータ可視化を表示するために提供されたプロセスのフローチャートである。
【
図7】いくつかの実装形態によるデータフィルタを更新するプロセスのフローチャートを提供する。
【
図8A】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8B】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8C】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8D】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8E】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8F】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8G】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8H】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8I】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【
図8J】いくつかの実装形態による自然言語インターフェースで使用されるウィジェットを示す。
【0028】
ここで、実装形態を参照すると、その例は、添付の図面に示されている。以下の説明では、本発明の徹底した理解を提供するために、数多くの特定の詳細が記載される。しかしながら、本発明がこれらの特定の詳細を必要とせずに実施され得ることは当業者には明らかであろう。
【発明を実施するための形態】
【0029】
本明細書で説明されるいくつかの方法およびデバイスは、データ可視化を生成するために使用される自然言語入力を自動的に更新することによって、データ可視化方法を改善する。このような方法およびデバイスは、自然言語入力におけるすべての関連フレーズの手動更新を不要にし、データ可視化に迅速で容易なアクセスを提供してユーザの負担を軽減する。ユーザが入力の関連部分を更新せずに自然言語入力の一部を修正する場合、更新されたデータ可視化の代わりに、エラー状態がトリガーされ得る。いくつかの実装形態において、ユーザが自然言語入力の一部を修正する場合、フィルタのような自然言語入力の別の部分も更新する必要がある。これは、ユーザが自然言語入力の様々な部分の依存関係を理解することを要求する。本明細書において説明する方法およびデバイスは、自然言語表現を自動的に更新するので、ユーザが入力の一部を変更する場合に、入力の関連部分が自動的に検出されて更新される。
【0030】
図1は、対話型データ分析のためのグラフィカルユーザインターフェース100を示している。ユーザインターフェース100は、データペインとも呼ばれるスキーマ情報領域110を表示する。スキーマ情報領域110は、データ可視化を構築するために選択および使用され得るデータフィールドを提供する。いくつかの実装形態において、スキーマのデータフィールドは、スキーマ情報領域110において、範囲のグループ(例えば、カテゴリデータ)と計量のグループ(例えば、数量)に分けられる。ユーザインターフェース100は、ユーザインターフェースコントロール120を表示する。いくつかの実装形態において、ユーザインターフェースコントロール120は、ユーザから自然言語入力128(例えば、表現)を受信および/または表示する。いくつかの実装形態において、グラフィカルユーザインターフェース100は、ユーザインターフェースコントロール120における入力128に基づいて生成されたデータ可視化を表示するためのデータ可視化領域112を含む。
【0031】
いくつかの実装形態において、データ可視化のタイプは、ビュータイプセレクタ122を使用することによって変更され得る。例えば、
図1で選択したデータ可視化のビュータイプは「Bar Chart(棒グラフ)」である。「map(マップ)」、「line chart(折れ線グラフ)」、「pie chart(円グラフ)」、「scatter plot(散布図)」、「text table(テキストテーブル)」、および「treemap(ツリーマップ)」のような、データ可視化の追加のビュータイプを使用できる。いくつかの実装形態において、データ可視化は、入力に基づくデフォルトのビュータイプに従って生成される。いくつかの実装形態において、デフォルトのビュータイプは、各々参照によりその全体が組み込まれる、米国特許第8,099,674号および米国特許第9,424,318号に記載されているように、ユーザによって選択されたデータフィールドのデータタイプおよび/またはユーザによって選択されたデータフィールドのデータ値に従って判定される最高位の可視化タイプに基づいて選択される。例えば、入力が修正される場合、異なるタイプのデータ可視化が表示される(例えば、データ可視化タイプが「bar chart」から「text table」に変わる
図3Eおよび
図3Fを参照して説明されているように)。いくつかの実装形態において、ユーザは、ユーザインターフェースコントロール120における自然言語入力の一部としてデータ可視化タイプを指定する。例えば、ユーザは、「in a Bar Chart(棒グラフで)」を指定する追加のフレーズを入力し得る(例えば、コントロール120にタイプする)。例えば、コンピューティングデバイスは、「in a Bar Chart」のユーザ入力を解析し、ビュータイプセレクタを「bar chart」オプションに更新し得る。
【0032】
いくつかの実装形態において、ビュータイプセレクタ122から選択されるデータ可視化のタイプに応答して、コンピューティングデバイスは、データ可視化タイプを含む自然言語コントロール120にフレーズを表示する。例えば、コンピューティングデバイスは、ビュータイプセレクタ122における「bar chart」のユーザ選択に応答して、「in a bar chart」を自然言語表現に追加する。
【0033】
いくつかの実装形態において、現在の表現に意味をなすビュータイプのみがオプションとしてユーザに提供される。例えば、ユーザが「in a map」と入力(例えば、自然言語コントロール120にタイプする)しても、自然言語表現128は、マップデータ可視化と矛盾するフレーズを含まないが、コンピューティングデバイスは、ユーザによる自然言語入力を解析後に、ビュータイプセレクタ122をデフォルトのデータ可視化タイプに設定し、かつ「map」ビュータイプオプションをビュータイプセレクタ122のドロップダウンに含まない。例えば、ビュータイプセレクタ122のドロップダウンは、自然言語入力128に基づいて意味をなす可視化タイプのみを含む。
【0034】
いくつかの実装形態において、データフィールドは、データベース自体の範囲または計量として指定される場合がある(例えば、データソースがキューブデータソースの場合)。他の実装形態において、データ可視化アプリケーション222は、データフィールドのデータタイプに基づき計量または範囲のいずれかである、各データフィールドにデフォルトの役割を自動的に割り当てる。例えば、デフォルトで数値フィールドが計量として使用されるのに対して、デフォルトで非数値フィールド(例えば、テキストフィールドおよび日付フィールド)が範囲として使用される。ユーザは、必要に応じて、割り当てられたデフォルトの役割を上書き可能である。例えば、数値の「ID」フィールドは、最初は計量として分類され得るが、ユーザは「ID」フィールドを範囲として再分類できる。
【0035】
範囲は、データをカテゴリ(「バケット」とも呼ばれる)に整理するデータフィールドである。例えば、データソースが「United States(合衆国)」に関連付けられたデータを含み、データソースが「State(州)」に対応するデータフィールドを含む場合、「State(州)」は範囲として使用される。各範囲は、棒グラフの個別の棒(例えば、州ごとに個別の棒)など、データ可視化内に異なる区分を作成する。これらの区分は通常、対応する範囲値ごとに1つのヘッダを使用して、範囲ヘッダでラベル付けされる(例えば、各棒には、対応する州の名前がラベル付けされ得る)。
【0036】
計量は、売上高、利益、発注量のようなものを計量するために使用されるデータフィールドであり、通常は連続的である。例えば、範囲「State」は離散可能な値の固定セットがあるが、「Sales Amount(売上高)」データフィールドは広い範囲内の任意の値を有することができる。かなりの数のレコードは、低価格のアイテムに関連する様々な少ない売上高を含む可能性があり、他の多くのレコードには、高価格のアイテムのより多い売上高を含み得る。各計量は通常、選択された範囲(例えば、販売は州ごとに集計される場合がある)に応じた詳細レベル(グループ化)で単一の値に集計される(例えば、デフォルトでは計量は合計される)。
【0037】
図1に示されるように、自然言語入力コントロール120は、自然言語表現128を入力および表示するために使用される。自然言語プロセッサ228は、表現128を3つの異なるフレーズ130-1、130-2、および130-3に解析した。場合によっては、1つ以上のフレーズがサブフレーズで構成される。
【0038】
図2は、いくつかの実装形態によるグラフィカルユーザインターフェース100を表示することができるコンピューティングデバイス200を示すブロック図である。コンピューティングデバイス200の様々な例としては、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、およびデータ可視化アプリケーション222を実行することができるディスプレイおよびプロセッサを有する他のコンピューティングデバイスが挙げられる。コンピューティングデバイス200は、典型的には、メモリ214に格納されたモジュール、プログラム、および/または命令を実行し、それによって処理動作を実行するための1つ以上の処理ユニット/コア(CPU)202と、1つ以上のネットワークまたは他の通信インターフェース204と、メモリ214と、これらの構成要素を相互接続するための1つ以上の通信バス212と、を含む。通信バス212は、システム構成要素間の通信を相互接続および制御する回路網を含み得る。
【0039】
コンピューティングデバイス200は、ディスプレイデバイス208および1つ以上の入力デバイスまたは機構210を備えるユーザインターフェース206を含む。いくつかの実装形態において、入力デバイス/機構はキーボードを含む。いくつかの実装形態において、入力デバイス/機構は、ディスプレイデバイス208に必要に応じて表示される「ソフト」キーボードを含み、ユーザがディスプレイ208に表示される「キーを押す」ことを可能にする。いくつかの実装形態において、ディスプレイ208および入力デバイス/機構210は、タッチスクリーンディスプレイ(タッチセンシティブディスプレイとも呼ばれる)を備える。
【0040】
いくつかの実装形態において、メモリ214は、DRAM、SRAM、DDRRAM、または他のランダムアクセス固体メモリデバイスなどの高速ランダムアクセスメモリを含む。いくつかの実装形態において、メモリ214は、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性固体記憶デバイスなどの不揮発性メモリを含む。いくつかの実装形態において、メモリ214は、CPU(複数可)202から遠隔に位置する1つ以上の記憶デバイスを含む。メモリ214、または代替的にメモリ214内の不揮発性メモリデバイス(複数可)は、非一時的なコンピュータ可読記憶媒体を含む。いくつかの実装形態において、メモリ214、またはメモリ214のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、およびデータ構造、またはそれらのサブセットを格納する:
・様々な基本的なシステムサービスを処理し、ハードウェアに依存するタスクを実行するための手順を含むオペレーティングシステム216;
・1つ以上の通信ネットワークインターフェース204(有線または無線)およびインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどのような1つ以上の通信ネットワークを介してコンピューティングデバイス200を他のコンピュータおよびデバイスに接続するために使用される通信モジュール218;
・ユーザがネットワークを介して遠隔のコンピュータまたはデバイスと通信することを可能にするブラウザ220(またはウェブページを表示することができる他のアプリケーション);
・データ可視化アプリケーション222。いくつかの実装形態において、データ可視化アプリケーション222はまた、以下を含む:
○ユーザが視覚的グラフィックスを構築するためのグラフィカルユーザインターフェース100。いくつかの実装形態において、グラフィカルユーザインターフェースは、自然言語コントロール120を介して、ユーザ入力を受信するためのユーザ入力モジュール224を含む。例えば、ユーザは、1つ以上のデータソース240(コンピューティングデバイス200に格納されるか、または遠隔に格納され得る)および/またはデータソース(複数可)からのデータフィールドを識別する、自然言語表現128(例えば、コントロール120を介して)を入力する。選択されたフィールドは、視覚的グラフィックを定義するために使用される。次に、データ可視化アプリケーション222は、生成された視覚的グラフィックをユーザインターフェース100に表示する。いくつかの実装形態において、データ可視化アプリケーション222は、スタンドアロンアプリケーション(例えば、デスクトップアプリケーション)として実行される。いくつかの実装形態において、データ可視化アプリケーション222は、ウェブブラウザ220またはウェブサーバによって提供されるウェブページを使用する別のアプリケーション内で、以下を実行する;
○ユーザ入力(例えば、自然言語入力)を受信し、対応する視覚的グラフィック(「データ可視化」または「データビズ」とも呼ばれる)を生成するデータ可視化生成モジュール226;
○ユーザによって提供された自然言語入力を受信されて解析する自然言語プロセッサ228。自然言語プロセッサ228はまた、依存性判定モジュール230を含み得、これは、データベース240における依存関係を検索して、特定の用語および/またはフレーズがどのように関連しているか(例えば、依存)を判定する。いくつかの実装形態において、自然言語プロセッサ228は、1つ以上のフィルタがユーザによって修正されたフィールドに関連しているかどうかを判定するフィルタ生成モジュール232を含む。フィルタ生成モジュール232は、フィールドへの変更に基づいて1つ以上のフィルタを生成する;
○ユーザが選択可能なオプションを含むウィジェットを生成するウィジェット生成モジュール234。例えば、「sort(並べ替え)」ウィジェットは、ユーザが並べ替えフィールド(例えば、並べ替えフィールドとして識別される自然言語用語)上で選択(例えば、ホバリング)することに応答して生成される。並べ替えウィジェットは、「ascending(昇順)」、「descending(降順)」、および/または「alphabetical(アルファベット順)」などのユーザが選択可能なオプションを含み、ユーザは、ウィジェットから選択したフィールドをどのように並べ替えるのかを容易に選択することができる。
・データ可視化アプリケーション222によって使用される、ゼロ個以上のデータベースまたはデータソース240(例えば、第1のデータソース240-1および第2のデータソース240-2)。いくつかの実装形態において、データソースは、スプレッドシートファイル、CSVファイル、XMLファイル、フラットファイル、もしくはJSONファイルとして格納されるか、またはリレーショナルデータベースに格納される。
【0041】
上述の識別された実行可能モジュール、アプリケーション、または手順のセットの各々は、1つ以上のメモリデバイスに格納され得、かつ上述の機能を実行するための命令のセットに対応する。上述の識別されたモジュールまたはプログラム(すなわち、命令のセット)は、別個のソフトウェアプログラム、手順、またはモジュールとして実装される必要はなく、したがって、これらのモジュールの様々なサブセットは、様々な実装形態において組み合わされるか、または別様に再配置され得る。いくつかの実装形態において、メモリ214は、上述の識別されたモジュールおよびデータ構造のサブセットを格納する。さらに、メモリ214は、上述されていない追加のモジュールまたはデータ構造を格納し得る。
【0042】
図2は、コンピューティングデバイス200を示しているが、
図2は、本明細書で説明されている実装形態の構造的概略としてではなく、存在し得る様々な特徴の機能的説明としてより意図されている。実際には、当業者によって認識されるように、別々に示されたアイテムを組み合わせることができ、いくつかのアイテムを分離することができる。
【0043】
図3A~
図3Fは、グラフィカルユーザインターフェース100の一連のスクリーンショットを提供する。ユーザは、自然言語コントロール120と対話し、表現128を更新することができる。
図3Aにおける自然言語表現128は、3つの異なるフレーズ130-1、130-2、および130-3を含む。各フレーズは個別に識別され(例えば、個別のテキストボックス内で)、「sum of Number of Records(レコードの合計数)」130-1、「by Region(地域別)」130-2(例えば、「by」はグループ別機能を表す)、および「sort Region in alphabetical order(地域をアルファベット順に並べ替える)」130-3を含む。典型的には、各フレーズ130は、データソース240からデータフィールドを識別する1つ以上の用語を含む。用語は、範囲または計量であり得る。自然言語入力は、2つ以上の用語を含み得る。
図3Aに示すように、自然言語入力を表す初期データ可視化がグラフィカルユーザインターフェースに表示される。例えば、
図3Aは、アルファベット順に並べ替えられた地域ごとのレコード数を表す棒グラフを示している。「Region(地域)」列ヘッダ140は、棒グラフの各行が地域に対応することを示し、並べ替えインジケータ142は、行が現在アルファベット順に並べ替えられていることを示す(第3のフレーズ130-3によって指定されるように)。
【0044】
場合によっては、ユーザは自然言語表現の第1の用語を選択する(例えば、マウスクリック、ホバー、または他の入力を介して)。例えば、
図3Bは、ユーザが、第3のフレーズ「sort Region in alphabetical order(地域をアルファベット順に並べ替える)」130-3における「Region」144という用語上にホバリングしていることを示している。いくつかの実装形態において、ユーザの選択に応じて、用語は自然言語入力内で視覚的に区別される。例えば、選択された用語「Region」144は、ユーザがその用語上にホバリングしたことに応答して下線が引かれている。いくつかの実装形態において、
図3Cに示すように、ユーザの選択に応答して、ウィジェットが生成される(例えば、ウィジェット生成モジュール234を使用して)。例えば、ウィジェット150は、選択された用語144を置き換えるために、ユーザが選択可能なオプション(例えば、代替用語を含む)をユーザに表示する。
図3Cにおいてユーザは、ウィジェットから「Country(国)」オプション152を選択する。ユーザの選択に応じて、第1の用語「Region」144は、第3のフレーズ「sort[term]in alphabetical order(アルファベット順に[用語]を並び替える)」130-3において、選択された用語「Country」146に置き換えられる。
【0045】
場合によっては、第2のフレーズ(または第2のフレーズ内の用語)は、編集されたフレーズ(または編集されたフレーズ内の編集された用語)に依存する。並べ替えフィールドはグループ化フィールドと互換性がある必要があるため、例えば、第2のフレーズ「by Region(地域別)」130-2は、第3のフレーズ「sort Region in alphabetical order」130-3に依存している。いくつかの実装形態において、用語および/またはフレーズの依存性は、データおよびデータがどのように関連しているかに関する情報を格納するデータベースにおいて検索を実行することによって判定される。場合によっては、重複する用語を含むフレーズは依存フレーズである。例えば、両方のフレーズが「Region」という用語を使用する場合、コンピューティングデバイスは、そのフレーズが依存フレーズであると判定し得る。ここで、ユーザが第3のフレーズ130-3において「Region」という用語を「Country」に置き換えたとき、第2のフレーズ「by Region」130-2が更新されなかった場合、コンピューティングデバイスはエラーを発生させる。要求されたデータが国別にグループ化されていない場合、システムは国別に並べ替えることができない。エラーを発生させる代わりに、コンピューティングデバイスは、ユーザ入力に基づいてエラーを返すのを防ぐために、「by Region」130-2も更新されなければならないことを自動的に判定する。これにより、エラーを防ぐためにユーザが第2のフレーズを手動で更新する必要がなくなるため、ユーザエクスペリエンスが向上する。
【0046】
第2のフレーズが第3のフレーズに依存しているという判定に従って、第3のフレーズの用語「Region」144を用語「Country」146に置き換えるユーザの入力はまた、コンピューティングデバイスに、「Region」を「Country」148で置き換えて、第2のフレーズ130-2を更新させる。第2のフレーズは、ユーザ入力なしでコンピューティングデバイスによって自動的に更新される(例えば、ユーザは、第1の用語を修正した後、「by Region」を「by Country」に手動で変更しない)。変更がまだコミットされていないため、
図3Cにおいては、列ヘッダおよび並び替えインジケータ154はまだ更新されていないことに留意されたい。結果として更新された自然言語表現を
図3Dに示す。さらに、
図3Dは、更新された自然言語表現を表す更新されたデータ可視化を示し、更新された列ヘッダおよび並び替えインジケータ156によって示されるように、ここで棒グラフの棒をアルファベット順に国別に並び替えている。
【0047】
図3Eおよび
図3Fは、フレーズ内の用語を修正するユーザ入力の別の例を示しており、これにより、デバイスは(例えば、第1のフレーズに依存する)別のフレーズを更新する。例えば、
図3Eにおけるユーザ入力は、ユーザが、第2のフレーズ「by Country」130-2の上にホバリングしていることを示している。いくつかの実装形態において、自然言語表現におけるフレーズは、「x」オプション158(例えば、「x」オプション158上をホバリングするユーザ入力指示によって
図3Eに示される)を選択するユーザ入力によって削除可能である(例えば、消去され得る)。例えば、「x」オプション158は、フレーズを含むテキストボックス上でのユーザ入力(例えば、ホバー)に応答して動的に生成される。この例において、コンピューティングデバイスは、第2のフレーズ「by Country」130-2と第3のフレーズ「sort Country in alphabetical order(国をアルファベット順に並び替える)」130-3が互いに依存していると判定する。
図3Eは、国別にグループ化され、アルファベット順に並び替えられたいくつかのレコードを表す棒グラフの初期データ可視化を示している。
【0048】
ユーザ入力は、自然言語表現128から第2のフレーズを削除することによって、第2のフレーズ130-2を修正する。第2のフレーズ「by Country」130-2を削除することに応答して、コンピューティングデバイスは、第3のフレーズを削除することによって、第3のフレーズ「sort Country in alphabetical order」130-3を更新する。結果として更新された自然言語表現を
図3Fに示す。図に示すように、第2のフレーズ「by Country」130-2は削除され、第3のフレーズ「sort Country in alphabetical order」130-3は、ユーザ入力なしでコンピューティングデバイスによって自動的に削除される。例えば、ユーザは、第2のフレーズに対して「x」オプション158のみを選択し、コンピューティングデバイスは、第3のフレーズが第2のフレーズに依存していると判定して、エラーを発生させる代わりに第3のフレーズを自動的に削除した。したがって、ユーザは表現を訂正するために第3のフレーズを手動で削除する必要はなかった。
図3Fは、「sum of Number of Records」というフレーズ130-1を表すテキストテーブルに対応する更新されたデータ可視化も示している。グループ化を指定するデータフィールドがないため、データのすべての行がグループ化されて単一の合計が作成される。
【0049】
上述の例に示されているように、コンピューティングデバイスは、第1のフレーズがユーザによってどのように修正されたかを判定し、その修正に基づいて1つ以上の依存フレーズを更新する。いくつかの実装形態において、コンピューティングデバイスは、第1のフレーズへの修正に基づいて、第2のフレーズの用語を更新する。いくつかの実装形態において、コンピューティングデバイスは、第1のフレーズへの修正に基づいて第2のフレーズを削除する。
【0050】
図4A~
図4Eは、自然言語入力への変更に基づいてデータ可視化のビュータイプを更新する、グラフィカルユーザインターフェース100の一連のスクリーンショットを提供する。いくつかの実装形態において、コンピューティングデバイスは、自然言語入力に基づいて、あるタイプのデータ可視化を自動的に生成する(例えば、データ可視化生成モジュール226を使用して)。いくつかの実装形態において、(例えば、自然言語コントロール120を介して)自然言語入力への修正(例えば、ユーザ入力から受信された)により、コンピューティングデバイスは、ユーザに提示されるデータ可視化のタイプを変更する。例えば、
図4Aにおいて、自然言語入力は、「average Population(平均人口)」130-4、「by Country」130-5、「sort Country in descending order by average Population(平均人口の降順で国を並べ替える)」130-6の3つの異なるフレーズを含む。データ可視化のビュータイプは棒グラフである。列ヘッダ160によって示されるように、棒グラフは、国ごとに棒を有し、並べ替えインジケータ162は、データが降順で並べ替えられていることを示している。
図4Bは、第3のフレーズ130-6「sort Country in descending order by average Population」に対するユーザ入力(例えば、ホバリング)を示している。ユーザがフレーズ130-6にホバリングすることに応答して、コンピューティングデバイスは、「x」オプション164を動的に生成し、これをユーザが選択し、フレーズ130-6を削除することができる。ユーザが自然言語入力の第3のフレーズを削除したことに応答して(例えば、「x」オプション164を選択することにより)、コンピューティングデバイスは、「sort」を含むフレーズがないので、データ可視化のデフォルトタイプは地図であると判定する。これが機能するのは、自然言語の入力が「average Population」130-4と「by Country」130-5の2つのフレーズしか含んでいないためである。これを
図4Cに示す。いくつかの実装形態において、ユーザは、データ可視化をデータ可視化のデフォルトタイプから変更することができる。例えば、データ可視化のデフォルトタイプ「map」は、ドロップダウンコントロール168に示されている。データ可視化の代替のタイプは、ドロップダウンコントロール168を介してユーザに提示され、それにより、ユーザは、グラフィカルユーザインターフェースに示されるデータ可視化のタイプを修正し得る。
【0051】
図4Dは、データ可視化を更新する別の例を示す。
図4Dにおいて、ユーザは、(例えば、タイピングすることによって)追加のフレーズ130-7を自然言語入力に(例えば、自然言語入力コントロール120を介して)入力する。
図4Eは、ユーザ入力の受信に応答して、コンピューティングデバイスがデータ可視化を
図4Dにおけるマップビューから
図4Eにおける棒グラフビューに変更することを示している。
図4Eにおける棒グラフは、更新された自然言語表現を表しており、国別の平均人口を国ごとにアルファベット順に並べ替えて示している。列ヘッダおよび並び替えインジケータ170は、棒グラフの各行が国に対応し、それらの行がアルファベット順に並び替えられていることを示している(例えば、追加のフレーズ130-7によって指定されるように)。
【0052】
図5A~
図5Dは、いくつかの実装形態による自然言語表現500の更新フィルタを示している。
図5Aは、各々がデータフィールドに対応する3つのフレーズ502-1、502-2、および502-3を有する自然言語入力500を示している。フィルタフレーズ(第3のフレーズ502-3のような)は、データフィールドを特定の値または[データフィールド][関係][比較値]のような別のデータフィールドと比較する。最も一般的な関係は=、≠、>、≧、<、および≦である。場合によっては、自然言語入力500のフレーズ502は、自然言語テンプレート(例えば、コンピューティングデバイスのデータベースに格納されている)に従う。自然言語テンプレートおよび自然言語処理に基づいて、コンピューティングデバイスは、ユーザ入力に基づき、フレーズをどのように更新するのか(例えば、または自動的に完成するのか)を判定する。例えば、フレーズの第1の用語がカテゴリである場合、テンプレートは、カテゴリフィルタがフレーズを更新するのに適切であることを識別する。別の例として、フレーズの第1の用語が数値データフィールドである場合、テンプレートは、フレーズを更新する(例えば、完成する)のに定量的フィルタが適切であることを識別する。
【0053】
いくつかの実装形態において、ユーザインターフェースコントロール120内のユーザ入力(例えば、ホバリング)は、用語「Country」514を選択する。ユーザが用語(例えば、データフィールド)「Country」514上にホバリングすることに応答して、コンピューティングデバイスは、自動的に(例えば、ユーザ入力なしで)部分入力をテンプレートフレーズと相関させ、フレーズの第2のテンプレートフィールドにデフォルト値(例えば、「Argentina(アルゼンチン)」516)を設定する。特に、コンピューティングデバイスは、ユーザが、比較のためにカテゴリ値を必要とする、範囲(データフィールド「Country」514)を選択したと判定する。デフォルトの比較値は、国データフィールド514のデータ値である。このようにして、データフィールド「Country」514を選択すると、コンピューティングデバイスは、「Argentina」516でフレーズテンプレートを完成させる。これらのアクションは、
図5Aにおけるスクリーンショットの前に発生した。
図5Aに示されるように、マップのデータ可視化は、グラフィカルユーザインターフェースに示され(マップは、ドロップダウンウィジェット518の後ろに部分的に隠されている)、これは、国514を「Argentina」516にフィルタリングしたことを反映している。
【0054】
図5Aにおいて、ユーザは、データフィールド選択ウィジェット518を開くために別のアクション(例えば、国の用語514をクリックする)をとった。
図5Aに示すように、国フィールドオプション520が現在選択されている。国514のフィルタに基づくと、「Argentina」516の比較値には意味がある。ただし、ユーザが
図5Bで人口オプション522を選択すると、人口を文字列「Argentina」と比較しても意味がなくなる。
【0055】
図5Bにおいて、ウィジェット518内のユーザ入力(例えば、ホバリング)は、用語「Population(人口)」522を選択する。コンピューティングデバイスは、選択された用語が定量的であると判定する。ユーザ入力に応答して、コンピューティングデバイスは、比較演算子536(例えば、「at least(少なくとも)」または「≧」)およびフレーズ502-3の比較値538を自動的に更新する。この例において、コンピューティングデバイスは10,000の比較値でフレーズを完成させる。人口534のような定量的なデータフィールドの場合、集計タイプも選択する必要がある(例えば、SUM(合計)、COUNT(総数)、またはAVERAGE(平均))。この例では、集計タイプは、デフォルトでAVERAGE524になり、これは第3のフレーズ502-3において集計タイプ532として表示される。いくつかの実装形態において、集計タイプは、デフォルトで他のフレーズですでに指定されているものになる(例えば、第1のフレーズ502-1における「Average Population」)。さらに、棒グラフに対応する更新されたデータ可視化が、更新されたフレーズに基づいてグラフィカルユーザインターフェースに表示される。
【0056】
図5Cは、第1のデータフィールド「Country」552を有する、第3のフレーズ「Country contains‘South’(「南」を含む国)」550-3を含む自然言語入力を示している。比較演算子554は「contains(含む)」であり、比較値は「South(南)」556である。この場合、第3のフレーズ550-3は、国名がテキスト文字列「South」556を含むデータに制限するフィルタを指定する。データ可視化に示されているように、地図には「South Africa(南アフリカ)」560が示されている。
図5Cにおいて、ユーザは、フィルタウィジェット518を起動するアクションを実行し、Countryオプション562が選択されている。
【0057】
図5Dは、「Country」オプション562から「Continent(大陸)」オプション564へのユーザ入力切り替えを示している。コンピューティングデバイスは、「Country」と「Continent」の両方がカテゴリデータを格納していると判定する。したがって、コンピューティングデバイスは、カテゴリフィルタの比較演算子554および比較値556を保持する。カテゴリフィルタは、選択された新しいデータフィールド「Continent」572に基づいた適切なフィルタのままである(例えば、エラーは発生しない)。
【0058】
図6Aおよび
図6Bは、自然言語表現に従ってデータ可視化を表示する方法600を示している。方法600は、プロセスとも称される。いくつかの実装形態において、方法は、ディスプレイと結合されたコンピューティングデバイスで実行および行われ、コンピューティングデバイスは1つ以上のプロセッサと、1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを格納するメモリとを有する(602)。コンピューティングデバイスによって行われる方法600は、任意選択で、非一時的なコンピュータ可読記憶媒体に格納される命令によって支配される。命令は、コンピューティングデバイスの1つ以上のプロセッサによって実行される。
図6Aおよび
図6Bに示される動作の各々は、コンピュータメモリまたは非一時的なコンピュータ可読記憶媒体(例えば、コンピューティングデバイス200のメモリ214)に格納された命令に対応し得る。コンピュータ可読記憶媒体は、磁気もしくは光ディスク記憶デバイス、フラッシュメモリなどの固体記憶デバイス、または他の1つ以上の不揮発性メモリデバイスを含み得る。コンピュータ可読記憶媒体に格納された命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈される他の命令フォーマットのうちの1つ以上を含み得る。方法600におけるいくつかの動作は、組み合わせられ得、および/またはいくつかの動作の順序は、変更され得る。
【0059】
いくつかの実装形態において、コンピューティングデバイスは、ディスプレイ上にグラフィカルユーザインターフェースを表示する(603)。例えば、コンピューティングデバイスは、
図1に示されるグラフィカルユーザインターフェース100を表示する。
【0060】
コンピューティングデバイスは、ユーザから受信された自然言語入力を分析して、第1の用語を含む第1のフレーズに対応する自然言語入力の一部を識別する(604)。いくつかの実装形態において、自然言語入力は、グラフィカルユーザインターフェース100におけるユーザインターフェースコントロール120において受信される(606)。いくつかの実装形態において、自然言語入力の少なくとも一部がユーザによってタイプされる。いくつかの実装形態において、自然言語入力の少なくとも一部は、コンピューティングデバイスによって提供される複数のオプションから、ユーザによって選択される。いくつかの実装形態において、自然言語入力の一部のみがユーザから受信され、自然言語入力は、コンピューティングデバイスによって自動的に完成される(例えば、コンピューティングデバイスは、自然言語入力をどのように完成させるかを予測および/または提案する)。例えば、ユーザは「sum of Number of Records」、「by Region」、および「sort」を入力(例えば、タイプ)し得、コンピューティングデバイスは、ユーザ入力に基づいて、デフォルトのフレーズ(例えば、「Region in alphabetical order(アルファベット順の地域)」)により自然言語入力を完成させる。いくつかの実装形態において、自然言語入力は、2つ以上の異なるフレーズを含む(608)。例えば、
図1に示されている自然言語入力(例えば、表現)は、「sum of Number of Records」、「by Region」、および「sort Region in alphabetical order」という3つの異なるフレーズで構成されている。いくつかの実装形態において、グラフィカルユーザインターフェース100は、各フレーズを別個のユーザインターフェース要素(例えば、テキストボックス)に表示することによって、2つ以上の異なるフレーズを区別する。
【0061】
いくつかの実装形態において、第2の入力を受信する前に、コンピューティングデバイスは、自然言語入力に従って、更新されたデータ可視化とは異なる初期データ可視化を表示する(610)。例えば、
図3Aに示すデータ可視化(例えば、棒グラフ)は、グラフィカルユーザインターフェースに表示される。データ可視化は、自然言語入力に従って表示される(例えば、棒グラフは、地域別のレコード数をアルファベット順に並べ替えて示している)。
【0062】
コンピューティングデバイスは、ユーザから、第1のフレーズにおける第1の用語を修正する第2の入力を受信する(611)。第2の入力を受信することに応答して、コンピューティングデバイスは、第2の入力に基づいて(自然言語入力において)第2のフレーズを更新する(614)。いくつかの実装形態において、第2のフレーズは、ユーザ入力なしで自動的に更新される。いくつかの実装形態において、第2のフレーズを更新する前に、コンピューティングデバイスは、第2の入力が第2のフレーズをどのように更新するかを示す(例えば、グラフィカルユーザインターフェース上で)。例えば、コンピューティングデバイスは、第1のフレーズ(例えば、「by Country」)を削除することにより、コンピューティングデバイスが第2のフレーズ(例えば、「sort Country in alphabetical order」)も(例えば、自動的に)削除することをユーザに示す。この指示は、異なるフレーズが互いにどのように依存するか(例えば、影響するか)をユーザに示す。
【0063】
いくつかの実装形態において、第2の入力は、第1の用語を置き換える第2の用語を含む(612)。いくつかの実装形態において、第2の用語に基づいて第2のフレーズを更新することは、第2のフレーズから第3の用語を削除し、第2の用語を第2のフレーズに追加して、第3の用語を置き換える(622)。例えば、コンピューティングデバイスは、第1のフレーズへの変更に一致するように、第2のフレーズの少なくとも一部を更新する。例えば、
図3B~
図3Dは、第1のフレーズ(例えば、「sort Region in alphabetical order」)の第1の用語(例えば、「Region」)が第1の用語を第2の用語(例えば、「Country」)に置き換えることによって修正された、グラフィカルユーザインターフェースの一連のスクリーンショットを示している。例えば、ユーザは、
図3Cで、第2の入力を提供する(例えば、ドロップダウンメニューに提示される用語のセットから「Country」を選択する)。選択された第2の用語(例えば、国)は、自然言語入力の第1の用語(例えば、地域)を修正する(例えば、置き換える)。第1のフレーズ(例えば、「sort Region in alphabetical order」)の第1の用語(例えば、「Region」)を置き換えるために、第2の用語(例えば、「Country」)を選択するユーザからの第2の入力に応答して、コンピューティングデバイスは、第3の用語を置き換えるために(例えば、「by Region」が「by Country」で置き換えられる)、第2のフレーズ(「by Region」)から第3の用語(例えば、Region)を削除し、かつ、第2のフレーズに第2の用語(「Country」)を追加することによって、第2のフレーズ(例えば、「by Region」)を更新する。
図3Dは、結果として得られる自然言語入力を示しており、そこでは、第2の入力が第1のフレーズを「sort Country in alphabetical order」に修正したことに応じて、第2のフレーズ「by Region」が「by Country」に更新されている。
【0064】
いくつかの実装形態において、第2の入力は、第1のフレーズの第1の用語を削除する(613)。いくつかの実装形態において、第2の用語に基づいて第2のフレーズを更新することは、第2のフレーズを削除する(624)。例えば、
図3Eおよび
図3Fは、グラフィカルユーザインターフェースの一連のスクリーンショットを示し、そこでは第1のフレーズにおける第1の用語(例えば、「by Country」というフレーズの「Country」という用語)が削除される(例えば、フレーズを削除するために、フレーズテキストボックス内のフレーズの隣りにある「×」を選択するユーザ入力によって示されるように)。いくつかの実装形態において、第1のフレーズのすべて(例えば、第1の用語を含む)が第2の入力によって削除される。いくつかの実装形態において、第1のフレーズを削除することに応答して(例えば、「by Country」)、コンピューティングデバイスは第2のフレーズを更新する。例えば、コンピューティングデバイスは、第1のフレーズ「by Country」が第2の入力によって削除されたために、第2のフレーズ(例えば、「sort Country in alphabetical order」)を削除する。
【0065】
いくつかの実装形態において、コンピューティングデバイスは、データベース内で検索を実行して、第2のフレーズが第1のフレーズの第1の用語に依存していると判定する(616)。第2のフレーズの更新は、第2のフレーズが第1のフレーズの第1の用語に依存しているという判定に従って実行される。いくつかの実装形態において、第2のフレーズを修正せずに第1のフレーズを修正してエラー状態が発生する場合、第2のフレーズは第1のフレーズの第1の用語に依存している。例えば、コンピューティングデバイスは、更新された自然言語入力がデータ可視化を生成できるように、第2のフレーズを更新する。
【0066】
第2の入力に基づいて第2のフレーズを更新することに応答して(626)、コンピューティングデバイスは、グラフィカルユーザインターフェース上に、修正された第1のフレーズおよび更新された第2のフレーズを含む、更新された自然言語表現を表示し(628)、更新された自然言語表現を表す更新されたデータ可視化を表示する(630)。例えば、
図3Aは、地域別のレコード数を示す自然言語入力を表す初期データ可視化を示し、
図3Dは、国別のレコード数を示す、更新された自然言語入力を表す更新されたデータ可視化を示す。別の例として、
図3Eは、第2の入力の前の棒グラフとしての初期データ可視化を示し、
図3Fは、第2の入力に応答して第2のフレーズが更新された後の、更新されたデータ視覚化(例えば、「40,660」を示すテキストテーブル)を示す。
【0067】
いくつかの実装形態において、第2のフレーズは、第1のフレーズのサブ部分を含み、第2の入力に基づいて第2のフレーズを更新することは、第1のフレーズのサブ部分を更新することを含む(618)。例えば、第1のフレーズは、第1の用語を含み、さらに第2のフレーズを含む。したがって、第2の入力に応答して、コンピューティングデバイスは、同じフレーズ(例えば、第1のフレーズ)内の別の用語を更新する。
【0068】
いくつかの実装形態において、第1のフレーズおよび第2のフレーズは異なるフレーズである(620)。例えば、
図3A~
図3Fを参照して上述した例は、第1のフレーズが第2のフレーズとは異なる事例を示している(例えば、第2のフレーズは第1のフレーズのサブ部分ではない)。
【0069】
図7は、いくつかの実装形態による、自然言語表現のフィルタ条件を更新する方法700を示している。方法700は、プロセスとも称される。いくつかの実装形態において、この方法は、ディスプレイと結合されたコンピューティングデバイスで実行され、かつ行われる(702)。コンピューティングデバイスは、1つ以上のプロセッサおよびメモリを有する(702)。メモリは、1つ以上のプロセッサによる実行用に構成された1つ以上のプログラムを格納する。コンピューティングデバイスによって行われる方法700は、任意選択で、非一時的なコンピュータ可読記憶媒体に格納される命令によって支配される。命令は、コンピューティングデバイスの1つ以上のプロセッサによって実行される。
図7に示される動作の各々は、コンピュータメモリまたは非一時的なコンピュータ可読記憶媒体(例えば、コンピューティングデバイス200のメモリ214)に格納された命令に対応し得る。コンピュータ可読記憶媒体は、磁気もしくは光ディスク記憶デバイス、フラッシュメモリなどの固体記憶デバイス、または他の1つ以上の不揮発性メモリデバイスを含み得る。コンピュータ可読記憶媒体に格納された命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈される他の命令フォーマットのうちの1つ以上を含み得る。方法700におけるいくつかの動作は、組み合わせられ得、および/またはいくつかの動作の順序は、変更され得る。
【0070】
いくつかの実装形態において、コンピューティングデバイスは、ディスプレイ上にグラフィカルユーザインターフェースを表示する(704)。例えば、コンピューティングデバイスは、
図1に示されるグラフィカルユーザインターフェース100を表示する。
【0071】
コンピューティングデバイスは、ユーザから、第1のデータフィールド、関係、および第1の比較値を含むフィルタを指定する自然言語入力を受信する(706)。いくつかの実装形態において、自然言語入力は、グラフィカルユーザインターフェース100のユーザインターフェースコントロール120において受信される。いくつかの実装形態において、自然言語入力の少なくとも一部はユーザによってタイプされる。いくつかの実装形態において、自然言語入力の少なくとも一部は、コンピューティングデバイスによって提供される複数のオプションから、ユーザによって選択される。いくつかの実装形態において、自然言語入力の一部のみがユーザから受信され、自然言語入力は、コンピューティングデバイスによって自動的に完成される(例えば、コンピューティングデバイスは、自然言語入力をどのように完成するかを予測および/または提案する)。例えば、ユーザは、第1のデータフィールドを入力することができ、コンピューティングデバイスは、第1のフィールドに基づいて比較値を自動的に生成する(例えば、追加する)。例えば、
図5Aに示されている自然言語入力は、「with Country in Argentina(アルゼンチンの国と)」という第3のフレーズ502-3を含む。第1のデータフィールドは、「Country」に対応し、比較値は、「Argentina」である。
図5Aを参照して説明したように、いくつかの実装形態において、自然言語入力は自然言語テンプレートと一致する(例えば、使用されているフィルタのタイプを識別するため)。
【0072】
この例において、第1のデータフィールドのドメインは、比較値を含む(708)。例えば、第1のデータフィールド「Country」のドメインは、「Argentina」を含む国名で構成されている。
【0073】
いくつかの実装形態において、フィルタ指定への更新を受信する前に、コンピューティングデバイスは、指定されたフィルタを適用する、更新されたデータ可視化とは異なる初期データ可視化を表示する(710)。例えば、
図5Aは、マップデータ可視化を示す(例えば、ウィジェットの背後に部分的に隠されている)。
【0074】
コンピューティングデバイスは、ユーザ入力を受信し、フィルタ内の第1のデータフィールドを第2のデータフィールドと置き換える(711)。場合によっては、第2のデータフィールドは、第1のデータフィールドとは異なるデータタイプを有する(712)。例えば、
図5Bに示すように、ユーザは第1のデータフィールド「Country」514を「Population」534に置き換える。この例において、第1のデータフィールド「Country」はカテゴリデータタイプ(例えば、範囲)であるが、データフィールド「Population」は定量データタイプ(例えば、計量)である。したがって、第1のデータフィールドから第2のデータフィールドに切り替えると、データのタイプをカテゴリデータから定量データに変更する必要がある。ユーザ入力が定量データからカテゴリデータに切り替わる可能性もあることを理解されたい。場合によっては、ユーザ入力は、フィルタで使用されるデータのデータタイプを変更しない。例えば、
図5Cおよび
図5Dは、ユーザがデータフィールド「Country」からデータフィールド「Continent」に切り替えることを示しており、どちらもカテゴリデータを有する。場合によっては、切り替えがデータのタイプを変更しないという判定に従って、比較値は更新されない(例えば、比較値556は、
図5Cおよび
図5Dにおいて「South」のままである)。場合によっては、データフィールドへの切り替えがデータのタイプを変更しない場合、比較値は、第2のデータフィールドのドメインに含まれる用語に更新される。例えば、データフィールドが「Country」から「Continent」に切り替えられ、初期比較値が「Argentina」(例えば、「Continent」のドメインに含まれていない値)であった場合、更新された比較値は、「South America(南米)」に変更される。
【0075】
第1のフィールドへの更新を受信することに応答して、コンピューティングデバイスは、第1の比較値を第2の比較値に自動的に置き換える(714)。例えば、
図5Aおよび
図5Bにおいて、第1のデータフィールド「Country」から第2のデータフィールド「Population」へのユーザ入力切り替えに応答して、コンピューティングデバイスは、関係を「in(において)」から「at least」536に自動的に更新し、「Argentina」を10,000に変更する。したがって、コンピューティングデバイスは、関係および比較値を更新して、第2のデータフィールドに一致させる。例えば、ユーザは、第1のフィールドを変更した後、フィルタに対応する第2のフィールドを手動で更新しない。これにより、ユーザにカテゴリフィルタと定量的フィルタとの間の違いを理解させる必要のない、データ可視化を生成する直感的な方法を提供する。代わりに、コンピューティングデバイスは、ユーザのデータフィールドの選択に基づいて、どのフィルタ(例えば、定量的または定性的)を適用するかを判定する。このように、ユーザがデータフィールドを異なるデータタイプに切り替えると、コンピューティングデバイスは、エラーの発生を防ぐために、対応する比較値を自動的に更新する。場合によっては、第1のデータフィールドは、定量データタイプを有し(716)、第2のデータフィールドは、カテゴリデータタイプを有する(716)。場合によっては、第1のデータフィールドはカテゴリデータタイプを有し(718)、第2のデータフィールドは定量データタイプを有する(718)。例えば、
図5Bは、カテゴリデータタイプ(例えば、「Country」)を有する第1のデータフィールドから定量データタイプ(例えば、「Population」)を有する第2のデータフィールドにユーザが切り替えることを示している。
【0076】
場合によっては、第1のデータフィールドから第2のデータフィールドへの切り替えはまた、フィルタによって使用される関係の変更(720)を必要とする。例えば、「contains(含む)」は、カテゴリデータフィールドでは意味のある関係であるが、定量データフィールドでは意味のある関係ではない。
【0077】
いくつかの実装形態において、コンピューティングデバイスは、比較値のデフォルト値を識別する。例えば、コンピューティングデバイスは、この数が平均的な人口と比較されるという事実に基づいて、デフォルト値として10,000を選択する。いくつかの実装形態において、コンピューティングデバイスは、データベースおよび/またはデータソースに格納された情報に基づいて(例えば、データフィールドのデータ値のサンプリングを使用して)デフォルト値を選択する。いくつかの実装形態においては、ユーザは、デフォルト値を更新する。いくつかの実装形態において、コンピューティングデバイスがデフォルト値を提供した後、ユーザは、自然言語表現における値を手動で修正する(例えば、フィルタを変更して)。
【0078】
コンピューティングデバイスは、更新されたフィルタに対応する更新されたデータ可視化を表示する(722)。例えば、
図5Bは、データフィールド「Population」と比較値10,000に従ってデータをフィルタリングする棒グラフデータ可視化(ウィジェットの後ろに部分的に隠れているなど)を示す。
図5Aおよび
図5Bに示すように、
図5Aの初期データ可視化は、
図5Bの更新されたデータ可視化とは異なる。
【0079】
図8A~
図8Jは、いくつかの実装形態による自然言語インターフェースにおいて使用されるウィジェットを示している。例えば、ウィジェット生成モジュール234は、グラフィカルユーザインターフェース100においてユーザに表示されるウィジェットを動的に生成する。ウィジェットは、ユーザから受信された自然言語入力に部分的に基づいて生成される。コンピューティングデバイスは、自然言語入力の選択部分に基づいて適切なウィジェットタイプを識別する。このように、コンピューティングデバイスは、自然言語入力の一部を分析概念にマッピングして、分析概念に対応するウィジェットを生成する。自然言語入力に基づいてウィジェットを動的に生成することにより、ユーザには、入力が与えられた場合に意味のあるデータ可視化に変更するオプションが提供される。
【0080】
例えば、
図8Aは、「Segments in descending order by sales(売上高の降順でセグメント)」を列挙するコントロール120で自然言語入力を受信することを示している。コンピューティングデバイスは、自然言語入力を分析(例えば、解析)し、「descending order(降順)」800が、データを並べ替える分析概念(例えば、「Segments(セグメント)」)に対応することを識別する。したがって、コンピューティングデバイスは、「descending」オプション802、「ascending」オプション804、および「alphabetical」オプション806を含む複数の並び替えオプションをユーザに提供するウィジェットを生成する。この例においては、降順オプション802が選択されている。したがって、セグメントは、自然言語の入力で示されるように、売上高の降順で並べ替えられる。
【0081】
図8Bは、ウィジェットを生成する別の例を示している。自然言語のフレーズ「top 20 Segments(上位20セグメント)」が、コンピューティングデバイスによって受信される。コンピューティングデバイスは、「top 20(上位20)」808が分析概念の制限に対応すると判定する。したがって、コンピューティングデバイスは、ユーザが制限を入力することを可能にし、上限810と下限812の間で選択させるウィジェットを生成する。上限810が選択されているので、ユーザは、数量テキストボックス813にいくつの上位値が入るかを入力することができる。ここで、自然言語フェーズは、上位20の制限を指定する。ウィジェットは、ユーザが制限を選択および設定し、自然言語フレーズを修正するためのユーザフレンドリーな方法を提供する。
【0082】
図8Cは、フィールドリストウィジェットの例を示している。例えば、自然言語の入力は、フィールド「sales(売上高)」814を含むのみである。いくつかの実装形態において、フィールドリストウィジェットは、コンテンツに依存するすべての関連フィールドをエリア816にリストするスクロール可能なウィジェットを備える。ウィジェットは、ユーザがリスト内のフィールドをフィルタリングすることを可能にするサーチボックス818と、データタイプに従って表示されたフィールドをフィルタリングするためのデータタイプドロップダウン820とを含む。いくつかの実装形態において、ウィジェットは、ユーザが集計タイプを選択することを可能にする集計ドロップダウン822を含む。例えば、定量的集計では、合計、平均、中央値、総数、個別の総数、最小、最大、またはなし(集計なし)を指定できる。日付の集計では、年、四半期、四半期名、月、月名、日、月の日、週、週番号、曜日、時間、日の時間、分、時間の分、秒、分の秒、正確な日付などを指定できる。例えば、
図8Dは、「Order Date(注文日)」フィールド824が「week number(週番号)」によってフィルタリングされ得ることを示している。データタイプドロップダウン826は、エリア828およびサーチバーに示されるフィールドを制限する。
【0083】
図8E~
図8Gは、日付フィルタウィジェットの例である。いくつかの実装形態において、ウィジェットは、上部に、特定の値、相対日付、および絶対日付の3つのタブを含む。
図8E~
図8Gに示されているウィジェットは、選択されているタブに応じて表示されるウィジェットの様々なインターフェースである。各タブは、特定のタイプの日付フィルタリングに関連するパラメータを指定するためのドロップダウンを含む。
【0084】
図8Hは、定量的フィルタの例を示している。例えば、「at least $100(少なくとも$100)」というフィールドは、定量的フィルタに対応するようにコンピューティングデバイスによって解析される。いくつかの実装形態において、ウィジェットは、「between(間)」852、「at least」854、および「at most(最大で)」856の3つのオプションを含む。ウィジェットはまた、スライダー860(例えば、フィールドの最小値および/または最大値を示す)および編集可能なテキスト入力ボックス858などのユーザインターフェース要素を含む。
【0085】
図8Iおよび
図8Jは、日付ではないカテゴリフィルタの例である(例えば、カテゴリフィルタに対応する自然言語入力862に基づく)。いくつかの実装形態において、ウィジェットは、上部に1つ以上のタブを有する(例えば、特定の値864およびワイルドカード870)。このウィジェットにより、ユーザは、特定の値リスト865に表示されるデータ値の「All(すべて)」866または「None(なし)」868を容易に選択することができる。いくつかの実装形態において、カテゴリフィールドが日付であるという判定に従って、ウィジェットはまた、絶対日付フィルタまたは相対日付フィルタに切り替えるオプションを含む。
【0086】
本明細書で本発明の説明に使用される専門用語は、特定の実装形態を説明することのみを目的としており、本発明を限定することを意図するものではない。本発明の説明および添付の特許請求の範囲で使用される場合、単数形「a」、「an」、および「the」は、特に文脈が明示しない限り、複数形も含むことが意図される。本明細書で使用される「および/または」という用語は、1つ以上の関連するリストされたアイテムのありとあらゆる可能な組み合わせを指し、それらを包含することも理解されよう。本明細書で使用される場合、「含む」および/または「含んでいる」という用語は、述べられた特徴、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つ以上の他の特徴、ステップ、動作、要素、構成要素、および/またはそれらの群の存在または追加を排除しないことがさらに理解されよう。
【0087】
前述の記載は、説明の目的で、特定の実装形態を参照して記載されてきた。しかしながら、上記の例示的な論議は、網羅的であること、または本発明を開示された正確な形態に限定することを意図していない。上記の教示を考慮して、多くの修正および変形が可能である。実装形態は、本発明の原理およびその実際の応用を最もよく解説するために選択および記載され、それにより、当業者は、本発明および企図される特定の用途に好適な様々な修正を伴う様々な実装形態を最大限に利用できる。