JP6136142B2 - 文字列置換装置、方法及びプログラム - Google Patents

文字列置換装置、方法及びプログラム Download PDF

Info

Publication number
JP6136142B2
JP6136142B2 JP2012185218A JP2012185218A JP6136142B2 JP 6136142 B2 JP6136142 B2 JP 6136142B2 JP 2012185218 A JP2012185218 A JP 2012185218A JP 2012185218 A JP2012185218 A JP 2012185218A JP 6136142 B2 JP6136142 B2 JP 6136142B2
Authority
JP
Japan
Prior art keywords
replacement
character string
node
character
branch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012185218A
Other languages
English (en)
Other versions
JP2014044498A (ja
Inventor
久嗣 菅原
久嗣 菅原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012185218A priority Critical patent/JP6136142B2/ja
Priority to US13/973,436 priority patent/US9165020B2/en
Publication of JP2014044498A publication Critical patent/JP2014044498A/ja
Application granted granted Critical
Publication of JP6136142B2 publication Critical patent/JP6136142B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は、文字列置換装置、文字列置換方法及び文字列置換プログラムに関する。
データベースに登録されたデータのうち、同一人のデータを判定して統合する名寄せを行う場合、同一人の名称を表す文字列が一致するように、データベースに登録された名称を表す文字列の置換が行われる。
上記に関連して、漢字で表記された漢字氏名が欠損しかつカナ氏名の読み間違いの可能性があり、漢字氏名とカナ氏名により登録されているマスタデータベースに統合できない未統合データに対して一定の法則により丸めを行う第1の技術が提案されている。第1の技術は、丸められた丸め変換後の未統合データをマスタデータベースに統合して出力することで、カナ氏名によるデータの名寄せ処理を実現している。
また、異なるシステムで使用される複数のデータベースに登録されている個人名及び住所を統一した表記形式に変換し、個別名寄せ編集ファイルを生成する第2の技術が提案されている。第2の技術は、各個別名寄せ編集ファイルに登録された個人情報をマージし、重複する個人情報を削除し、統合名寄せ編集ファイルを生成し、統合名寄せ編集ファイルの住所を地域JISコードに変換することで、1つの統合データベースを生成している。
特開2011−8389号公報 特開2005−11049号公報
文字列置換は、置換元文字列と置換先文字列を対応付けて登録した置換テーブルを用意し、変換対象文字列を置換テーブルに登録された置換元文字列と照合し、何れかの置換元文字列が変換対象文字列が含まれているか否かを探索する。そして、変換対象文字列に含まれていた置換元文字列を対応する置換先文字列に置換することで実現される。しかし、変換対象文字列には、異なる置換元文字列が一部重複して存在している可能性がある。このため、変換対象文字列と置換テーブルに登録された置換元文字列との照合にあたっては、複数の置換元文字列との照合を並列に行うか、変換対象文字列の中で照合対象の文字の位置を前後させながら個々の置換元文字列との照合を行う必要がある。このため、変換対象文字列に含まれている置換元文字列の探索に長い時間が掛かるという課題がある。
また、名寄せ処理を実現するためには、文字列置換として、異体字変換や濁音除去、漢数字変換、英数字半角化、略称正式化変換等の複数種の文字列置換を行う必要がある。個々の文字列置換は、メンテナンス性も考慮し、各々別個に置換テーブルを用意し、変換対象文字列を個々の置換テーブルに登録された置換元文字列と照合して探索することによって成される。従って、複数種の文字列置換を行う場合、変換対象文字列と置換テーブルに登録された置換元文字列との照合・探索を複数回行う必要があり、文字列置換に長い時間が掛かるという課題もある。
これに対し、前述した第1の技術及び第2の技術には、上記の課題を解決する構成は開示されていない。
一つの側面では、本発明は、変換対象文字列に含まれる置換元文字列を置換先文字列へ置換する際の処理時間を短縮することを目的とする。
開示の技術は、置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合する統合部を備えている。また開示の技術は、複数のノードと、一対のノードの間を連結し1文字のラベルが付与された複数の枝と、を含むトライ木を構築するトライ木構築部を備えている。前記トライ木は、一端が同一のノードに連結された個々の枝に付与されたラベルの文字が互いに相違している。また、前記トライ木は、ルートノードから何れかのノードに至るルート上の複数の枝に付与されたラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されている。そして、前記トライ木は、統合部によって統合された置換テーブルに登録されている置換元文字列を網羅するように構築される。
また、開示の技術は、トライ木構築部によって構築された前記トライ木にフェイリアリンクを追加するフェイリアリンク追加部を備えている。フェイリアリンク追加部は、ルートノードから第1のノードに至るルート上の複数の枝に付与されたラベルの文字で表される文字列の最長接尾辞を、ルートノードから第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列と比較する。そして、フェイリアリンク追加部は、両者が一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行う。
また、開示の技術は、置換対象文字列に含まれる置換元文字列を探索する探索部を備えている。探索部は、置換対象文字列の先頭から1文字ずつ取り出すと共に、トライ木のルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動する。また探索部は、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードにフェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動する。そして探索部は、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、置換対象文字列から全ての文字を取り出す迄繰り返す。
そして、開示の技術は、統合部が、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することを含む処理により、前記統合を行う。
変換対象文字列に含まれる置換元文字列を置換先文字列へ置換する際の処理時間を短縮できる、という効果を有する。
実施形態で説明した名寄せ処理装置の機能ブロック図である。 名寄せ処理装置として機能するアプリケーションサーバを含むコンピュータシステムの概略ブロック図である。 名寄せ処理の一例を示すフローチャートである。 (A)は名寄せ対象のデータ、(B)はクレンジング処理後のデータ、(C)は文字列置換処理後のデータ、(D)はマッチング結果の一例を各々示す図表である。 置換テーブル統合処理の一例を示すフローチャートである。 複数種の置換テーブルの統合を説明するための概略図である。 複数種の置換テーブルの統合の適用順を説明するための概略図である。 置換テーブルの統合における結合ルールを示す概略図である。 置換テーブルの統合の適用順に応じて文字列置換処理の結果が相違することを説明するための概略図である。 トライ木構築処理の一例を示すフローチャートである。 構築されるトライ木の一例を示す概略図である。 フェイリアリンク追加処理の一例を示すフローチャートである。 トライ木に追加されたフェイリアリンクの一例を示す概略図である。 文字列探索・置換処理の一例を示すフローチャートである。
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。図1には、本実施形態に係る名寄せ処理装置10が示されている。名寄せ処理装置10はマスタDB(データベース)記憶部32に接続され、マスタDB記憶部32に記憶されたマスタDBに登録されたデータのうち、同一人のデータを判定して統合する名寄せを行うものである。
名寄せ処理装置10は、クレンジング処理部12、置換テーブル記憶部14、置換テーブル統合部16、DFA(Deterministic Finite Automaton:決定性有限オートマトン)置換部18、マッチング処理部20及びマッチング結果統合部22を備えている。
クレンジング処理部12は、マスタDBに登録されたデータに対し、例えば住所データの正規化や補完等のクレンジング処理を行う。置換テーブル記憶部14は、置換元文字列と置換先文字列が対応付けて登録された置換テーブルを複数種記憶している。本実施形態において、置換テーブル記憶部14が記憶する置換テーブルには、異体字変換を行うための置換テーブル、濁音除去変換行うための置換テーブル、漢数字変換を行うための置換テーブルが含まれる。また、置換テーブル記憶部14が記憶する置換テーブルには、英数字半角化変換を行うための置換テーブル、略称正式化変換を行うための置換テーブルも含まれる(図参照)。
置換テーブル統合部16は、置換テーブル記憶部14が記憶する複数種の置換テーブルのうち、文字列置換に適用することが選択された置換テーブルを単一の置換テーブルへ統合する処理を行う。DFA置換部18は、クレンジング処理を経たデータに対し、置換テーブル統合部16によって統合された置換テーブルに登録されている置換元文字列が含まれているか否かを探索する。そしてDFA置換部18は、クレンジング処理を経たデータ(置換対象文字列)に含まれている置換元文字列を対応する置換先文字列へ置換する文字列置換を行う。
DFA置換部18は、トライ木構築部24、フェイリアリンク(failure link)追加部26、置換元文字列探索部28及び文字列置換部30を備えている。トライ木構築部24は、置換テーブル統合部16によって統合された置換テーブルに登録されている置換元文字列から、置換対象文字列に含まれている前記置換元文字列を探索するためのトライ木を構築する。フェイリアリンク追加部26は、トライ木構築部24によって構築されたトライ木に対し、置換対象文字列と置換元文字列のマッチング先に失敗した際の移動先を表すフェイリアリンクを追加する。
置換元文字列探索部28は、トライ木構築部24によって構築され、フェイリアリンク追加部26によってフェイリアリンクが追加されたトライ木を用い、置換対象文字列に含まれている置換元文字列を探索する。文字列置換部30は、置換元文字列探索部28の探索によって抽出された置換対象文字列に含まれている置換元文字列を、対応する置換先文字列に置換する文字列置換を行う。
マッチング処理部20は、DFA置換部18による文字列変換を経たデータをレコード単位で照合し、照合した組における同一人のデータである確度を演算し、同一人のデータである確度が比較的高いデータの組を抽出する。マッチング結果統合部22は、マッチング処理部20によって抽出されたデータの組のうち、演算された確度が閾値以上のデータの組について、同一人のデータであると見做して統合する処理を行う。
名寄せ処理装置10は、図2に示すコンピュータ・システム36に含まれるアプリケーションサーバ38で実現することができる。コンピュータ・システム36は、アプリケーションサーバ38、端末装置40及びDBサーバ42を備えており、アプリケーションサーバ38、端末装置40及びDBサーバ42はコンピュータ・ネットワーク44を介して互いに接続されている。なお、図2では端末装置40を1台のみ示しているが、端末装置40は複数台設けられていてもよい。
なお、置換テーブル統合部16は開示の技術における統合部の一例であり、DFA置換部18のトライ木構築部24は開示の技術におけるトライ木構築部の一例である。また、DFA置換部18のフェイリアリンク追加部26は開示の技術におけるフェイリアリンク追加部の一例であり、DFA置換部18の置換元文字列探索部28は開示の技術における探索部の一例である。更に、DFA置換部18の文字列置換部は開示の技術における置換部の一例である。
アプリケーションサーバ38はCPU46、メモリ48、HDD(Hard Disk Drive)やフラッシュメモリ等によって実現される不揮発性の記憶部50、通信I/F(インタフェース)部52を備えている。CPU46、メモリ48、記憶部50及び通信I/F部52はバス54を介して互いに接続されており、通信I/F部52はコンピュータ・ネットワーク44に接続されている。
記録媒体としての記憶部50には、アプリケーションサーバ38を名寄せ処理装置10として機能させるための名寄せ処理プログラム56が記憶されており、置換テーブル記憶領域58が設けられている。CPU46は、名寄せ処理プログラム56を記憶部50から読み出してメモリ48に展開し、名寄せ処理プログラム56が有するプロセスを順次実行する。
名寄せ処理プログラム56は、クレンジング処理プロセス60、置換テーブル統合プロセス62、DFA置換プロセス64、マッチング処理プロセス66及びマッチング結果統合プロセス68を有する。またDFA置換プロセス64はトライ木構築プロセス70、フェイリアリンク追加プロセス72、置換元文字列探索プロセス74及び文字列置換プロセス76を有する。
CPU46は、クレンジング処理プロセス60を実行することで、図1に示すクレンジング処理部12として動作する。またCPU46は、置換テーブル統合プロセス62を実行することで、図1に示す置換テーブル統合部16として動作する。またCPU46は、DFA置換プロセス64を実行することで、図1に示すDFA置換部18として動作する。またCPU46は、マッチング処理プロセス66を実行することで、図1に示すマッチング処理部20として動作する。またCPU46は、マッチング結果統合プロセス68を実行することで、図1に示すマッチング結果統合部22として動作する。
またCPU46は、トライ木構築プロセス70を実行することで、図1に示すトライ木構築部24として動作する。またCPU46は、フェイリアリンク追加プロセス72を実行することで、図1に示すフェイリアリンク追加部26として動作する。またCPU46は、置換元文字列探索プロセス74を実行することで、図1に示す置換元文字列探索部28として動作する。またCPU46は、文字列置換プロセス76を実行することで、図1に示す文字列置換部30として動作する。また、置換テーブル記憶領域58は置換テーブル記憶部14として機能する。これにより、名寄せ処理プログラム56を実行したアプリケーションサーバ38が名寄せ処理装置10として機能することになる。
端末装置40は、CPU80、メモリ82、HDD(Hard Disk Drive)やフラッシュメモリ等によって実現される不揮発性の記憶部84、通信I/F部86を備えている。端末装置40はディスプレイ88、キーボード90及びマウス92が接続されており、通信I/F部86を介してコンピュータ・ネットワーク44に接続されている。
DBサーバ42はコンピュータ・ネットワーク44に接続されている。またDBサーバ42はストレージ94が接続されており、ストレージ94はマスタDB96を記憶している。ストレージ94は図1に示すマスタDB記憶部32として機能する。
次に本実施形態の作用として、端末装置40を介してマスタDB96に対する名寄せ処理の実行が利用者から指示された場合に、アプリケーションサーバ38で行われる名寄せ処理について、図3を参照して説明する。
名寄せ処理のステップ150において、クレンジング処理部12は、マスタDB96に登録されている名寄せ対象のデータをDBサーバ42経由で取得する。クレンジング処理部12によって取得される名寄せ対象のデータの一例を図4(A)に示す。図4(A)に示すデータは複数レコード分のデータを含み、各レコードのデータは"id","name","address"の各項目についてデータが各々設定されている。
次のステップ152において、クレンジング処理部12は、名寄せ対象のデータに対して、住所データの正規化や補完等のクレンジング処理を実行する。クレンジング処理後のデータの一例を図4(B)に示す。図4(B)に示すデータは、図4(A)と比較すれば明らかなように、"id"=002のデータの"address"に文字列「神奈川県」が追加され、"id"=003のデータの"address"に文字列「東京都」が追加されている。
次のステップ154において、置換テーブル統合部16は、置換テーブル統合処理を行う。以下、図5を参照して置換テーブル統合処理を説明する。
置換テーブル統合処理のステップ170において、置換テーブル統合部16は、統合対象の置換テーブルの種類、数t及び各テーブルの適用順を取得する。本実施形態では、端末装置40を介して名寄せ処理の実行が利用者から指示された場合、置換テーブル記憶部14に記憶されている複数種の置換テーブルのうち、文字列置換に適用する(統合対象の)置換テーブルの種類及び適用順も併せて指示される。置換テーブル統合部16は、利用者から指示された、統合対象の置換テーブルの種類、数t及び適用順を端末装置40から取得する。なお、統合対象の置換テーブルの種類、数t及び適用順は、利用者が実施を所望している文字列置換の内容に応じて利用者により決定される。
次のステップ172において、置換テーブル統合部16は、t個の置換テーブルのうち適用順が1番目の置換テーブルを統合対象の置換テーブルAとして読み込む。またステップ174において、置換テーブル統合部16は、変数kに2を設定する。そしてステップ176において、置換テーブル統合部16は、t個の置換テーブルのうち適用順がk番目の置換テーブルを統合対象の置換テーブルBとして読み込む。
次のステップ178において、置換テーブル統合部16は、置換テーブルAに登録されている個々の置換パターン(置換元文字列と置換先文字列を対応付けたパターン)を識別するための変数iに0を設定する。またステップ180において、置換テーブル統合部16は、置換テーブルAに登録されている置換パターンから、i番目に登録されている置換パターンを読み込む。
次のステップ182において、置換テーブル統合部16は、置換テーブルBに登録されている個々の置換パターンを識別するための変数jに0を設定する。またステップ184において、置換テーブル統合部16は、置換テーブルBに登録されている置換パターンから、j番目に登録されている置換パターンを読み込む。
次のステップ186において、置換テーブル統合部16は、置換テーブルAから読み込んだi番目の置換パターンと置換テーブルBから読み込んだj番目の置換パターンが、図6(A)に示す結合ルール(1)に該当するか否か判定する。図6(A)に示す結合ルール(1)は、置換テーブルAのi番目の置換パターン(図6では置換パターンAと表記)における置換元文字列と、置換テーブルBのj番目の置換パターン(図6では置換パターンBと表記)における置換元文字列が同じというルールである。
ステップ186の判定が肯定された場合はステップ188へ移行する。ステップ188において、置換テーブル統合部16は、結合ルール(1)の新置換パターンとして、置換テーブルAのi番目の置換パターン(置換パターンA)のみを採用し、統合置換テーブルへ出力する処理を行う。ステップ188の処理を行うとステップ208へ移行する。
一方、ステップ186の判定が否定された場合はステップ190へ移行する。ステップ190において、置換テーブル統合部16は、置換テーブルAから読み込んだi番目の置換パターンと置換テーブルBから読み込んだj番目の置換パターンが、図6(B)に示す結合ルール(2)に該当するか否か判定する。図6(B)に示す結合ルール(2)は、置換テーブルAのi番目の置換パターン(置換パターンA)における置換先文字列と、置換テーブルBのj番目の置換パターン(置換パターンB)における置換元文字列が同じというルールである。
ステップ190の判定が肯定された場合はステップ192へ移行する。ステップ192において、置換テーブル統合部16は、結合ルール(2)の新置換パターンとして、置換テーブルAのi番目の置換パターンにおける置換元文字列を、置換テーブルBのj番目の置換パターンにおける置換先文字列へ変換する置換パターンを採用する。そして置換テーブル統合部16は、採用した置換パターンを統合置換テーブルへ出力する。ステップ192の処理を行うとステップ208へ移行する。
一方、ステップ190の判定が否定された場合はステップ194へ移行する。ステップ194において、置換テーブル統合部16は、置換テーブルAから読み込んだi番目の置換パターンと置換テーブルBから読み込んだj番目の置換パターンが、図6(C)に示す結合ルール(3)に該当するか否か判定する。図6(C)に示す結合ルール(3)は、置換テーブルAのi番目の置換パターン(置換パターンA)における置換先文字列が、置換テーブルBのj番目の置換パターン(置換パターンB)における置換元文字列を含むというルールである。
ステップ194の判定が肯定された場合はステップ196へ移行する。ステップ196において、置換テーブル統合部16は、結合ルール(3)の新置換パターンとして、置換テーブルBのj番目の置換パターン(置換パターンB)を採用する。また、結合ルール(3)の新置換パターンとして、置換テーブルAのi番目の置換パターンの置換元文字列を、新たな文字列に置換する置換パターンも採用する。ここでいう新たな文字列は、置換テーブルBのj番目の置換パターンの置換先文字列に、置換テーブルAのi番目の置換パターンの置換先文字列のうち、置換テーブルBのj番目の置換パターンの置換元文字列に含まれない文字列を加えた文字列である。そして、採用した2つの置換パターンを統合置換テーブルへ出力する。ステップ196の処理を行うとステップ208へ移行する。
一方、ステップ194の判定が否定された場合はステップ198へ移行する。ステップ198において、置換テーブル統合部16は、置換テーブルAから読み込んだi番目の置換パターンと置換テーブルBから読み込んだj番目の置換パターンが、図6(D)に示す結合ルール(4)に該当するか否か判定する。図6(D)に示す結合ルール(4)は、置換テーブルAのi番目の置換パターン(置換パターンA)における置換先文字列が、置換テーブルBのj番目の置換パターン(置換パターンB)における置換元文字列に含まれるというルールである。
ステップ198の判定が肯定された場合はステップ200へ移行する。ステップ200において、置換テーブル統合部16は、結合ルール(4)の新置換パターンとして、置換テーブルAのi番目の置換パターン(置換パターンA)及び置換テーブルBのj番目の置換パターン(置換パターンB)を各々採用する。また、結合ルール(4)の新置換パターンとして、新たな文字列を、置換テーブルBのj番目の置換パターンの置換先文字列に置換する置換パターンも採用する。ここでいう新たな文字列は、置換テーブルAのi番目の置換パターンの置換元文字列に、置換テーブルBのj番目の置換パターンの置換元文字列のうち、置換テーブルAのi番目の置換パターンの置換先文字列に含まれない文字列を加えた文字列である。そして、採用した3つの置換パターンを統合置換テーブルへ出力する。ステップ200の処理を行うとステップ208へ移行する。
また、ステップ198の判定が否定された場合はステップ202へ移行し、置換テーブル統合部16は、変数jが置換テーブルBに登録された置換パターンの総数mよりも小さいか否か判定する。ステップ202の判定が肯定された場合はステップ204へ移行し、ステップ204において、置換テーブル統合部16は、変数jを1だけインクリメントした後に、ステップ184へ戻る。
これにより、ステップ186,190,194,198の何れかの判定が肯定されるか、ステップ202の判定が否定される迄、ステップ184〜ステップ204が繰り返される。そして、置換テーブルBに登録されたm個の置換パターンの中に、置換テーブルAのi番目の置換パターンに対して結合ルール(1)〜(4)の何れかに該当する置換パターンがあれば、ステップ186,190,194,198の何れかの判定が肯定される。
また、置換テーブルBに登録されたm個の置換パターンの中に、置換テーブルAのi番目の置換パターンに対して結合ルール(1)〜(4)の何れかに該当する置換パターンがなければ、ステップ202の判定が否定されてステップ206へ移行する。ステップ206において、置換テーブル統合部16は、置換テーブルAのi番目の置換パターンを統合置換テーブルへ出力し、ステップ208へ移行する。
ステップ208において、置換テーブル統合部16は、変数iが置換テーブルAに登録された置換パターンの総数nよりも小さいか否か判定する。ステップ208の判定が肯定された場合はステップ210へ移行し、ステップ210において、置換テーブル統合部16は、変数iを1だけインクリメントした後に、ステップ180へ戻る。これにより、ステップ208の判定が否定される迄、ステップ180〜ステップ210が繰り返され、結合ルール(1)〜(4)の何れかに該当する置換パターンの組が探索される。
ステップ208の判定が否定されるとステップ212へ移行し、ステップ212において、置換テーブル統合部16は、変数jに0を設定する。また、次のステップ214において、置換テーブル統合部16は、置換テーブルBに登録されている置換パターンから、j番目に登録されている置換パターンを読み込む。
次のステップ216において、置換テーブル統合部16は、置換テーブルBから読み込んだj番目の置換パターンが、先のステップ180〜ステップ210のループにおいて、結合ルール(1)〜(4)の何れかに該当したか否か判定する。ステップ216の判定が肯定された場合はステップ220へ移行する。また、ステップ216の判定が否定された場合はステップ218へ移行し、ステップ218において、置換テーブル統合部16は、置換テーブルBから読み込んだj番目の置換パターンを統合置換テーブルへ出力した後にステップ220へ移行する。
次のステップ220において、置換テーブル統合部16は、変数jが置換テーブルBに登録された置換パターンの総数mよりも小さいか否か判定する。ステップ220の判定が肯定された場合はステップ222へ移行し、ステップ222において、置換テーブル統合部16は、変数jを1だけインクリメントした後に、ステップ214へ戻る。これにより、ステップ220の判定が否定される迄、ステップ214〜ステップ222が繰り返される。
ステップ220の判定が否定されるとステップ224へ移行する。ステップ224において、置換テーブル統合部16は、変数kの値が統合対象の置換テーブルの数tに達したか否か判定する。ステップ224の判定が否定された場合はステップ226へ移行し、ステップ226において、置換テーブル統合部16は、統合した置換テーブルを置換テーブルAとして読み込む。次のステップ228において、置換テーブル統合部16は、変数kの値を1だけインクリメントしてステップ176に戻る。
これにより、ステップ224の判定が肯定される迄、ステップ176〜ステップ228が繰り返される。従って、以上の処理により、例として図7に示すように、置換テーブル記憶部14に記憶されている複数の置換テーブルのうち、統合対象として選択された複数の置換テーブルを統合した単一の統合置換テーブル(実行用置換テーブル)が生成される。また、統合対象として選択された複数の置換テーブルは、例として図8に示すように、利用者によって指示された適用順に統合される。
複数の置換テーブルを指示された適用順に統合する理由は、置換テーブルの適用順によって文字列置換処理の結果が相違することがあるためである。例えば図9に示すように、文字列「ヴァイオリン」に対して文字列置換を行う場合を考える。置換パターン"ァ"→"ア"を含む第1の置換テーブルと、置換パターン"ヴァ"→"バ"を含む第2の置換テーブルのうち、第1の置換テーブルの適用順が先の場合、文字列「ヴァイオリン」は文字列「ヴアイオリン」へ置換される。一方、第2の置換テーブルの方が適用順が先の場合、文字列「ヴァイオリン」は文字列「バイオリン」へ置換される。
図5に示す置換テーブル統合処理を終了すると、図3に示す名寄せ処理のステップ156へ移行する。ステップ156において、トライ木構築部24は、トライ木構築処理を行う。以下、図10を参照してトライ木構築処理を説明する。
トライ木構築処理のステップ230において、トライ木構築部24は、まずトライ木のルートノード(図11に示すルートノード100も参照)を作成する。次のステップ232において、トライ木構築部24は、個々の置換元文字列を識別するための変数iに0を設定する。ステップ234において、トライ木構築部24は、統合置換テーブル(先の置換テーブル統合処理で統合された置換テーブル)からi番目の置換元文字列i(長さp_i)を抽出する。
次のステップ236において、トライ木構築部24は、先のステップ230で作成したトライ木のルートノード100へ移動する。ステップ238において、トライ木構築部24は、置換元文字列iから抽出する文字の位置を識別するための変数jに0を設定する。次のステップ240において、トライ木構築部24は、置換元文字列iの先頭からj+1番目の文字を抽出する。
ステップ242において、トライ木構築部24は、一端が現在のノード(この場合はルートノード)に接続された枝の中に、ステップ240で抽出したj+1番目の文字がラベル付けされた枝が有るか否か判定する。トライ木構築処理の実行を開始した当初は、トライ木に枝自体が存在しないので、ステップ242の判定が否定されてステップ246へ移行する。
ステップ246において、トライ木構築部24は、置換元文字列iの先頭からj+1〜p_i番目の文字から、各文字がラベル付けされた新たな枝及びノードを作成する。例えば、図11に示すように、置換元文字列iが「富士山」の場合、"富","士","山"の各文字がラベル付けされた3本の枝102A〜102Cが作成されると共に、各枝の先端に位置する合計3個のノード104A〜104Cが作成される。また、作成した一群の枝及びノードのうちの先端のノードへ移動する。
ステップ246の処理を行うとステップ252へ移行し、ステップ252において、トライ木構築部24は、現在のノードに変数iをID(開示の技術における識別情報の一例)として付与する。従って、図11に示す例では、ルートノード100から"富","士","山"の各文字がラベル付けされた3本の枝102A〜102Cを辿った先に位置しているノード104CにID=1が付与される。
次のステップ254において、トライ木構築部24は、変数iが統合置換テーブルに登録されている置換元文字列の総数Mよりも小さいか否か判定する。ステップ254の判定が肯定された場合はステップ256へ移行し、ステップ256において、トライ木構築部24は、変数iを1だけインクリメントしてステップ234に戻る。
ここで、図11に示すように、次の置換元文字列iが「富士通」の場合、ステップ240では、置換元文字列iの先頭からj+1番目の文字として文字"富"が抽出される。この時点では、一端がルートノードに接続された枝の中に、文字"富"がラベル付けされた枝102Aが存在しているので、ステップ242の判定が肯定されてステップ244へ移行する。ステップ244において、トライ木構築部24は、j+1番目の文字がラベル付けされた枝の先のノードへ移動する。この場合はノード104Aへ移動される。
次のステップ248において、トライ木構築部24は、変数j+1の値が置換元文字列iの長さp_i未満か否か判定する。ステップ248の判定が肯定された場合はステップ250へ移行し、ステップ250において、トライ木構築部24は、変数jの値を1だけインクリメントし、ステップ240に戻る。
置換元文字列iが「富士通」の場合、ステップ240では、置換元文字列iの先頭からj+1番目の文字として文字"士"が抽出される。この時点では、一端がノード104Aに接続された枝の中に、文字"士"がラベル付けされた枝102Bが存在しているので、ステップ242の判定が肯定されてステップ244へ移行する。ステップ244において、トライ木構築部24は、j+1番目の文字がラベル付けされた枝の先のノードへ移動する。この場合はノード104Bへ移動される。
続いて、ステップ248,250を経て、ステップ240では、置換元文字列iの先頭からj+1番目の文字として文字"通"が抽出される。この時点では、一端がノード104Bに接続された枝の中に、文字"通"がラベル付けされた枝は存在していないので、ステップ242の判定が否定されてステップ246へ移行する。これにより、ステップ246では、"通"の文字がラベル付けされた枝102Dが作成されると共に、枝102Dの先端に位置するノード104Dが作成される。また、ステップ252において、ルートノード100から"富","士","通"の各文字がラベル付けされた3本の枝102A,102B,102Dを辿った先に位置しているノード104DにID=2が付与される。
次の置換元文字列iが「富士」の場合、置換元文字列iの先頭から文字"富","士"が順に抽出される。この時点では、一端がルートノード100に接続された枝の中に、文字"富"がラベル付けされた枝102Aが存在しており、一端がノード104Aに接続された枝の中に、文字"士"がラベル付けされた枝102Bも存在している。このため、ステップ248の判定が否定されてステップ252へ移行する。そしてステップ252において、ルートノード100から"富","士"の各文字がラベル付けされた2本の枝102A,102Bを辿った先に位置しているノード104BにID=3が付与される。
以下同様に、次の置換元文字列iが「出羽富士」の場合、置換元文字列iの先頭から文字"出"が抽出されるが、一端がルートノード100に接続された枝の中には、文字"出"がラベル付けされた枝は存在していない。このため、ステップ242の判定が否定され、"出","羽","富","士"の各文字がラベル付けされた4本の枝102E〜102Hが作成されると共に、各枝の先端に位置する合計4個のノード104E〜104Hが作成される。そして、ルートノード100から"出","羽","富","士"の各文字がラベル付けされた4本の枝102E〜102Hを辿った先に位置しているノード104HにID=4が付与されることになる。
また、次の置換元文字列iが「富山」の場合、置換元文字列iの先頭から文字"富","山"が順に抽出される。この時点では、一端がルートノード100に接続された枝の中に、文字"富"がラベル付けされた枝102Aが存在している一方、一端がノード104Aに接続された枝の中に、文字"山"がラベル付けされた枝は存在していない。このため、一端がノード104Aに接続された枝として、文字"山"がラベル付けされた枝102Jが作成されると共に、枝102Jの先端に位置するノード104Jが作成される。また、ルートノード100から"富","山"の各文字がラベル付けされた2本の枝102A,102Jを辿った先に位置しているノード104JにID=5が付与される。
統合置換テーブルに登録された全ての置換元文字列を抽出すると、ステップ254の判定が否定されてトライ木構築処理を終了する。これにより、統合置換テーブルに登録されている置換元文字列を網羅するようにトライ木が構築されることになる。トライ木構築処理を終了すると、図3に示す名寄せ処理のステップ158へ移行する。ステップ158において、フェイリアリンク追加部26は、フェイリアリンク追加処理を行う。以下、図12を参照してフェイリアリンク追加処理を説明する。
フェイリアリンク追加処理のステップ260において、フェイリアリンク追加部26は、トライ木構築部24によって構築されたトライ木のルートノード100へ移動する。次のステップ262において、フェイリアリンク追加部26は、現在のノードから、フェイリアリンクの追加を未判定のノード104へ移動する。ステップ264において、フェイリアリンク追加部26は、現在のノード104に対して所定の条件を満たす第2のノード104を探索する。所定の条件は、ルートノードから現在のノード104に至るルート上の枝102に付与されたラベルの文字で表される文字列の最長接尾辞が、ルートノードから第2のノード104に至るルート上の枝102に付与されたラベルの文字で表される文字列に一致する、という条件である。
次のステップ266において、フェイリアリンク追加部26は、ステップ264の探索によって所定の条件に該当する第2のノード104を発見したか否か判定する。ステップ266の判定が肯定された場合はステップ268へ移行し、ステップ268において、フェイリアリンク追加部26は、現在のノード104から第2のノード104へ向かうフェイリアリンク106を追加する。また、ステップ266の判定が否定された場合はステップ270へ移行し、ステップ270において、フェイリアリンク追加部26は、現在のノード104からルートノード100へ向かうフェイリアリンク106を追加する。
具体的には、例えば現在のノードが図13に示すノード104Gの場合、ルートノード100から現在のノード104Gに至るルート上の枝102に付与されたラベルの文字で表される文字列は「出羽富」である。一方、ルートノードからノード104Aに至るルート上の枝102Aに付与されたラベルの文字で表される文字列は「富」であり、最長接尾辞「富」が一致する。この場合はステップ266の判定が肯定されることで、現在のノード104Gから第2のノードとしてのノード104Aへ向かうフェイリアリンク106Aが追加される。
また、例えば現在のノードが図13に示すノード104Hの場合、ルートノード100から現在のノード104Hに至るルート上の枝102に付与されたラベルの文字で表される文字列は「出羽富士」である。一方、ルートノードからノード104Bに至るルート上の枝102に付与されたラベルの文字で表される文字列は「富士」であり、最長接尾辞「富士」が一致する。この場合もステップ266の判定が肯定されることで、現在のノード104Hから第2のノードとしてのノード104Bへ向かうフェイリアリンク106Bが追加される。
図13に示す他のノード104については、所定の条件に該当する第2のノードが存在しないので、ステップ266の判定が否定されることで、他の各ノード104からルートノード100へ向かうフェイリアリンク106が追加される。なお、図13では、図の錯綜を避けるため、他の各ノード104からルートノード100へ向かうフェイリアリンク106の図示を省略している。
ステップ268又はステップ270の判定を行うとステップ272へ移行する。ステップ272において、フェイリアリンク追加部26は、フェイリアリンクの追加を未判定のノードが有るか否かについて、幅優先探索を行って判定する。ステップ272の判定が肯定された場合はステップ262へ戻り、ステップ272の判定が否定される迄、ステップ262〜ステップ272を繰り返す。ステップ272の判定が否定されるとフェイリアリンク追加処理を終了する。
フェイリアリンク追加処理を終了すると、図3に示す名寄せ処理のステップ160へ移行する。ステップ160において、置換元文字列探索部28及び文字列置換部30は、文字列探索・置換処理を行う。以下、図14を参照して文字列探索・置換処理を説明する。
文字列探索・置換処理のステップ280において、置換元文字列探索部28は、クレンジング処理部によるクレンジング処理を経たデータを置換対象文字列として読み込む。次のステップ282において、置換元文字列探索部28は、置換対象文字列における処理対象の文字の位置を識別するための変数iに1を設定する。またステップ284において、置換元文字列探索部28は、トライ木構築部24によって構築され、フェイリアリンク追加部26によってフェイリアリンクが追加されたトライ木のルートノード100へ移動する。
次のステップ286において、置換元文字列探索部28は、置換対象文字列の先頭からi番目の文字を抽出する。ステップ288において、置換元文字列探索部28は、現在のノードから延びている枝のうち、ステップ286で抽出したi番目の文字がラベルとして付与された枝を探索する。次のステップ290において、置換元文字列探索部28は、ステップ288の探索によって該当する枝が発見されたか否か判定する。
ステップ290の判定が肯定された場合はステップ296へ移行し、ステップ296において、置換元文字列探索部28は、ステップ288の探索によって発見された該当する枝の先に存在するノード104へ移動し、ステップ298へ移行する。また、ステップ290の判定が否定された場合はステップ292へ移行し、ステップ292において、置換元文字列探索部28は、現在のノードがルートノード100か否か判定する。ステップ292の判定が否定された場合はステップ294へ移行し、ステップ294において、置換元文字列探索部28は、現在のノード104から延びているフェイリアリンク106を辿って新たなノード104へ移動し、ステップ298へ移行する。
ステップ298において、置換元文字列探索部28は、ステップ296又はステップ294でのノードの移動における移動先のノード104にIDが付与されているか否か判定する。ステップ298の判定が否定された場合はステップ302へ移行する。また、ステップ298の判定が肯定された場合はステップ300へ移行する。ステップ300において、置換元文字列探索部28は、移動先のノード104に付与されているIDとマッチング位置(現在の文字の置換対象文字列内の位置とルートノード100からの距離との差)をマッチング情報として記録し、ステップ302へ移行する。なお、先のステップ292の判定が肯定された場合、ルートノード100にはルートノード100からのフェイリアリンクが付加されていないので、ステップ302へ移行する。
ステップ302において、置換元文字列探索部28は、上記の処理でフェイリアリンクを辿ってノードを移動したか(ステップ294の処理を行ったか)否か判定する。ステップ302の判定が肯定された場合はステップ288に戻り、i番目の文字がラベルとして付与された枝の再探索を行う。また、ステップ302の判定が否定された場合はステップ304へ移行する。
ステップ304において、置換元文字列探索部28は、先のステップ286で抽出した文字が置換対象文字列の末尾の文字か否か判定する。ステップ304の判定が否定された場合はステップ306へ移行し、ステップ306において、置換元文字列探索部28は、変数iを1だけインクリメントし、ステップ286に戻る。これにより、ステップ304の判定が否定される迄、ステップ286〜ステップ306が繰り返される。
上述したステップ286〜ステップ306について、置換対象文字列が「出羽富士山富士山」で、図13に示すフェイリアリンク付きのトライ木を用いる場合を例に挙げ、更に説明する。
まず、置換対象文字列「出羽富士山富士山」から1番目の文字"出"が抽出され、ステップ288の探索で枝102Eが抽出され、ノード104Eへ移動される。ノード104EにはIDが付与されていないので、ステップ298の判定は否定される。
次に、置換対象文字列「出羽富士山富士山」から2番目の文字"羽"が抽出され、ステップ288の探索で枝102Fが抽出され、ノード104Fへ移動される。ノード104FにはIDが付与されていないので、ステップ298の判定は否定される。
次に、置換対象文字列「出羽富士山富士山」から3番目の文字"富"が抽出され、ステップ288の探索で枝102Gが抽出され、ノード104Gへ移動される。ノード104GにはIDが付与されていないので、ステップ298の判定は否定される。
続いて、置換対象文字列「出羽富士山富士山」から4番目の文字"士"が抽出され、ステップ288の探索で枝102Hが抽出され、ノード104Hへ移動される。ノード104HにはID=4が付与されているので、ステップ298の判定が肯定され、マッチング情報としてID=4とマッチング位置=0が記録される。
次に、置換対象文字列「出羽富士山富士山」から5番目の文字"山"が抽出され、ステップ288の探索では該当する枝が抽出されず、フェイリアリンク106Bを辿ってノード104Bへ移動される。ノード104BにはID=3が付与されているので、ステップ298の判定が肯定され、マッチング情報としてID=3とマッチング位置=2が記録される。また、ステップ302の判定が肯定されることで、文字"山"がラベルとして付与された枝の再探索が行われ、枝102Cが抽出され、ノード104Cへ移動される。ノード104BにはID=1が付与されているので、ステップ298の判定が肯定され、マッチング情報としてID=1とマッチング位置=2が記録される。
次に、置換対象文字列「出羽富士山富士山」から6番目の文字"富"が抽出され、ステップ288の探索では該当する枝が抽出されず、図示しないフェイリアリンクを辿ってルートノード100へ移動される。また、ステップ302の判定が肯定されることで、文字"富"がラベルとして付与された枝の再探索が行われ、枝102Aが抽出され、ノード104Aへ移動される。ノード104AにはIDが付与されていないので、ステップ298の判定は否定される。
続いて、置換対象文字列「出羽富士山富士山」から7番目の文字"士"が抽出され、ステップ288の探索で枝102Bが抽出され、ノード104Bへ移動される。ノード104BにはID=3が付与されているので、ステップ298の判定が肯定され、マッチング情報としてID=3とマッチング位置=5が記録される。
次に、置換対象文字列「出羽富士山富士山」から8番目の文字"山"が抽出され、ステップ288の探索で枝102Cが抽出され、ノード104Cへ移動される。ノード104CにはID=1が付与されているので、ステップ298の判定が肯定され、マッチング情報としてID=1とマッチング位置=5が記録される。
上記のようにして、置換対象文字列に含まれる置換元文字列の探索が完了すると、ステップ304の判定が肯定されてステップ308へ移行する。ステップ308において、置換元文字列探索部28は、上記処理で記録したマッチング情報に最先最長優先を適用することで置換元文字列を特定する。例えば、先の例で抽出された置換元文字列及び対応するマッチング情報は次の表1に示す通りである。
Figure 0006136142
表1のうち、1行目〜3行目のマッチング情報(4,0),(3,2),(1,2)については、マッチング情報(4,0)が置換対象文字列上で先に位置しており、かつ置換元文字列の長さも長いので、マッチング情報(4,0)に対応する置換元文字列「出羽富士」が選択される。また表1のうち、4,5行目のマッチング情報(3,5),(1,5)については、マッチング情報(1,5)の方が置換元文字列の長さが長いので、マッチング情報(1,5)に対応する置換元文字列「富士山」が選択される。結果として、置換対象文字列「出羽富士山富士山」のうち1〜4文字目の「出羽富士」と6〜8文字目の「富士山」が置換元文字列として特定されることになる(<<出羽富士>>山<<富士山>>)。
次のステップ310において、文字列置換部30は、置換対象文字列のうちステップ308で特定された置換元文字列を、統合置換テーブルに前記置換元文字列と対応付けて登録されている置換先文字列へ各々置換する。前述のように、統合置換テーブルは複数種の置換テーブルに登録された置換パターンを統合したものであるので、ステップ310の1回の文字列置換により、複数種の置換パターンを統合した置換パターンに基づく文字列の置換が行われる。例えば、図4(B)に示すデータに対して文字列探索・置換処理を行った結果の一例を図4(C)に示す。図4(C)に示すデータは、図4(B)と比較すれば明らかなように、"id"=001のデータの"name"の文字列に対しては、濁音を除去する置換と、「ウェア」から「ウエア」への置換が行われている。また、"id"=002のデータの"name"の文字列に対しては、「MW」を「ミトルウエア」へ置換する略称正式化が行われている。
次のステップ312において、置換元文字列探索部28は、他の置換対象文字列が有るか否か判定する。ステップ312の判定が肯定された場合にはステップ280に戻り、ステップ312の判定が否定される迄、ステップ280〜ステップ312を繰り返す。ステップ312の判定が否定されると文字列探索・置換処理を終了する。
文字列探索・置換処理を終了すると、図3に示す名寄せ処理のステップ162へ移行する。ステップ162において、マッチング処理部20は、文字列探索・置換処理を経たデータをレコード単位で比較し、比較したレコードが同一人のデータかを表す評価値を演算し、評価値が閾値以上のレコードを同一人のデータと判定するマッチング処理を行う。マッチング処理結果の一例を図4(D)に示す。図4(D)は、"id"=001のデータと"id"=002のデータの評価値が100、"id"=003のデータと"id"=006のデータの評価値が90であることを示している。
そして、次のステップ164において、マッチング結果統合部22は、マッチング処理部20によるマッチング処理の結果に基づき、同一人のデータと判定されたレコードを単一のレコードに統合する名寄せ処理を行う。これにより、マスタDB96に重複登録された同一人のデータが統合されることで、データの冗長性を低下させることができる。
このように、本実施形態では、文字列置換を行うにあたり、文字列置換に適用する複数種の置換テーブルを単一の統合置換テーブルに予め統合するので、置換対象文字列に対する置換元文字列の探索が1回で済む。また、統合置換テーブルに登録された置換元文字列からフェイリアリンク付きのトライ木を構築し、フェイリアリンク付きのトライ木を用いて文字列探索・置換処理を行うので、探索処理が置換対象文字列1文字当り1回で済む。従って、変換対象文字列に含まれる置換元文字列を置換先文字列へ置換する際の処理時間を短縮することができる。
なお、上記では端末装置40からの指示によりアプリケーションサーバ38が名寄せ処理を行う態様を説明したが、これに限定されるものではなく、開示の技術は単一のコンピュータで実現することも可能である。
また、上記では開示の技術に係る文字列置換をマスタDB96の名寄せ処理に適用した態様を説明したが、これに限定されるものではなく、開示の技術に係る文字列置換は単独で用いてもよいし、名寄せ以外の処理と組み合わせて用いるようにしてもよい。
また、上記では日本語の文字列に対する文字列置換に適用した態様を説明したが、これに限定されるものではなく、日本語以外の言語で記述された文字列に対する文字列置換に適用することも可能である。
また、上記では開示の技術に係る文字列置換プログラムの一例である名寄せ処理プログラム56がアプリケーションサーバ38の記憶部50に予め記憶(インストール)されている態様を説明した。しかし、これに限定されるものではなく、開示の技術に係る文字列置換プログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合する統合部と、
複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木(図11)を、前記統合部によって統合された置換テーブルに登録されている前記置換元文字列を網羅するように構築するトライ木構築部と、
前記トライ木構築部によって構築された前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行うフェイリアリンク追加部と、
置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する探索部と、
を含む文字列置換装置。
(付記2)
前記統合部は、複数種の置換テーブルに、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち適用順が先の置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う付記1記載の文字列置換装置。
(付記3)
前記統合部は、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う付記1又は付記2記載の文字列置換装置。
(付記4)
前記統合部は、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列に含まれる第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列として前記第2の文字列のうち前記第3の文字列を前記第4の文字列に置き換えた文字列との組、及び、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することにより、前記統合を行う付記1〜付記3の何れか1項記載の文字列置換装置。
(付記5)
前記統合部は、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列を含む第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列との組、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組、及び、前記置換元文字列として前記第1の文字列に前記第3の文字列のうち前記第2の文字列に含まれない文字列を加えた文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することにより、前記統合を行う付記1〜付記4の何れか1項記載の文字列置換装置。
(付記6)
前記複数種の置換テーブルには、異体字変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、濁音除去変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、漢数字変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、英数字半角化変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、及び、略称正式化変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブルのうち、2つ以上の置換テーブルが含まれる付記1〜付記6の何れか1項記載の文字列置換装置。
(付記7)
前記探索部によって探索された前記置換対象文字列に含まれる前記置換元文字列を、前記置換元文字列と対応付けられた置換先文字列に置換する置換部を更に備えた付記1〜付記6の何れか1項記載の文字列置換装置。
(付記8)
前記探索部は、記録した前記識別情報に対応する前記置換元文字列のうち、長さがより長く、前記置換対象文字列上で重複していない前記置換元文字列を、前記置換対象文字列に含まれる前記置換元文字列として選択する付記1〜付記7の何れか1項記載の文字列置換装置。
(付記9)
前記トライ木構築部は、前記置換先文字列と対応付けられた前記置換元文字列の先頭から1文字ずつ取り出すと共に、前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に、前記取り出した文字がラベルとして付与された枝が存在しない場合は、前記取り出した文字以降の文字がラベルとして付与された枝とノードを新たに作成し、前記置換元文字列の末尾に到達した場合は最後のノードに前記置換元文字列に対応する識別情報を付与することを、前記統合部によって統合された置換テーブルに登録されている全ての前記置換元文字列に対して各々行うことで、前記統合された置換テーブルに登録されている前記置換元文字列を網羅するように前記トライ木を構築する付記1〜付記8の何れか1項記載の文字列置換装置。
(付記10)
コンピュータで、
置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
ことを含む文字列置換方法。
(付記11)
前記複数種の置換テーブルに、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち適用順が先の置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う付記10記載の文字列置換方法。
(付記12)
第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う付記10又は付記11記載の文字列置換方法。
(付記13)
第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列に含まれる第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列として前記第2の文字列のうち前記第3の文字列を前記第4の文字列に置き換えた文字列との組、及び、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することにより、前記統合を行う付記10〜付記12の何れか1項記載の文字列置換方法。
(付記14)
第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列を含む第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列との組、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組、及び、前記置換元文字列として前記第1の文字列に前記第3の文字列のうち前記第2の文字列に含まれない文字列を加えた文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することにより、前記統合を行う付記10〜付記13の何れか1項記載の文字列置換方法。
(付記15)
前記複数種の置換テーブルには、異体字変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、濁音除去変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、漢数字変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、英数字半角化変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、及び、略称正式化変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブルのうち、2つ以上の置換テーブルが含まれる付記10〜付記14の何れか1項記載の文字列置換方法。
(付記16)
前記探索した前記置換対象文字列に含まれる前記置換元文字列を、前記置換元文字列と対応付けられた置換先文字列に置換する付記10〜付記15の何れか1項記載の文字列置換方法。
(付記17)
前記記録した前記識別情報に対応する前記置換元文字列のうち、長さがより長く、前記置換対象文字列上で重複していない前記置換元文字列を、前記置換対象文字列に含まれる前記置換元文字列として選択する付記10〜付記16の何れか1項記載の文字列置換方法。
(付記18)
前記置換先文字列と対応付けられた前記置換元文字列の先頭から1文字ずつ取り出すと共に、前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に、前記取り出した文字がラベルとして付与された枝が存在しない場合は、前記取り出した文字以降の文字がラベルとして付与された枝とノードを新たに作成し、前記置換元文字列の末尾に到達した場合は最後のノードに前記置換元文字列に対応する識別情報を付与することを、前記統合した置換テーブルに登録されている全ての前記置換元文字列に対して各々行うことで、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように前記トライ木を構築する付記10〜付記17の何れか1項記載の文字列置換方法。
(付記19)
コンピュータに、
置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
ことを含む処理を行わせるための文字列置換プログラム又は前記文字列置換プログラムを記録した記録媒体。
(付記20)
前記複数種の置換テーブルに、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち適用順が先の置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う付記19記載の文字列置換方法。
(付記21)
第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う付記19又は付記20記載の文字列置換プログラム又は記録媒体。
(付記22)
第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列に含まれる第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列として前記第2の文字列のうち前記第3の文字列を前記第4の文字列に置き換えた文字列との組、及び、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することにより、前記統合を行う付記19〜付記21の何れか1項記載の文字列置換プログラム又は記録媒体。
(付記23)
第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列を含む第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列との組、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組、及び、前記置換元文字列として前記第1の文字列に前記第3の文字列のうち前記第2の文字列に含まれない文字列を加えた文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することにより、前記統合を行う付記19〜付記22の何れか1項記載の文字列置換プログラム又は記録媒体。
(付記24)
前記複数種の置換テーブルには、異体字変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、濁音除去変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、漢数字変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、英数字半角化変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブル、及び、略称正式化変換が行われるように前記置換元文字列と前記置換先文字列とが対応付けて登録された置換テーブルのうち、2つ以上の置換テーブルが含まれる付記19〜付記23の何れか1項記載の文字列置換プログラム又は記録媒体。
(付記25)
前記探索した前記置換対象文字列に含まれる前記置換元文字列を、前記置換元文字列と対応付けられた置換先文字列に置換する付記19〜付記24の何れか1項記載の文字列置換プログラム又は記録媒体。
(付記26)
前記記録した前記識別情報に対応する前記置換元文字列のうち、長さがより長く、前記置換対象文字列上で重複していない前記置換元文字列を、前記置換対象文字列に含まれる前記置換元文字列として選択する付記19〜付記25の何れか1項記載の文字列置換プログラム又は記録媒体。
(付記27)
前記置換先文字列と対応付けられた前記置換元文字列の先頭から1文字ずつ取り出すと共に、前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に、前記取り出した文字がラベルとして付与された枝が存在しない場合は、前記取り出した文字以降の文字がラベルとして付与された枝とノードを新たに作成し、前記置換元文字列の末尾に到達した場合は最後のノードに前記置換元文字列に対応する識別情報を付与することを、前記統合した置換テーブルに登録されている全ての前記置換元文字列に対して各々行うことで、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように前記トライ木を構築する付記19〜付記26の何れか1項記載の文字列置換プログラム又は記録媒体。
次に、開示の技術のうち、複数種の置換テーブルを単一の統合置換テーブルに統合することにより、処理時間を短縮できることを確認するために、本願発明者が行った解析検討について説明する。
まず、トライ木の構築に要する処理時間について検討する。トライ木は、置換元文字列1文字当り1回の処理で構築できる。また、各枝にラベル付けする文字の種類は有限の固定値である(文字が英字でも漢字でも同じ)。このため、置換テーブル内の置換パターンの数をl、各置換パターンにおける置換元文字列の長さをp1,p2,…,pkとすると、トライ木の構築に要する処理時間Ttrieは次の(1)式で与えられる。
Ttrie=O(p1)+O(p2)+…+O(pl)
=O(p1+p2+…+pl)
=O(p) …(1)
但し、pは置換テーブル内の置換元文字列の長さの総和である。
また、フェイリアリンクの追加については、各ノードに対して一定時間で算出可能であり、フェイリアリンクの追加に要する処理時間Tfailurelinkは、トライ木の構築に要する処理時間Ttrieよりも十分に小さいので、次の(2)式が成り立つ。
Ttrie+Tfailurelink≒Ttrie=O(p) …(2)
また、文字列探索・置換処理のうち、文字列の探索(マッチング)については、置換対象文字列1文字当り1回の処理で済み、IDが付与されたノードに到達する度にマッチング情報を出力するものである。また、文字列の置換は、最終的に置換対象と判定された置換元文字列の数のみ処理が行われる。このため、置換対象文字列の長さをn、置換対象文字列に含まれる置換元文字列の数をk、最終的に置換対象と判定された置換元文字列の数をqとすると、文字列の探索に要する処理時間Tmatching、文字列の置換に要する処理時間Treplaceは次の(3)式となる。
Tmatching+Treplace=O(n+k)+O(q)=O(n+k+q) …(3)
従って、全体の処理時間は次の(4)式で表される。
Ttrie+Tfailurelink+Tmatching+Treplace
=O(p)+O(n+k)+O(q)
=O(p+n+k+q) …(4)
m種類の置換テーブルの統合を行わずに文字列置換を行った場合、各々の置換テーブル内の置換元文字列の長さの総和をPi、変換対象文字列の長さの総和をNi、置換対象文字列に含まれる置換元文字列の数をKiとする。また、最終的に置換対象と判定された置換元文字列の数をQiとする。但し、iは1<i<mである。すると、m種類の置換テーブルの統合を行わずに文字列置換を行った場合の処理時間Tnot-unifiedは次の(5)式で表される。
Tnot-unified=O(P1+N1+K1+Q1)+…+O(Pm+Nm+Km+Qm) …(5)
ここで、全ての置換テーブル内の置換元文字列の長さの総和をPとする。
P=P1+P2+…+Pm
また、全ての探索処理でマッチした置換元文字列の数をKとする。
K=K1+K2+…+Km
また、全ての置換処理で置換した置換元文字列の数をQとする。
Q=Q1+Q2+…+Qm
変換対象文字列の長さの総和を各処理で同一(=N)とみなす。
N1+N2+…+Nm=N
すると、先の(5)式は次の(6)式に書替えられる。
Tnot-unified=O(P+mN+K+Q) …(6)
一方、m種類の置換テーブルの統合を行って文字列置換を行った場合、統合置換テーブル内の置換元文字列の長さの総和をP'、変換対象文字列の長さの総和をN'、置換対象文字列に含まれる置換元文字列の数をK'とする。また、最終的に置換対象と判定された置換元文字列の数をQ'とする。すると、m種類の置換テーブルの統合を行って文字列置換を行った場合の処理時間Tunifiedは次の(7)式で表される。
Tunified=O(P'+N'+K'+Q') …(7)
ここで、(6)式で表される時間Tnot-unifiedと(7)式で表される時間Tunifiedの比較の前提として、置換テーブルの統合前と統合後で変換対象文字列の長さの総和は同じとみなす(N=N')。
また、置換テーブルの統合によって置換元文字列の長さの総和が増加したとしても、変換対象文字列の長さの総和が置換元文字列の長さの総和より十分大きければ、処理時間への影響は殆ど無いとみなすことができる(P≪N)。元々、名寄せは膨大なデータの中から重複するデータを発見することが目的であり、マスタDB96内の置換対象文字列の総和は、置換元文字列の長さの総和よりも十分大きいと考えてよい。
また、変換対象文字列に対して逐次置換が発生することはなく、変換対象文字列の長さの総和は、置換対象文字列に含まれる置換元文字列の数Kや、最終的に置換対象と判定された置換元文字列の数Qよりも十分大きいと考えてよい(K≪N,Q≪N)。
以上の前提を踏まえ、m種類の置換テーブルの統合を行わずに文字列置換を行った場合に対する、m種類の置換テーブルの統合を行って文字列置換を行った場合の処理時間の比率を演算すると、次の(8)式が得られる。
Figure 0006136142
上記の(8)式より、上記の処理時間の比率は、1/(置換テーブルの数m)よりも若干大きい程度にまで小さくなる(処理時間が短縮される)との知見が得られた。
上記知見を確認するために、本願発明者は、置換テーブルの統合を行わずに文字列置換(名寄せ)を行った場合と、置換テーブルの統合を行って文字列置換(名寄せ)を行った場合の処理時間を各々計測して比較する実験を行った。名寄せ対象のマスタDBはレコード数が約430,000の企業名リストであり、16個の置換テーブルを使用した。処理時間の計測結果を次の表2に示す。
Figure 0006136142
表2より明らかなように、置換テーブルの統合を行うことで処理時間が大幅に短縮されることが確認された。表2に示す計測結果における処理時間の比率は、1/11.98程度であり、1/m=1/16には達していないが、原因としてはストレージのI/O性能の影響を受けたことが考えられる。
10 名寄せ処理装置
14 置換テーブル記憶部
16 置換テーブル統合部
18 DFA置換部
20 マッチング処理部
22 マッチング結果統合部
24 トライ木構築部
26 フェイリアリンク追加部
28 置換元文字列探索部
30 文字列置換部
32 マスタDB記憶部
36 コンピュータ・システム
38 アプリケーションサーバ
40 端末装置
42 DBサーバ
44 コンピュータ・ネットワーク
46 CPU
48 メモリ
50 記憶部
56 名寄せ処理プログラム
96 マスタDB
102 枝
104 ノード
106 フェイリアリンク

Claims (16)

  1. 置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合する統合部と、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合部によって統合された置換テーブルに登録されている前記置換元文字列を網羅するように構築するトライ木構築部と、
    前記トライ木構築部によって構築された前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行うフェイリアリンク追加部と、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する探索部と、
    を含み、
    前記統合部は、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換装置。
  2. 置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合する統合部と、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合部によって統合された置換テーブルに登録されている前記置換元文字列を網羅するように構築するトライ木構築部と、
    前記トライ木構築部によって構築された前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行うフェイリアリンク追加部と、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する探索部と、
    を含み、
    前記統合部は、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列に含まれる第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列として前記第2の文字列のうち前記第3の文字列を前記第4の文字列に置き換えた文字列との組、及び、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換装置。
  3. 置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合する統合部と、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合部によって統合された置換テーブルに登録されている前記置換元文字列を網羅するように構築するトライ木構築部と、
    前記トライ木構築部によって構築された前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行うフェイリアリンク追加部と、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する探索部と、
    を含み、
    前記統合部は、第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列を含む第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列との組、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組、及び、前記置換元文字列として前記第1の文字列に前記第3の文字列のうち前記第2の文字列に含まれない文字列を加えた文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換装置。
  4. 前記統合部は、複数種の置換テーブルに、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち適用順が先の置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することにより、前記統合を行う請求項1〜請求項3の何れか1項記載の文字列置換装置。
  5. 置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合する統合部と、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合部によって統合された置換テーブルに登録されている前記置換元文字列を網羅するように構築するトライ木構築部と、
    前記トライ木構築部によって構築された前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行うフェイリアリンク追加部と、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する探索部と、
    を含み、
    前記統合部は、前記複数種の置換テーブルのうち適用順が最上位の第1置換テーブルと、前記複数種の置換テーブルのうち適用順が前記第1置換テーブルよりも低い第2置換テーブルと、に、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち前記第1置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することを含む処理により前記第1置換テーブルと前記第2置換テーブルとを統合し統合後の前記単一の置換テーブルを次の前記第1置換テーブルに置き換え、かつ前記第2置換テーブルとして用いる置換テーブルを適用順の降順に切り替えながら繰り返すことを含む処理により、前記統合を行う文字列置換装置。
  6. 前記探索部によって探索された前記置換対象文字列に含まれる前記置換元文字列を、前記置換元文字列と対応付けられた置換先文字列に置換する置換部を更に備えた請求項1〜請求項5の何れか1項記載の文字列置換装置。
  7. 前記探索部は、記録した前記識別情報に対応する前記置換元文字列のうち、長さがより長く、前記置換対象文字列上で重複していない前記置換元文字列を、前記置換対象文字列に含まれる前記置換元文字列として選択する請求項1〜請求項6の何れか1項記載の文字列置換装置。
  8. 前記トライ木構築部は、前記置換先文字列と対応付けられた前記置換元文字列の先頭から1文字ずつ取り出すと共に、前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に、前記取り出した文字がラベルとして付与された枝が存在しない場合は、前記取り出した文字以降の文字がラベルとして付与された枝とノードを新たに作成し、前記置換元文字列の末尾に到達した場合は最後のノードに前記置換元文字列に対応する識別情報を付与することを、前記統合部によって統合された置換テーブルに登録されている全ての前記置換元文字列に対して各々行うことで、前記統合された置換テーブルに登録されている前記置換元文字列を網羅するように前記トライ木を構築する請求項1〜請求項7の何れか1項記載の文字列置換装置。
  9. コンピュータが、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を実行する文字列置換方法であって、
    第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換方法。
  10. コンピュータが、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を実行する文字列置換方法であって、
    第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列に含まれる第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列として前記第2の文字列のうち前記第3の文字列を前記第4の文字列に置き換えた文字列との組、及び、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換方法。
  11. コンピュータが、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を実行する文字列置換方法であって、
    第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列を含む第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列との組、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組、及び、前記置換元文字列として前記第1の文字列に前記第3の文字列のうち前記第2の文字列に含まれない文字列を加えた文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換方法。
  12. コンピュータが、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を実行する文字列置換方法であって、
    前記複数種の置換テーブルのうち適用順が最上位の第1置換テーブルと、前記複数種の置換テーブルのうち適用順が前記第1置換テーブルよりも低い第2置換テーブルと、に、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち前記第1置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することを含む処理により前記第1置換テーブルと前記第2置換テーブルとを統合し統合後の前記単一の置換テーブルを次の前記第1置換テーブルに置き換え、かつ前記第2置換テーブルとして用いる置換テーブルを適用順の降順に切り替えながら繰り返すことを含む処理により、前記統合を行う文字列置換方法。
  13. コンピュータに、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を行わせるための文字列置換プログラムであって、
    第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列としての前記第2の文字列と前記置換先文字列としての第3の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列としての前記第3の文字列との組を前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換プログラム。
  14. コンピュータに、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を行わせるための文字列置換プログラムであって、
    第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列に含まれる第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての前記第1の文字列と前記置換先文字列として前記第2の文字列のうち前記第3の文字列を前記第4の文字列に置き換えた文字列との組、及び、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換プログラム。
  15. コンピュータに、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を行わせるための文字列置換プログラムであって、
    第1の置換テーブルに、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列とが対応付けられて登録され、第2の置換テーブルに、前記置換元文字列として前記第2の文字列を含む第3の文字列と前記置換先文字列としての第4の文字列とが対応付けられて登録され、かつ、前記第1の置換テーブルが前記第2の置換テーブルよりも適用順が先の場合に、前記置換元文字列としての第1の文字列と前記置換先文字列としての第2の文字列との組、前記置換元文字列としての第3の文字列と前記置換先文字列としての第4の文字列との組、及び、前記置換元文字列として前記第1の文字列に前記第3の文字列のうち前記第2の文字列に含まれない文字列を加えた文字列と前記置換先文字列としての第4の文字列との組を、前記単一の置換テーブルに登録することを含む処理により、前記統合を行う文字列置換プログラム。
  16. コンピュータに、
    置換元文字列と置換先文字列とが対応付けられて登録された複数種の置換テーブルを単一の置換テーブルに統合し、
    複数のノードと、一対の前記ノードの間を連結し1文字のラベルが付与された複数の枝と、を含み、一端が同一のノードに連結された個々の枝に付与された前記ラベルの文字が互いに相違し、ルートノードから何れかのノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列が、置換先文字列と対応付けられた置換元文字列に一致し、かつ前記何れかのノードに前記置換元文字列に対応する識別情報が付与されたトライ木を、前記統合した置換テーブルに登録されている前記置換元文字列を網羅するように構築し、
    前記構築した前記トライ木に含まれる前記ルートノードから第1のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列の最長接尾辞が、前記ルートノードから前記第1のノードと異なる第2のノードに至るルート上の複数の枝に付与された前記ラベルの文字で表される文字列に一致する場合に、前記第1のノードから前記第2のノードへ向かうフェイリアリンクを追加することを、前記トライ木に含まれる全てのノードを前記第1のノードとして各々行い、
    置換対象文字列の先頭から1文字ずつ取り出すと共に、前記トライ木の前記ルートノードを初期ノードとし、一端が現在のノードに連結された枝の中に取り出した文字がラベルとして付与された枝が存在する場合は、前記枝の他端に連結されたノードへ移動し、一端が現在のノードに連結された枝の中に前記取り出した文字がラベルとして付与された枝が存在せず、現在のノードに前記フェイリアリンクの基端が連結されている場合は、前記フェイリアリンクの先端に連結されたノードへ移動し、移動先のノードに識別情報が付与されている場合は識別情報を記録することを、前記置換対象文字列から全ての文字を取り出す迄繰り返すことで、前記置換対象文字列に含まれる前記置換元文字列を探索する
    ことを含む処理を行わせるための文字列置換プログラムであって、
    前記複数種の置換テーブルのうち適用順が最上位の第1置換テーブルと、前記複数種の置換テーブルのうち適用順が前記第1置換テーブルよりも低い第2置換テーブルと、に、同一の前記置換元文字列が異なる前記置換先文字列と対応付けられて登録されていた場合に、複数種の置換テーブルのうち前記第1置換テーブルに登録されていた前記置換元文字列と前記置換先文字列との組を前記単一の置換テーブルに登録することを含む処理により前記第1置換テーブルと前記第2置換テーブルとを統合し統合後の前記単一の置換テーブルを次の前記第1置換テーブルに置き換え、かつ前記第2置換テーブルとして用いる置換テーブルを適用順の降順に切り替えながら繰り返すことを含む処理により、前記統合を行う文字列置換プログラム。
JP2012185218A 2012-08-24 2012-08-24 文字列置換装置、方法及びプログラム Expired - Fee Related JP6136142B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012185218A JP6136142B2 (ja) 2012-08-24 2012-08-24 文字列置換装置、方法及びプログラム
US13/973,436 US9165020B2 (en) 2012-08-24 2013-08-22 String substitution apparatus, string substitution method and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012185218A JP6136142B2 (ja) 2012-08-24 2012-08-24 文字列置換装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2014044498A JP2014044498A (ja) 2014-03-13
JP6136142B2 true JP6136142B2 (ja) 2017-05-31

Family

ID=50188878

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012185218A Expired - Fee Related JP6136142B2 (ja) 2012-08-24 2012-08-24 文字列置換装置、方法及びプログラム

Country Status (2)

Country Link
US (1) US9165020B2 (ja)
JP (1) JP6136142B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6175924B2 (ja) * 2013-06-13 2017-08-09 富士通株式会社 プログラム、情報処理システムおよびデータ更新制御方法
US10977005B2 (en) * 2017-06-14 2021-04-13 International Business Machines Corporation Congnitive development of DevOps pipeline
CN108427671B (zh) * 2018-01-25 2021-06-25 腾讯科技(深圳)有限公司 信息转换方法和装置、存储介质及电子装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4906991A (en) * 1988-04-29 1990-03-06 Xerox Corporation Textual substitution data compression with finite length search windows
US5058144A (en) * 1988-04-29 1991-10-15 Xerox Corporation Search tree data structure encoding for textual substitution data compression systems
US7047279B1 (en) * 2000-05-05 2006-05-16 Accenture, Llp Creating collaborative application sharing
JP2005011049A (ja) 2003-06-19 2005-01-13 Nec Soft Ltd データベース統合装置
JP4753755B2 (ja) * 2006-03-14 2011-08-24 富士通株式会社 データ変換方法、装置及びプログラム
US8005847B2 (en) * 2006-10-20 2011-08-23 Adobe Systems Incorporated Pattern-based file relationship inference
US8341165B2 (en) * 2007-12-03 2012-12-25 Intel Corporation Method and apparatus for searching extensible markup language (XML) data
JP2009245308A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd 文書校正支援プログラム、文書校正支援方法および文書校正支援装置
KR101245631B1 (ko) * 2008-09-05 2013-03-22 니폰 덴신 덴와 가부시끼가이샤 근사조합장치, 근사조합방법, 프로그램 및 기록매체
JP5293301B2 (ja) * 2009-03-16 2013-09-18 富士通株式会社 検索装置、検索方法および記憶媒体
JP5167202B2 (ja) 2009-06-24 2013-03-21 株式会社日立システムズ カナ氏名によるデータの名寄せ処理方法および名寄せ処理システム、ならびにそのためのプログラム
US8156213B1 (en) * 2009-07-27 2012-04-10 Juniper Networks, Inc. Merging network device configuration schemas
US8782268B2 (en) * 2010-07-20 2014-07-15 Microsoft Corporation Dynamic composition of media
US8775476B2 (en) * 2010-12-30 2014-07-08 Skai, Inc. System and method for creating, deploying, integrating, and distributing nodes in a grid of distributed graph databases
US8631387B2 (en) * 2011-03-31 2014-01-14 Coral Networks, Inc. System and method for the structuring and interpretation of organic computer programs
US8914859B2 (en) * 2011-11-07 2014-12-16 International Business Machines Corporation Managing the progressive legible obfuscation and de-obfuscation of public and quasi-public broadcast messages

Also Published As

Publication number Publication date
JP2014044498A (ja) 2014-03-13
US20140067769A1 (en) 2014-03-06
US9165020B2 (en) 2015-10-20

Similar Documents

Publication Publication Date Title
US11256856B2 (en) Method, device, and system, for identifying data elements in data structures
US9633010B2 (en) Converting data into natural language form
JP5138046B2 (ja) 検索システム、検索方法およびプログラム
CN106599280B (zh) 确定网页节点路径信息的方法及装置
CN109766100A (zh) 数据处理方法及装置
JP2014225181A5 (ja)
JP6136142B2 (ja) 文字列置換装置、方法及びプログラム
CN111444411A (zh) 网络数据增量采集方法、装置、设备及存储介质
CN113434413B (zh) 基于数据差异的数据测试方法、装置、设备及存储介质
JP7082542B2 (ja) 軌跡検索装置及び軌跡検索プログラム
CN102262658A (zh) 一种基于实体的自底向上Web数据抽取方法
JPWO2006038498A1 (ja) 配列の生成方法、及び、配列生成プログラム
CN110188207A (zh) 知识图谱构建方法及装置、可读存储介质、电子设备
JP6604207B2 (ja) 関係情報生成方法、装置、及びプログラム
CN120353812A (zh) 冲突检测图谱构建方法、装置、计算机设备及存储介质
JP5894273B2 (ja) 文書関連付け方法および文書検索方法、文書関連付け装置および文書検索装置、並びにそのためのプログラム
RU2498401C2 (ru) Способ обнаружения текстовых объектов
US12493590B2 (en) Method and system for deduplicating point of interest databases
JP2014235584A (ja) 文書分析システム、文書分析方法およびプログラム
JP5564442B2 (ja) 文章検索装置
CN108182210B (zh) 基于页面信息解析的服务语义获取方法及系统
JP2015106216A (ja) 住民住所管理システム及び住民住所管理方法
US11868726B2 (en) Named-entity extraction apparatus, method, and non-transitory computer readable storage medium
JP2014115718A (ja) 形態素解析装置、方法、及びプログラム
Chang et al. On chinese postal address and associated information extraction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170417

R150 Certificate of patent or registration of utility model

Ref document number: 6136142

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees