(57)【特許請求の範囲】
【請求項１】
複数の入力された文書データの各々の組み合わせについて、所定の長さ以上の共通部分文字列を抽出し、抽出した共通部分文字列と抽出元の文書データを関連付け、抽出した共通部分文字列をキーとして、抽出元の文書データ群を共通部分文字列データベースに格納する共通部分文字列発見部と、
前記共通部分文字列データベースに格納された前記共通部分文字列の各々の組み合わせについて、複数の共通部分文字列の中に共通に含まれる文字列のうち最も文字数が多い文字列である最大共通部分文字列を抽出し、抽出された前記最大共通部分文字列の長さが前記所定の長さ以上であれば、当該共通部分文字列と当該最大共通部分文字列を関連付け、変換元の共通部分文字列をキーとして、変換先の最大共通部分文字列を文字列変換部データベースに格納する部分文字列変換データベース作成部と、
前記共通部分文字列データベースに格納された前記共通部分文字列をキーとして、前記文字列変換部データベースに格納された当該共通部分文字列に関連づけられた最大共通文字列と、前記共通部分文字列データベースに格納された当該共通部分文字列に関連づけられた文書データ群とを関連付け、前記文字列変換部データベースに格納された前記最大共通部分文字列をキーとして、当該最大共通部分文字列に関連付けられた文書データ群を結果データベースに格納する文書関連づけ部と、
を有することを特徴とする文書関連性分析装置。
【請求項２】
入力された文書データに含まれるテキスト情報を抽出し、テキストファイル形式の文書データに変換する前処理部を有することを特徴とする請求項１に記載の文書関連性分析装置。
【請求項３】
共通部分文字列発見部と、部分文字列変換データベース作成部と、文書関連づけ部を備える文書関連性分析装置が行う文書関連性分析方法であって、
前記共通部分文字列発見部が、複数の入力された文書データの各々の組み合わせについて、所定の長さ以上の共通部分文字列を抽出し、抽出した共通部分文字列と抽出元の文書データを関連付け、抽出した共通部分文字列をキーとして、抽出元の文書データ群を共通部分文字列データベースに格納する共通部分文字列発見ステップと、
前記部分文字列変換データベース作成部が、前記共通部分文字列データベースに格納された前記共通部分文字列の各々の組み合わせについて、複数の共通部分文字列の中に共通に含まれる文字列のうち最も文字数が多い文字列である最大共通部分文字列を抽出し、抽出された前記最大共通部分文字列の長さが前記所定の長さ以上であれば、当該共通部分文字列と当該最大共通部分文字列を関連付け、変換元の共通部分文字列をキーとして、変換先の最大共通部分文字列を文字列変換部データベースに格納する部分文字列変換データベース作成ステップと、
前記文書関連づけ部が、前記共通部分文字列データベースに格納された前記共通部分文字列をキーとして、前記文字列変換部データベースに格納された当該共通部分文字列に関連づけられた最大共通文字列と、前記共通部分文字列データベースに格納された当該共通部分文字列に関連づけられた文書データ群とを関連付け、前記文字列変換部データベースに格納された前記最大共通部分文字列をキーとして、当該最大共通部分文字列に関連付けられた文書データ群を結果データベースに格納する文書関連づけステップと、
を有することを特徴とする文書関連性分析方法。
【請求項４】
入力された文書データに含まれるテキスト情報を抽出し、テキストファイル形式の文書データに変換する前処理ステップを有することを特徴とする請求項３に記載の文書関連性分析方法。
【請求項５】
コンピュータを、請求項１に記載の文書関連性分析装置として機能させるための文書関連性分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキスト情報を含むデジタル化された文書データの集合から文書データの関連性を分析する文書関連性解析装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来の文書の関連性を解析する方法には、単語や文字ｎグラム（連続するｎ個の文字の並び）の出現頻度や共起頻度に基づいて類似性や関連性を判定する方法がある。この方法は、クラスタリングなどの関連づけ処理や重要語の抽出に用いられることが多い。
例えば、非特許文献１に記載された技術では、文書から単語の抽出には、日本語形態要素解析（日本語の文法と辞書を用いてテキストを言語で意味を持つ最小単位である形態素に分割し、品詞の判別をする処理）を用いる。また、文書の特徴語を抽出する場合にも、日本語形態素解析を用いて、必要に応じて単語を連結している。
他に、文書に出現する固有表現を基に文書を関連づける技術が存在する。以下の技術は人名を固有表現として使用する。非特許文献２に記載された技術では、あらかじめ日本語形態素解析を用いて文書の集合から人名を抽出する。また、非特許文献３に記載された技術では、解析する文書とは別に与えられた人名リストを用いている。
【非特許文献１】松尾真編、自然言語処理、「岩波講座ソフトウェア科学１５」、岩波書店、１９９６、２．１節「言語の統計」、３章「形態素解析」、１１章「情報の構造化と検索」
【非特許文献２】原田昌紀、佐藤進也、風間一洋、Ｗｅｂ上のキーパーソンの発見と関係の可視化、「情報処理学会研究報告書」、情報処理学会、２００３、１７−２４
【非特許文献３】松田豊、友部博教、橋田浩一、中島秀之、石塚満、Ｗｅｂ上の情報からの人物関係ネットワークの抽出、「人口知能学会論文誌」、人口知能学会、２００５、Ｖｏｌ．２０、Ｎｏ．１、４６−５６
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述した従来技術による方法は、文書の意味的な類似性を解析する場合に適しているが、文書の集合全体が似ている場合にはうまく適用できず、文章の引用などの関係を抽出することはできない、という問題がある。
また、既存の特徴語抽出では日本語形態素解析技術を用いており、辞書登録の有無や使用する文法に依存するために新語や口語文章に弱く、また長い複合語やフレーズを扱うには不適切である、という問題がある。
本発明は上記の点に鑑みてなされたものであり、その目的は、日本語形態素解析や辞書を用いなくても、引用文や多用される複合語などの長い文字列に基づいて文書間の関連づけを行うことができる文書関連性分析装置、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００４】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様は、複数の入力された文書データの各々の組み合わせについて、所定の長さ以上の共通部分文字列を抽出し、抽出した共通部分文字列と抽出元の文書データを関連付け、抽出した共通部分文字列をキーとして、抽出元の文書データ群を共通部分文字列データベースに格納する共通部分文字列発見部と、前記共通部分文字列データベースに格納された前記共通部分文字列の各々の組み合わせについて、複数の共通部分文字列の中に共通に含まれる文字列のうち最も文字数が多い文字列である最大共通部分文字列を抽出し、抽出された前記最大共通部分文字列の長さが前記所定の長さ以上であれば、当該共通部分文字列と当該最大共通部分文字列を関連付け、変換元の共通部分文字列をキーとして、変換先の最大共通部分文字列を文字列変換部データベースに格納する部分文字列変換データベース作成部と、前記共通部分文字列データベースに格納された前記共通部分文字列をキーとして、前記文字列変換部データベースに格納された当該共通部分文字列に関連づけられた最大共通文字列と、前記共通部分文字列データベースに格納された当該共通部分文字列に関連づけられた文書データ群とを関連付け、前記文字列変換部データベースに格納された前記最大共通部分文字列をキーとして、当該最大共通部分文字列に関連付けられた文書データ群を結果データベースに格納する文書関連づけ部と、を有することを特徴とする。
【０００８】
また、本発明の一態様は、上記の文書関連性分析装置において、入力された文書データに含まれるテキスト情報を抽出し、テキストファイル形式の文書データに変換する前処理部を有することを特徴とする。
【００１０】
また、本発明の一態様は、共通部分文字列発見部と、部分文字列変換データベース作成部と、文書関連づけ部を備える文書関連性分析装置が行う文書関連性分析方法であって、前記共通部分文字列発見部が、複数の入力された文書データの各々の組み合わせについて、所定の長さ以上の共通部分文字列を抽出し、抽出した共通部分文字列と抽出元の文書データを関連付け、抽出した共通部分文字列をキーとして、抽出元の文書データ群を共通部分文字列データベースに格納する共通部分文字列発見ステップと、前記部分文字列変換データベース作成部が、前記共通部分文字列データベースに格納された前記共通部分文字列の各々の組み合わせについて、複数の共通部分文字列の中に共通に含まれる文字列のうち最も文字数が多い文字列である最大共通部分文字列を抽出し、抽出された前記最大共通部分文字列の長さが前記所定の長さ以上であれば、当該共通部分文字列と当該最大共通部分文字列を関連付け、変換元の共通部分文字列をキーとして、変換先の最大共通部分文字列を文字列変換部データベースに格納する部分文字列変換データベース作成ステップと、前記文書関連づけ部が、前記共通部分文字列データベースに格納された前記共通部分文字列をキーとして、前記文字列変換部データベースに格納された当該共通部分文字列に関連づけられた最大共通文字列と、前記共通部分文字列データベースに格納された当該共通部分文字列に関連づけられた文書データ群とを関連付け、前記文字列変換部データベースに格納された前記最大共通部分文字列をキーとして、当該最大共通部分文字列に関連付けられた文書データ群を結果データベースに格納する文書関連づけステップと、を有することを特徴とする。
【００１２】
また、本発明の一態様は、上記の文書関連性解析方法において、入力された文書データに含まれるテキスト情報を抽出し、テキストファイル形式の文書データに変換する前処理ステップを有することを特徴とする。
【００１３】
また、本発明の一態様は、コンピュータを、前記文書関連性分析装置として機能させるための文書関連性分析プログラムである。
【発明の効果】
【００１４】
本発明によれば、共通部分文字列発見部により所定の長さ以上の全ての共通部分文字列を抽出して、抽出した共通部分文字列と文書データを関連づけているので、日本語形態素解析や辞書を用いなくても、引用文や多用される複合語などの長い文字列に基づいて文書の集合を関連づけすることができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図１は、本発明の一実施形態による文書関連性分析装置１の構成図である。
文書関連性分析装置１は、前処理部１１と、共通部分文字列発見部１２と、部分文字列変換データベース作成部１３と、文書関連づけ部１４と、文書データを保持しているハードディスク１５と、共通部分文字列ＤＢ１６Ａ及び文字列変換ＤＢ１６Ｂを記憶するメモリ１７と、を含んで構成される。文書関連性分析装置１は、複数の文書データから各文書データに共通する文字列を抽出し、共通する文字列に基づいた文書間の関連づけを行う。
【００１６】
前処理部１１は、ハードディスク１５から文書データを取り出し、その文書データのテキスト情報を抽出して、テキストファイル形式の文書データに変換する。次に、前処理部は変換した文書データを共通部分文字列発見部１２へ出力する。このため、本発明では、テキストファイル以外にも、例えば、ＭＳ  Ｗｏｒｄファイル、ＰＤＦファイル、ＨＴＭＬファイルの様にテキストファイル形式に変換できる文書データを処理できる。
【００１７】
共通部分文字列発見部１２は、まず、複数の入力されたテキストファイル形式の文書データの各々の組み合わせについて、所定の長さｎ以上の任意の長さの共通部分文字列を抽出する。共通部分文字列とは、対となる文書データに共通して存在する文字列である。ここで、ｎの値は目的に応じて決定する。例えば、文章を取り出したい場合にはｎを大きく、複合語を取り出したい場合にはｎを小さくする。ｎは文字列を細かく分割しないように制御するためのもので、ｎの値は最低限の文字列長を指定する。ここで、ｎと抽出する共通部分文字列の文字列長は一致せずともよい。また各文書データ対に対して抽出する共通部分文字列は、１つでも、複数でもよい。次に、共通部分文字列発見部１２は、抽出した共通部分文字列をキーに、その共通部分文字列を持つ文書群を値として共通部分文字列ＤＢ１６Ａに格納する。例えば、共通部分文字列「会社員、○山△男容疑者（３０）」を持つ文書データ２２４と文書データ２６２があった場合には、キーは「会社員、○山△男容疑者（３０）」となり、値は｛２２４，２６２｝となる。この時、ｎの値を１２とする。ここで、共通部分文字列の文字列長は、ｎと一致するとは限らない。これにより、共通部分文字列発見部１２は、共通部分文字列と文書データを関連づける。
【００１８】
文書データを関連づける一番簡単な方法は、共通部分文字列発見部１２で共通部分文字列の抽出が終了した段階で、同じ共通部分文字列を持つ文書データ同士を関連づけることである。しかし、実際に抽出された共通部分文字列は、単に句読点や送り仮名の有無だけが違う文字列や、ある共通部分文字列の一部に含まれる文字列や、一部を共通する共通部分文字列が多く見られるので、これらを統一・整理する必要がある。
【００１９】
そこで、部分文字列変換データベース作成部１３は、得られた複数の類似する共通部分文字列を照合して、その中から文字列長が長く、頻繁に使用され、人間が読んでも妥当な文字列を再抽出する。具体的には、部分文字列変換データベース作成部１３は、共通部分文字列ＤＢ１６Ａに格納された共通部分文字列の各々の組み合わせについて、最大共通部分文字列を抽出し、抽出した最大共通部分文字列の長さが所定の値ｎ以上であれば、当該共通部分文字列と当該最大共通部分文字列を関連づける文字列変換ＤＢ１６Ｂを生成する。つまり、部分文字列変換ＤＢ１６Ｂは、共通部分文字列ＤＢ１８Ａに格納された共通部分文字列のうち、類似した文字列を統合するためのデータベースである。ここで、最大共通部分文字列とは、複数の共通部分文字列の中に共通に含まれる文字列であって、最も文字数が多い文字列である。
【００２０】
ここで、部分文字列変換データベース作成部１３にて生成される文字列変換ＤＢ１６Ｂは、変換元の文字列をキー、変換先の文字列を値としたテーブルである。例えば、共通部分文字列発見部１２で抽出された共通部分文字列「会社員、○山△男容疑者（３０）は」と「会社員、○山△男容疑者（３０）の」があった場合には、最大共通部分文字列「会社員、○山△男容疑者（３０）」が得られる。この時、キーが「会社員、○山△男容疑者（３０）は」、値が「会社員、○山△男容疑者（３０）」となるレコードと、キーが「会社員、○山△男容疑者（３０）の」、値が「会社員、○山△男容疑者（３０）」となるレコードが文字列変換ＤＢ１６Ｂに格納される。
【００２１】
文字関連づけ部１４は、共通部分文字列ＤＢ１６Ａと文字列変換ＤＢ１６Ｂを参照して文書の関連づけを行う。ここで、文字関連づけ部１４は、共通部分文字列発見部１２により抽出された共通部分文字列をキーとして、共通部分文字列に関連づけられた最大共通文字列と文書データを関連付ける。具体的には、文字関連づけ部１４は、共通部分文字列ＤＢ１６Ａに格納された共通部分文字列を、文字列変換ＤＢ１６Ｂを用いて当該共通部分文字列に関連づけられた最大共通文字列に変換し、変換された最大共通部分文字列と文書データを関連付ける。文字関連づけ部１４は、この処理を全ての共通部分文字列について行う。
【００２２】
例えば、文書データ２０７に「会社員、○山△男容疑者（３０）は」という共通部分文字列が含まれており、文書データ２２４と文書データ２６２に「会社員、○山△男容疑者（３０）」という共通部分文字列が含まれている場合には、文字関連づけ部１４は、まず、「会社員、○山△男容疑者（３０）は」を最大共通部分文字列「会社員、○山△男容疑者（３０）」に変換する。次に、文字関連づけ部１４は、キーが「会社員、○山△男容疑者（３０）」、値が｛２０７，２２４，２６２｝というレコードが含まれた結果ＤＢ２０を生成する。文字関連づけ部１４は、この処理を共通部分文字列ＤＢ１６Ａに格納された全ての共通部分文字列について行う。最後に、文字関連づけ部１４は、結果ＤＢ２０を結果として出力する。
【００２３】
図２は、本実施形態の共通部分文字列発見部１２における処理の流れの一例を表すフローチャートである。共通部分文字列発見部１２は、動的計画法（ｄｙｎａｍｉｃ  ｐｒｏｇｒａｍｍｉｎｇ）を用いて共通部分文字列を抽出する。ここでは、文書データ１と文書データ２の共通部分文字列を抽出する。ここで、文書データはテキストから構成されており、文書データ１はテキストｓ１、文書データ２はテキストｓ２から構成される。
【００２４】
共通部分文字列発見部１２は、ステップＳ１０１からＳ１１２の処理でテキストｓ１とｓ２を比較し、一致した文字列の長さを二次元配列ａ［ｉ］［ｊ］に記憶し、ａ［ｉ］［ｊ］に記憶された文字列の長さがｎと一致した場合には、発見された共通部分文字列の先頭位置ｐを位置リストＰに追加する。ここで、先頭位置ｐとは、例えば、抽出した共通部分文字列がテキストｓ１の何文字目、テキストｓ２の何文字目から開始するかを示す情報である。
次に、共通部分文字列発見部１２は、ステップＳ１１３からＳ１１５の処理で位置リストＰとａ［ｉ］［ｊ］から、得られた共通部分文字列のリストＬを作成する。
【００２５】
共通部分文字列発見部１２は、まずｉとｊを０に初期化する（ステップＳ１０１）。次に、ステップＳ１０２の処理では、共通部分文字列発見部１２は、ｉが文書データ１のテキストｓ１の長さ以上であるか否かを判定する。共通部分文字列発見部１２は、ｉがテキストｓ１の長さ以上である場合はステップＳ１１３へ、そうでない場合には次のステップＳ１０３の処理を行う。ステップＳ１０３では、共通部分文字列発見部１２は、ｊが文書データ２のテキストｓ２の長さ以上であるか否かを判定する。ｊがテキストｓ２の長さ以上である場合はｉに１加え、ｊを０に初期化して（ステップＳ１１２）、ステップＳ１０２の処理を行う。そうでない場合（ステップＳ１０３：Ｎｏ）には、共通部分文字列発見部１２は、テキストｓ１のｉ番目の文字とテキストｓ２のｊ番目の文字が一致するか（同じ文字であるか）否かを判定する（ステップＳ１０４）。一致しない場合は、共通部分文字列発見部１２は、ａ［ｉ］［ｊ］の値を０にして（ステップＳ１０５）、ステップＳ１１１の処理を行う。一致する場合は、共通部分文字列発見部１２は、ｉまたはｊが０か否かを判定する（ステップＳ１０６）。
【００２６】
共通部分文字列発見部１２は、ｉまたはｊが０である場合、ａ［ｉ］［ｊ］の値を１に（ステップＳ１０７）、そうでない場合は、ａ［ｉ］［ｊ］の値をａ［ｉ−１］［ｊ−１］＋１にする（ステップＳ１０８）。次に、共通部分文字列発見部１２は、ａ［ｉ］［ｊ］の値がｎか否かを判定する（ステップＳ１０９）。ａ［ｉ］［ｊ］の値がｎである場合には、共通部分文字列発見部１２は、現在の共通部分文字列の先頭位置ｐを位置リストＰに記憶する（ステップＳ１１０）。次のステップＳ１１１の処理では、共通部分文字列発見部１２は、ｊに１を加算して、ステップＳ１０３の処理を行う。
【００２７】
また、ステップＳ１１３の処理では、共通部分文字列発見部１２は、位置リストＰが空か否かを判定する。共通部分文字列発見部１２は、空でない場合には、共通文字列の先頭位置ｐを取り出す（ステップＳ１１４）。次に、共通部分文字列発見部１２は、二次元配列ａを走査して共通文字列の文字数を取得（ａ［ｉ］［ｊ］＝０の場合、ａ［ｉ−１］［ｊ−１］の値。）し、文字列の最後を抽出する。この際、ｐの位置がテキストｓ１のｋ文字目、テキストｓ２のｌ文字目だった場合には、共通部分文字列発見部１２は、ａ［ｋ］［ｌ］から走査を開始する。また、ｉはｋより大きく、ｊはｌより大きい値である。共通部分文字列発見部１２は、文字列の先頭位置ｐから文字列の最後（あるいは、テキストｓ１またはテキストｓ２の終端）まで文字をコピーし、得られた文字列ｓ３を共通部分文字列リストＬに追加する（ステップＳ１１５）また、位置リストＰが空の場合には（ステップＳ１１３：Ｙｅｓ）、処理を終了する。
【００２８】
このようにして、共通部分文字列発見部１２は、文書データ１と文書データ２の共通部分文字列を抽出する。共通部分文字列発見部１２は、この処理を文書データの集合の全ての文書データ対に対して行い、抽出された共通部分文字列リストＬに基づいて、共通部分文字列ＤＢ１６Ａを生成する。
【００２９】
図３は、本実施形態の部分文字列変換データベース作成部１３における処理の流れの一例を表すフローチャートである。部分文字列変換データベース作成部１３は、あらかじめ空のリストＬ２を作成しておく。
部分文字列変換データベース作成部１３は、まず、共通部分文字列ＤＢ１６Ａから共通部分文字列のリストＬ１を作成する（ステップＳ２０１）。具体的には、部分文字列変換データベース作成部１３は、共通部分文字列ＤＢ１６Ａのキーとなる共通部分文字列をリストＬ１に順次追加する。例えば、キーが「ａｂｃｄｅｘｙｚ」であるレコードと、「ａｂｃｄｅｆｄｇ」であるレコードと、「ｈｉｊｋｌｍ」であるレコードと、が共通部分文字列ＤＢ１６Ａに格納されていた場合には、「ａｂｃｄｅｘｙｚ」と、「ａｂｃｄｅｆｄｇ」と、「ｈｉｊｋｌｍ」と、が含まれるリストＬ１が生成される。
【００３０】
次に、部分文字列変換データベース作成部１３は、リストＬ１の要素数が２以上か否かを判定（ステップＳ２０２）し、２未満なら処理を終了する。２以上である場合（ステップＳ２０２：Ｙｅｓ）、部分文字列変換データベース作成部１３は、リストＬ１の先頭から文字列ｓ１１を取り出す（ステップＳ２０３）。次に、ステップＳ２０４に進むと、部分文字列変換データベース作成部１３は、リストＬ１の要素数が１以上であるか否かを判定する。１未満である場合、部分文字列変換データベース作成部１３は、ステップＳ２１１の処理を行う。１以上である場合は、部分文字列変換データベース作成部１３は、リストＬ１の先頭から文字列Ｓ１２を取り出す（ステップＳ２０５）。次に、部分文字列変換データベース作成部１３は、文字列ｓ１１とｓ１２の最大共通部分文字列ｓ１３（例えば、ｓ１１が「ａｂｃｄｅｘｙｚ」、ｓ１２が「ａｂｃｄｅｆｄｇ」だった場合、「ａｂｃｄｅ」）を抽出する（ステップＳ２０６）。
【００３１】
次に、部分文字列変換データベース作成部１３は、抽出した文字列ｓ１３の長さがｎ未満であるか否かを判定する（ステップＳ２０７）。ここで、ｎの値は、共通部分文字列発見部１２で使用したｎの値と同じである。ｎ未満である場合（ステップＳ２０７：Ｙｅｓ）、部分文字列変換データベース作成部１３は、リストＬ２にｓ１２を追加してＳ２０４の処理を行う。ｎ以上である場合（ステップＳ２０７：Ｎｏ）、部分文字列変換データベース作成部１３は、ｓ１１またはｓ１２が文字変換ＤＢ１６Ｂに登録されていない（キーがｓ１１またはｓ１２のレコードが存在しない）、または、すでに登録されている場合には、変換後の文字列（キーｓ１１またはｓ１２に対応する値）よりｓ１３の文字数の方が少ないか否かを判定する（ステップＳ２０９）。ステップＳ２０９でＹｅｓの場合、部分文字列変換データベース作成部１３は、文字変換ＤＢ１６Ｂにキーがｓ１１、値がｓ１３のレコードと、キーがｓ１２、値がｓ１３のレコードの登録を行い、リストＬ２にｓ１３を追加する（ステップＳ２１０）。ステップＳ２０９でＮｏの場合、リストＬ１をリストＬ２に置き換えて（ステップＳ２１１）、繰り返し上記の処理を行う（ステップＳ２０２）。
このようにして部分文字列変換データベース作成部１３は、文字変換ＤＢ１６Ｂを作成する。
【００３２】
図４は、本実施形態の文書関連づけ部１４における処理の流れの一例を表すフローチャートである。文書関連づけ部１４は、あらかじめ空のデータベースである結果ＤＢ２０を作成しておく。結果ＤＢ２０は、文字列をキー、文書群を値としたテーブルである。
文書関連づけ部１４は、まず、共通部分文字列ＤＢ１６Ａが空か否か（下記に示す処理を全てのレコードについて行ったか）を判定する（ステップＳ３０１）。文書関連づけ部１４は、共通部分文字列ＤＢ１６Ａが空の場合には、処理を終了し、そうでない場合には、キーとなっている共通部分文字列ｓ２１を取り出す（ステップＳ３０２）。次に、文書関連づけ部１４は、ｓ２１に文字列変換ＤＢ１６Ｂを繰り返し適用して、文字列ｓ２２を得る（ステップＳ３０３）。ここで、例えば、文字列変換ＤＢ１６Ｂに、キーがｓ２１（例えば、「ａｂｃｄｅｆｇ」）、値が「ａｂｃｄｅ」のレコードが存在した場合、ｓ２２は、「ａｂｃｄｅ」になる。また、文字列変換ＤＢ１６Ｂに、キーが「ａｂｃｄｅ」、値が「ａｂｃｄ」のレコードが更に存在した場合には、ｓ２２は、「ａｂｃｄ」となる。
【００３３】
次のステップＳ３０４では、文書関連づけ部１４は、共通部分文字列ＤＢ１６Ａからｓ２１をキーに文書群Ｄ１を取り出す。次に、文書関連づけ部１４は、結果ＤＢ２０からｓ２２をキーに文書群Ｄ２を取り出す（ステップＳ３０５）。次に、文書関連づけ部１４は、文書群Ｄ２が空か否かを判定し（ステップＳ３０６）、空の場合には、キーがｓ２２、値がＤ１のレコードを結果ＤＢ２０に追加する（ステップＳ３０７）。そうでない場合には、文書関連づけ部１４は、Ｄ２に含まれないがＤ１に含まれる文書（例えば、Ｄ１を｛１，３｝、Ｄ２を｛１，２｝とすると、｛３｝になる）をＤ２に追加する（ステップＳ３０８）。（これによりキーｓ２２に対応する値は｛１，２，３｝となるレコードが結果ＤＢ２０に登録される。）この処理を共通部分文字列ＤＢ１６Ａが空になるまで繰り返す。
このようにして、文書関連づけ部１４は、文書の関連づけを行う。
【００３４】
図５は、文書関連づけ部１４で生成された結果ＤＢ２０から得られたグラフ構造を可視化した例を示す概念図である。この図に示すグラフ構造は、結果ＤＢ２０に保存された文書データと共通部分文字列をノードとする二部グラフとして表現したものである。
この図に示される斜線で示されたノードは文書データであり、その横の数字は文書番号である。また、白いノードは抽出された共通部分文字列を示し、その横に共通部分文字列が表示されている。互いに関係がある文書データのノードと共通部分文字列のノードはエッジで接続されている。この図に示す画面では、例えば、共通部分文字列「会社員、○山△男容疑者（３０）」を含む文書データは、２２４，２６２，２０７であり、文書データ２０７は、共通部分文字列「○○市の××△△施設」を共に含む。なお、この図において、文字数が１７文字以上の共通部分文字列は、省略して示されている。例えば、図中の「××○○事務長、□田○子・・・［２０］」は、抽出された共通部分文字列の文字数は２０文字だが、「××○○事務長、□田○子」より後の文字は「・・・」で省略されている。ここで、「［２０］」は、この共通部分文字列の文字数である。また、図中の「群馬県六合村（くにむら）・・・［１７］」についても同様である。
【００３５】
結果ＤＢ２０はこの他にも、ある検索語や文書に関連する文書や文章の提示、文章中でよく使われているフレーズの発見・提示、情報の伝播経路の検出、などの目的に使用することができる。
【００３６】
このように、本実施形態によれば、共通部分文字列発見部１２により所定の長さ以上の共通部分文字列を抽出して、抽出した共通部分文字列と文書データを関連づけているので、日本語形態素解析や辞書を用いなくても、引用文や多用される複合語などの長い文字列に基づいて文書の集合を関連づけすることができる。
また、共通部分文字列を最大共通部分文字列に変換して文書データと関連づけているため、単に句読点や送り仮名の有無だけが違う文字列や、ある共通部分文字列の一部に含まれる文字列や、一部を共通する共通部分文字列を一つの最大共通部分文字列として統一して文書データと関連づけすることができる。これにより、日本語形態素解析を用いなくても、文書の関連の根拠として妥当な文字列を示すことができる。つまり、文書の関連に妥当な見出し語、及び文書の集合でよく用いられているフレーズを容易に抽出できる。
【００３７】
また、図１に示す文書関連性分析装置の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、文書関連性分析処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００３８】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００３９】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
例えば、前処理部１１にてファイルを読み込む際に、改行文字や文字下げ部分の削除などを行ってもよい。これにより、改行の有無・改行位置の違い・文字下げなどの文章とは無関係な書式情報を取り除くことができる。
また、共通部分文字列発見部１２及び部分文字列変換データベース作成部１３において、文字列長を比較する前に、共通部分文字列の両端の空白、孤立非開始・非終端括弧（例えば、先頭の「）」、末尾の「（」など）、部分文字列を囲む括弧（例えば「（文字列）」）を削除してもよい。この理由は、これらは文章を読みやすくするための記号類であるだけでなく、共通部分文字列に付いたり、付かなかったりして、処理の妨げになり易いからである。
また、文書関連づけ部１４において、ストップワード（処理の対象にしない単語）を含む共通部分文字列を取り除く処理を行ってもよい。例えば、新聞記事データ中には、「社会面に関連記事」のように記事の内容とは関係ないフレーズが多く出現するが、このようなフレーズを多数抽出するのを回避するためである。
また、現実の文書データの集合には、文書の複製が存在することが多く、複製が存在すると相互に関連づけられてしまう。また、文書の出現頻度が低い場合には、共通部分文字列発見部１２における共通部分文字列の抽出結果が必ずしも妥当ではないことがある。この問題を解決するため、文書関連づけ部１４において、文書の類似度が非常に高い文書対や、抽出された共通部分文字列の出現文書数（ｄｏｃｕｍｅｎｔ  ｆｒｅｑｕｅｎｃｙ）が非常に低いものを除外してもよい。この処理によって文書関連づけ処理の精度を向上することができる。
また、図３、図４、図５に示したフローチャートは、高速化や並列化に対応したアルゴリズムに書き換えてもよい。
なお、本実施形態の実施例は、例えば、Ｗｅｂページ（例えば、個人のウェブログやホームページなど）をカテゴリー分類して自動的にリンク集を作成する装置や、Ｗｅｂページと関連性の高い広告を抽出して自動的にその広告をそのＷｅｂページに表示する装置などに応用することができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態による文書関連性分析装置の構成図である。
【図２】本実施形態の共通部分文字列発見部における処理の流れの一例を表すフローチャートである。
【図３】本実施形態による部分文字列変換データベース作成部における処理の流れの一例を表すフローチャートである。
【図４】本実施形態による文書関連づけ部における処理の流れの一例を表すフローチャートである。
【図５】本実施形態による文書関連づけ部で生成された結果ＤＢから得られたグラフ構造を可視化した例を示す概念図である。
【符号の説明】
【００４１】
１…文書関連性分析装置  １１…前処理部  １２…共通部分文字列発見部  １３…部分文字列変換データベース作成部  １４…関連づけ部  １５…ハードディスク  １６…メモリ  １６Ａ…共通部分文字列ＤＢ  １６Ｂ…部分変換ＤＢ  ２０…結果ＤＢ
【図１】
0005106042.tif 000002
【図２】
0005106042.tif 000003
【図３】
0005106042.tif 000004
【図４】
0005106042.tif 000005
【図５】
0005106042.tif 000006