(57)【特許請求の範囲】
【請求項１】
レコード内に出現する文字列と関係付けられる近似マッチを決定するためのアーカイブを管理する方法であって、
コンピュータシステムが、前記レコード内に出現する単語の一セットを決定するようレコードを処理するステップと、
前記コンピュータシステムが、前記単語のセット内のそれぞれの単語毎に、前記単語から１つ又は複数の文字を削除することでそれぞれ生成される複数の削除バリアントを生成するステップと、
前記コンピュータシステムが、前記単語のセット内のそれぞれの単語毎に、前記単語と、個々の削除バリアントに基づくセット内の他の単語との潜在的マッチを見つけるステップと、
前記コンピュータシステムが、前記単語のセット内の１つの単語に対して、前記レコード内の該単語の出現頻度を決定するステップとを含む方法。
【請求項２】
各削除バリアントは、前記単語内の文字と同一の少なくとも幾つかの文字で構成される、請求項１の方法。
【請求項３】
前記セット内の所与の単語に対して前記複数の削除バリアントを生成する前記ステップは、前記所与の単語から単一文字を削除することで得られるバリエント単語を構築するステップを含む、請求項２の方法。
【請求項４】
前記セット内の所与の単語に対して前記複数の削除バリアントを生成する前記ステップは、前記所与の単語から複数の文字を削除することで得られるバリエント単語を構築するステップを含む、請求項２の方法。
【請求項５】
前記セット内の所与の単語に対して前記複数の削除バリアントを生成する前記ステップは、前記所与の単語が所定の長さより短い場合、前記所与の単語から単一文字を削除することで得られるバリエント単語を構築するステップと、前記所与の単語が前記所定の長さより長い場合、前記所与の単語から複数の文字を削除することで得られるバリエント単語を構築するステップとを含む、請求項２の方法。
【請求項６】
前記セット内の単語に対して、前記単語との滞在的近似マッチとして、前記単語の出現頻度と、前記アーカイブ内で表現される少なくとも幾つかの単語の前記出現頻度とを含む合計値に基づいて前記単語の重要度を表す重要度値を生成するステップを更に含む、請求項１の方法。
【請求項７】
前記重要度値は前記合計値の逆数に基づいて生成される、請求項６の方法。
【請求項８】
前記複数の単語に含まれる第１フレーズ及び複数の単語に含まれる第２フレーズ内の単語が近似マッチに対応するかどうかを決定することにより、前記第１フレーズと前記第２フレーズとが近似マッチに対応するかどうかを決定するステップを更に含み、前記単語は、重要度値に基づいて選択される、請求項６の方法。
【請求項９】
フレーズ内の単語の前記重要度値は、前記合計値に基づき、前記単語の長さが最小の単語、前記フレーズ内の前記単語の位置、前記単語が出現するレコードのフィールド、および前記フィールドが出現するレコードのソースに基づく、請求項８の方法。
【請求項１０】
前記レコード内に出現する単語の一セットを決定するステップは、前記セットの単語に含めるために修正単語を生成するよう少なくとも一つのレコードに出現する単語を修正するステップを含む、請求項１の方法。
【請求項１１】
前記単語を修正する前記ステップは、句読点を削除または置換するステップを含む、請求項１０の方法。
【請求項１２】
前記単語を修正する前記ステップは、前記単語を別の表現にコード化するステップを含む、請求項１０の方法。
【請求項１３】
前記単語を修正する前記ステップは、前記単語を数値化表現にコード化するステップを含む、請求項１２の方法。
【請求項１４】
前記単語を数値化表現にコード化する前記ステップは、前記単語内の各文字を素数にマッピングするステップ、および前記単語内の文字にマッピングされた前記素数の積として、単語を表現するステップを含む、請求項１３の方法。
【請求項１５】
レコード内に出現する文字列と関係する近似マッチを決定するためのアーカイブを管理するための、コンピュータで読取り可能な媒体上に格納されるコンピュータープログラムであって、前記コンピュータープログラムは、コンピュータに実行させる以下の命令、
前記レコード内に出現する単語の一セットを決定するようレコードを処理する命令と、
前記単語のセット内のそれぞれの単語毎に、前記単語から１つ又は複数の文字を削除することでそれぞれ生成される複数の削除バリアントを生成する命令と、
前記単語のセット内のそれぞれの単語毎に、前記単語と、前記各削除バリアントに基づくセット内の他の単語との潜在的マッチを見つける命令と、
前記単語のセット内の１つの単語に対して、前記レコード内の該単語の出現頻度を決定する命令とを含むコンピュータープログラム。
【請求項１６】
レコード内に出現する文字列と関係する近似マッチを決定するためにアーカイブを管理するシステムであって、前記システムは、
前記レコード内に出現する単語の一セットを決定するようレコードを処理する手段と、
前記単語のセット内のそれぞれの単語毎に、前記単語と同一の少なくとも幾つかの文字からそれぞれ生成される複数の削除バリアントを生成する手段と、
前記単語のセット内のそれぞれの単語毎に、前記単語と、前記各削除バリアントに基づくセット内の単語との潜在的マッチを見つける手段と、
前記単語のセット内の１つの単語に対して、前記レコード内の該単語の出現頻度を決定する手段とを含むシステム。
【請求項１７】
レコード内に出現する文字列と関係する近似マッチを決定するためにアーカイブを管理するシステムであって、前記システムは、
レコードを格納するデータソースと、
前記データソース内の前記レコードを処理して、前記レコード内に出現する単語の一セットを決定し、
前記単語のセット内のそれぞれの単語毎に、前記単語から１つ又は複数の文字を削除することでそれぞれ生成される複数の削除バリアントを生成し、
前記単語のセット内の１つの単語に対して、前記レコード内の該単語の出現頻度を決定する
よう構成されるコンピューターシステムと、
前記単語のセット内のそれぞれの単語毎に、前記各削除バリアントに基づくセット内の他の単語との潜在的マッチを見つけるための前記コンピューターシステムに接続されるデータ格納装置とを含むシステム。
【請求項１８】
前記セット内の前記単語毎に、前記単語の出現頻度に基づいて前記単語の重要度を表す重要度値を生成するステップを更に含む、請求項１の方法。
【請求項１９】
前記レコード内の前記単語の前記出現頻度と、前記レコード内の前記単語の潜在的マッチとして前記アーカイブ内で表現される単語の出現頻度との合計値の逆数を計算するステップを含み、
前記レコード内の単語と対応する前記セット内の単語の重要度値を生成するステップを更に含む、請求項１の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、近似文字列マッチングのためのアーカイブ管理法に関する。
【背景技術】
【０００２】
文字列メトリック（「類似性関数」とも呼ばれる）に従って、ある許容値以内で所与のパターンの文字列とマッチする文字列を見い出すための、近似文字列マッチングのための各種の技法（「ファジー」または「不正確」な文字列マッチングまたは検索とも呼ばれる）が用いられている。検索される文字列は、「テキスト」と呼ばれる長い文字列内の下位文字列でもよく、または例えば、データベースのレコード内に含まれる文字列でもよい。文字列メトリックの一カテゴリは、「編集距離」である。編集距離の一例は、ある文字列を別の文字列に変換するのに必要な編集操作（文字の挿入、削除、または置換）の最小数をカウントするレーベンシュタイン距離法である。近似文字列マッチングには、マッチングを開始する前は検索テキストを処理できない（インデックス化できない）オンラインマッチングと、マッチングを開始する前にテキストを処理できるオフラインマッチングとが含まれる。
【発明の概要】
【０００３】
一態様では、総じて、レコード内に出現する文字列と関係付けられる近似マッチを決定するためのアーカイブを管理する方法について説明する。本方法は、レコード内に出現する文字列と対応する一セットの文字列表現を決定するようレコードを処理するステップと、そのセット内の少なくとも幾つかの文字列表現毎に、その文字列内の文字と同一の少なくとも幾つかの文字からそれぞれ生成される複数の近接表現を生成するステップと、個々の近接表現に基づく少なくとも二つの文字列間の潜在的近似マッチをそれぞれ表す複数の記入項目をアーカイブ内に格納するステップとを含む。
【０００４】
局面には以下のフィーチャの内の一つ以上が含まれる。
【０００５】
各文字列表現は文字列からなる。
【０００６】
各近接表現は、その文字列内の文字と同一の少なくとも幾つかの文字で構成される。
【０００７】
セット内の所与の文字列に対して複数の近接文字列を生成するステップは、所与の文字列から削除した異なる文字をそれぞれ有する複数の近接文字列を生成するステップを含む。
【０００８】
セット内の所与の文字列に対して複数の近接文字列を生成するステップは、所与の文字列から削除した単一文字をそれぞれ有する複数の近接文字列を生成するステップを含む。
【０００９】
セット内の所与の文字列に対して複数の近接文字列を生成するステップは、近接文字列の内の少なくとも幾つかが前記所与の文字列から削除した複数の文字を有する、近接文字列を生成するステップを含む。
【００１０】
所与の文字列から削除した異なる文字をそれぞれ有する複数の近接文字列を生成するステップは、所与の文字列が所定の長さより短い場合、所与の文字列から削除した単一文字をそれぞれ有する複数の近接文字列を生成するステップと、所与の文字列が所定の長さより長い場合、近接文字列の内の少なくとも幾つかが、所与の文字列から削除した複数の文字を有する、近接文字列を生成するステップとを含む。
【００１１】
本方法は、セット内の文字列表現の内の少なくとも幾つか毎に、レコード内の対応文字列の出現頻度を決定するステップを更に含む。
【００１２】
本方法は、セット内の文字列表現の内の少なくとも幾つか毎に、文字列との滞在的近似マッチとして、文字列の出現頻度と、アーカイブ内で表現される少なくとも幾つかの文字列の出現頻度とを含む合計値に基づいて対応文字列の重要度を表す重要度値を生成するステップを更に含む。
【００１３】
重要度値は合計値の逆数に基づいて生成される。
【００１４】
本方法は、フレーズ内の文字列が近似マッチに対応するかどうかを決定することにより、複数の文字列を含む別のフレーズが近似マッチに対応するかどうかを決定するステップを更に含み、フレーズ内の文字列は、対応する重要度値に基づいて選択される。
【００１５】
フレーズ内の文字列の重要度値は、合計値に基づき、文字列の長さが最小の文字列、フレーズ内の文字列の位置、文字列が出現するレコードのフィールド、およびそのフィールドが出現するレコードのソースに基づく。
【００１６】
本方法は、アーカイブ内の記入項目の内の少なくとも幾つか毎に、少なくとも二つの文字列間の潜在的近似マッチの品質を定量化する記入項目と関係するスコアを生成するステップを含む。
【００１７】
本方法は、記入項目と関係する文字列が、記入項目と関係するスコアをしきい値と比較することにより、近似マッチに対応するかどうかを決定するステップを更に含む。
【００１８】
スコアは、少なくとも二つの文字列間の潜在的近似マッチを決定するために使用する各近接表現間の一致度に基づく。
【００１９】
レコード内に出現する文字列と対応する一セットの文字列表現を決定するようレコードを処理するステップは、そのセットの文字列表現に含めるために修正文字列を生成するよう少なくとも一つのレコードに出現する文字列を修正するステップを含む。
【００２０】
文字列を修正するステップは、句読点を削除または置換するステップを含む。
【００２１】
文字列を修正するステップは、文字列を別の表現にコード化するステップを含む。
【００２２】
文字列を修正するステップは、文字列を数値化表現にコード化するステップを含む。
【００２３】
文字列を数値化表現にコード化するステップは、文字列内の各文字を素数にマッピングするステップ、および文字列内の文字にマッピングされた素数の積として、文字列を表現するステップを含む。
【００２４】
アーカイブには、ユーザーからの入力に基づいて、少なくとも二つの文字列間の潜在的近似マッチを表わす少なくとも幾つかの記入項目が含まれる。
【００２５】
別の局面では、概して、コンピュータで読取り可能な媒体上に格納されるコンピュータープログラムが、アーカイブを管理するために説明され、レコード内に出現する文字列と関係する近似マッチを決定する。コンピュータープログラムは、コンピュータに実行させる以下の命令、レコード内に出現する文字列と対応する一セットの文字列表現を決定するようレコードを処理する命令と、セット内の文字列表現の内の少なくとも幾つか毎に、その文字列内の文字と同一の少なくとも幾つかの文字からそれぞれ生成される複数の近接表現を生成する命令と、各近接表現に基づいて少なくとも二つの文字列間の潜在的近似マッチをそれぞれ表わす記入項目をアーカイブ内に格納する命令とを含む。
【００２６】
別の局面では、概して、システムが、レコード内に出現する文字列と関係する近似マッチを決定するためにアーカイブを管理するよう記述される。本システムは、レコード内に出現する文字列と対応する一セットの文字列表現を決定するようレコードを処理する手段と、セット内の文字列表現の内の少なくとも幾つか毎に、その文字列内の文字と同一の少なくとも幾つかの文字からそれぞれ生成される複数の近接表現を生成する手段と、各近接表現に基づいて少なくとも二つの文字列間の潜在的近似マッチをそれぞれ表わす記入項目をアーカイブ内に格納する手段とを含む。
【００２７】
別の局面では、概して、システムが、レコード内に出現する文字列と関係する近似マッチを決定するためにアーカイブを管理するよう説明される。本システムは、レコードを格納するデータソースと、データソース内のレコードを処理して、レコード内に出現する文字列と対応する一セットの文字列表現を決定し、セット内の文字列表現の内の少なくとも幾つか毎に、その文字列内の文字と同一の少なくとも幾つかの文字からそれぞれ生成される複数の近接表現を生成するよう構成されるコンピューターシステムと、各近接表現に基づいて少なくとも二つの文字列間の潜在的近似マッチをそれぞれ表わす記入項目を含むアーカイブを格納するためのコンピューターシステムに接続されるデータ格納装置とを含む。
【００２８】
各局面は、以下の利点の内の一つ以上を有する。
【００２９】
典型的なデータベースアプリケーションでは、異なるレコードの所与の複数のフィールドは、それらのコンテンツが同一の場合はマッチする。結合およびロールアップのような操作は、特定のフィールドに出現するマッチングキーに基づいてレコードをセットにグループ化する。但し、アプリケーションによっては、近似文字列マッチングを用いてキーを比較し、結合またはロールアップを実行できると有用である。所定の基準のもとで、対応するキーフィールドが十分近接している場合、二つのレコードは近似マッチであると言われる。例えば、単語またはフレーズからなるキーに対して、二つ以上のデータソースを用いて操作が実行されている場合、各ソース内の単語の正確なスペルが一致しないことがあるし、一つのフレーズが他方にはない単語を含むこともある。
【００３０】
アーカイブは、一つ以上のデータソースのレコード内に現れる近接文字列対を格納するよう管理される。これらの対およびアーカイブが提供するスコア等の関連情報により、近接文字列マッチングを用いる結合、ロールアップ、および他の操作の効率が増大する。実装によっては、詳細に後述するように、データソースからのデータに操作を実行する計算グラフのコンポーネントからアーカイブにアクセス可能である。
【００３１】
本発明の他のフィーチャおよび利点については、以下の説明、およびクレームで明らかにする。
【図面の簡単な説明】
【００３２】
【図１】グラフベース計算を実行するためのシステムのブロック図である。
【図２】計算グラフのダイヤグラムである。
【図３】前処理手順のフロー図である。
【発明を実施するための形態】
【００３３】
１．システム概様
近似文字列マッチング（つまり「ファジーマッチング」）の技法は、データセットを格納する様々な形式のデータベースシステムを含む各種システムに応用することができる。本明細書で用いるとき、データセットは、それぞれのフィールド（「属性」または「列」とも呼ばれる）に値を有するレコードとしてデータ部分を組織化できる任意のデータコレクションを含む。データベースシステムおよび格納されるデータセットは、多様な形式の内から、洗練されたデータベース管理システムまたは単純なフラットファイルを格納するファイルシステムのような、何れかの形式をとることができる。各種データベースシステムの一局面は、データセット内のレコードに使用する形式のレコード構造である（各レコード内のフィールドで使用されるフィールド構造を含めることができる）。システムによっては、データセットのレコード構造は、個々のテキストドキュメントをレコードとして定義するだけでもよく、文書のコンテンツは一つ以上のフィールドの値を表す。システムによっては、単一のデータセット内のレコードが全て同一構造（例えば、フィールド構造）を有するという要件はない。
【００３４】
複雑な計算は、有向グラフによるデータフローとして表せることが多く、計算コンポーネントはそのグラフの頂点と関係付けられ、コンポーネント間のデータフローはグラフのリンク（弧、辺）と対応付けられる。このようなグラフベース計算を実装するシステムは、米国特許第５，９６６，０７２号、発明の名称「ＥＸＥＣＵＴＩＮＧ  ＣＯＭＰＵＴＡＴＩＯＮＳ  ＥＸＰＲＥＳＳＥＤ  ＡＳ  ＧＲＡＰＨＳ（グラフとして表される計算の実行）」に記載され、引用して本明細書に組み込む。グラフベース計算を実行する一手法は、グラフの異なる頂点とそれぞれが関係付けられる幾つかの処理を実行することと、グラフのリンクに従って処理間の通信経路を確立することである。例えば、通信経路は、ＴＣＰ／ＩＰまたはＵＮＩＸドメインソケット（ＵＮＩＸは登録商標）を用いるか、または処理間でデータを渡すために共有メモリを用いることができる。
【００３５】
図１を参照すると、グラフベース計算を実行するためのシステム１００は、データ格納装置１０２に接続された開発環境１０４と、データ格納装置１０２に接続されたランタイム環境１０８と、を含む。開発者１０１は、開発環境１０４を用いてアプリケーションを構築する。アプリケーションは、データ格納装置１０２内のデータ構造により規定された一つ以上の計算グラフと関係付けられ、その計算グラフは開発者が開発環境１０４を使用した結果としてデータ格納装置に書き込むことができる。計算グラフ１０５のデータ構造１０３は、例えば、計算グラフの頂点（コンポーネントまたはデータセット）および頂点間のリンク（ワーク要素のフローを表す）を規定する。データ構造には、計算グラフ（「データフローグラフ」とも呼ばれる）のコンポーネント、データセットおよびフローの様々な特性を含めることもできる。
【００３６】
ＵＮＩＸオペレーティングシステム（ＵＮＩＸは登録商標）等の適切なオペレーティングシステムの制御のもとで、一台以上の汎用コンピュータ上でランタイム環境１０８をホストしてもよい。例えば、ランタイム環境１０８には、ローカル（例えば、ＳＭＰコンピュータ等のマルチプロセッサシステム）もしくはローカル分散（例えば、クラスタまたはＭＰＰとして接続されるマルチプロセッサ）、またはリモートもしくはリモート分散（例えば、ＬＡＮまたはＷＡＮネットワークを経由して接続されるマルチプロセッサ）、またはそれらの任意の組合せのいずれかの、マルチ中央処理ユニット（ＣＰＵ）を用いるコンピューターシステムの構成を含むマルチノード並列計算環境を含めることができる。
【００３７】
ランタイム環境１０８は、計算を実行し、構成するためにデータ格納装置１０２および／またはユーザー１０７からの制御入力を受け取るよう構成される。制御入力には、格納されているグラフデータ構造内で規定される対応する計算グラフを用いて、特定のデータセットを処理するコマンドを含むことができる。ユーザー１０７は、例えば、コマンドラインまたはグラフィカルインターフェースを用いて、ランタイム環境１０８と相互作用できる。
【００３８】
ランタイム環境１０８は、事前実行モジュール１１０および実行モジュール１１２を含む。事前実行モジュール１１０は、任意の前処理手順を実行し、近似文字列マッチングに使用される辞書１１１およびアーカイブ１１４等の、計算グラフを実行するためのリソースを準備し、維持する。辞書１１１は、データセット内に出現する単語および単語関連情報を格納する。アーカイブ１１４は、単語、フレーズ、またはデータセットのレコードに基づく事前処理からの各種結果を格納する。辞書１１１およびアーカイブ１１４は、多様なフォーマットの何れかで実装でき、単一のデータコレクションとして、または多数の辞書およびアーカイブとして組織化することができる。実行モジュール１１２は、コンポーネントの計算を実行するために、計算グラフに割り当てられた処理の実行をスケジュール化し制御する。実行モジュール１１２は、グラフコンポーネントと関係する処理を行っている間にアクセスされるシステム１００と接続されている、例えば、データベースシステムからのレコードを提供するデータソース１１６等の、外部の計算リソースと相互作用できる。
【００３９】
図２を参照すると、計算グラフ１０５の簡単な例には、ロールアップ操作を実行するロールアップコンポーネント２００、第一入力データセット２０２、第二入力データセット２０４、および出力データセット２０６が含まれる。入力データセットは、ワーク要素（例えば、データベースレコード）のフローをロールアップコンポーネント２００に提供し、出力データセット２０６は、ロールアップコンポーネント２００が生成したワーク要素のフロー（例えば、集約したデータベースレコード）を受け取る。入力データセット２０２、２０４および出力データセット２０６は、データソース１１６等の、ランタイム環境１０８にアクセス可能な格納媒体に格納されたデータ（例えば、データベースファイル）を表す。ロールアップコンポーネント２００は、入力データセットから受け取ったレコードのキーフィールド値を比較し、キーフィールド値間の近似マッチに基づいて集約レコードを生成する。
【００４０】
図３は、計算グラフが使用する辞書１１１およびアーカイブ１１４を準備するために、事前実行モジュール１１０が実行する前処理手順３００を示す。手順３００は、どのソースを処理すべきか、これらのソースのどのフィールドから読み出すべきか、を指示するユーザーからの構成情報を受け取る（３０２）。どのフィールドを読み出すかの指示は、例えば、全てのフィールドを読み出す等の初期設定に従って明示してもよい。手順３００は、選択したソースのレコードの選択フィールドを読み出し、辞書のフィールドに出現する単語を格納することにより辞書１１１をコンパイルし（３０４）、単語頻度カウント等の統計値を更新する。手順３００は、単語の近接単語を辞書内に生成し（３０８）、それぞれの近接単語を比較して潜在的ファジーマッチを見いだす（３１０）ことにより、潜在的ファジーマッチをコンパイルして（３０６）、アーカイブ１１４に格納する。潜在的ファジーマッチとなる一対の単語と併せて、グラフ実行中に使用して潜在的ファジーマッチが実際のファジーマッチであるかどうかを決定できるスコアが格納される。手順３００は、アーカイブ１１４に格納された結果に基づいて辞書１１１に出現する単語の重要度スコアを計算することにより、辞書１１１を更新する（３１２）。例えば、辞書１１１内の単語毎に、手順３００は、詳細に後述するように、潜在的ファジーマッチに基づいて単語頻度カウントを再正規化する（３１４）。次いで、これらの再正規化された単語の頻度カウントを用いて、ソースのフレーズおよびレコードをマッチングさせる場合に使用できる重要度スコアをスコア（３１６）できる。
【００４１】
実装によっては、新規ソースが利用可能となるか、既存のソースが新規レコードを受け取るたびに、前処理手順３００を繰返す。本手順は、ユーザーが呼び出しても、ある間隔で自動的に繰り返してもよく、特定のイベントに応答してもよい。
【００４２】
２．ファジーマッチング
多くの業務が直面している難問は、正確には同一でないこともあり得る等価の値を有する「名前」または「住所」のような、フィールドを使用する二つ（以上）のデータセットを一致させることである。データセットを一致させるには、以下のようなデータについての様々な疑問に答えることが必要である。あるデータセット内の企業名は別のデータセットにあるか？  あるとすると、その住所は同じか？  二つのデータセットからの企業名が正確に同じ場合、マッチングキー（ここでは企業名）を有する全てのレコードを見付ける結合操作を用いて、対応する住所のフィールドを比較できる。しかし、その名前が正確には同じでないときはどう対処するか？  ある名前は単語COMPANYで終わる一方で、別の名前ではCOと略され、三つめでは完全にそれが省かれるかもしれない。OFやTHEのような単語は、ある名前には付き、別の名前には付かないことがある。単語はスペルを間違うことがある（例えば、COMPANYのつもりのCOMPNY）。あるソース内の名前には、連絡先の個人名や口座番号のような追加情報が含まれているかもしれない。
【００４３】
ビジネス名のようなものに対する確たる形式規則は、異なる起源のデータセット間では言うまでもなく、単一データセット内ですら存在しない。この挑戦は、名前が同一でない場合でも、マッチ、一般には一セットの潜在的マッチを見い出すことにある。このようなマッチングは、「ファジー」マッチングとしても知られる近似文字列マッチングを用いて実行することができる。このマッチは、エラーまたは不一致を許容するのでファジーである。
【００４４】
操作がファジーマッチングを用いる場合、二つの単語またはフレーズは、必ずしも同一ではないが、許容できる差異つまり不一致の範囲内で等価であると見なされた場合、マッチしていると見なされる。例えば、単語の正確なスペルが一致しなくてもよく、一つのフレーズが他に存在しない単語を含んでいてもよい。スコアを用いて一致の品質を定量化することができる。ファジーマッチングにより、レコードの所与のフィールドにおけるマッチと対応するはずのキーが必ずしも同一ではないが等価である場合、比較、結合、ロールアップおよびルックアップ等のよく知られた操作を実行することが可能である。
【００４５】
ファジーマッチングの速度を上げるために、事前実行モジュール１１０は、計算グラフがアクセスできる可能性があると確認されているデータソースからのデータセットを周期的に処理する。事前実行モジュール１１０は、データセットのレコードの選択フィールド内に出現するデータを読み出す。ユーザーは、処理すべき全ての利用可能なフィールド、または利用可能なフィールドの選択されたサブセットを選択できる。場合によっては、フィールド内のデータは一つの単語と対応してもよく、場合によっては、データは複数の単語を含むフレーズと対応していてもよい。（本明細書で用いる場合、「単語」は、ある文字セットからの文字のシーケンスを含む任意の文字列であり、フレーズ内の複数の単語はスペース、またはコンマ等の他の区切り文字により分離される）。フィールドを単語に分解する規則は構成可能であり、その規則はフィールドを最初に選択したときに規定することができる。場合によっては、詳細に後述するように、組み込まれたスペースを文字として扱ってフレーズを「マルチ語」に分解することにより、組み込まれたスペース（例えば、都市名や英国の郵便番号）がある場合でも、複数の単語を含むフレーズを一つの単語と類似の方法で処理することができる。これにより、連結された単語、切断された単語をファジーマッチングのもとで同一とみなすことができる。例えば、「john allen」は「johnallen」または「johnal len」とマッチするはずである。
【００４６】
事前実行モジュール１１０は、レコード内に出現する一セットの単語を同定し、辞書１１１内に単語の表現（「単語表現」または「文字列表現」とも呼ばれる）を格納する。各単語の統計値も辞書１１１に格納することができる。例えば、所与のデータセット、または全データセットのレコード内の単語の出現頻度を辞書１１１内に格納することができる。単語のコンテクストについての情報を辞書１１１に格納することができる。例えば、そのコンテクストには、その単語が出現したフィールドまたはフィールドのグループを含めることができる。フレーズ内のその位置に関する統計等の単語に関する他の情報も、辞書１１１に格納することができる。単語の表現は、その単語自体とするか、または異なる文字セットのような異なる形式もしくは詳細に後述するように、非文字列表現であるその単語のコード化表現（例えば、幾つかの英数字コード化）とすることができる。
【００４７】
事前実行モジュール１１０の処理は、所与の単語に対する一セットの「近接単語」（または、「近接表現」）を生成することを含む。所与の単語に対する近接単語は、所与の単語と関係付けられる辞書１１１内に格納される。近接単語を用いて、詳細に後述するように、単語対の間の潜在的ファジーマッチを生成する。
【００４８】
処理の結果は、実行モジュール１１２により実行されるグラフが使用するためにアーカイブ１１４内に格納される。幾つかのグラフは、所与のレコードを処理すべきかどうかを決定するプロセスで（例えば、結合またはロールアップコンポーネントで）アーカイブ１１４を使用することもできる。レコードの類似性を測るのは、多くのコンテクストに現れるデータ品質アクティビティである。例えば、二つのソースが、両方のソースからのレコードを一緒にするために結合操作で使用する共通キーを共有することもできる。キーが現れるかもしれないレコード内のフィールドは比較する必要がある。一つのフィールドに複数の単語を存在させることもできるが、多くの場合、複数のフィールドを用いて、名前または住所のような特定の種類のデータを保持する。フィールド間の単語の配置はソース全体で首尾一貫していなくてもよく、特別な単語は一つのソースまたは他のソースに存在してもよく、単語は順不同でもよく、誤字があってもよい。各種の採点機能を用いて、レコード間のマッチ品質を特性化する基本スコアを計算することができ、次いで、各種の矛盾およびエラーに対するペナルティにより重み付けされる。様々な種類のエラーと関係する重み付けは調整可能であり、任意の比較がスコアに及ぼす各ペナルティの寄与率は報告可能である。採点機能は、ファジーマッチとするために単語同士を比較する方法、およびスコアを計算する際に単語に重み付けする（統計的に）かどうかにより異なる。レコードに対するスコアには、幾つかの別々に採点した、個々のフィールドまたは複数の連結フィールドの全体にわたって重み付けしたスコアを含めることができる。
【００４９】
マッチングプロセスには三つのレベル、単語、フレーズおよびレコードのスコアがある。単語の採点は、前処理段階で行われるのが典型的であり、所定の基準に基づいて二つの単語が潜在的ファジーマッチかどうかを決定し、その潜在的ファジーマッチを「ファジーマッチスコア」と関係付ける。フレーズの採点は、ファジーマッチの複数単語だけでなく、単語が片方または両方のフレーズから失われている可能性、単語が順不同で出現している可能性、または単語間に特別な単語を有する可能性を考慮することもできる。採点アルゴリズムは、矛盾する別々のソースの重要性を調整できるように構成可能である。第三レベルはレコード全体のスコアである。これらはコンテクストに影響される方法で、様々なフィールドのスコアを組み合わせることにより採点される。失われたか、または矛盾する情報に適切な重みを付けることができる。
【００５０】
アーカイブ１１４は、対応するファジーマッチスコアを伴う潜在的ファジーマッチであると見付けた単語対を格納する。潜在的ファジーマッチのセットとそれらのファジーマッチスコアをユーザーが修正して、計算したファジーマッチスコアを別のファジーマッチスコアで置換し、所定の基準により関連付けられない潜在的ファジーマッチング単語の対を追加することができる。
【００５１】
アーカイブ１１４は、フレーズを比較するために、ある単語を含むフレーズに対するその単語の相対的な重要度を表す「重要度スコア」も格納する。重要度スコアは、データセット内の単語の出現頻度の逆数を使用するが、ファジーマッチにより関連付けられる変異形の頻度を用いてこの値を調整し（スコアアーカイブを用いて決定される）、オプションで、単語の長さ、フレーズ内の位置、ソース、およびコンテクスト（例えば、単語が出現するフィールド）から推測される追加情報を使用する。単語が出現するコンテクストに基づいて重要度スコアを調整することは、例えば、データが正しいフィールド内に配置されていないことがあって、かかるエラーは識別する必要があるので、有用なことがある。場合によっては、住所フィールドのようなフィールドに出現する文字列を、非構造化フォーマットで受け取ってもよいが、当然ながら構造化フォーマットを含めることもできる。これらの文字列を構文解析して、個々の要素を識別することができる。コンテクストによる相対的な重要度を用いて、所与の単語が、あるコンテクストか、別のコンテクストのどちらに出現する可能性が高いかを指示することができる。例えば、住所フィールド内で、通りの名前の一部に代えて都市名としてのＬＯＮＤＯＮである。コンテクスト情報の協調により構文解析が支援され、LONDONに別の都市名が続けば、通りの名前の一部の可能性があり、郵便番号のすぐ前であれば、都市の可能性がある。
【００５２】
実装によっては、アーカイブ１１４は、二つのフレーズ間のファジーマッチ品質を測る「フレーズ比較スコア」を格納する。事前実行モジュール１１０は、共有される単語、未使用の単語のリストを見付けるためにフレーズを重ね合わせ、相対的な重要度、配列および単語順序を使用してフレーズ比較スコアを計算する。
【００５３】
アーカイブ１１４に格納される情報は、生成された後、更に様々な方法で処理することができる。例えば、起こり得る誤判定は、スコアアーカイブ内の絶対基準データ（gold reference data）の自己採点の結果を用いて識別でき、最初に採点する間に適用されるNグラム解析により排除できる可能性がある。他のスコアを含めることもできる。例えば、複数のフィールドからの単語またはフレーズを独立して採点することができ、それらのスコアを組み合わせて全レコードを採点することができる。
【００５４】
アーカイブ１１４には、ファジーマッチを使用する様々な種類の操作がアクセスする。幾つかの操作には、完全マッチを使用する「通常バージョン」、およびファジーマッチを使用する「ファジーバージョン」が含まれている。ロールアップ（つまり集約）操作のファジーバージョンは類似レコードをグループに関係付ける。これは、一意のエンティティを識別するキーのバリアントが生データに存在するレコードを統合するのに有用である。一意のエンティティと関係するレコードのグループを定義するだけで意味のある結果となることがある。グループを一旦定義すると、次いで、典型的な集約作用がサポートされる。ファジーマッチはスコア付きの等価関係なので、グループとの関連付けも採点される。これにより、普通の場合とは逆に、所与のエンティティが必ずしも、ある一意のグループのメンバーになるとは限らないという効果が生まれる。従って、グループのメンバー（数字の合計のような）全体の集約は、正確ではないものの、グループメンバーシップの不確定性を反映するエラー限界内に限っては知ることができる。但し、グループ全体の集約は、全体のメンバーシップが確定しているので正確なままである。
【００５５】
コンポーネントは、スコアアーカイブを使用して、個々の単語内のスペルミスおよび他のエラーを識別することもできる。
ユーザーは識別したエラーを確認でき（例えば、アーカイブから生成されるリストから）、そのデータのエラーをデータ補正コンポーネントが補正できる。ファジーマッチに基づくこのエラー補正能力は、引用して本明細書に組み込む米国特許出願第１０／９４１，４０２号、発明の名称「Data Profiling（データプロファイル化）」に詳細が記載されているように、データプロファイラ能力へ拡張できる。
【００５６】
２．１  マッチング基準
多様な基準の内のどれかを用いてマッチ品質の測定に用いることができる。二つの単語、MOORGATEとMOOGRATEについて考える。基準の一形式は距離メトリックである。二つの単語間の距離を測定するための幾つかの異なる距離メトリック、または計測法がある。最も簡単な方法の一つは、ハミング距離であり、対応する文字の位置が異なる数をカウントする。この数は配列に依存するので、ハミング距離が最小となる配列が使用される。これは、以下の例に示すように、ある単語を他の単語に変換するのに必要な置換の最小数と対応する。
Ｍ  Ｏ  Ｏ  Ｒ  Ｇ  Ａ  Ｔ  Ｅ
Ｍ  Ｏ  Ｏ  Ｇ  Ｒ  Ａ  Ｔ  Ｅ
＊  ＊
【００５７】
この例では、対応する文字の位置が二ヶ所異なり、一方の単語を他方の単語に変換するのに２回の置換が必要である。
【００５８】
配列がハミング距離を計算する際に重要なので、以下の例のように、配列を「壊す」挿入により距離を長くすることができる。
Ｍ  Ｏ  Ｏ  Ｒ  Ｇ  Ａ  Ｔ  Ｅ
Ｍ  Ｏ  Ｏ  Ｒ  Ｇ  Ｒ  Ａ  Ｔ  Ｅ
＊  ＊  ＊  ＊
【００５９】
この例では、元の単語への一回の挿入によりハミング距離が４となる。幾つかの用途に対して、ハミング距離法は挿入の重要性を誇張しすぎている。
【００６０】
ハミング距離の代替は「編集距離」である。編集距離は、できるだけ配列を保ちながら一方の単語を他方の単語に変換するのに必要な編集の最小回数のカウントである（ここで「編集」とは挿入、削除、または置換の内の一つである）。単語MOORGATEとMOOGRATEの対は、一方の単語を他方の単語に変換するのに一回の挿入と一回の削除（または二回の置換）が必要なので、編集距離２を有する。単語MOORGATEとMOORGRATEの対は、一方の単語を他方の単語に変換するのに一回の挿入が必要なので、編集距離１を有する。
【００６１】
編集距離を計算する各種のアルゴリズムがある。挿入、削除および置換（転置さえも）に異なる重みを割当てることにより、異なる種類のエラーの重要度を反映するように編集距離スコアを算出することができる。編集距離の問題点は、一般にハミング距離より計算コストがかかることである。
【００６２】
「近接単語比較」は上記編集距離の代替法であり計算速度が速い。実際のデータでは誤字、転記ミスの頻度は比較的低いので、単一語内に二つ以上のエラーを見付けるのはまれである（言うまでもなく、一つの音節を音声的に類似の音節に置換するような、よりシステマティックなエラーは、多数の文字に係わることがあるが、これらはマッチしない単語として取り扱うことができる。）。所与の二つの単語間の編集距離を計算する代わりに、事前実行モジュール１１０は、「削除／結合」手順を用いて近接単語比較を実施して、所与の単語が潜在的ファジーマッチかどうかを決定する。削除／結合手順は、各単語から１文字を削除して得られる全てのバリアント単語を構築して、各単語に対して「削除バリアント」と呼ばれる一セットの近接単語を得ることにより開始される。次いで、削除／結合手順は、二セットの削除バリアントを比較して削除バリアントのどれかがマッチするかどうかを見付ける。マッチすれば、元の単語は潜在的ファジーマッチと指定される。削除／結合手順は、１文字削除、１文字挿入、または削除して挿入（置換と転置をともにカバーする）に係わる限定された等価変化により関連付けられた単語の探索として特徴付けることができる。削除バリアントの生成と削除／結合手順について下記の例で更に詳細に説明する。近接単語比較の他の形が可能である。例えば、各単語は、別の等価変化セットに従って、「近接」している一セットの近接単語を持つことができる。
【００６３】
削除／結合手順は、複数の文字が削除されている削除バリアントを使用することもできるが、一般に、誤判定の回数は、削除した文字数に比例して上昇する。誤判定は、一つの自然発生の（「実際の」）単語が別の自然発生の単語とマッチする場合である。例えば、CLARKEとCLAIREは削除して挿入すると関連付けられる。実際には、エラーはある単語を他の単語に書き換えるが、両方の単語は実際にあるので、各単語がエラーでなく自然に発生する可能性がある。どの単語が自然に発生するかについての情報がないと、所与のファジーマッチングアルゴリズムは、どの単語が実際にあるかを直接見分けることはできない（後述するようにそれを暗示するある可能性が存在するが）ので、アルゴリズムが誤判定を検出するのは困難なことがある。その状況は、幾つかの変化がエラーかも知れず、他の変化がエラーでないかも知れないので、微妙である。誤判定に取り組む一アプローチは、初めは、単語がデータに出現する頻度のような因子に基づく「重要度スコア」と呼ばれる一段上の尺度を各単語に付けることである（単語の頻度カウントの逆数または繰り込まれた単語の頻度カウント）。例えば、一つの自然発生する単語が別の単語と間違われやすい場合、確実な区別しやすさが欠如していることを反映して、ともに重要度を減少させる。
【００６４】
誤判定の潜在的な問題は、区別すべきレコードなのにマッチする可能性があると報告される結果を招くということにある。削除バリアントで一字削除を用いる利点は、レコードに出現する長い単語は普通少なく、しかも長い単語は遠く離れているのが普通なので、単語が長くなったとき（例えば、５文字を超えるような）、誤判定の回数が急速に低下するという点にある。実装によっては、削除バリアントを生成するのに使用する削除字数は単語の長さに依存できる。例えば、５文字以下の単語では一字を削除し、５文字を超える単語では２文字以下を削除する（例えば、削除バリアントには、一字が削除される単語全てと、２文字削除される単語全てが含まれる）。
【００６５】
事前実行モジュール１１０には、評価数が多い計算の全体時間を低下させ、特定の評価を高速化する機能を含めることができる。レコード内に出現する単語およびその削除バリアントは、辞書１１１に格納され、削除／結合手順の削除比較の結果は、予め計算されてアーカイブ１１４に格納され、それ以上の評価をしなくても利用できる。これは、氏名／住所データについての簡単な所見を利用し、自然言語に基づくデータ内の単語数は、最終的に処理されるかもしれないレコードの数に比べて比較的少ない（例えば、＜＜１００万語）。計算を行うたびに比較的コストのかかる同一の計算を繰り返さず、再利用するために結果（近接対および関係するファジーマッチスコア）を格納する。可能性のある単語の数は比較的少なく、観察されたバリアントだけが格納されるので、アーカイブ１１４の容量は管理可能である。
【００６６】
アーカイブ１１４には更に利点がある。フレーズ用の採点アルゴリズムは、アーカイブ１１４内のそれらのファジーマッチスコアが所定のしきい値未満の場合、単語間のファジーマッチを報告する（スコアの低い方をマッチ品質が高いと仮定した場合）。ユーザーがアーカイブ１１４内の単語対のファジーマッチスコアを手動で調整できるので、所望しないマッチ（例えば、誤判定）はＯＦＦにできる。更に、近接単語比較のもとではマッチしないはずの単語を、その対に適切なファジーマッチスコアを追加することにより、マッチするとしてアーカイブ１１４内に追加できる。例えば、HSBCとMIDLANDの対を追加すると、「HSBC BANK」と「MIDLAND BANK」の間のファジーマッチが作成される。これにより、ビジネス上の意味に基づいて同義語を適用する方法が提供される（この場合、MIDLANDはHSBCの旧称である）。複数単語の関連付け（INTERNATIONAL BUSINESS MACHINESに対するIBM等）は、手動で記入項目を追加し、ファジーマッチを指示するようファジーマッチスコアを設定することにより、アーカイブ内でファジーマッチとして追加することもできる。実装によっては、複数単語の関連付けは、単語間の関係とは別に格納および／または処理する。例えば、場合によっては、複数単語のランク付けは、標準化中に使用してもよく、必ずしもフレーズ比較採点中に使用するとは限らない。
【００６７】
単語、フレーズ、およびレコードのマッチング処理は、概して、潜在的ファジーマッチとしての候補を識別するステップと、候補間のマッチ品質を判定して実際のファジーマッチを決定するステップとを含む。
【００６８】
レコードをマッチングさせるには、対応するフィールドからの複数の単語をマッチングさせるか、または場合によっては、一つ以上のフィールドからの単語からなるフレーズをマッチングさせることが必要である。例えば、マッチングする名前または住所が同一でなくてもよい場合、幾つかの単語は別々のソースからのレコード内にあるので、このコンテクストにおけるファジーマッチングは、「フレーズマッチング」により実行される。事前実行モジュール１１０は、追加文字としてスペースを扱うよう選択できるので、フレーズは簡単に長い単語になる。この技法を用いる場合、事前実行モジュール１１０は、オプションの単語を取り扱うための追加処理を実行して、文字として扱われるスペースを持つ長い単語内の領域が変化するかもしれないという事実を考慮してもよい。
【００６９】
２．２  標準化および構文解析
ファジーマッチング法の実装によっては、フレーズを標準化してから比較する。これは、例えば、OFやTHEのような共通の単語を外したり、COをCOMPANYで置換する等、完全な単語で一般的な略語を置換したりすることにより、予期できる方法で変動性を減少させる。この標準化により、マッチ強度を増大させ、幾つかのアプローチではマッチング処理の性能を改良することができる。問題は、幾つかの情報が標準化中に失われるかもしれず、または偽識別が入り込むかもしれないことであり、すなわち、CORPはCORPORATIONの略語の可能性があるが、CORPSのスペルミスかもしれない。
【００７０】
標準化は、場合によって標準化を使用しないか、または最小限にとどめ、他のメカニズムを用いて一般的な単語および略語置換の問題を取り扱うように構成可能である。実装によっては、全てのフレーズを大文字または小文字に標準化（アクセントのような文字変化を維持しながら）する。大文字／小文字は、異なるソースでは一貫していないのが普通で、区別が非常に紛らわしいからである。目的は元データの完全性を保存することであり、略語または同義語のようなフィールド内の体系的な変動に対して、以後の処理におけるステップのために何らかの補償を残すことである。この目的は、住所フィールドにおけるSTのような単語はSTREETを意味することが多いかもしれないが、いつもそうとは限らないので、単純に変更すると面倒なことになる可能性がある。
【００７１】
句読点記号はソース間で一貫していないことが多いので、その取扱いは特別に対策されている。例えば、多くの句読点記号は、任意か、でなければ非構造的フィールドにおけるフォーマットの指示かのどちらかである。句読点の処理形式の三つの例には：空で置換、スペースで置換、改行で置換がある。標準化の他の形式には、単語を同義語で置換する等の、特定の所定の単語またはフレーズを他の単語またはフレーズで置換するステップを含めることができる。ユーザーは、構成可能なルックアップファイルを用いて句読点および単語の置換を管理することができる。
【００７２】
構文解析は、任意の数のフィールドからの様々な単語またはフレーズの部分に意味を割当てる。例えば、構文解析は、ソースによっては一つか二つのフィールドに合体されて出現するが、他のソースでは８つか１０のフィールドに分割されている住所を取り扱う場合に使用できる。既知の要素を含むと予測されているフィールドの構文解析は、その要素を識別し、検証するために補助情報を提供する参照ソースを用いて容易に行うことができる。例えば、住所フィールドの構文解析は、参照ソースとして郵便住所ファイル（ＰＡＦファイル）を用いて取り扱い、住所の個々の要素を識別し、検証することができる。
【００７３】
２．３  単語頻度およびコンテクスト
事前実行モジュール１１０は、レコード内に出現する単語を探して所与のソースのレコードをスキャンし、場合によっては、スキャニングをレコードの選択したフィールドに限定する。所与のソースのレコードの選択したフィールドに出現する単語は、辞書１１１に格納される。実装によっては、辞書の各記入項目は、単語、単語の頻度、単語の位置統計および単語のコンテクストを格納する。頻度は単語がソースのレコード内に出現する回数のカウントである（例えば、単語は所与のレコード内に何回も出現する）。頻度は、フィールド全体の集約カウントまたは単語が所与のフィールドに出現する回数を表す複数のカウントとすることができる。頻度は、詳細に後述するように再正規化することもできる。単語が所与のフィールドのフレーズ内に出現する場合、フレーズ内の単語の位置は、そのフレーズに対して計算される。辞書１１１内の所与の単語の位置統計は、例えば、その単語が出現するフレーズ全てに対するこの位置の平均値および標準偏差を含む。
【００７４】
「コンテクスト」と呼ばれる分類子は、辞書１１１内に格納されて、フィールドの論理グループ化をサポートする。ユーザーは、処理すべきフィールドが選択されるとコンテクストを規定することができる。コンテクストの使用により、共通フォーマットに標準化しなくても、似ていないレコード構造とソースを比較することが可能になる。これにより、特定のフィールド内の単語の存在から推論できるソース特定情報が、共通フォーマットへの標準化により失われることがないので、ソース間の比較の品質が改善される。所与のフィールドは多数のコンテクストで出現することがあり、比較の細かさおよび曖昧なデータ配置に対する許容差の両方の管理ができる。
【００７５】
例えば、「住所」コンテクストを用いて、住所の一部となる単語を含むフィールドをグループ化してもよい。コンテクストと関係付けられるフィールド名はソース間で異なることがある。例えば、あるソース内のフィールドのaddress_linel、address_line2、address_line3は、全て住所コンテクストの一部であるかもしれないが、別のソースでは住所コンテクストは、ビル番号、通り、都市、および郵便番号を含むかもしれない。異なるフィールドに出現する所与の単語の単語頻度カウントおよび重要度スコアは、集約して関係コンテクストに対する頻度を表すことができる。
【００７６】
辞書１１１は、潜在的ファジーマッチを表すアーカイブ１１４内の単語を識別し、重要度スコアにより表される各単語の重要度を識別するために使用される。辞書１１１は、効率的にアクセス可能な多様なファイルフォーマットの内の何れかを用いて維持することができる。例えば、辞書１１１には、引用して本明細書に組み込む米国特許出願第１１／５５５，４５８号に記載されるフォーマットのような、インデックス付き圧縮（連結）フラットファイルフォーマットで格納することができる。辞書１１１は、単一ファイル内に維持でき、または様々な目的、ソース、フィールドコード化、もしくはアクセス加速のいずれかのために複数のファイル内に維持できる。
【００７７】
単語に関する他の情報を、辞書１１１内に含めることができる。例えば、「重要度位置」は、フィールド内の単語が重要度に従って降順でソートされたとすると、その単語がフィールド内に持つはずの位置であり、すなわち、重要度位置はフレーズ内の前の方に重要な単語を配置する。例えば、元の順序でのフレーズは「Bank of America」であるとする。重要度によりソートされた単語を持つフレーズは、「America Bank of」となる。元フレーズ内での単語「Bank」の位置は、第一位（３単語中）である。単語「Bank」の重要度位置は、第二位（３単語中）である。
【００７８】
２．４  ファジーマッチスコア
ソース内、ソース間の単語の潜在的ファジーマッチが予め計算され、マッチ品質を特徴付ける一対の単語間の各潜在的マッチに対するファジーマッチスコアとともにアーカイブ１１４に格納される。ソース内の注目すべき単語の数はソース内の全単語の数よりずっと少ないのが普通なので、事前計算ステップは、単語の冗長なファジー比較を除去することにより、後工程でのフィールドの比較および採点を加速する。最初に、潜在的ファジーマッチ（近接単語比較技法等の所定の基準に従って）を構築する単語だけがアーカイブ１１４に格納される。ユーザーは、所定の基準に基づいてアーカイブ１１３内の単語に対するファジーマッチスコアを手動で調整するか、またはファジーマッチスコアの最初の母集団内で識別されないマッチ対を追加することにより、アーカイブ１１４を修正し、拡張できる。
【００７９】
実装によっては、アーカイブ１１４には、削除／結合手順を用いたファジーマッチスコアを投入する。計算にコストがかかる各単語対の間の編集距離を全て計算するのではなく、近傍の単語だけを削除／結合手順で比較する。これは以下のように達成される。単語辞書１１１内の単語毎に（または辞書１１１の一部に対して、例えば、所与のソース、コンテクストおよび／またはフィールドに対して）一字を削除することにより形成されるバリアントが全て作成される。所与の元の単語に対する「削除セット」は、元の単語に対するキー（「word_key」）、元の単語（「original」）、削除バリアント（「deletion_var」）、および元の単語から削除されている文字の位置（「deletion_pos」）をそれぞれが有する記入項目のリストを含む。削除セットは、元の単語とともに辞書１１１内に格納するか、または事前実行モジュール１１０が使用してアーカイブ１１４に格納される潜在的ファジーマッチを生成したあと破棄できる。元の単語は、削除バリアントとともに削除セットに含まれ、0の削除文字位置を有する。例えば、以下は単語LONDONに対する削除セットである：
【表１】
0005603250.tif 000002
【００８０】
word_key、deletion_posは所与の削除バリアントを識別する一意の「キー」であることに留意されたい。
【００８１】
この削除／結合手順は、より多い削除に拡張することができ、削除位置のシーケンスを記録するが、二つ以上の削除シーケンスは同一単語を招くことがあるので、所与の削除バリアントに対する「キー」はもはや一意ではなくなる。（但し、特定の順序で行われる削除を要求することにより決定される正準キーがあり、例えば、元の単語の左から始めて、前の変異形から削除位置を常に指示する）。従って、元の単語LONDONから二つの文字を削除して生成された削除バリアントLOONは、削除セット記入項目を持つことになる：
【表２】
0005603250.tif 000003
【００８２】
削除／結合手順は、deletion_varの単語に結合操作を実行することにより、一つ以上の辞書内の単語から潜在的ファジーマッチを決定する。ファジーマッチの品質は削除された文字の位置を比較することにより採点される。ファジーマッチスコアを計算するための手順の一実施例では、以下のように様々な種類の変更にスコアが割当てられる：削除毎に１点、最初の文字の変更に１点、最後の文字の変更に１点、削除した文字が二つ以上離れた位置にあると１点である。各種変更と関係する重みは調整可能である。一方の単語の削除位置が0で、他方がそうでない場合、これは単一の挿入または削除である。削除位置が同一の場合、それは置換である。同一単語キーおよびdeletion_posを持つマッチは、これらが正確にマッチするので無視される。文字対の削除を指示するマッチも役に立たないので無視される（例えば、２文字か３文字の削除によるMEET→MET）。
【００８３】
以下は、元の単語、LONDON、LODON、LOMDONおよびLODNONに対するそれぞれの削除セットから選択された一連の記入項目の例である。
【表３】
0005603250.tif 000004
【００８４】
この例では、削除バリアント記入項目の幾つかは、関心を生むマッチを導かないので省かれている。結合操作は、第一記入項目をdeletion_varの同一値を有する第二記入項目と対にする。元の単語対の間で得られた潜在的ファジーマッチは：
【表４】
0005603250.tif 000005
【００８５】
例示の上記潜在的ファジーマッチはそれぞれ、単語0−削除、置換、転置、別のパスにより得られる転置、および単語0−挿入（または、単語1−削除）を表す。潜在的ファジーマッチを表すアーカイブ１１４内の各単語対は、マッチ品質を示す関連ファジーマッチスコアを有する。
【００８６】
上記手順を用いると、これらの対に対するファジーマッチスコアは以下のようになる：
【表５】
0005603250.tif 000006
【００８７】
採点の別の例として、潜在的ファジーマッチとして識別される対、単語ONDOONとLONDONはファジーマッチスコア４を持つ（第一文字に１点、削除に１点、Oの削除に１点、隣接しない削除に１点）。
【００８８】
結合操作は、単一ソースを含む任意の数のソースからの単語を有する辞書１１１上で実行できる。場合によっては、辞書１１１は、第一ソース（ソース0）からの単語を持つセクションと、第二ソース（ソース1）からの単語を持つセクションを含む。削除／結合手順は、選択されたソースを用いて実行でき、その結果は、どのソースが選択されたかの指示およびどの順序で比較したか等の他の情報と併せて、アーカイブ１１４に格納できる。
【００８９】
例えば、潜在的ファジーマッチを表すアーカイブ１１４内の各単語対は、記入項目記述子と関係付けることもできる。その対の起源を示すビットマップフィールドとして記入項目記述子を実装することができる。１ビットは、その対がこの削除／結合法を用いてグラフにより生成されたことを示す。他のビットは、スコアがユーザーにより修正されているか、その対がユーザーにより挿入されているどうか（例えば、同義語を導入するため）、またはその対が組み込まれた句読点の洗浄（「クレンジング」と称する）により生成されたかどうかを示す。
【００９０】
句読点（可能性として外国語の発音区分を含む）は、多数の句読点が一単語内に組み込まれて出現することがあると経験的に判っているので洗浄する。これらは、イニシャルのピリオドのように効果的なオプションとなることもあるし、文字化けを引きずっているようにも見える。二つ以上の文字が係わることが多いので、このような洗浄は１字削除法で取り扱われることはないし、複数文字の削除は誤判定があまりに多い。以下は洗浄された二つの単語の例である：
【表６】
0005603250.tif 000007
【００９１】
単一ソースからの単語は互いに採点しあうことができる。二つ以上のソースがある場合、各ソースからの単語を、他のソースの単語に対して採点できる（例えば、フィールドまたはコンテクストと無関係に）。これによりソース自体に存在しないかもしれない潜在的ファジーマッチが識別される。スペルミスおよび誤字は比較的孤立したイベントなので、普通はソース全体でみると様々である。
【００９２】
アーカイブ１１４は、ソース全体の潜在的ファジーマッチの結果を、例えば、引用して本明細書に組み込む米国特許出願第１１／５５５，４５８号に記載のフォーマット等のインデックス付きの圧縮された（連結された）フラットファイルフォーマットで格納できる。複数のアーカイブ１１４の使用が、マルチファイルフォーマットで、および各種の目的に対して（例えば、下記のマルチ単語スコアに対して）可能である。新規ソースがもたらされると、その単語は、辞書１１１に追加される単語自体の削除セットに対して採点される。新規の潜在的ファジーマッチ対およびスコアは、ソートされる順序で既存のアーカイブ１１４の最後に連結できる。この後の合併処理により、性能向上のためにアーカイブが再組織化される。
【００９３】
実装によっては、単語対に対するアーカイブ１１４の記入項目が既に存在している場合、その対は破棄され、再度採点されることはない。これは、例えば、性能向上のためであり、ユーザーは削除／結合手順が生成したスコアを修正できる。アーカイブ１１４は蓄積されているので、時間が経つにつれ、観察される対の集合が増加して採点する必要がある単語数は減少する。
【００９４】
記入項目のスコアを修正するのは、誤判定を個々に回避するのに有用である。計算グラフのコンポーネントは、アーカイブ１１４内のスコアを使用して、スコアアーカイブ内のスコアが所与のしきい値未満かどうかに基づいて、単語対がファジーマッチかどうかを決定できる。アーカイブ１１４内の所与の単語対のスコアをしきい値以上に上げるには、マッチを実質的に無効にする（識別された潜在的ファジーマッチが実際のファジーマッチではないことを指示する）。単語対の採点法を洗練させることにより、しきい値の調整で単語セットを選択的にオンオフすることが可能になる。実装によっては、一つ以上のしきい値を構成してコンテクスト依存とし、所与の対に対するスコアをコンテクストに依存させることもできる（例えば、アーカイブ１１４に格納される追加情報を使用する）。
【００９５】
ユーザーは、削除／結合手順で識別されないようにした単語対をアーカイブ１１４に追加することもできる。これはスコアアーカイブに同義語または略語を追加するのに有用である。例えば、STREETとSTは、削除／結合手順では潜在的ファジーマッチとして識別されないが、これを望ましい識別とすることができる。ROBERTとBOBのようなニックネームの識別を追加することもできる（これはコンテクスト依存スコアのぴったりの例であり、個人名コンテクストのマッチとみなしてもよいが他のコンテクストと考えてもよい）。
【００９６】
後続の処理の結果（例えば、これらの単語が出現するフレーズ間のマッチを許容した結果）をフィードバックしてアーカイブ内のファジーマッチスコアを更新することもできる。
【００９７】
２．５  単語頻度の再正規化および重要度スコア
アーカイブ１１４に少なくとも幾つかの単語対を存在させた後、それを用いて辞書１１１内に単語頻度カウントを「再正規化」することができる。各単語の頻度を、その単語と関連する全ての単語のカウントを潜在的ファジーマッチとして加えることにより調整する。得られた再正規化頻度を用いて単語の「重要度スコア」を計算し、次いで、フレーズをマッチさせる場合に使用する。データ内の単語の頻度が少ない程、他の単語と見分けやすいという意味で重要である。
【００９８】
生の単語の頻度カウントに重要度の頻度の考え方を適用するのが困難なことをスペルミスされた単語で示す。スペルミスは稀であり、従って不相応に重要である。スペルミスのカウントを、より高頻度に出現するそれらがマッチする単語のカウントで調整することにより、真の相対的な重要度が得られる。高頻度マッチング単語を必ずしも「正確なスペル」と考えるべきではない。適用されないかもしれないマッチング単語への正確さという意味を含んでいるからである。低頻度の単語が全てスペルミスとは限らず、高頻度でマッチングする単語全てが、スペルミス単語の正しいスペルであるとも限らない。例えば、NORTEはNORTHのスペルミスかもしれないが、スペイン語の「北」にすぎないのかもしれない。LABLEは、LABELのスペルミスかもしれないが、TABLEのスペルミスの可能性もあり、ともに高頻度マッチとして出現する。
【００９９】
重要度は区別可能な強い言外の意味を伝える。LABLEがマッチするような多数の高頻度の単語と、ある単語がマッチする場合、その単語は、別の単語と間違えられている範囲が広いので重要度が低いと見なされる。
【０１００】
アーカイブ１１４に、再正規化された単語の頻度カウント、および繰り込みを実行するために使用した単語のリスト等の他の情報を格納できる（例えば、診断する目的で）。以下に、単語AVENUEに潜在的ファジーマッチする単語を、その単語が出現するコンテクストを示すフレーズと併せて例示するとともに、その単語が例示のデータソース内に出現する回数のカウントを例示する。この例示のデータソース内に、単語AVENUE自体は10,500回出現する。
【表７】
0005603250.tif 000008
【０１０１】
単語AVENUEは16の潜在的ファジーマッチをもつと示され、10,500のカウントはこれらのマッチした単語のカウントの合計により調整される。これらのマッチした単語はそれぞれ、AVENUEと、そのマッチした単語に潜在的ファジーマッチしていると識別された何らかの他の単語とを合わせたものと関係する10,500により調整されたカウントを持つ。スペルミスした単語のリンクは、正しいスペルの単語よりファジーマッチが少ないのが普通である。
【０１０２】
単語の頻度カウントが再正規化される処理を以下に実施例で示す。本実施例では、ソース０の辞書には、「legal_address（法的住所）」と呼ばれるフィールドに出現する単語M▲E▼XICO（元の頻度カウント11）とMEXICO（元の頻度カウント259）とが含まれ、ソース１の辞書には、「taddress3」と呼ばれるフィールドに出現する単語MEXCIO（元の頻度カウント2）とMEXICO（元の頻度カウント311）とが含まれる（ソース０のアクセント付きEに注意）。
【０１０３】
本実施例では、アーカイブ１１４に格納される単語の対には、ソース０の辞書の削除セットとソース１の辞書の削除セットとの結合操作に基づくソース０とソース１との間の潜在的ファジーマッチが含まれる。（以下の実施例により、ソース毎の削除セットの自己結合からの潜在的ファジーマッチを持つアーカイブが増加する）。従って、以下の潜在的ファジーマッチの二つの対がアーカイブ１１４に出現する。
M▲E▼XICO
MEXICO
MEXICO MEXCIO
【０１０４】
繰り込み処理の実施例は以下のようである。ソース０とソース１の両方の辞書が、例えば、ソース０内の単語M▲E▼XICOで開始され、処理される。この単語をアーカイブ１１４内で調べて、ソース１に出現する潜在的ファジーマッチのリストを見付ける。次いで、ソース０の元の辞書内でそれぞれの潜在的ファジーマッチを調べる。得られたカウントを元のカウントに加算する。上記実施例に適用されたこの処理により、ソース０の辞書内の単語頻度カウントの繰り込みの結果が以下のようになる：
最初に、ソース０から単語と元のカウントを入力する：M▲E▼XICO 11
アーカイブ内を調べて{MEXICO}を返す
ソース０の辞書内をそれぞれ調べてカウントを加算する
ソース０：MEXICO
259
発見：{MEXICO}
M▲E▼XICOに対する繰り込みカウント = 11 + 259 = 270
二番目に、ソース０から単語と元のカウントを入力する：MEXICO 259
アーカイブ内を調べて{M▲E▼XICO,MEXCIO}を返す
ソース０の辞書内をそれぞれ調べてカウントを加算する
ソース０：M▲E▼XICO 11
ソース０：MEXCIO発見されず
発見：{M▲E▼XICO}
MEXICOに対する繰り込みカウント = 259 + 11 = 270
【０１０５】
元の単語の頻度カウント５を持つ単語M▲E▼XICAに対してソース0の辞書内に追加記入項目があると仮定する。
【０１０６】
この単語M▲E▼XICAは、ソース1内の何れかに対する潜在的ファジーマッチをもたないので、アーカイブ１１４に出現せず、従って、ソース0の繰り込み（ソース1に対する）に参加しない。しかし、アーカイブ１１４が、この追加記入項目を持つソース0の辞書に対する削除セット上の自己結合により拡張されていれば、アーカイブ１１４内に以下の追加記入項目が存在するはずである：
M▲E▼XICA M▲E▼XICO
【０１０７】
次いで、第一単語M▲E▼XICOの調査は、発見された潜在的ファジーマッチのセットにM▲E▼XICAを追加する。次いで、M▲E▼XICOの繰り込みは以下のように実行されることになる：
ソース0：MEXICO 259
ソース0：M▲E▼XICA 5
発見： {M▲E▼XICA,MEXICO}
M▲E▼XICOに対する繰り込みカウント = 11 + 5 + 259 = 275
【０１０８】
繰り込み単語頻度カウントはこれでより高くなり、追加の潜在的ファジーマッチM▲E▼XICAの存在が反映される。次いで、繰り込み単語頻度カウントに基づいて計算した重要度スコアを、例えば、繰り込み単語頻度カウントで除した空でないレコードの合計数の対数として計算する。この重要度スコアのバージョンでは、単語およびその変異形が高頻度で出現すればするほど重要度スコアは低くなる。負の値は、単語が１レコードあたり一回を超える頻度で出現することを示す。
【０１０９】
繰り込み単語頻度カウントを用いて、潜在的スペルミス、または逆に潜在的誤判定を識別することができる。簡単に言えば、スペルミスは稀であり、誤判定は稀ではない。単純な比判定法は、どの単語が繰り込み単語頻度カウント未満のカウントを持っているかを示す。これらはスペルミスの可能性がある。更に高い信頼性はNグラム度数を参考にすると達成できる可能性がある。Nグラムはｎ文字単語の断片である。全データにわたるNグラムの度数分布は、異なる文字の組合せの出現頻度を示す。（この分布は言うまでもなく言語に依存する。）その考え方は、アーカイブ生成中に二つの単語間の変化している場所が分かるということである。変化している場所に広がる２文字と３文字（および更に多い文字）の単語の断片が識別でき、その度数が調べられる。１単語内の変化と関係するNグラム度数が、他の単語内の変化よりずっと少ない場合、前者の単語にスペルミスの可能性があることが示される。
【０１１０】
他方、それぞれが比較的高いカウントを持つ多数の変異形は、自然に出現する変異形、すなわち誤判定、である可能性が高い。採点の観点からみると、誤判定マッチの存在は、その単語に比較的大きなカウントを加えることにより、単語の重要度を減少させる。場合によっては、これはその単語が間違っていることを示すので好ましいこともある。しかし、他の場合、それらの単語は、エラーが生成したとは思えないほど、相対的なカウントのレベルでは全く見た目が似ていない。
【０１１１】
重要度は真に相対的なものにすることができる。多数のソースが係わる場合、幾つかの潜在的ファジーマッチ単語は全てのソースに出現しないかもしれない。この意味は、調整されたカウントがソース間で変化することがあるということである。同様に、ある単語と関係するフィールドまたはコンテクストは関連しているかもしれない。どの調整を行うかは、例えば、ソース、フィールドおよびコンテクストの組合せに適応させることができる。相対的な場合には、二つのソースを比較するとき、適切なソース／フィールド／コンテクスト内に実際に出現する潜在的ファジーマッチだけを用いてカウントを調整する。ソースに依存する変異形の寄与は、概して小さな効果であろうと予測される。
【０１１２】
２．６  コード化
削除／結合手順で見つかる近接単語は、元のデータセット内の単語出現から変更されていない単語の文字編成に基づくのが基本である。近接単語の比較は、「単語コード化」を用いることにより変更される「単語空間」内で実行することもできる。発見される近接セットは、単語コード化を用いると異なることもある。単語コード化は、単語を新しい表現にマッピングする。マッピングは、１対１、１対多数、または多数対１とすることができる。コード化によっては、単語を異なる文字セットに変換し、コード化によっては、単語を数値表現に変換することもある。単語コード化は、所与の測定基準に従って単語間の距離を変化させ得るように単語空間を修正する。自然な文字表現の点から見て近接していないかもしれない単語が、単語コード化が適用された後に近接することがある。
【０１１３】
例えば、実装によっては、事前実行モジュール１１０は、文字セット内の各文字を素数としてコード化する「素数コード化」を実行し（例えば、異なる素数としてコード化している文字セット内の各文字により）、コード化した単語を文字の素数の積とする。乗算が可換となるので（すなわち、因数の順序とは無関係になる）、同一文字セットからなる場合には、二つのコード化単語はそれらの順序とは無関係に同一となる。このコード化は、転置の影響を受けず、つまりスクランブルに全く影響されないので、多数対１のマッピングの実施例となる。
【０１１４】
所与のコード化に対して、素数コード化の削除／結合手順の変形形態は、文字の削除を実行してから、近接単語を生成するようコード化でき、または近接単語操作を実行する前に、近接単語を生成するようコード化することができる。素数コード化に対する削除／結合手順の変形形態は、モジュール１１０が素数でコード化した積を分割して削除バリアントの対応する文字を削除するステップを実行できる。コード化（素数コード化のような）によっては、コード化の後の近接単語操作は、コード化の前に文字削除が行われた場合と同一結果をもたらすが、他のコード化では、近接単語操作が、コード化の前に文字削除が行われた場合と異なる結果をもたらすこともある。
【０１１５】
多数のアルファベットまたは文字セットを使用する日本語のような幾つかの言語（例えば、文字を識別するコンピューターバイトコード）では、コード化は、アルファベットまたは文字セットを標準化してからコード化するステップを含んでもよい。
【０１１６】
２．７  マルチ語
マルチ語は単語として処理されるスペースを組み込んだフレーズである。先の実施例では、フレーズは、スペースを組み込まずに単語に分解してから採点していた。これは、二つの潜在的エラーの原因を見落としてしまう。すなわち、スペースが単語内に挿入されることがあることと、単語間のスペースが脱落することである。別の実施例は、フレーズを頭字語のような単一語に関連付ける同義語の扱いである。
【０１１７】
組み込みのスペースを許容すると、区切りとしてのスペースの識別が困難になる。これはフレーズの構文解析を拡張して、単一語だけでなく、複数単語の隣接単語対と３連単語等を全て含めることにより行う。フレーズは、全て規定の長さより短いサブフレーズ（マルチ語）に分解する。マルチ語（ｍ語）内の組み込みスペースを全て削除して連結語（ｃ語）を形成する。これは削除により形成される単語の類似体である。ｃ語はマルチ語辞書およびマルチ語アーカイブのキーとなる。マルチ語を比較する場合、それらのｃ語をマッチさせて元のｍ語を採点する。これで、ｍ語内のスペルミス単語の可能性がなくなる。このケースを処理するために、ｍ語対を採点するときにアーカイブを調べる。
【０１１８】
実施例として、以下の三つの氏名を持つソースを考える：
JOHN A SMITH 
JO HNA SMITH
JOHNA SMITH
【０１１９】
最初の項目を長さ３にｍ語分解すると、ｍ語のセット：{JOHN, A, SMITH, JOHN A, A SMITH, JOHN A SMITH} が得られる。
【０１２０】
３  実装
本明細書で説明した近似文字列マッチング手法は、コンピュータ上の実行ソフトウエアを用いて実装できる。本ソフトウエアは、例えば、プログラムされるかまたはプログラム可能な、少なくとも一つのプロセッサ、少なくとも一つのデータ格納システム（揮発性および不揮発性メモリおよび／またはメモリ素子を含む）、少なくとも一つの入力装置または入力ポート、および少なくとも一つの出力装置または出力ポートをそれぞれ含む一台以上のコンピューターシステム（分散型、クライアント／サーバ、またはグリッド型等の各種アーキテクチャからなっていてもよい）上で実行される一つ以上のコンピュータープログラムの手順を形成する。本ソフトウエアは、例えば、計算グラフの設計および構成と関連する他のサービスを提供する大規模なプログラムの一つ以上のモジュールを形成してもよい。グラフのノードおよび要素は、コンピュータで読取り可能な媒体に格納されるデータ構造、またはデータリポジトリに格納されるデータモデルに準拠する他の組織化されたデータとして実装できる。
【０１２１】
本ソフトウエアは、汎用または専用のプログラム可能コンピュータが読み出し可能なＣＤ−ＲＯＭ等の格納媒体で提供されてもよく、またはそれが実行されるコンピュータにネットワークの通信媒体を経由して（伝搬信号でコード化されて）配布されてもよい。全ての機能は、専用コンピュータ上で、またはコプロセッサのような専用ハードウエアを用いて実行されてもよい。本ソフトウエアは、本ソフトウエアが規定する計算の様々な部分が異なるコンピュータで実行される分散方式で実装されてもよい。このようなコンピュータープログラムはそれぞれ、汎用または専用のプログラム可能コンピュータが、格納媒体または装置を読み出して本明細書で説明した手順を実行する場合に、コンピュータを構成し、操作するために読み取ることができる格納媒体または装置（例えば、ソリッドステートのメモリもしくは媒体、または磁気もしくは光学式の媒体）上に格納されるか、またはダウンロードされるのが好ましい。本発明のシステムは、コンピュータープログラムで構成されるコンピュータで読取り可能な格納媒体として実装されると見なすこともでき、そのように構成される格納媒体が、規定された所定の方式でコンピューターシステムを動作させ、本明細書で説明した機能を実行させる。
【０１２２】
本発明の幾つかの実施の形態を説明してきた。それにもかかわらず、多様な変形形態を本発明の精神と範囲から逸脱することなく実施できることは言うまでもない。
例えば、上記の幾つかのステップは順序に依存しないので、説明したものと異なる順序で実行することができる。
【０１２３】
言うまでもなく、上記説明は説明を意図したものであり、付帯のクレームの範囲により定義される本発明の範囲を制限する意図はない。例えば、上記の幾つかの機能ステップは、全体の処理に実質的に影響を与えることなく異なる順序で実行してもよい。他の実施の形態は、以下のクレームの範囲内にある。
【図１】
0005603250.tif 000009
【図２】
0005603250.tif 000010
【図３】
0005603250.tif 000011