JP2004038329A - 類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体 - Google Patents
類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP2004038329A JP2004038329A JP2002191371A JP2002191371A JP2004038329A JP 2004038329 A JP2004038329 A JP 2004038329A JP 2002191371 A JP2002191371 A JP 2002191371A JP 2002191371 A JP2002191371 A JP 2002191371A JP 2004038329 A JP2004038329 A JP 2004038329A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- matching
- partial character
- similar
- detecting
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】複数の文字列同士、または単数の文字列における一部同士を比較して、文字列の中の類似部分である類似部分文字列を検出する類似部分文字列検出方法は、まず、文字列の中の完全一致部分である一致部分文字列sを検出する。次に、一致部分文字列sに対して、所定のギャップ内Fに存在する他の一致部分文字列sを探索して連繋し、連繋先の一致部分文字列sに対しても同様に繰り返すことにより、一致部分文字列sをギャップGを介して次々に連繋する。そして、連繋された全ての一致部分文字列を含む類似部分文字列を作成する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、コンピュータにおいて、記号、英数字、漢字などの文字からなる複数の文字列同士、または単数の文字列における一部同士を比較して、文字列の中の類似部分である類似部分文字列を検出する類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体に関するものである。
【0002】
【従来の技術】
近時、コンピュータの発達により、電子化された文書データの管理、蓄積および利用が進んでいる。特に、最近のインターネットの利用拡大により、WWW(world wide web)上のHTML(hypertext markup language)文書、デジタル図書館や電子出版などにおける電子文書、電子メールなど、莫大な量の文書データがさまざまな形態で管理、蓄積および利用が行なわれている。このため、このような大量の文書データの中から所望の情報を効率よく検索することが望まれている。
【0003】
文章は、態の変化、文節における活用語尾の変化、動詞の名詞化、名詞の動詞化などによって変化する。このため、文書データを検索するには、キーワードに類似する文字列を検索できることが望ましい。
【0004】
また、バイオインフォマティクスの分野では、DNA(デオキシリボ核酸)の塩基配列、タンパク質のアミノ酸配列などの配列同士を比較して、配列の類似部分や相違部分を検出することが重要である。これらの配列は、DNAの各塩基を表わすA・C・G・Tやアミノ酸の20文字アルファベットを用いた文字列に置き換えられて、文字列の類似部分や相違部分が検出されることになる。ここで、文字列の類似部分とは、複数の完全に一致する部分と、それらの間に挟まれている一致しない部分(以下、この部分を「ギャップ」と称する。)とからなる部分をいう。
【0005】
従来、バイオインフォマティクスの分野において、文字列の中から類似部分である類似部分文字列を検出する方法として、Smith−Waterman法、BLASTプログラム、およびFASTAプログラムが知られている。以下、上記方法のそれぞれの違いを、図10〜図14に示されるスキャッタープロットに基づいて説明する。
【0006】
なお、以下では、説明の便宜上、2つの文字列を入力し、それらの類似部分である類似部分文字列あるいは完全一致部分である一致部分文字列の位置を出力するアルゴリズムについて説明しているが、実際には、用途に応じて1つの文字列を検索したり、3つ以上の文字列を対象としたりする場合も存在する。
【0007】
図10〜図14に示されるスキャッタープロットは、2つの文字列内の一致文字列や類似文字列を示すためのグラフである。これらの図では、行方向(図面の左右方向)に文字列「abcefbcdebcd」を配置し、列方向(図面の上下方向)に文字列「abcdcdefbcdg」を配置して、これら2つの文字列が比較される。行列の各マス目には、2つの文字列における対応する文字同士が一致する場合に「\」が記載される。前記2つの文字列に対するスキャッタープロットを図10に示す。
【0008】
図10に示されるようなスキャッタープロットを作成すると、一致部分文字列sは、図11に示されるように、右下方向に伸びる「\」の並びとして表現されることになる。
【0009】
また、類似部分文字列rは、図12に示されるように、複数の一致部分文字列s…を所定範囲内のギャップGを介して連繋したものとなる。スキャッタープロットにおいては、ギャップGは、或る一致部分文字列sの左上端と、別の一致部分文字列sの右下端との間として表現される。なお、所定値であるギャップGの最大値は、アルゴリズムに依存する。
【0010】
〔Smith−Waterman法〕
Smith−Waterman法は、概略的には、スキャッタープロットの各マス目を順番に調べることにより、一致部分文字列sや類似部分文字列rを検出する方法である。この方法では、多数の一致部分文字列s…が多数のギャップG…を介して連繋された類似部分文字列rを全て検出することができるので、類似部分文字列rを検出する精度が非常に良好である。しかしながら、この方法では、特に工夫をしない限り、計算時間は、入力となる2つの文字列の長さの積に比例するため、大規模な文字列に適用するには、多大な計算コストが必要となる。
【0011】
〔BLASTプログラム〕
BLASTプログラムでは、2つの文字列のうち、一方は問合せ文字列と呼ばれ、他方はデータベースと呼ばれている。問合せ文字列から、類似部分文字列rを検出するための専用のオートマトンを作成し、前記データベースを入力することにより前記オートマトンを実行する。計算時間は、データベース(文字列)の長さに比例する。なお、実用上、問合せ文字列は、データベースと比較して長さが短いことが前提となっている。また、検出する部分文字列の長さに下限が設けられている。
【0012】
Ver.(バージョン)2以降のBLASTプログラムでは、まず、前述の処理により一致部分文字列sを検出する(ステップS100、以下単に「S100」と記載する。他のステップについても同様である)。次に、図13に示されるように、検出された一致部分文字列sのそれぞれに関して、一致部分文字列sの前後において、例えば前述のSmith−Waterman法のような動的計画法(ダイナミックプログラミング法)を適用することにより、一致部分文字列sを含む類似部分文字列rを検出する(S101)。
【0013】
このBLASTプログラムを実行したときに要する計算時間は、ステップS100により一致部分文字列sを検出する時間に、ステップS101にて動的計画法を適用する面積の大きさに比例する時間を追加した時間となる。ステップS100により一致部分文字列sを検出する時間は、Smith−Waterman法により一致部分文字列sを検出する時間よりも短い。また、ステップS101にて動的計画法を適用する面積は、Smith−Waterman法を適用する面積(図示のスキャッタープロットの全面積)よりも狭い。したがって、BLASTプログラムの計算時間は、Smith−Waterman法の計算時間よりも短くなる。
【0014】
実際のBLASTプログラムでは、さらに、全ての一致部分文字列s…に対して動的計画法を適用するのではなく、1つの対角線上で2つの一致部分文字列s・sが近くにに見つかった場合にのみ動的計画法を適用することにより、高速化を図っている。
【0015】
しかしながら、類似部分文字列rの検出精度は、BLASTプログラムの方がSmith−Waterman法よりも劣っている。なぜなら、BLASTプログラムでは、類似部分文字列rを検出するためには、まず、類似部分文字列rに含まれる一致部分文字列sが検出されている必要があるため、例えば、下限の長さよりも短い多数の一致部分文字列s…がギャップを介して連繋した類似部分文字列rのように、BLASTプログラムでは検出できない一致部分文字列sからなる類似部分文字列rは検出できないからである。
【0016】
〔FASTAプログラム〕
FASTAプログラムでは、まず、Suffix treeを用いたアルゴリズム、ハッシングアルゴリズムなどのように、一致部分文字列sを高速に検出する方法を用いて、一致部分文字列sを検出する(S200)。次に、検出された一致部分文字列sのそれぞれに関して、ダイゴナル領域Dを設定し、該ダイゴナル領域Dに別の一致部分文字列sが含まれるか否かを検出する(S201)。ここで、ダイゴナル領域Dとは、図14に示されるように、一致部分文字列sを基準として所定の幅をとり、これを対角線方向に延ばすことによって形成される領域をいう。
【0017】
ダイゴナル領域Dに別の一致部分文字列sが含まれる場合には、前記ダイゴナル領域Dに対して、例えば前述のSmith−Waterman法のような動的計画法を適用することにより、一致部分文字列sを含む類似部分文字列rを検出する(ステップS202)。
【0018】
このFASTAプログラムを実行したときに要する計算時間は、ステップS200により一致部分文字列sを検出する時間(文字列の長さの和に比例する時間)に、ステップS202にて動的計画法を適用する面積の大きさ、すなわち、ダイゴナル領域Dの面積に比例する時間を追加した時間となる。したがって、FASTAプログラムの計算時間は、Smith−Waterman法の計算時間よりも短くなる。
【0019】
しかしながら、FASTAプログラムによって検出される類似部分文字列rは、ダイゴナル領域Dに含まれるものに限定される。このため、ダイゴナル領域Dが狭いと、類似部分文字列rの検出精度は低下し、ダイゴナル領域Dが広いと、前記検出精度は向上するが、ダイゴナル領域Dの面積が広くなるため計算時間が増大する。
【0020】
【発明が解決しようとする課題】
以上のように、Smith−Waterman法は、類似部分文字列rの検出精度が優れているが、多大な計算コストが必要となる。一方、BLASTプログラムおよびFASTAプログラムは、Smith−Waterman法に比べて、計算コストが少なくてすむが、検出精度が劣ることとなる。
【0021】
本発明は上記の問題点を解決するためになされたもので、その目的は、Smith−Waterman法に比べて計算コストが少なく、BLASTプログラムおよびFASTAプログラムに比べて検出精度を向上することができる類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体を提供することにある。
【0022】
【課題を解決するための手段】
上記の課題を解決するために、本発明の類似部分文字列検出方法は、複数の文字列同士、または単数の文字列における一部同士を比較して、文字列の中の類似部分である類似部分文字列を検出する類似部分文字列検出方法において、文字列の中の完全一致部分である一致部分文字列を検出する一致部分文字列検出ステップと、前記一致部分文字列に対して、所定のギャップ内に存在する他の前記一致部分文字列を探索して連繋し、連繋先の一致部分文字列に対しても同様に繰り返すことにより、一致部分文字列を前記ギャップを介して次々に連繋する一致部分文字列連繋ステップと、連繋された全ての一致部分文字列を含む類似部分文字列を作成する類似部分文字列作成ステップとを含むことを特徴としている。
【0023】
上記の方法によると、一致部分文字列を前記ギャップを介して次々に連繋し、連繋された全ての一致部分文字列を含む類似部分文字列を作成することにより類似部分文字列を検出している。したがって、スキャッタープロットの全領域を調査するSmith−Waterman法に比べて、類似部分文字列を検出する計算コストを減少させることができる。
【0024】
また、検出される類似部分文字列は、FASTAプログラムのように、ダイゴナル領域に含まれるものに限定されることはない。したがって、本発明の類似部分文字列検出方法は、FASTAプログラムよりも類似部分文字列の検出精度が向上する。
【0025】
さらに、本発明の類似部分文字列検出方法は、上記の方法において、前記一致部分文字列連繋ステップは、既に連繋された一致部分文字列以外の一致部分文字列に対して繰り返されることを特徴としている。
【0026】
既に連繋された一致部分文字列に対して一致部分文字列連繋ステップを行なっても、既存の連繋が再び行なわれるに過ぎない。したがって、本発明の類似部分文字列検出方法は、既に連繋された一致部分文字列を、一致部分文字列連繋ステップを行なう対象から除外することにより、重複した処理を防止できるから、類似部分文字列の検出速度が向上する。
【0027】
さらに、本発明の類似部分文字列検出方法は、上記の方法において、前記一致部分文字列検出ステップは、文字列のうち除外部分以外の部分を対象として、下限値以上の長さを有する一致部分文字列を検出するステップであり、前記一致部分文字列検出ステップにて検出された全ての一致部分文字列を前記除外部分に含める除外部分追加ステップをさらに含んでおり、前記一致部分文字列検出ステップ、前記一致部分文字列連繋ステップ、前記類似部分文字列作成ステップ、および前記除外部分追加ステップは、前記下限値を減らして繰り返されることを特徴としている。
【0028】
一般に、前記下限値が小さいと、検出される一致部分文字列の数が増大して、類似部分文字列の検出速度が低下することになる。これに対し、上記の方法によると、文字列の長い一致部分文字列を先に検出し、その後、検出された一致部分文字列の部分を除外しているから、文字列の短い一致部分文字列を検出する場合には、文字列の一部のみが検索対象となる。したがって、一致部分文字列の検出速度の低下を抑えることができ、その結果、類似部分文字列の検出速度の低下を抑えることができる。
【0029】
また、本発明の類似部分文字列検出装置は、複数の文字列同士、または単数の文字列における一部同士を比較して、文字列の中の類似部分である類似部分文字列を検出する類似部分文字列検出装置において、文字列の中の完全一致部分である一致部分文字列を検出する一致部分文字列検出手段と、前記一致部分文字列検出手段にて検出された一致部分文字列に対して、所定のギャップ内に存在する他の前記一致部分文字列を探索して連繋し、連繋先の一致部分文字列に対しても同様に繰り返すことにより、一致部分文字列を前記ギャップを介して次々に連繋する一致部分文字列連繋手段と、前記一致部分文字列連繋手段にて連繋された全ての一致部分文字列を含む類似部分文字列を作成する類似部分文字列作成手段とを備えることを特徴としている。
【0030】
上記の構成によると、一致部分文字列連繋手段にて一致部分文字列を前記ギャップを介して次々に連繋し、類似部分文字列作成手段にて、連繋された全ての一致部分文字列を含む類似部分文字列を作成することにより類似部分文字列を検出している。したがって、スキャッタープロットの全領域を調査するSmith−Waterman法に比べて、類似部分文字列を検出する計算コストを減少させることができる。
【0031】
また、検出される類似部分文字列は、FASTAプログラムのように、ダイゴナル領域に含まれるものに限定されることはない。したがって、本発明の類似部分文字列検出装置は、FASTAプログラムよりも類似部分文字列の検出精度が向上する。
【0032】
さらに、本発明の類似部分文字列検出装置は、上記の構成において、前記一致部分文字列連繋手段は、既に連繋された一致部分文字列以外の一致部分文字列に対して繰り返されることを特徴としている。
【0033】
上記の構成によると、前述のように、一致部分文字列連繋手段を実行する対象から、既に連繋された一致部分文字列を除外することにより、重複した処理を防止できるから、類似部分文字列の検出速度が向上する。
【0034】
さらに、本発明の類似部分文字列検出装置は、上記の構成において、前記一致部分文字列検出手段は、文字列のうち除外部分以外の部分を対象として、下限値以上の長さを有する一致部分文字列を検出するものであり、前記一致部分文字列検出手段にて検出された全ての一致部分文字列を前記除外部分に含める除外部分追加手段をさらに備えており、前記一致部分文字列検出手段、前記一致部分文字列連繋手段、前記類似部分文字列作成手段、および前記除外部分追加手段は、前記下限値を減らして繰り返されることを特徴としている。
【0035】
上記の構成によると、文字列の長い一致部分文字列を先に検出し、その後、検出された一致部分文字列の部分を除外しているから、文字列の短い一致部分文字列を検出する場合には、文字列の一部のみが検索対象となる。したがって、一致部分文字列の検出速度の低下を抑えることができ、その結果、類似部分文字列の検出速度の低下を抑えることができる。
【0036】
なお、上記の類似部分文字列検出方法を類似部分文字列検出プログラムとしてコンピュータに実行させることができる。さらに、前記類似部分文字列検出プログラムをコンピュータで読取り可能な記録媒体に記憶させることにより、任意のコンピュータ上で上記類似部分文字列検出方法を実行させることができる。
【0037】
【発明の実施の形態】
〔実施の形態1〕
本発明の一実施形態について図1〜図7に基づいて説明すれば、以下のとおりである。図2は、本実施形態の類似部分文字列検出装置の概略構成を示している。
【0038】
類似部分文字列検出装置10は、一般的なコンピュータの構成と同様の構成である。すなわち、類似部分文字列検出装置10では、CPU(中央演算装置)11、メモリ12、入力装置13、出力装置14、外部記憶装置15、および通信装置16がバス17を介して接続されている。
【0039】
CPU11は、プログラムを実行することにより、各種データの処理や各種デバイスへの制御および指示を行なうものである。メモリ12は、CPU11が実行する各種プログラムや各種データを格納しており、一般にRAM(random access memory)およびROM(random access memory)で構成されている。
【0040】
入力装置13は、キーボード、マウスなどのように、利用者が類似部分文字列検出装置10に対して各種データや各種指示を入力するためのものである。出力装置14は、ディスプレイ、プリンタなどのように、CPU11にて処理されたデータを出力して利用者に提供するものである。
【0041】
外部記憶装置15は、ハードディスク、光ディスク、光磁気ディスクなどのように、各種データベースなどの大容量のデータを記憶するものである。通信装置16は、モデム、ゲートウェイなどのように、外部端末20との間で情報の送受を行なうものである。
【0042】
上記構成の類似部分文字列検出装置10において、入力装置13にて類似部分文字列rの検出が指示されると、2つ文字列が比較されて、類似部分文字列rが検出される。なお、文字列の類似部分文字列検出装置10への入力は、文字列が記録された記録媒体を、該記録媒体が着脱可能な外部記憶装置15に配備することにより行なわれてもよいし、外部端末20から通信装置16を介して行なわれてもよい。また、一方の文字列を外部記憶装置15に予め記憶しておき、他方の文字列を、前記記録媒体や通信装置16を介して入力してもよい。
【0043】
このときの類似部分文字列rを検出する方法を、図3に基づいて説明する。まず、下限値bに、予め定められた下限初期値を代入した後(S10)、類似部分文字列集合Rを空にする(S11)。次に、図4に示すような類似部分文字列の検出が行なわれる(S12)。このステップの詳細は後述する。次に、下限値bを減らした後(S13)、下限値bが、予め定められた下限終了値よりも小さいか否かを判断する(S14)。下限値bが下限終了値以上である場合には、ステップS11に戻って、前述の処理を繰り返す。一方、下限値bが下限終了値よりも小さい場合には、類似部分文字列rの検出処理を終了する。
【0044】
なお、ステップS13における下限値bの減少処理は、減少分を一定としたり、下限値bが小さくなるに従って減少分を小さくしたりするなど、任意の減少処理を利用することができる。
【0045】
次に、類似部分文字列の検出処理(S12)の詳細について図4に基づいて説明する。まず、下限値b以上の長さを有する一致部分文字列s…を検出する(S20)。この検出には、Suffix treeを用いたアルゴリズム、ハッシングアルゴリズムなどのように、一致部分文字列sを高速に検出する公知の方法を利用することができる。
【0046】
次に、図1に示されるように、検出された各一致部分文字列sの両端にギャップ領域F・Fを設定する(S21)。本実施形態では、ギャップ領域F・Fは、一致部分文字列sの両端から上下左右に2マスずつ広げた範囲としている。このギャップ領域Fの広さは、任意に設定することができる。しかしながら、FASTAプログラムにおけるダイゴナル領域Dの場合と同様に、ギャップ領域Fが狭すぎると類似部分文字列の検出精度が低下することになり、反対に広すぎると類似部分文字列の検出速度が低下することになる。
【0047】
次に、以下に示すステップS23〜S27を各一致部分文字列sについて繰り返す(S22)。まず、一致部分文字列sは、「検出済み」であるか否かを判断する(S23)。
【0048】
ここで、「検出済み」であるとは、後述のステップS25〜S27から明らかなように、既に繰返し処理の対象となった一致部分文字列sであるか、あるいは、後述のステップS26で既に連繋された一致部分文字列sである場合をいう。「検出済み」であるか否かの判断は、例えば、ステップS20にて検出された一致部分文字列s…のそれぞれに、「検出済み」であるか否かを示すフラグを設けることによって容易に実行することができる。
【0049】
「検出済み」である場合には、この繰返し内の処理(S23〜S27)を終了し、次の一致部分文字列sについて繰返し内の処理を行なう。一方、「検出済み」ではない場合には、一致部分文字列集合aを作成する(S24)。次に、一致部分文字列集合aに一致部分文字列sを含めると共に「検出済み」とする(S25)。
【0050】
次に、繰返しの対象となっている一致部分文字列sを基準として、ギャップ領域Fと他の一致部分文字列sとを介して連繋する全ての一致部分文字列を、一致部分文字列集合aに追加すると共に「検出済み」とする(S26)。
【0051】
次に、一致部分文字列集合aに含まれる領域から類似部分文字列を作成して、類似部分文字列集合Rに追加し(S27)、その後、次の一致部分文字列sについて繰返し内の処理を行なう。そして、全ての一致部分文字列s点について繰返し内の処理が終了すると、類似部分文字列の検出処理(S12)が終了して、次のステップ(S13)が行なわれる。
【0052】
図3および図4に示される処理を行なうことにより、図5に示されるような類似部分文字列集合Rが生成される。したがって、本実施形態の類似部分文字列検出装置10は、一致部分文字列sをギャップGを介して次々に連繋し(S26)、連繋された全ての一致部分文字列s…を含む類似部分文字列rを作成することにより類似部分文字列rを検出している。
【0053】
これにより、スキャッタープロットの全領域を調査するSmith−Waterman法に比べて、類似部分文字列rを検出する計算コストを減少させることができる。さらに、厳密に比較すれば、本実施形態における前記計算コストは、FASTAプログラムにおける前記計算コストと比べて、同程度以下になることが予想される。
【0054】
また、検出される類似部分文字列rは、FASTAプログラムのように、ダイゴナル領域D(図14を参照)に含まれるものに限定されることはないから、類似部分文字列rの検出精度が向上する。なお、詳細は後述する。
【0055】
また、既に連繋された一致部分文字列sに対して、一致部分文字列s…をギャップGを介して連繋させる処理(S26)を行なっても、既存の連繋が再び行なわれるに過ぎず、重複した処理が行なわれることになる。これに対して、本実施形態では、一致部分文字列sが「検出済み」であれば(S23でYES)、一致部分文字列s…をギャップGを介して連繋させる処理(S26)を行なわない。すなわち、既に連繋された一致部分文字列sは、「検出済み」であるから、前記連繋させる処理が省略されるので、重複した処理を防止することができる。したがって、類似部分文字列rの検出の手間は、一致部分文字列sの個数に比例する程度で済むため、高速な検出を行なうことができる。
【0056】
次に、本実施形態における類似部分文字列検出方法と、FASTAプログラムによる類似部分文字列検出方法との相違を図6および図7に基づいて詳述する。例えば、図6(b)に示されるように、オーバーラップする部分の多い一致部分文字列s1〜s7を検出した場合を考える。
【0057】
FASTAプログラムでは、或る一致部分文字列s1に対してダイゴナル領域Dを設定し、該ダイゴナル領域Dに動的計画法を適用して類似部分文字列を検出している。このため、動的計画法による計算コストを抑えるために、ダイゴナル領域Dを狭くすると、図6(b)に示されるように、ダイゴナル領域Dに含まれる一致部分文字列s1・s5が少なく、類似部分文字列の検出精度が低下することになる。また、これを回避するために、ダイゴナル領域Dを広げると、前記検出精度を向上させることができるが、ダイゴナル領域Dの面積が増大するために動的計画法による計算コストが増大することになる。
【0058】
これに対し、本実施形態における類似部分文字列の検出方法では、一致部分文字列の両端に設定されたギャップ領域F・Fに含まれる他の一致部分文字列を選択して連繋し、これを連繋された一致部分文字列においても繰り返している。これにより、図6(a)に示されるように、全ての一致部分文字列を含む類似部分文字列を、計算コストを増大させることなく検出することができる。
【0059】
また、例えば、一方の文字列に幾つかの文字を挟んだものが他方の文字列となっている場合には、図7に示されるような一致部分文字列s…が検出されることになる。このような状況は、例えば、古いプログラムを拡張して新しいプログラムを作成した場合などに起こる場合が多い。
【0060】
図7に示されるような場合にFASTAプログラムを用いたときには、著しく広いダイゴナル領域Dを設定する必要があり、このことは、計算コストの上で非現実的である。これに対し、本実施形態における類似部分文字列の検出方法を用いたときには、ギャップ領域Fに含まれる一致部分文字列sを次々に連繋することにより、一致部分文字列s…を含む類似部分文字列を容易に検出することができる。
【0061】
次に、本実施形態における類似部分文字列検出方法と、BLASTプログラム(Ver.2以降)による類似部分文字列検出方法との相違を説明する。BLASTプログラムでは、短い(例えば3文字)一致部分文字列sを種(シード)にして前後に伸張することにより類似部分文字列rを検出している。このときに動的計画法が利用されるため、検索される領域、すなわち、検出される類似部分文字列rの長さの2乗の計算コストが必要となる。
【0062】
一方、本実施形態では、検出される類似部分文字列rに含まれる一致部分文字列sの個数に比例する計算コストとなる。したがって、検出される一致部分文字列sの長さの下限値bが大きくなれば、BLASTプログラムの計算コストは増大するが、本実施形態では、検出される類似部分文字列rに含まれる一致部分文字列sの個数が減少するので、本実施形態の計算コストは減少する。
【0063】
また、本実施形態では、図3に示されるように、前記下限値bが大きい方から計算されるから、初期の類似部分文字列rの検出(S12)は高速で行なうことができる。さらに、下限値bに対して検出される類似部分文字列rを利用者が参照できるようにすれば、下限値bが下限終了値に達する前に、利用者が類似部分文字列rの検出が十分であると判断した時点で検出処理を終了することができる。
【0064】
〔実施の形態2〕
次に、本発明の他の実施形態について図8および図9に基づいて説明すれば、以下のとおりである。本実施形態は、上記実施形態と比べて、除外領域集合eを利用する点が異なるのみであり、その他の構成および処理は同様である。除外領域集合eを利用することに伴い、図3および図4に示される類似部分文字列の検出方法に比べて、以下の処理が変更または追加される。
【0065】
本実施形態では、図8に示されるように、下限値bに下限初期値を代入する処理(S10)の後に、除外領域集合eを空にする処理(S30)が追加される。これに伴い、ステップS14において、下限値bが下限終了値以上である場合には、ステップS11の代わりにステップS30に戻ることになる。
【0066】
また、図9に示されるように、下限値b以上の長さを有する一致部分文字列s…を検出する処理(図4のS20)が、除外領域集合eに含まれない領域でのみ行なわれる処理(S40)に変更される。さらに、類似部分文字列を作成して類似部分文字列集合Rに追加する処理(S27)の後に、一致部分文字列集合aに含まれる領域から除外領域を作成して、除外領域集合eに追加する処理(S41)が追加される。
【0067】
上記の処理を追加することにより、本実施形態の類似部分文字列検出装置は、上記の実施形態による効果に加えて、以下の効果を奏することになる。
【0068】
一般に、下限値bが小さいと、検出される一致部分文字列sの数が増大して、類似部分文字列rの検出速度が低下することになる。これに対し、本実施形態における類似部分文字列の検出方法では、文字列の長い一致部分文字列sを先に検出し、その後、検出された一致部分文字列sの部分を除外領域集合eに追加することにより、文字列の短い一致部分文字列を検出する場合には、文字列から除外領域集合eを除いた部分のみが検索対象となる。したがって、一致部分文字列sの検出速度の低下を抑えることができ、その結果、類似部分文字列rの検出速度の低下を抑えることができる。
【0069】
なお、上記の実施形態では、ギャップ領域Fを矩形領域としているが、これに限定されるものではなく、ギャップGの長さの許容範囲によって種々の寸法および形状にギャップ領域Fを変更することができる。
【0070】
本発明は、上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。
【0071】
例えば、本発明は、プログラムから重複部分を抽出する場合にも適用される。重複部分をまとめるようにプログラムを修正することにより、プログラムの分量を減らすことができるとともに、プログラムが理解しやすくなる。
【0072】
また、プログラムの不具合を修正したり、機能を変更したりするために、重複部分を修正する必要が生じた場合には、全ての重複部分を同様に修正する必要がある。このような場合に本発明を適用すれば、重複部分の場所を認識できるから重複部分に対する修正が容易となる。また、前述のように、重複部分をまとめるようにプログラムを修正することにより、重複部分に対する修正が容易となる。
【0073】
現在、産業界では、数百万行以上といった、1人の人間では全体を読むことができないような巨大なプログラムが利用されており、このようなプログラムに対して一貫した修正を行なうためにも、本発明は有効である。
【0074】
また、本発明は、単一あるいは複数の文書から類似部分を抽出する場合にも適用される。これにより、文章を一部改変して、他人に引用されたり利用されたりしている場合に、改変された文章を発見するのに有効である。また、試験などのように、1つの問題に対する答案を多数の人間が文章として提出して、その答案を採点する場合に、キーワードとなる文が記載されているか否かを調べるのに有効である。
【0075】
また、ある言語の文書を別の言語の文書に翻訳する場合に、その文書に頻出する文や文節をあらかじめ全て検出しておくことによって、前記文や文節に一貫した訳を与えることが可能となる。特に、複数の翻訳者が分担して翻訳を行なう場合に、一貫した翻訳が可能となる。
【0076】
【発明の効果】
以上のように、本発明の類似部分文字列検出方法は、文字列の中の完全一致部分である一致部分文字列を検出する一致部分文字列検出ステップと、前記一致部分文字列に対して、所定のギャップ内に存在する他の前記一致部分文字列を探索して連繋し、連繋先の一致部分文字列に対しても同様に繰り返すことにより、一致部分文字列を前記ギャップを介して次々に連繋する一致部分文字列連繋ステップと、連繋された全ての一致部分文字列を含む類似部分文字列を作成する類似部分文字列作成ステップとを含んでいる。
【0077】
これにより、スキャッタープロットの全領域を調査するSmith−Waterman法に比べて、類似部分文字列を検出する計算コストが減少するという効果を奏するとともに、検出される類似部分文字列は、ダイゴナル領域に含まれるものに限定されることはないから、類似部分文字列の検出精度が向上するという効果を奏する。
【0078】
さらに、本発明の類似部分文字列検出方法は、以上のように、上記の方法において、前記一致部分文字列連繋ステップは、既に連繋された一致部分文字列以外の一致部分文字列に対して繰り返されている。
【0079】
これにより、既に連繋された一致部分文字列を、一致部分文字列連繋ステップを行なう対象から除外することにより、重複した処理を防止できるから、類似部分文字列の検出速度が向上するという効果を奏する。
【0080】
さらに、本発明の類似部分文字列検出方法は、以上のように、上記の方法において、前記一致部分文字列検出ステップは、文字列のうち除外部分以外の部分を対象として、下限値以上の長さを有する一致部分文字列を検出するステップであり、前記一致部分文字列検出ステップにて検出された全ての一致部分文字列を前記除外部分に含める除外部分追加ステップをさらに含んでおり、前記一致部分文字列検出ステップ、前記一致部分文字列連繋ステップ、前記類似部分文字列作成ステップ、および前記除外部分追加ステップは、前記下限値を減らして繰り返されている。
【0081】
これにより、文字列の長い一致部分文字列を先に検出し、その後、検出された一致部分文字列の部分を除外しているから、文字列の短い一致部分文字列を検出する場合には、文字列の一部のみが検索対象となるので、一致部分文字列の検出速度の低下を抑えることができ、その結果、類似部分文字列の検出速度の低下を抑えることができるという効果を奏する。
【0082】
また、本発明の類似部分文字列検出装置は、以上のように、文字列の中の完全一致部分である一致部分文字列を検出する一致部分文字列検出手段と、前記一致部分文字列検出手段にて検出された一致部分文字列に対して、所定のギャップ内に存在する他の前記一致部分文字列を探索して連繋し、連繋先の一致部分文字列に対しても同様に繰り返すことにより、一致部分文字列を前記ギャップを介して次々に連繋する一致部分文字列連繋手段と、前記一致部分文字列連繋手段にて連繋された全ての一致部分文字列を含む類似部分文字列を作成する類似部分文字列作成手段とを備える構成である。
【0083】
これにより、スキャッタープロットの全領域を調査するSmith−Waterman法に比べて、類似部分文字列を検出する計算コストが減少するという効果を奏するとともに、検出される類似部分文字列は、ダイゴナル領域に含まれるものに限定されることはないから、類似部分文字列の検出精度が向上するという効果を奏する。
【0084】
さらに、本発明の類似部分文字列検出装置は、以上のように、上記の構成において、前記一致部分文字列連繋手段は、既に連繋された一致部分文字列以外の一致部分文字列に対して繰り返される構成である。
【0085】
これにより、既に連繋された一致部分文字列を、一致部分文字列連繋手段を実行する対象から除外することにより、重複した処理を防止できるから、類似部分文字列の検出速度が向上するという効果を奏する。
【0086】
さらに、本発明の類似部分文字列検出装置は、以上のように、上記の構成において、前記一致部分文字列検出手段は、文字列のうち除外部分以外の部分を対象として、下限値以上の長さを有する一致部分文字列を検出するものであり、前記一致部分文字列検出手段にて検出された全ての一致部分文字列を前記除外部分に含める除外部分追加手段をさらに備えており、前記一致部分文字列検出手段、前記一致部分文字列連繋手段、前記類似部分文字列作成手段、および前記除外部分追加手段は、前記下限値を減らして繰り返される構成である。
【0087】
これにより、文字列の長い一致部分文字列を先に検出し、その後、検出された一致部分文字列の部分を除外しているから、文字列の短い一致部分文字列を検出する場合には、文字列の一部のみが検索対象となるので、一致部分文字列の検出速度の低下を抑えることができ、その結果、類似部分文字列の検出速度の低下を抑えることができるという効果を奏する。
【0088】
なお、上記の類似部分文字列検出方法を類似部分文字列検出プログラムとしてコンピュータに実行させることができる。さらに、前記類似部分文字列検出プログラムをコンピュータで読取り可能な記録媒体に記憶させることにより、任意のコンピュータ上で上記類似部分文字列検出方法を実行させることができる。
【図面の簡単な説明】
【図1】2つの文字列に対するスキャッタープロットに関して、本発明の一実施形態である類似部分文字列検出装置が実行する類似部分文字列の検出方法を示すグラフである。
【図2】本実施形態の類似部分文字列検出装置の概略構成を示すブロック図である。
【図3】本実施形態における類似部分文字列の検出方法を示すフローチャートである。
【図4】本実施形態における類似部分文字列の検出方法を示すフローチャートである。
【図5】本実施形態における類似部分文字列の検出方法によって検出された類似部分文字列の集合を示すグラフである。
【図6】同図(a)は、本実施形態において検出される類似部分文字列を示すグラフであり、同図(b)は、従来のFASTAプログラムにより設定されたダイゴナル領域に含まれる一致部分文字列を示すグラフである。
【図7】本実施形態において検出される類似部分文字列と、該類似部分文字列を従来のFASTAプログラムによって検出可能とするために設定されるべきダイゴナル領域とを示すグラフである。
【図8】本発明の他の実施形態における類似部分文字列の検出方法を示すフローチャートである。
【図9】本実施形態における類似部分文字列の検出方法を示すフローチャートである。
【図10】2つの文字列に対するスキャッタープロットを示すグラフである。
【図11】図10に示されるグラフに関して、すべての一致部分文字列を示すグラフである。
【図12】図10に示されるグラフに関して、2つの一致部分文字列と1つのギャップとからなる類似部分文字列を示すグラフである。
【図13】図10に示されるグラフに関して、BLASTプログラムによる類似部分文字列の検出方法を示すグラフである。
【図14】図10に示されるグラフに関して、FASTAプログラムによる類似部分文字列の検出方法を示すグラフである。
【符号の説明】
r 類似部分文字列
s 一致部分文字列
F ギャップ領域
G ギャップ
Claims (8)
- 複数の文字列同士、または単数の文字列における一部同士を比較して、文字列の中の類似部分である類似部分文字列を検出する類似部分文字列検出方法において、
文字列の中の完全一致部分である一致部分文字列を検出する一致部分文字列検出ステップと、
前記一致部分文字列に対して、所定のギャップ内に存在する他の前記一致部分文字列を探索して連繋し、連繋先の一致部分文字列に対しても同様に繰り返すことにより、一致部分文字列を前記ギャップを介して次々に連繋する一致部分文字列連繋ステップと、
連繋された全ての一致部分文字列を含む類似部分文字列を作成する類似部分文字列作成ステップとを含むことを特徴とする類似部分文字列検出方法。 - 前記一致部分文字列連繋ステップは、既に連繋された一致部分文字列以外の一致部分文字列に対して繰り返されることを特徴とする請求項1に記載の類似部分文字列検出方法。
- 前記一致部分文字列検出ステップは、文字列のうち除外部分以外の部分を対象として、下限値以上の長さを有する一致部分文字列を検出するステップであり、
前記一致部分文字列検出ステップにて検出された全ての一致部分文字列を前記除外部分に含める除外部分追加ステップをさらに含んでおり、
前記一致部分文字列検出ステップ、前記一致部分文字列連繋ステップ、前記類似部分文字列作成ステップ、および前記除外部分追加ステップは、前記下限値を減らして繰り返されることを特徴とする請求項1または2に記載の類似部分文字列検出方法。 - 複数の文字列同士、または単数の文字列における一部同士を比較して、文字列の中の類似部分である類似部分文字列を検出する類似部分文字列検出装置において、
文字列の中の完全一致部分である一致部分文字列を検出する一致部分文字列検出手段と、
前記一致部分文字列検出手段にて検出された一致部分文字列に対して、所定のギャップ内に存在する他の前記一致部分文字列を探索して連繋し、連繋先の一致部分文字列に対しても同様に繰り返すことにより、一致部分文字列を前記ギャップを介して次々に連繋する一致部分文字列連繋手段と、
前記一致部分文字列連繋手段にて連繋された全ての一致部分文字列を含む類似部分文字列を作成する類似部分文字列作成手段とを備えることを特徴とする類似部分文字列検出装置。 - 前記一致部分文字列連繋手段は、既に連繋された一致部分文字列以外の一致部分文字列に対して繰り返されることを特徴とする請求項4に記載の類似部分文字列検出装置。
- 前記一致部分文字列検出手段は、文字列のうち除外部分以外の部分を対象として、下限値以上の長さを有する一致部分文字列を検出するものであり、
前記一致部分文字列検出手段にて検出された全ての一致部分文字列を前記除外部分に含める除外部分追加手段をさらに備えており、
前記一致部分文字列検出手段、前記一致部分文字列連繋手段、前記類似部分文字列作成手段、および前記除外部分追加手段は、前記下限値を減らして繰り返されることを特徴とする請求項4または5に記載の類似部分文字列検出装置。 - 請求項1ないし3の何れか1項に記載の類似部分文字列検出方法をコンピュータに実行させるための類似部分文字列検出プログラム。
- 請求項7に記載の類似部分文字列検出プログラムを記録したコンピュータ読取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191371A JP3868859B2 (ja) | 2002-06-28 | 2002-06-28 | 類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191371A JP3868859B2 (ja) | 2002-06-28 | 2002-06-28 | 類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038329A true JP2004038329A (ja) | 2004-02-05 |
JP3868859B2 JP3868859B2 (ja) | 2007-01-17 |
Family
ID=31700971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002191371A Expired - Fee Related JP3868859B2 (ja) | 2002-06-28 | 2002-06-28 | 類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3868859B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007069762A1 (ja) * | 2005-12-12 | 2007-06-21 | Nec Corporation | 類似文検索方法、類似文検索システム及び類似文検索用プログラム |
US8879853B2 (en) | 2010-09-10 | 2014-11-04 | Hitachi, Ltd. | System, method and program for enumerating local alignments from pair of documents |
-
2002
- 2002-06-28 JP JP2002191371A patent/JP3868859B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007069762A1 (ja) * | 2005-12-12 | 2007-06-21 | Nec Corporation | 類似文検索方法、類似文検索システム及び類似文検索用プログラム |
JP4930379B2 (ja) * | 2005-12-12 | 2012-05-16 | 日本電気株式会社 | 類似文検索方法、類似文検索システム及び類似文検索用プログラム |
US8356065B2 (en) | 2005-12-12 | 2013-01-15 | Nec Corporation | Similar text search method, similar text search system, and similar text search program |
US8879853B2 (en) | 2010-09-10 | 2014-11-04 | Hitachi, Ltd. | System, method and program for enumerating local alignments from pair of documents |
Also Published As
Publication number | Publication date |
---|---|
JP3868859B2 (ja) | 2007-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | Fast and accurate long-read alignment with Burrows–Wheeler transform | |
US8140505B1 (en) | Near-duplicate document detection for web crawling | |
JP4767694B2 (ja) | 不正ハイパーリンク検出装置及びその方法 | |
JP5697202B2 (ja) | 用語の対応を見出す方法、プログラム及びシステム | |
JP5497048B2 (ja) | コンパラブルコーパスを使用する固有表現の翻字 | |
US8423885B1 (en) | Updating search engine document index based on calculated age of changed portions in a document | |
US8661341B1 (en) | Simhash based spell correction | |
JP2007094775A (ja) | 意味解析装置、意味解析方法および意味解析プログラム | |
EP2132648A2 (en) | Name indexing for name matching systems | |
Arslan | DeASCIIfication approach to handle diacritics in Turkish information retrieval | |
JP2009217689A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2020098596A (ja) | ウェブページから情報を抽出する方法、装置及び記憶媒体 | |
US20100114924A1 (en) | Searching The Internet For Common Elements In A Document In Order To Detect Plagiarism | |
KR101663038B1 (ko) | 개체의 표면형 문자열 용례학습기반에 의한 텍스트에서의 개체 범위 인식 장치 및 그 방법 | |
JP3868859B2 (ja) | 類似部分文字列検出方法、類似部分文字列検出装置、類似部分文字列検出プログラム、および該プログラムを記録した記録媒体 | |
Apostolico et al. | Efficient algorithms for the discovery of gapped factors | |
WO2009113289A1 (ja) | 新規事例生成装置、新規事例生成方法及び新規事例生成用プログラム | |
JP6622921B2 (ja) | 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム | |
JP2010272006A (ja) | 関係抽出装置、関係抽出方法、及びプログラム | |
JP2007133682A (ja) | 全文検索システム、及び、その全文検索方法 | |
JP4435144B2 (ja) | データ検索システム及びプログラム | |
JP3894428B2 (ja) | 情報抽出方法、情報検索方法及び情報抽出コンピュータプログラム | |
Risch et al. | Measuring and facilitating data repeatability in web science | |
JP3396734B2 (ja) | コーパス誤りの検出・修正処理装置,コーパス誤りの検出・修正処理方法およびそのプログラム記録媒体 | |
Oostdijk et al. | Constructing a broad-coverage lexicon for text mining in the patent domain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060704 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060904 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060904 |
|
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: 20061010 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061011 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091020 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101020 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |