(57)【特許請求の範囲】
【請求項１】
編集に基づいてデーターをフォーマットするための方法であって、
スプレッドシート文書内のそれぞれ関連を有する複数の項目に対して編集が行われたときを判定するステップと、
前記スプレッドシート文書の異なる列に関連する入力例と、前記スプレッドシート文書の同じ列内の出力例とに基づいてデーター・フォーマット規則を自動的に作成するステップと、
前記データー・フォーマット規則を、データー・タイプが同じであり前記複数の項目とは異なる前記スプレッドシート文書内の他の項目に自動的に適用するステップであって、前記データー・フォーマット規則は、前記複数の項目に対して行われた前記編集によって定義されるフォーマットに前記他の項目をフォーマットすることを試みるものである、ステップと、
前記データー・フォーマット規則の適用を反映した前記他の項目を表示するステップと、
を含む、方法。
【請求項２】
請求項１記載の方法において、前記編集に基づいて前記データー・フォーマット規則を得るステップは、前記編集の各々に関係する情報を、前記データー・フォーマット規則を作成する機械学習発見的方法に提出するステップを含む、方法。
【請求項３】
請求項１記載の方法において、前記編集は、前記スプレッドシートの同じ列内にある異なるセルに対して行われる、方法。
【請求項４】
請求項１記載の方法であって、更に、前記データー・フォーマット規則によってフォーマットされた前記他の項目の少なくとも１つの隣りにグラフィカル・ユーザー・インターフェースを表示し、前記グラフィカル・ユーザー・インターフェースが選択されると、前記フォーマットされた項目に関する動作を実行する選択肢を提示するステップを含み、前記フォーマットの取り消し、前記フォーマットのやり直し、前記フォーマットの中止、潜在的な誤りの検討、および誤りの無視を行うための選択肢を含む、方法。
【請求項５】
請求項１記載の方法であって、更に、信頼度が所定の閾値よりも低いとき、前記フォーマットした項目と共にインディケーターを表示するステップを含む、方法。
【請求項６】
請求項１記載の方法において、前記データー・フォーマット規則を前記他の項目に適用するステップは、同じ列および同じ行の少なくとも１つの中にある他の項目にデーター・フォーマット規則を適用するステップを含む、方法。
【請求項７】
請求項１記載の方法において、前記編集が同じデーター・タイプの前記複数の項目に対して行われたときを判定するステップは、第２列および第３列にも含まれているデーターを含む第１列に対して前記編集が行われたときを判定するステップを含む、方法。
【請求項８】
例に基づいてデーターをフォーマットするためのコンピューター実行可能命令を格納するコンピューター読み取り可能記憶媒体であって、前記命令は、
スプレッドシート文書の同じ列内の複数の項目から出力例を決定するステップと、
前記スプレッドシート文書の異なる列に関連する入力例と、前記スプレッドシート文書の前記同じ列内の前記出力例とに基づいてデーター・フォーマット規則を自動的に作成するステップと、
前記複数の項目とは異なる、前記スプレッドシート文書の前記同じ列内の他の項目に前記データー・フォーマット規則を自動的に適用するステップであって、前記データー・フォーマット規則は、前記出力例によって定義されるフォーマットに前記他の項目をフォーマットすることを試みるものである、ステップと、
前記データー・フォーマット規則の適用を反映した前記他の項目を表示するステップと、
を含む、コンピューター読み取り可能記憶媒体。
【請求項９】
編集に基づいてデーターをフォーマットするためのシステムであって、
ネットワークに接続するように構成されたネットワーク接続と、
プロセッサー、メモリー、およびコンピューター読み取り可能記憶媒体と、
前記コンピューター読み取り可能記憶媒体上に格納され前記プロセッサー上で実行する動作環境と、
ディスプレイと、
スプレッドシート・アプリケーションと、
行および列に配列された項目を含むスプレッドシートと、
前記スプレッドシート・アプリケーションと共に動作するフォーマット処理マネージャーと、
を備え、前記フォーマット処理マネージャーは、
前記スプレッドシートの同じ列内の複数の項目に対して編集が行われたときを判定する動作と、
前記スプレッドシートの異なる列に関連する入力例と、前記スプレッドシートの前記同じ列内の出力例とに基づいてデーター・フォーマット規則を自動的に作成する動作と、
前記複数の項目とは異なる、前記スプレッドシートの前記同じ列内の他の項目に前記データー・フォーマット規則を自動的に適用する動作であって、前記データー・フォーマット規則は、前記スプレッドシートの前記同じ列内の前記複数の項目に対して行われた前記編集によって定義されるフォーマットに前記他の項目をフォーマットすることを試みるものである、動作と、
前記データー・フォーマット規則の適用を反映した前記他の項目を前記ディスプレイ上に表示する動作と、
を実行するように構成されている、システム。
【請求項１０】
請求項９記載のシステムであって、前記データー・フォーマット規則によってフォーマットされた前記他の項目の少なくとも１つの隣りにグラフィカル・ユーザー・インターフェースを表示する動作であって、前記グラフィカル・ユーザー・インターフェースは、選択されると、フォーマット変更を検討するための選択肢を提示する、動作を更に含む、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  同じタイプのデーターが多くの異なるフォーマットで入力され格納されることが多い。例えば、日付けはＣＣＹＹＭＭＤＤ（１９９９０１０１）という形式になっている場合もあり、他の日付けはＭＭ／ＤＤ／ＣＣＹＹ（０１／０１／１９９９）というフォーマットになっている場合もあり、更に他の日付けはＭ／Ｄ／ＹＹ（１／１／９９）となっている場合もある。データーの分析を行うためには、これを同じフォーマットに変換する。例えば、ある分析では、電話番号は形式（２０６）５５５−１２１２にしたがってフォーマットすることを指定する場合があるが、一方他の分析では、電話番号からフォーマット処理を外す（即ち、２０６５５５１２１２）ことを指定する場合もある。データーを変換するためには、異なる方法を用いることができる。例えば、異なる変換機能を用いることができ、および／またはデーターを変換するためにコードを開発することもできる。
【発明の概要】
【０００２】
[0002]  この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。
【０００３】
[0003]  データー項目を１つの形式から他の形式に変換するためのデーター・フォーマット規則を、１組の出力例、例えば、ユーザーの編集(edit)に基づいて自動的に判断する。機械学習発見的方法を出力例（例えば、ユーザーの編集）だけでなくソース・データーにも適用して、追加のデーター項目に適用することができるデーター・フォーマット規則を決定する。例えば、ユーザーは、データーに／からキャラクターを追加／除去する、データーを繋げる、データーを抽出する、データーの名称を変更する等の編集を行うことができる。編集された値と共に元の値を調べることによって、このタイプの変換をカプセル化する(encapsulate)規則を導き出すことができ、この規則を追加の元の値に対して実行して(run)、所望の編集値または出力を自動的に生成することができる。この機械学習発見的方法は、イベントに応答して（例えば、所定の回数の編集が同じタイプのデーターに対して行われた後）自動的にトリガーすることができ、または手動でトリガーする（例えば、ユーザー・インターフェースの選択肢を選択する）こともできる。データー・フォーマット規則は、他のデーターにも適用することができ、このフォーマット処理の結果は、ユーザーによって見直すことができる。更に他の編集／見直しに基づいて、データー・フォーマット規則を更新することもできる。データー・フォーマット規則は、後に使用するためおよび／または変更のために格納することもできる。また、項目（１つまたは複数）が正しく再フォーマットされているか否か判断するときにユーザーを補助するために、信頼度を提示することもできる。
【図面の簡単な説明】
【０００４】
【図１】図１は、計算環境の一例を示す。
【図２】図２は、文書に対して行われた編集に基づいてデーターをフォーマットするシステムを示す。
【図３】図３は、列に対するユーザーの編集に基づいてデーター・フォーマット規則を決定し、このデーター・フォーマット規則をこの列の中にある他のセル(cell)に適用することを示す。
【図４】図４は、ユーザーが社会保障番号列における項目に編集を行う例を示す。
【図５】図５は、ユーザーが日付けのフォーマットを変更する編集を行う例を示す。
【図６】図６は、項目のフォーマットと対話処理するために用いることができるユーザー・インターフェースのエレメントを示す。
【図７】図７は、類例による記入(fill by example)を可能／不能にするユーザー・インターフェースを示す。
【図８】図８は、類例によるデーターのフォーマット処理(formatting data by example)のプロセス例を示す。
【発明を実施するための形態】
【０００５】
[0012]  これより図面を参照して、種々の実施形態について説明する。図面では、同様の番号は同様の要素を表す。具体的には、図１および対応する論述は、実施形態を実現することができる、適した計算環境の端的な総合的説明を行うことを意図している。
【０００６】
[0013]  一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造、および特定のタスクを実行するまたは特定の抽象的データー・タイプを実現する他のタイプの構造を含む。他のコンピューター・システム構成を用いることもでき、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサーに基づくまたはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等が含まれる。分散型計算環境も用いることができ、この場合、通信ネットワークを通じてリンクされている、離れた処理デバイスによってタスクを実行する。分散型計算環境では、プログラム・モジュールは、ローカルおよびリモート双方のメモリー記憶デバイスに配置することができる。
【０００７】
[0014]  これより図１を参照して、種々の実施形態において利用するコンピューター１００のコンピューター環境例について説明する。図１に示すコンピューター環境は、計算デバイスを含む。その各々は、サーバー、デスクトップまたは移動体コンピューター、あるいは他の何らかのタイプの計算デバイスとして構成することができ、中央演算装置５（「ＣＰＵ」）、ランダム・アクセス・メモリー９（ＲＡＭ）およびリード・オンリー・メモリー（「ＲＯＭ」）１０を含むシステム・メモリー７、ならびにこのメモリーを中央演算装置（「ＣＰＵ」）５に結合するシステム・バス１２を含む。
【０００８】
[0015]  基本入力／出力システムは、起動中のようなときにコンピューター内部におけるエレメント間で情報を転送するのに役立つ基本的なルーチンを収容し、ＲＯＭ１０に格納されている。更に、コンピューター１００は、オペレーティング・システム１６、スプレッドシート１１、スプレッドシート・アプリケーション２４、他のプログラム・モジュール２５、およびフォーマット処理マネージャー２６を格納する大容量記憶デバイス１４も含む。フォーマット処理マネージャー２６については、以下で更に詳しく説明する。
【０００９】
[0016]  大容量記憶デバイス１４は、バス１２に接続されている大容量記憶コントローラー（図示せず）を介してＣＰＵ５に接続されている。大容量記憶デバイス１４およびそれに付随するコンピューター読み取り可能媒体は、不揮発性ストレージをコンピューター１００に設ける。この中に収容されるコンピューター読み取り可能媒体の記述は、ハード・ディスクまたはＣＤ−ＲＯＭドライブのような、大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピューター１００によってアクセスできる入手可能な媒体であればいずれでも可能である。
【００１０】
[0017]  一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよびリムーバブル以外の媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の記憶方法または技術のいずれかで実現する。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、消去可能プログラマブブル・リード・オンリー・メモリー（「ＥＰＲＯＭ」）、電気的消去可能プログラマブル・リード・オンリー・メモリー（「ＥＥＰＲＯＭ」）、フラッシュ・メモリーまたはその他のソリッド・ステート・メモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（「ＤＶＤ」）、あるいはその他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができコンピューター１００によってアクセスすることができる他のあらゆる媒体が含まれるが、これらに限定されるのではない。
【００１１】
[0018]  コンピューター１００は、インターネットのような、ネットワーク１８を通じて、リモート・コンピューターへの論理接続を用いて、ネットワーク接続環境において動作する。コンピューター１００は、バス１２に接続されているネットワーク・インターフェース・ユニット２０を介して、ネットワーク１８に接続することができる。ネットワーク接続は、ワイヤレス接続および／または有線接続であってもよい。ネットワーク・インターフェース・ユニット２０は、他のタイプのコンピューターや、ネットワーク・サービス（１つまたは複数）２７のような、リモート・コンピューター・システムに接続するためにも利用できるとよい。また、コンピューター１００は、キーボード、マウス、または電子スタイラス（図１には示されていない）を含む多数の他のデバイスからの入力を受け取って処理する入力／出力コントローラー２２も含むことができる。同様に、入力／出力コントローラー２２は、入力／出力をＩＰフォン、表示画面２３、プリンター、または他のタイプの出力デバイスに供給することもできる。
【００１２】
[0019]  先に手短に述べたように、多数のプログラム・モジュールおよびデーター・ファイルをコンピューター１００の大容量記憶デバイス１４およびＲＡＭ９に格納することができ、その中には、ワシントン州、RedmondのMICROSOFT  CORPORATIONのWINDOWS 7（登録商標）オペレーティング・システムのような、コンピューターの動作を制御するのに適したオペレーティング・システム１６が含まれる。また、大容量記憶デバイス１４およびＲＡＭ９は、１つ以上のプログラム・モジュールも格納することができる。具体的には、大容量記憶デバイス１４およびＲＡＭ９は、スプレッドシート・アプリケーション２４およびプログラム・モジュール２５を含む１つ以上のアプリケーション・プログラムを格納することができる。一実施形態によれば、スプレッドシート・アプリケーション２４は、MICROSOFT  EXCELスプレッドシート・アプリケーションである。他のスプレッドシート・アプリケーションも用いてもよい。ＵＩ２８のようなユーザー・インターフェースは、ユーザーが、スプレッドシート・アプリケーション２４のような、アプリケーションと対話処理することを可能にする。
【００１３】
[0020]  フォーマット処理マネージャー２６は、図示のように、スプレッドシート・アプリケーション２４の外部に配置してもよく、またはスプレッドシート・アプリケーション２４の一部であってもよい。更に、フォーマット処理マネージャー２６によって設けられる機能の全部／一部は、スプレッドシート・アプリケーション２４の内部／外部に配置してもよい。
【００１４】
[0021]  フォーマット処理マネージャー２６は、元のデーターおよび出力例、例えば、ユーザーの編集に基づいてデーターを１つの形式から他の形式に変換するための１つ以上のデーター・フォーマット規則を生成するように構成されている。一実施形態によれば、フォーマット処理マネージャー２６は、機械学習法を元のデーターおよび出力例、即ち、ユーザーの編集に適用して、データーに適用することができるデーター・フォーマット規則（１つまたは複数）を決定する。例えば、ユーザーは、キャラクターをデーターに／から追加／除去する、データーを繋げる、データーを抽出する、データーの名称を変更する等の編集を行うことができる。編集に応答して、文書（例えば、スプレッドシート）内にある他のデーターに適用するデーター・フォーマット規則（１つまたは複数）を生成する。データーに適用するフォーマット処理は、ユーザーが変更を受け入れる／拒否することができるように、ユーザーによって検討可能にするとよい。また、データーに適用するフォーマット処理は、メタデーターのフォーマット処理も含むことができる。一実施形態によれば、フォーマット規則から判定される信頼度を、データーに適用したフォーマット処理と関連付けて、データーが適正に再フォーマットされたときをユーザーが一層容易に識別できるようにするとよい。例えば、高い信頼度は、データーが適正にフォーマットされた可能性が高いことを示し、一方低い信頼度は、ユーザーが結果を見直すことを望むかもしれないことを示すことができる。機械学習経験法は、イベントに応答して（例えば、所定の回数の編集が同じタイプのデーターに対して行われた後）自動的にトリガーすることができ、または手動でトリガーすることもできる（例えば、ユーザー・インターフェースの選択肢を選択する）。更に他の編集／検討に基づいて、データー・フォーマット規則を更新することもできる。データー・フォーマット規則は、後に使用するためおよび／または変更のために格納することもできる。例えば、ユーザーは、データー・フォーマット規則の適用が、変更した規則に従うように、規則（例えば、スクリプト）を変更することができる。
【００１５】
[0022]  図２は、文書に対して行われた編集に基づいてデーターをフォーマットするシステムを示す。図示のように、システム２００は、フォーマット処理マネージャー２６、アプリケーション・プログラム２１０、コールバック・コード(callback code)２１２、およびディスプレイ２１５を含む。用いられる計算デバイス（１つまたは複数）は、文書に対するユーザーの編集に基づいてデーターを自動的にフォーマットすることに関係する動作を実行するように構成された計算デバイスであればいずれのタイプでもよい。例えば、計算デバイスの一部が、移動体計算デバイス（例えば、セル・フォン、タブレット、スマート・フォン、ラップトップ等）、デスクトップ計算デバイス、およびサーバーであってもよい。
【００１６】
[0023]  フォーマット処理マネージャー２６との通信をし易くするために、図２ではコールバック・コード２１２として示されている、１つ以上のコールバック・ルーチンを実装することができる。一実施形態によれば、アプリケーション・プログラム２１０はスプレッドシート・アプリケーションである。
【００１７】
[0024]  ディスプレイ２１５は、スプレッドシート文書２２０のような文書、および文書と対話処理するために用いられるユーザー・インターフェース・エレメントを表示するように構成されている。図示のように、スプレッドシート２２０は、名の列（Ａ）、姓の列（Ｂ）、および編集後の列（Ｃ）を含む３つの列を示す。この例では、ユーザーは編集後の列に編集を行ったところである。セルＣ２において、ユーザーはその行、即ち、行２に名（セルＡ２にも収容されている）を入力し、その後にカンマを入力し、更にその後に姓のイニシャル（セルＢ２にも収容されている）を入力した。セルＣ３において、ユーザーは、その行、即ち、行３に、名（セルＡ３にも収容されている）を入力し、その後にカンマを入力し、更にその後に姓のイニシャル（セルＢ３にも収容されている）を入力した。
【００１８】
[0025]  一般に、フォーマット処理マネージャー２６は、あるパターンに当てはまるデーターをユーザーが編集／変更しているときを検出し、このパターンでスプレッドシート内において追加のデーターを記入する(fill down)ことができ更にこれらのデーターに適用することができる場合、データー・フォーマット規則を適用したことから得られた結果で、列に自動的に記入する。編集に応答して、フォーマット処理マネージャー２６は、この編集に伴う情報を用いて、データー・フォーマット規則を得て、これをスプレッドシート内の他のデーターに適用する。一実施形態によれば、この情報は、編集されたセル（例えば、セルＣ２およびＣ３）内に表示されているテキストに対する編集から得られた出力例と、この編集に関連がある入力例とを含む。この場合、列Ａおよび列Ｂは、編集列（例えば、セルＡ２およびＢ２は出力例Ｃ２に対する入力例であり、セルＡ３およびＢ３は出力例Ｃ３に対する入力例である）に関係がある入力例を含む。これらの入力／出力例は、フォーマット処理マネージャー２６によって決定され、他の同様にフォーマットされたセル（例えば、セルＣ４：Ｃ７（２２２））にデーター・フォーマット規則を生成するプロセスに供給される。機械学習発見的方法は、これら１組の入力／出力例を得て、パターンを決定し、データー・フォーマット規則を生成し、次いで、フォーマット処理マネージャー２６がこのデーター・フォーマット規則を出力範囲に適用して、新たにフォーマットされた値を生成する。一実施形態によれば、機械学習発見的方法の一例が、"Automating String Processing in Spreadsheets Using Input-Output Examples"（入力−出力例を用いたスプレッドシートにおける文字列処理の自動化）(Sumit Gulwani, PoPL'11, January 26-28, 2011, Austin Texas)に記載されている。他の機械学習発見的方法も利用することができる。一般に、元のデーターおよびデーター編集を取り込み、同様にフォーマットされたデーターを得るために他のデーターに適用することができるデーター・フォーマット規則を生成する発見的方法であればいずれでも用いることができる。一実施形態によれば、機械学習発見的方法の機能は、フォーマット処理マネージャー２６に含まれる。この機能は、他の場所に配置してもよい。
【００１９】
[0026]  フォーマット処理マネージャー２６は、自動的にデーター・フォーマット規則を、スプレッドシート内部で同様にフォーマットされている他のセルに適用する。一実施形態によれば、データー・フォーマット規則は、編集列の内、この列で記入されるセルの出力範囲に自動的に適用される。現在の例では、出力範囲はセルＣ４：Ｃ７を含む。ボックス２２２は、データー・フォーマット規則をセルＣ４：Ｃ７に適用した結果、セルＣ５およびＣ６の中に値が入力されたことを示す。一実施形態によれば、出力範囲に適用するデーター・フォーマット規則は動的である。言い換えると、出力範囲内で値が編集されると、追加の入力／出力例（１つまたは複数）を用いてデーター・フォーマット規則が更新される。
【００２０】
[0027]  データー・フォーマット規則は、セルの各々に０個以上の値を生成することができる。例えば、セルＣ４およびＣ７には値は戻されない。何故なら、Ｂ列の対応するセルには名前がないからである。データー・フォーマット規則が値に確信がない場合、データー・フォーマット規則によって１つよりも多い潜在的な結果を生成することもできる。一実施形態によれば、データーを自動的に再フォーマットする前に、所定数のセルにデーター・フォーマット規則を適用して、フォーマット規則を適用することによって、所定の信頼度閾値を満たすまたはこれを超える結果を生成しているか否か判断する。例えば、所定数のセルにフォーマット規則を適用した結果、低い信頼度しか得られない場合、このデーター・フォーマット規則を自動的に適用しない。一実施形態によれば、データー・フォーマット規則を出力範囲内にあるセルに適用し、１の答えを有するセルの割合を判定する。一実施形態によれば、ゼロの答えを有するセルの割合を、計算から除外する。割合が所定の閾値（例えば、７０％）よりも高い場合、データー・フォーマット規則によって得られた結果を用いて、出力範囲におけるセルに自動的に記入する。閾値が満たされない場合、結果をセルに適用してはならず、新たなデーター・フォーマット規則を作成する前に更に多くの編集を求める。あるいは、結果を適用してもよく、信頼度が閾値よりも低いことを示すセルに、セルおよびインディケーター（例えば、強調、フォーマット）を適用すればよい。データー・フォーマット規則をセルに適用することによって一意の結果が得られたなら、これは、そのデーター・フォーマット規則が精度高い結果を生成していることの正しいインディケーターになる。データー・フォーマット規則が精度高い結果を生成しているか否か判断するためには、他の閾値および／または規則を用いてもよい。
【００２１】
[0028]  ユーザーの編集に基づいて、多くのタイプのデーター・フォーマット規則を作成することができる。例えば、２つの列の連結、列からの情報抽出（例えば、アドレスから最上位ドメイン・ネームを抽出する、電子メール・アドレスを抽出する）等があげられる。一般に、データー・フォーマット規則は、いずれの編集活動に基づいても計算することができる。場合によっては、２つ以上の入力／出力例を用いて、精度が高い結果を生成することもできる。例えば、機械学習発見的方法は、２つの例を用いる場合には、５０％の精度に過ぎないが、３つの例を用いると９５％の精度になることもある。
【００２２】
[0029]  また、データー・フォーマット規則は、ユーザー・インターフェース内における選択（例えば、アイコン２２４）に基づいて得ることもでき、または他の何らかのメニュー選択肢を選択することもできる。編集例は、ユーザーによって手作業で選択してもよく（例えば、ユーザーがセルの例を選択する）、および／またはフォーマット処理マネージャー２６によって例を自動的に決定してもよい。例えば、フォーマット処理マネージャー２６がデーターを監視し、そのデーターから入力／出力例を決定するのでもよい（例えば、値の個数が最も少ない列を出力列として考慮することができ、残りの列を入力列として考慮することができる）。
【００２３】
[0030]  図３から図６は、ユーザーの編集に基づいてセルをフォーマットする例を示す。
[0031]  図３は、ユーザーの列に対する編集に基づいてデーター・フォーマット規則を決定し、その列内にある他のセルにこのデーター・フォーマット規則を適用することを示す。図示のように、ユーザーはスプレッドシート３１０の姓名列（Ｃ）に対して編集を行っている。この例では、ユーザーは名のイニシャルをタイプ入力し、それに続いてピリオドおよび空白をタイプ入力し、その後に姓をタイプ入力した。姓は、スプレッドシート３１０の列Ａに収容されており、名のイニシャルはスプレッドシートの列Ｂに収容されている。ユーザーがセルＣ２およびＣ３に対して編集を行ったことに応答して、機械学習発見的方法によってデーター・フォーマット規則が生成され、この文書内における他のセルに適用することができる。
【００２４】
[0032]  この例では、入力／出力例は、編集された行毎に、Ｃ列におけるテキストと、ＡおよびＢ列におけるテキストとを含む。入力データーを決定するには、この文書を操作して、データー・フォーマット規則の適用において用いることができるデーターを突き止め、所望の結果を作成するとよい。この場合、データー・フォーマット規則は、列Ｂから名のイニシャルおよび列Ａから姓を得て、更に名のイニシャルの後にピリオド・キャラクターと空白キャラクターとを挿入する規則を作成する。出力範囲３１２は、このデーター・フォーマット規則を適用すべきセルを示す。
【００２５】
[0033]  スプレッドシート３２０を参照すると、データー・フォーマット規則を自動的に適用することによって、セルＣ３：Ｃ６に、名のイニシャル、それに続くピリオドおよび空白、更にこれらに続く姓を含む姓名(name)が得られることが分かる。セルＣ７には記入されない。何故なら、名(first name)の列が空白であるので、このデーター・フォーマット規則を適用しても、精度高い結果が得られなかったからである。
【００２６】
[0034]  また、スプレッドシート３２０は、ユーザー・インターフェース・エレメントの検討３２２も示す。これは、データー・フォーマット規則の適用によって行われた変更を受け入れる／拒否するために用いることができる。また、誤りユーザー・インターフェース・エレメント３２４も、データー・フォーマット規則が適用されなかった場所（この場合、名前の列からのデーターがない）、またはデーター・フォーマット規則の適用が高精度であるとは判断されなかった位置の近くに置かれている（ユーザー・インターフェース・エレメントの検討および誤り補正ユーザー・インターフェース・エレメントに関するこれ以上の論述については、図６および関連する論述を参照のこと）。
【００２７】
[0035]  図４は、社会保障番号の列の中にある項目に対してユーザーが編集を行う例を示す。ユーザーは、社会保障番号のフォーマットを「ＸＸＸＸＸＸＸＸＸ」から「ＸＸＸ−ＸＸ−ＸＸＸＸ」に変更した（ここで、Ｘは０から９まえのいずれかの数値である）。他の例では、キャラクターは、数値以外のキャラクターでもよい。一実施形態によれば、ユーザーが２通り以上の編集を行った後、フォーマット処理マネージャーによって入力／出力例が用いられて、この列における他のデーターに適用されるデーター・フォーマット規則を生成する。この例では、入力例は、セルＡ２およびＡ３に収容されていた元のテキストであり、出力例は、セルＡ２およびＡ３に示される編集済みのテキストである。入力／出力例を提出する前に、これよりも多い編集または少ない編集を収集してもよい。例えば、場合によっては（この例のような）、１つの入力／出力例でも、精度高いデーター・フォーマット規則を生成するには十分なこともある。更に複雑な編集のシナリオでは、もっと多くの入力／出力例を用いてもよい。更に、ユーザーによって行われた追加の編集を、フォーマット処理マネージャーによってデーター・フォーマット規則を更新するために用いてもよい。データー・フォーマット規則をセルＡ４：Ａ７に適用すると、ディスプレイ４２０によって示されるようなスプレッドシートが得られる。一実施形態によれば、既にデーターを収容しているセルは、自動的に変更されない。代わりに、提案された変更が、データーを収容しているセルに行われる前に、これらの変更を肯定的に受け入れることをユーザーに要請することもできる。これらのセルも自動的に変更して、ユーザーにはこの変更を元に戻す機会を与えるのでもよい。
【００２８】
[0036]  図５は、ユーザーが日付けのフォーマットを変更する編集を行う例を示す。ユーザーは、スプレッドシート５１０において２つの日付けのフォーマットを、「ＭＭ／ＤＤ／ＣＣＹＹ」から「ＭＭ／ＤＤ／ＹＹ」というフォーマットに変更した。
【００２９】
[0037]  この例では、ユーザーは、セルＡ４およびＡ３における日付けのフォーマットを変更した。この入力例は、セルＡ３およびＡ４における元のテキストを含み、出力例は、ディスプレイ５２０のセルＡ３およびＡ４に示されているような、編集後のテキストを含む。生成されたデーター・フォーマット規則を適用すると、ディスプレイ５２０が得られる。図示のように、この編集は、同様にフォーマットされたデーターの範囲内ではどこにでも行うことができ、このデーター・フォーマット規則を適用すると、図２から図４において示したように記入する(fill down)だけでなく、他のセル（例えば、セルＡ２）にも適用することができる。
【００３０】
[0038]  図６は、項目のフォーマット処理において対話話処理するために用いることができるユーザー・インターフェース・エレメントを示す。図示のように、スプレッドシート６１０は、検討ユーザー・インターフェース・エレメント６１２および６１８、ならびに誤り訂正ユーザー・インターフェース・エレメント６１４および６１６を示す。
【００３１】
[0039]  セルが一貫性のない値を有するとき、および／または精度が高いと判断されないというフラグが立てられたとき、このセルには誤り訂正ユーザー・インターフェース・エレメントを付けることができる。一実施形態によれば、データーに一貫性がないセルとは、セルの値がデーター・フォーマット規則が生成したはずのものと一致しない、またはセルの中にある値はデーター・フォーマット規則によって生成されたが１つよりも多い可能な結果があることを意味する。決定した出力範囲にデーター・フォーマット規則を適用したなら直ちに、一貫性のない結果にはいずれもフラグが立てられる。一実施形態によれば、結果に一貫性がないと見なされるのは、可能な結果の数が１つ以上または以下であるとき（例えば、結果がないか、またはデーター・フォーマット規則によって２つ以上の結果が得られる）、あるいは既存の値が、データー・フォーマット規則によって与えられる結果と一貫性がないときである。他の発見的方法を用いることもできる。例えば、結果の数が所定数の結果よりも多いときに結果を一貫性がないと見なすこともでき、および／または他の何らかの条件によって結果を一貫性がないと見なすこともできる。
【００３２】
[0040]  誤り訂正ユーザー・インターフェース・エレメントを選択することができる。選択すると、誤り訂正ユーザー・インターフェース・エレメントは、種々の選択可能な選択肢（６３０）を表示する。一実施形態によれば、これらの選択項目は、「次」選択肢、「前」選択肢、「ヘルプ」選択肢、「無視」選択肢、「受け入れ」選択肢、「セル内編集」選択肢、「誤りチェック」選択肢、および「可能な値」選択肢を含む。メニュー６３０内には、これよりも多い選択肢または少ない選択肢を含むこともできる。「次」選択肢は、誤りの印が付けられた次のセルに移動する。「前」選択肢は、直前の誤りに移動する。「ヘルプ」選択肢は、ヘルプの表示を行う。「無視」選択肢は、現在の誤りを無視して、誤り訂正ユーザー・インターフェース・エレメントをディスプレイから消す。「受け入れ」選択肢は、誤り状態を取り払い、そのセルに対して関連する入力／出力例を追加して、新たなデーター・フォーマット規則を生成する。「セル内編集」選択肢は、ユーザーをこのセルにおける編集モードに導く。ユーザーがこれらの誤りセルの１つ以上を編集すると、この編集は入力／出力例として扱われ、新たな／更新フォーマット規則を計算する。一実施形態によれば、更新データー・フォーマット規則がこのデーター・フォーマット規則に関係する残りの誤りセルに適用される。「誤りチェック」選択肢は、ユーザーに、誤りチェックに関する種々の選択肢を提供する。「可能な値」選択肢は、選択すると、セルを再フォーマットするときに、他の可能な値のリストを表示する。例えば、データー・フォーマット規則によって生成される各結果を表示することができる。
【００３３】
[0041]  検討ユーザー・インターフェース・エレメント６１２は、データー・フォーマット規則を用いてフォーマットしたセルと対話処理するための種々の選択肢を提示する。一実施形態によれば、検討メニュー６２０は、「取り消し」選択肢、「やり直し」選択肢、「中止」選択肢、「検討」選択肢、「全部無視」選択肢、「保存」選択肢、および「その他」選択肢を備えている。メニュー６２０には、これらよりも多いまたは少ない選択肢が含まれてもよい。「取り消し」選択肢は、データー・フォーマット規則をセルに適用する直前にあった状態に、 文書（例えば、データー・フォーマット規則を適用した文書の列）を 戻す。「やり直し」選択肢は、ユーザーによって以前に取り消されたセルにおいてデーターを復元する。「中止」選択肢は、データー・フォーマット規則を適用して自動的に記入する自動挙動を不能にする。「検討」選択肢は、有効なセル(active cell)を現在の変換範囲（例えば、出力範囲）内における最初のセルに、誤りタグと共に設定する。「無視」選択肢は、誤りタグおよび関係のあるあらゆる誤りフォーマットを、現在の記入(fill down)範囲から取り除く。「保存」選択肢は、ユーザーが現在のデーター・フォーマット規則を保存することを可能にする。「保存」選択肢は、入力することができる列（１つまたは複数）、およびいずれかの入力／出力例というような、規則に関する情報を保存する。「その他」選択肢は、他の選択肢を提供する。
【００３４】
[0042]  図７は、類例による記入(fill by example)を可能／不能にするユーザー・インターフェースを示す。ディスプレイ７００は、ユーザーが類例によるデーター自動記入をオン／オフに切り替えることを可能にする選択肢７０２を含む。ユーザー・インターフェースには、データー・フォーマット規則を得る前の所望数の編集／選択項目、既存のデーターを確認して／確認せずに上書きするか否か等というような、他の選択肢も含むことができる。
【００３５】
[0043]  これより図８を参照して、類例によるデーター・フォーマット処理プロセスの一例について説明する。本明細書において提示するルーチンの論述を読むとき、種々の実施形態の論理動作は、（１）計算システム上で実行するコンピューター実装動作のシーケンスまたはプログラム・モジュールとして、および／または（２）計算システム内部において相互接続された機械の論理回路または回路モジュールとして実現されることは認められてしかるべきである。この実施態様は、本発明を実現する計算システムの性能要件に依存する選択事項である。したがって、例示する論理動作は、本明細書において説明した実施形態を構成するが、動作(operation)、構造的デバイス、作用(act)、またはモジュールと、様々に呼ぶことがある。これらの動作、構造的デバイス、作用、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびそのあらゆる組み合わせで実現することができる。
【００３６】
[0044]  開始ブロックの後、プロセス８００は動作８１０に移り、文書内にあるデーターに対して行われた編集を検出する。この編集は、文書に対する編集であればいずれでもよい。一実施形態によれば、編集は、文書（即ち、スプレッドシート、表、リスト）のセルの内、同じデーター・タイプであり同様にフォーマットされたものに収容されているデーターに対して行われる。一般に、列内にある各セルは、同じタイプのデーター（即ち、日付け、住所、名前、番号等）を収容する。これらの項目の各々に適用される編集は、同じタイプの項目を有する他のセルに適用することができるパターンを当てはめる。
【００３７】
[0045]  判断動作８２０に移り、編集の数が所定数の編集を超過し、同様にフォーマットされた他のセルに適用するデーター・フォーマット規則を得るプロセスをトリガーしたか否か判定を行う。一実施形態によれば、データー・フォーマット規則を得ることをトリガーする編集の数は２つである。トリガー点は、他の値に手作業／自動で設定することができる。例えば、トリガー点は、データー・フォーマット規則を文書内にある他の同様のデーター項目に適用する精度の予測に基づくことができる。場合によっては、トリガー点は１にするとよく、一方他の場合では、３以上であるとよいこともある。
【００３８】
[0046]  トリガー点に達していないとき、本プロセスは動作８１０に戻り、他の編集が行われたときを検出する。
[0047]  トリガー点に達したとき、本プロセスは動作８３０に進み、入力／出力例を得て、機械発見的方法に供給してデーター・フォーマット規則を求める。入力／出力例は、以前の状態におけるデーターの例、およびデーターの編集に関する後状態におけるデーターの例を与える。例えば、編集が既存のデーターに対するものであるとき、入力例は、編集前のデーターとなり、出力例は編集後のデーターとなる。編集が新たなセルに対するものであるとき、出力例はそのセルにおいて編集されたデーターであり、入力例は、出力の作成に関するデーター（例えば、１つ以上の他の列のデーター）である。
【００３９】
[0048]  動作８４０に移り、データー・フォーマット規則を得る。一実施形態によれば、データー・フォーマット規則は、テキスト入力を（例えば、１つ以上のセルから）受け取りゼロ以上の結果を生成する関数である。データー・フォーマット規則は、ユーザーが行った編集と一致するように、文書内にある同様の項目（例えば、列内にある他のセル）をフォーマットすることを目的とする。
【００４０】
[0049]  動作８５０に移り、出力範囲を決定する。出力範囲は、データー・フォーマット規則を適用すべき項目を特定する。例えば、他の項目は、ユーザーによって項目が編集され、データー・フォーマット規則の基本となった列の中にあるセルの全部または一部であってもよい。例の中には、出力範囲が、列内において同じ項目タイプ（例えば、日付け、数、アドレス等）を有するセルである場合もある。他の例では、出力範囲は、互いに隣接する値を有し、編集されたセルに隣接する全てのセルである。
【００４１】
[0050]  動作８６０に進み、データー・フォーマット規則を、決定した出力範囲における項目の各々に適用する。データー・フォーマット規則を適用することによって生成された結果はいずれも、文書に対していかなる変更が行われる前にも、一時的に格納することができる。
【００４２】
[0051]  判断動作８７０に移り、データー・フォーマット規則を適用した結果、精度が高い結果が得られたか否か判定を行う。一実施形態によれば、データー・フォーマット規則を項目に適用したときに戻される結果の数によって、精度を推定する。ある項目についての結果の数がゼロである場合、データー・フォーマット規則は結果を生成するための十分なデーターを有していなかったことになる。結果の数が１よりも大きいとき、結果の精度には問題があることもあり得る。結果の数が１であるとき、その結果は精度が高いと考えられる。高い精度の結果を有すると推定されたセルの数／割合は、信頼閾値を超えたとき（例えば、＞７０％、８０％、９０％）を判定するために用いることができる。この信頼度を超えていないとき、本プロセスは動作８１０に戻り他の編集を検出する。一般に、得られる例が多い程、結果の精度も高くなる。信頼度レベルを超えたとき、本プロセスは動作８８０に進む。
【００４３】
[0052]  動作８８０において、データー・フォーマット規則を項目の各々に適用したことによって作成された結果を用いて文書を更新する。例えば、１つの結果を有するセルは、その結果を用いて更新される。異なる数の結果を有するセルには、先に論じたように、誤りインディケーターを付けることができる。また、ユーザーがデーター・フォーマット規則の適用に関する種々の動作を実行することを可能にする検討ユーザー・インターフェース・エレメントも表示することができる。
【００４４】
[0053]  次いで、本プロセスは終了ブロックに進み、他の動作の処理に戻る。
[0054]  以上の明細書、例、およびデーターは、本発明の構成物(composition)の製造および使用について完全な説明に備えたものである。本発明の多くの実施形態は、本発明の主旨および範囲から逸脱することなく形成することができるので、本発明は以下に添付する特許請求の範囲に属するものとする。
【図１】
0006033235.tif 000002
【図２】
0006033235.tif 000003
【図３】
0006033235.tif 000004
【図４】
0006033235.tif 000005
【図５】
0006033235.tif 000006
【図６】
0006033235.tif 000007
【図７】
0006033235.tif 000008
【図８】
0006033235.tif 000009