(57)【要約】【課題】辞書を必要とせずにドキュメントよりキーワードを抽出する。【解決手段】キーワード抽出装置は、ドキュメント群を受け、ドキュメント群から後述するサフィックスファイルを作成するサフィックスファイル作成部２２と、サフィックスファイルを記憶するサフィックスファイル記憶部２４と、ドキュメント群に含まれる任意のドキュメントまたはドキュメント群と同じ分野のドキュメントを受け、「、」や「。」などの文章の切れ目でドキュメント分割する区切り部２８と、サフィックスファイルおよび区切り部２８より供給された文章に基づいて、文章を適宜区切り、後述する出現頻度α、出現集中度βおよび重みなどの計算を行なうスコア計算部２６と、演算結果を記憶する演算結果記憶部３０と、演算結果に基づいて、ドキュメントをキーワードの候補に分割していくドキュメント分割部３２と、キーワード候補を絞込む絞込み部３４とを含む。【選択図】　　　　図１
2004013726.tif 000002
【特許請求の範囲】
【請求項１】
ドキュメント群における各ドキュメントに含まれる部分文字列の前記ドキュメント群中での出現頻度を求めるための出現頻度算出手段と、
前記部分文字列の前記ドキュメント群中での出現集中度を求めるための出現集中度算出手段と、
前記出現頻度算出手段および前記出現集中度算出手段に接続され、前記出現頻度および前記出現集中度に基づいて、入力されたドキュメントからキーワードを抽出するための第１のキーワード抽出手段とを含む、キーワード抽出装置。
【請求項２】
前記第１のキーワード抽出手段は、
入力されたドキュメントを部分文字列に分割するためのドキュメント分割手段と、
前記ドキュメント分割手段、前記出現頻度算出手段および前記出現集中度算出手段に接続され、前記出現頻度および前記出現集中度に基づいて、前記部分文字列の単語らしさを算出するための単語らしさ算出手段と、
前記単語らしさ算出手段に接続され、前記単語らしさの合計値に基づいて、前記ドキュメントよりキーワードを抽出するための第２のキーワード抽出手段とを含む、請求項１に記載のキーワード抽出装置。
【請求項３】
前記単語らしさ算出手段は、前記ドキュメント分割手段、前記出現頻度算出手段および前記出現集中度算出手段に接続され、前記出現頻度、前記出現集中度、前記部分文字列の長さおよび前記ドキュメントの平均サイズに基づいて、前記部分文字列の単語らしさを算出するための手段を含む、請求項２に記載のキーワード抽出装置。
【請求項４】
さらに、前記第２のキーワード抽出手段、前記出現頻度算出手段および前記出現集中度算出手段に接続され、前記第２のキーワード抽出手段で抽出されたキーワードを、前記出現頻度、前記出現集中度および前記部分文字列の長さに基づいて絞り込むための絞込み手段を含む、請求項２に記載のキーワード抽出装置。
【請求項５】
さらに、前記入力されたドキュメントを句読点で区切り、前記ドキュメント分割手段に供給するための区切り手段を含む、請求項２に記載のキーワード抽出装置。
【請求項６】
前記ドキュメント分割手段は、先頭文字が予め定められた文字より始まらないように、入力されたドキュメントを部分文字列に分割するための手段を含む、請求項２に記載のキーワード抽出装置。
【請求項７】
前記ドキュメント分割手段は、部分文字列の長さが予め定められた文字数以上にならないように、入力されたドキュメントを部分文字列に分割するための手段を含む、請求項２に記載のキーワード抽出装置。
【請求項８】
前記ドキュメント分割手段は、
前記単語らしさ算出手段に接続され、前記単語らしさ算出手段で算出された前記ドキュメントの所定位置より開始する第１の部分文字列の第１の単語らしさから、前記第１の部分文字列を１文字伸ばして得られる第２の部分文字列の第２の単語らしさへの変化に基づいて、前記所定位置を単語の切れ目とする妥当性の尺度を算出する妥当性算出手段と、
前記妥当性算出手段に接続され、前記所定位置から前後方向に対して前記第１の部分文字列に１文字伸ばした場合に得られる前記妥当性の尺度を合計し、前記妥当性の尺度の合計がしきい値以上である前記所定箇所を単語の切れ目として抽出する切れ目抽出手段と、
前記切れ目抽出手段に接続され、前記抽出された単語の切れ目を前記単語の開始点および終了点とする部分文字列を切り出す部分文字列切出手段とを含む、請求項２に記載のキーワード抽出装置。
【請求項９】
さらに、前記出現頻度算出手段に接続され、前記出現頻度算出手段で算出された第１の部分文字列の第１の出現頻度と、前記第２の部分文字列の第２の出現頻度との比により、前記第１の部分文字列の出現確率を算出する出現頻度算出手段を含み、
前記妥当性算出手段は、前記第１の単語らしさから前記第２の単語らしさへの変化に加えて、前記出現確率にも基づいて前記所定位置を単語の切れ目とする妥当性の尺度を算出する、請求項８に記載のキーワード抽出装置。
【請求項１０】
前記部分文字列切出手段は、さらに、前記抽出された単語の切れ目を前記単語の開始点および終了点とする部分文字列であって、カタカナ、英数字、および漢字からなる文字列の前後に１文字だけ付く文字を助詞と判断し、前記助詞を取除いた部分文字列を切り出す、請求項８に記載のキーワード抽出装置。
【請求項１１】
前記第２のキーワード抽出手段は、さらに前記出現頻度算出手段に接続され、前記単語らしさの合計値に基づいて、前記出現頻度算出手段で算出された出現頻度に依存して前記ドキュメントよりキーワードを抽出する、請求項２に記載のキーワード抽出装置。
【請求項１２】
ドキュメント群における各ドキュメントに含まれる部分文字列の前記ドキュメント群中での出現頻度を求めるための出現頻度算出手段と、
前記部分文字列の前記ドキュメント群中での出現集中度を求めるための出現集中度算出手段と、
前記出現頻度算出手段および前記出現集中度算出手段に接続され、前記出現頻度および前記出現集中度に基づいて、入力されたドキュメントからキーワードを抽出するためのキーワード抽出手段と、
前記キーワード抽出手段に接続され、前記ドキュメント群中の各ドキュメントについて、前記キーワード抽出手段で抽出された各キーワードとの一致度を計算するための一致度計算手段と、
前記一致度計算手段に接続され、前記一致度に基づいて、前記ドキュメント群中の各ドキュメントについて、前記入力されたドキュメントとの類似度を計算するための類似度計算手段と、
前記類似度計算手段に接続され、前記類似度に基づいて、前記入力されたドキュメントと関連するドキュメントを前記ドキュメント群より抽出するための手段とを含む、情報検索装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はキーワード抽出装置および情報検索装置に関し、特に、辞書を必要とせずにドキュメント群からキーワードを抽出可能なキーワード抽出装置および情報検索装置に関する。
【０００２】
【従来の技術】
最新の技術情報の速報やニュースなどを整理する際には、検索のために記事の内容を特定できるキーワードの付与が行なわれている。キーワードを付与する作業を自動化できれば、キーワードが付与されていないドキュメントの操作も容易になる。これまで検討されているキーワード自動抽出は、辞書を用いて形態素解析を行ない、その後、品詞情報と頻度情報とをもとにキーワードを弁別する手法により行なわれている。
【０００３】
【発明が解決しようとする課題】
しかし、辞書を用いる手法は日々新しい単語が生まれるインターネット時代の情報処理としては問題がある。その理由として、処理の自動化が必要な最新の文章からキーワードを辞書に登録し続ける必要があるため生産性が悪いことと、辞書に登録されていない全く未知の用語に対する汎用性がないことが挙げられる。
【０００４】
また、従来のキーワード抽出方法では、正しく単語に分割されない場合があり、そのために、単語の前後の一部の文字が切れた部分文字列に分割されてしまうという問題がある。また、助詞や助動詞が単語の前後に含まれて分割されてしまうという問題もある。
【０００５】
本発明は上述の課題を解決するためになされたもので、その目的は、辞書を必要とせずにドキュメントよりキーワードを抽出可能なキーワード抽出装置を提供することである。
【０００６】
本発明の他の目的は、辞書を必要とせずにあるドキュメントに関連したドキュメントをドキュメント群から抽出可能な情報検索装置を提供することである。
【０００７】
【課題を解決するための手段】
本発明のある局面に従うキーワード抽出装置は、ドキュメント群における各ドキュメントに含まれる部分文字列のドキュメント群中での出現頻度を求めるための出現頻度算出手段と、部分文字列のドキュメント群中での出現集中度を求めるための出現集中度算出手段と、出現頻度算出手段および出現集中度算出手段に接続され、出現頻度および出現集中度に基づいて、入力されたドキュメントからキーワードを抽出するための第１のキーワード抽出手段とを含む。
【０００８】
部分文字列の出現頻度および出現集中度に基づいて、キーワードを抽出する。このため、辞書を必要とせずにドキュメントよりキーワードを抽出することができる。
【０００９】
好ましくは、第１のキーワード抽出手段は、入力されたドキュメントを部分文字列に分割するためのドキュメント分割手段と、ドキュメント分割手段、出現頻度算出手段および出現集中度算出手段に接続され、出現頻度および出現集中度に基づいて、部分文字列の単語らしさを算出するための単語らしさ算出手段と、単語らしさ算出手段に接続され、単語らしさの合計値に基づいて、ドキュメントよりキーワードを抽出するための第２のキーワード抽出手段とを含む。
【００１０】
さらに好ましくは、単語らしさ算出手段は、ドキュメント分割手段、出現頻度算出手段および出現集中度算出手段に接続され、出現頻度、出現集中度、部分文字列の長さおよびドキュメントの平均サイズに基づいて、部分文字列の単語らしさを算出するための手段を含む。
【００１１】
ドキュメントの平均サイズが小さくなると、出現集中度が０に近くなる傾向にある。このため、ドキュメントの平均サイズで単語らしさの計算方法を変えることにより、出現頻度が小さくなっても適切な単語らしさを計算することができる。
【００１２】
さらに好ましくは、キーワード抽出装置は、さらに、第２のキーワード抽出手段、出現頻度算出手段および出現集中度算出手段に接続され、第２のキーワード抽出手段で抽出されたキーワードを、出現頻度、出現集中度および部分文字列の長さに基づいて絞り込むための絞込み手段を含む。
【００１３】
さらに好ましくは、キーワード抽出装置は、さらに、入力されたドキュメントを句読点で区切り、ドキュメント分割手段に供給するための区切り手段を含む。
【００１４】
さらに好ましくは、ドキュメント分割手段は、先頭文字が予め定められた文字より始まらないように、入力されたドキュメントを部分文字列に分割するための手段を含む。
【００１５】
さらに好ましくは、ドキュメント分割手段は、部分文字列の長さが予め定められた文字数以上にならないように、入力されたドキュメントを部分文字列に分割するための手段を含む。
【００１６】
さらに好ましくは、ドキュメント分割手段は、単語らしさ算出手段に接続され、単語らしさ算出手段で算出されたドキュメントの所定位置より開始する第１の部分文字列の第１の単語らしさから、第１の部分文字列を１文字伸ばして得られる第２の部分文字列の第２の単語らしさへの変化に基づいて、所定位置を単語の切れ目とする妥当性の尺度を算出する妥当性算出手段と、妥当性算出手段に接続され、所定位置から前後方向に対して第１の部分文字列に１文字伸ばした場合に得られる妥当性の尺度を合計し、妥当性の尺度の合計がしきい値以上である所定箇所を単語の切れ目として抽出する切れ目抽出手段と、切れ目抽出手段に接続され、抽出された単語の切れ目を単語の開始点および終了点とする部分文字列を切り出す部分文字列切出手段とを含む。
【００１７】
文字列を分割する際に、単語の前後の一部の文字が切れた部分文字列に分割されたり、助詞や助動詞が単語の前後に含まれて分割される確率が少なくなる。
【００１８】
さらに好ましくは、キーワード抽出装置は、さらに、出現頻度算出手段に接続され、出現頻度算出手段で算出された第１の部分文字列の第１の出現頻度と、第２の部分文字列の第２の出現頻度との比により、第１の部分文字列の出現確率を算出する出現頻度算出手段を含み、妥当性算出手段は、第１の単語らしさから第２の単語らしさへの変化に加えて、出現確率にも基づいて所定位置を単語の切れ目とする妥当性の尺度を算出する。
【００１９】
文字列を分割する際に、単語の前後の一部の文字が切れた部分文字列に分割されたり、助詞や助動詞が単語の前後に含まれて分割される確率が少なくなる。
【００２０】
さらに好ましくは、部分文字列切出手段は、さらに、抽出された単語の切れ目を単語の開始点および終了点とする部分文字列であって、カタカナ、英数字、および漢字からなる文字列の前後に１文字だけ付く文字を助詞と判断し、助詞を取除いた部分文字列を切り出す。
【００２１】
文字列を分割する際に、助詞や助動詞が単語の前後に含まれて分割される確率が少なくなる。
【００２２】
さらに好ましくは、第２のキーワード抽出手段は、さらに出現頻度算出手段に接続され、単語らしさの合計値に基づいて、出現頻度算出手段で算出された出現頻度に依存してドキュメントよりキーワードを抽出する。
【００２３】
単語に分割した後のキーワード判定の精度が向上する。
本発明の他の局面に従う情報検索装置は、ドキュメント群における各ドキュメントに含まれる部分文字列のドキュメント群中での出現頻度を求めるための出現頻度算出手段と、部分文字列のドキュメント群中での出現集中度を求めるための出現集中度算出手段と、出現頻度算出手段および出現集中度算出手段に接続され、出現頻度および出現集中度に基づいて、入力されたドキュメントからキーワードを抽出するためのキーワード抽出手段と、キーワード抽出手段に接続され、ドキュメント群中の各ドキュメントについて、キーワード抽出手段で抽出された各キーワードとの一致度を計算するための一致度計算手段と、一致度計算手段に接続され、一致度に基づいて、ドキュメント群中の各ドキュメントについて、入力されたドキュメントとの類似度を計算するための類似度計算手段と、類似度計算手段に接続され、類似度に基づいて、入力されたドキュメントと関連するドキュメントをドキュメント群より抽出するための手段とを含む。
【００２４】
入力されたドキュメントから辞書を用いずにキーワードが抽出され、そのキーワードに関連するドキュメントが抽出される。このため、辞書を必要とせずに入力されたドキュメントに関連するドキュメントを抽出することができる。
【００２５】
【発明の実施の形態】
［実施の形態１］
図１を参照して、本発明の実施の形態に係るキーワード抽出装置は、ドキュメント群を受け、ドキュメント群から後述するサフィックスファイルを作成するサフィックスファイル作成部２２と、サフィックスファイル作成部２２に接続され、サフィックスファイル作成部２２で作成されたサフィックスファイルを記憶するサフィックスファイル記憶部２４と、ドキュメント群に含まれる任意のドキュメントまたはドキュメント群と同じ分野のドキュメントを受け、「、」や「。」などの文章の切れ目でドキュメント分割する区切り部２８と、サフィックスファイル記憶部２４および区切り部２８に接続され、サフィックスファイル記憶部２４に記憶されたサフィックスファイルおよび区切り部２８より供給された文章に基づいて、文章を適宜区切り、後述する出現頻度α、出現集中度βおよび重みなどの計算を行なうスコア計算部２６と、スコア計算部２６に接続され、スコア計算部２６での演算結果を記憶する演算結果記憶部３０と、演算結果記憶部３０に接続され、演算結果記憶部３０に記憶された演算結果に基づいて、ドキュメントをキーワードの候補に分割していくドキュメント分割部３２と、ドキュメント分割部３２に接続され、キーワード候補を絞込み、キーワードを抽出する絞込み部３４とを含む。
【００２６】
［本発明の概要］
本発明は文字列の出現頻度に加えて出現集中度を示す統計量を用いることを特徴とする。本発明にかかるキーワード抽出においては、すべての部分文字列について出現集中度を求める必要があるため、単純に求めると計算量が膨大になる。我々は、多数のドキュメント内の文字列の、出現集中度を求めるための「サフィックスファイル」を用いる技術を既に確立しており、これを利用する。
【００２７】
［キーワード抽出の原理］
出現集中度はａｄａｐｔａｔｉｏｎとして知られる統計量であり、「ある単語が１つのドキュメントに現れたという条件で、同じ単語がもう一度そのドキュメント内に出現する確率：Ｐ（２回出現｜１回出現）」の推定値である。この確率を推定するために、対象の文字列ｘに関して、「その文字列ｘを含むドキュメントの数：ｄｆ（ｘ）」と「その文字列ｘを２回以上含むドキュメントの数：ｄｆ２（ｘ）」を数え上げる。そして、ベイズの規則を考慮した次式（１）より上記した確率を推定する。ここでＮは全ドキュメント数である。
【００２８】
【数１】
2004013726.tif 000003
このｄｆ（ｘ）、ｄｆ２（ｘ）の引数ｘは、すべての部分文字列を取り得る。単純な方法では大規模なテキストを扱う際にメモリ量または計算量のどちらかが実際的ではない程大きなものになる。
【００２９】
そこで、後述するサフィックスファイルとして知られるデータ構造を利用して、部分文字列の抽出を行なう。サフィックスファイルは、テキストの５倍のメモリ空間を要するが、すべての部分文字列の位置がｌｏｇ（ｎ）（ｎ：テキストの大きさ）のオーダの計算量で特定できる。
【００３０】
サフィックスファイルの作成法と利用法については、「Ｍ．Ｙａｍａｍｏｔｏ　ａｎｄ　Ｋ．Ｗ．Ｃｈｕｒｃｈ，　Ｕｓｉｎｇ　Ｓｕｆｆｉｘ　Ａｒｒａｙｓ　ｔｏ　Ｃｏｍｐｕｔｅ　Ｔｅｒｍ　Ｆｒｅｑｕｅｎｃｙ　ａｎｄ　Ｄｏｃｕｍｅｎｔ　Ｆｒｅｑｕｅｎｃｙ　ｆｏｒ　Ａｌｌ　Ｓｕｂｓｔｒｉｎｇｓ　ｉｎ　ａ　Ｃｏｒｐｕｓ，　Ｉｎ　ｐｒｏｃｅｅｄｉｎｇ　ｏｆ　６ｔｈ　Ｗｏｒｋｓｈｏｐ　ｏｎ　Ｖｅｒｙ　Ｌａｒｇｅ　Ｃｏｒｐｏｒａ，　Ｅｄ．　Ｅｕｇｅｎｅ　Ｃｈａｒｎｉａｋ，　Ｍｏｔｒｅａｌ，　ｐｐ２８−３７，　１９９８」にその詳細が開示されている。
【００３１】
サフィックスファイルを使うと、ある文字列がドキュメントデータベース内に出現する回数を高速に求めることができる。サフィックスファイルは、すべてのドキュメントにおいて生じうる部分の文字列を、文字コード順に並べ替えて、通し番号（サフィックス）をつけておくことで実現する。文字列がドキュメントデータベースに出現する回数ｔｆは、その文字列と一致する文字列がサフィックスファイルの中にいくつあるかを算出することで求められる。
【００３２】
具体的には、まず、ある文字列と一致する文字列が出現するサフィックスの最小値ｍｉｎおよび最大値ｍａｘをそれぞれ二分探索法により求める。一致する文字列がなければ、当該文字列がドキュメントデータベースに出現する回数は０である。サフィックスの最小値ｍｉｎおよび最大値ｍａｘとが求まれば、当該文字列が出現する回数ｔｆはｔｆ＝ｍａｘ−ｍｉｎ＋１として求められる。
【００３３】
ドキュメントデータベースのドキュメントは、ドキュメント番号によって互いに区別されるものとし、サフィックスファイルに登録する部分文字列にはこのドキュメント番号をつけておく。これによって、ある部分文字列を含むドキュメントを効率的に検索することができる。また、ある部分文字列を含むドキュメントの数ｄｆは、重複するドキュメント番号の数を数え上げ、その数をｔｆから引くことによって計算することができる。またこのとき、この部分文字列を２回以上含むドキュメント数がｄｆ２である。
【００３４】
ここで、文字列ｘの出現確率の推定値（出現頻度）であるｄｆ（ｘ）／Ｎをαとし、ａｄａｐｔａｔｉｏｎを推定するｄｆ２（ｘ）／ｄｆ（ｘ）の推定値（出現集中度）をβとする。文字列の出現がポアソン分布に従うと仮定すると、αおよびβは同じ値になる。実際のコーパスではβの値が大きく、キーワードと認める文字列ならαに比べその差は特に大きくなることが観測できる。
【００３５】
出現集中の様子として、ここでは「ロボットについて」という語の部分文字列ｘの一例とそれに対応するｄｆ、ｄｆ２、α（＝ｄｆ／Ｎ）およびβ（＝ｄｆ２／ｄｆ）とを図２に示す。ここで観測できることは二つある。一つは、キーワードを構成する文字列では、αに比べてβが大きいということである。このことは、キーワードとなる語はドキュメント中に複数回出現することが多いことを表わす。またこのことは、図２においても容易に確認できる。もう一つは、語の境界を越えるとβが小さくなることである。これは、ある語は常に同じ語として表われるが、その後に続く文字が様々に変化し得ることから導かれる。これは、図２において、部分文字列ｘが「ロボット」から「ロボットに」に変化すると、それまではほぼ一定値のβが小さくなっていることからも確認できる。
【００３６】
βの値をもとに、文字列の単語らしさ（重み）を推定することで単語の分割を行なう。重み（ｓｃｏｒｅ）の推定は図３のように分類される。ここでは、ｄｆ２があまりに少ない文字列ｘ、すなわちｄｆ２が３以下の場合には（Ｓ２でＮＯ）、単語とみなさず重みを低く定義している（Ｓ４）。単語と認められるとき、すなわちｄｆ２が３より大きくかつｔｆがＮ以下の場合（Ｓ２でＹＥＳかつＳ６でＮＯ）、βの値を推定し、その対数値を重みとする（Ｓ８）。ただし、総出現数ｔｆがＮを超えるところでは、単語らしさが正しくβに反映しない。これは、文章において助詞などは、多数出現するにも関わらず語にはならないということを意味する。そこで、ｔｆ＞Ｎの条件を満たすところでは単語らしさが飽和するとし（Ｓ６でＹＥＳ）、定数０．５の対数を重みとする（Ｓ１０）。すべての文字列分割において、以上のように重みを求め、各文字列の重みの総和が最大となる分割を求める。
【００３７】
ここで、単語らしさを決めるためにいくつかのしきい値を用いた。すべての単語を網羅しなければならない辞書とは異なり、サンプルの単語から値を求めることができるため、これは、新しいドキュメントでも実行できる操作である。たとえば、βの値はドキュメントの長さの影響を受けるが、このしきい値の決定により対応できる。
【００３８】
そこでこの方法で分割した例および形態素解析を用いて分割した例を図４および図５にそれぞれ示す。助詞・助動詞の分割は不自然であるが、キーワードは正確に抽出できていることが観測できる。
【００３９】
［文字列の分割の他の実施形態］
さらに、上述の分割方法とは異なる、他の分割方法の実施の形態を以下に述べる。
【００４０】
すなわち、他の実施の形態における分割方法では、単語の始まりの切れ目と終わりの切れ目とをそれぞれ別に求めることで、文字列の分割を可能にする。具体的には、まず、文字列Ｘのある開始点（ｓｕｂＳｔｒ）から切出される部分文字列の重みｓｃｏｒｅ（ｓｕｂＳｔｒ）と、部分文字列を１文字（α）伸ばして得られる部分文字列の重みｓｃｏｒｅ（ｓｕｂＳｔｒ＋α）とを計算する。また、開始点ｓｕｂＳｔｒの次に文字αが出現する確率ｐｒｏｂ（ｓｕｂＳｔｒ＋α）を計算する。ただし、文字列Ｘの重み（ｓｃｏｒｅ）は、
ｓｃｏｒｅ（Ｘ）＝ｌｏｇ（ｄｆ２／ｄｆ）
に示される式に基づいて計算し、文字列Ｘの後ろに文字αが出現する確率は、
ｐｒｏｂ（Ｘ＋α）＝ｔｆ（Ｘ＋α）／ｔｆ（Ｘ）
に示される式に基づいて計算する。そして、開始点ｓｕｂＳｔｒと文字αとの間を単語の切れ目とする妥当性の尺度ｗを次式で与える。
【００４１】
ｗ＝ｆ（ｓｃｏｒｅ（ｓｕｂＳｔｒ）−ｓｃａｒｅ（ｓｕｂＳｔｒ＋α））＋　ｇ（ｐｒｏｂ（ｓｕｂＳｔｒ＋α））
＝ｆ（ｘ）＋ｇ（ｙ）
ここで、ｆ（ｘ）およびｇ（ｙ）は、それぞれｘおよびｙの関数であり、例えば、次式のような関数と予め定める。
【００４２】
ｆ（ｘ）＝１（ｘ＞０），０（ｘ≦０）
ｇ（ｙ）＝１（ｙ＜０．７），０（ｙ≧０．７）
すなわち、上述の例において、次の２式のうちのいずれかの関係を満たすならば、開始点ｓｕｂＳｔｒと文字αとの間を単語の切れ目と思われる場所として、妥当性の尺度ｗ＝１を与える。また、次の２式のいずれの関係をも満たすならば、ｗ＝２を与える。なお、次式において、ｍａｘＰｒｏｂは予め設定する値であり、例えば０．７に設定される。
【００４３】
ｓｃｏｒｅ（ｓｕｂＳｔｒ）＞ｓｃａｒｅ（ｓｕｂＳｔｒ＋α）
ｐｒｏｂ（ｓｕｂＳｔｒ＋α）＜ｍａｘＰｒｏｂ
なお、上記の式は、ｆ（ｘ）およびｇ（ｙ）の１具体例であり、次式に示すように、さらに一般化した形式であっても構わない。
【００４４】
ｆ（ｘ）＝ａｘ＋ｂ（ｘ＞ｃ），０（ｘ≦ｃ）
Ｇ（ｙ）＝ｄｙ＋ｅ（ｙ＜ｆ），０（ｙ≧ｆ）
また、文字列Ｘの重みも、ｄｆ２／ｄｆに依存する形態だけでなく、後に詳述する他の形態であっても同様に適用可能である。
【００４５】
以上の処理を、文字列Ｘのすべての場所から前後両方に向けて実行し、単語の切れ目として妥当性の尺度の合計値（合計尺度）ｚを求める。そして、実際に文字列を分割する切れ目を求めるため、合計尺度ｚの大きい箇所を調べる。具体的には、あるしきい値Ｋ以上のｚの値を持つ箇所を文字列Ｘを分割する切れ目とする。合計尺度ｚが大きい箇所は、前後のいろいろな部分文字列から集中的に切れ目と推定された場所と考えることができる。このようにして単語の開始点もしくは終了点と思われる場所を推定することができる。また、このようにして求まった単語の開始点と終了点とから、文字列を切り出し、単語の候補とする。
【００４６】
このような分割方法で文字列を分割すると、例えば図２に示される「ロボットに」を「ロボット」と「に」とに分割する場合、「ト」と「に」との切れ目の合計尺度ｚは、「ロボット」と「ロボットに」との関係から加算される切れ目としての妥当性の尺度ｗだけでなく、「ボット」と「ボットに」との関係から得られる尺度も加算されるため、誤って単語の前後の一部の文字が切れた部分文字列に分割されることなく、正確な単語の切れ目の判定に貢献し、より正確な文字列の分割が可能になる。すなわち、単語の部分文字列は、分割したい単語と同程度の重みであるという性質に基づいて、より正確な分割が可能になる。
【００４７】
また、この分割方法では、重みだけでなく、特定の文字が出現する確率ｐｒｏｂをも利用しているため、助詞や助動詞が単語の前後に含まれて分割される可能性を抑えることができる。しかしながら、文書数が多く、「ロボット」と「ロボットに」とが同様に出現しなくなってくる場合、「ロボットに」を１つの単語として分割してしまう可能性も出てくる。この問題に対応するための処理について以下に述べる。
【００４８】
すなわち、カタカナ、英数字、および漢字の前後に文字が１文字だけ付く場合（例えば、「を」「と」「に」「の」「は」「へ」「も」「や」「が」「で」等）は、助詞と判断し、その文字を取除く処理を実行してキーワードの判定を行なう。なお、ひらがな２文字以上が前後に付く場合は、単語の一部である可能性が高くなる（複合語等）ため、このような処理は実施しない。また、カタカナ、英数字、および漢字ではなく、ひらがなの場合も、このような処理は実施しない。
【００４９】
このような処理を行なうことで、助詞や助動詞が単語の前後に含まれて分割される可能性を大きく抑えることができる。
【００５０】
［キーワード候補の選別］
部分文字列ｘの出現頻度αが大きい場合には、その文字列ｘが非常に多数のドキュメントに現れる文字列であることを示す。そのためそうした文字列ｘはドキュメントを識別する能力が低い。逆に、αが小さい場合、たとえば一度しか出現しないような文字列は稀にしか使われない非常に特殊な文字列であると考えられる。そうした文字列は、他のドキュメントとの関連を示す能力がないと考えられる。そのため、キーワードとして望ましい文字列は、ドキュメントを特定できる単語という性質上、αがある一定の範囲内に含まれるような文字列である。さらに、単語がドキュメントの内容に関わるものかを推定するために、βの値の考慮して求めた重みを再び用いる。αおよびβの値の範囲については、コーパスを利用して学習を行ない、抽出する範囲の候補を選別する。
【００５１】
具体的には例えば図６の条件をすべて満たしたものをキーワードと考えている。すなわち、部分文字列ｘのαの値が０．００００５より大きくかつ０．１未満であり、部分文字列ｘの重みが−１．０よりも大きく、かつ部分文字列ｘの長さが１よりも大きい場合には（Ｓ１２でＹＥＳ、Ｓ１４でＹＥＳかつＳ１８でＹＥＳ）、部分文字列ｘをキーワードであると決定する（Ｓ２０）。それ以外の場合には、キーワードではないと決定する（Ｓ１６）。なお、ｌｅｎ［ｘ］は文字列ｘの長さとする。なおここで用いた各値は、これらに限定されるものではない。たとえば、対象ドキュメント群によっても変化し得るし、抽出すべきキーワード数を調節するという観点からも変化させることができる。
【００５２】
なお、ここでは図３に示される如く、β＝ｄｆ２／ｄｆの対数値を重みとしている。しかし、キーワードの出現集中度βは、出現頻度α（＝ｄｆ／Ｎ）に依存して、図２２に示すように分布するという性質がある。そこで、上述の図６に示されるキーワードの判定において、ステップＳ１４にて部分文字列ｘの重みが−１．０よりも大きいか否かを判定基準としているが、判定基準をαに依存させることで、さらに適切なキーワードの判定を行なうこともできる。具体的には、部分文字列ｘの重みｓｃｏｒｅについて
ｓｃｏｒｅ≧ｌｏｇ（ｄｆ／Ｎ）／４
に示される関係を満たすか否かを判定基準とすることもできる。
【００５３】
［サフィックスファイル作成部２２の処理］
図７を参照して、サフィックスファイル作成部２２の処理について説明する。サフィックスファイル作成部２２は、ドキュメント群を形成する複数のドキュメントをつないで長大な１つの文字列を作成する（Ｓ２２）。たとえば、図８（Ａ）に示すように、この文字列が「ａｂｃａｂｄ」として求められているものとする。
【００５４】
作成した文字列よりスタート位置を１文字ずつずらしながら生じうる部分文字列を作成する。また、各部分文字列に通し番号（サフィックス）をつける（Ｓ２４）。文字列「ａｂｃａｂｄ」より部分文字列およびサフィックスを作成すると、図８（Ｂ）のようになる。
【００５５】
部分文字列を辞書順に並べ替えることによりサフィックスファイルを作成する（Ｓ２６）。サフィックスファイルのうち、サフィックスの並びのことをサフィックスアレイという。すなわち、図８（Ｃ）のようなサフィックスファイルが作成される。作成されたサフィックスファイルは、サフィックスファイル記憶部２４に記憶される。このサフィックスファイルを用いることにより、もとのドキュメント群中における全文字列の出現頻度と出現集中度とを少ない計算量で求めることができる。
【００５６】
［区切り部２８の処理］
図９を参照して、区切り部２８の処理について説明する。
【００５７】
区切り部２８は、ドキュメントを開き（Ｓ３２）、文字列を一時的に記憶するために用意されたバッファ（図示せず）をクリアする（Ｓ３４）。ドキュメントより文字列を読込む（Ｓ３６）。Ｓ３６における文字読込みはドキュメントの先頭文字より行なわれ、Ｓ３６の処理が行なわれる毎に順次、次の文字が読込まれる。
【００５８】
読込んだ文字がＥＯＦ（Ｅｎｄ　Ｏｆ　Ｆｉｌｅ）であるか否か判断される（Ｓ３８）。読込んだ文字がＥＯＦである場合には（Ｓ３８でＹＥＳ）、バッファに格納されている文章を区切り部２８からスコア計算部２６に出力し（Ｓ４０）、処理を終了する。
【００５９】
読込んだ文字がＥＯＦでなければ（Ｓ３８でＮＯ）、読込んだ文字が「。」または「、」などの区切り文字であるか否か判断される（Ｓ４２）。読込んだ文字が区切り文字でなければ（Ｓ４２でＮＯ）、読込んだ一文字をバッファに追加する（Ｓ４４）。その後、Ｓ３６に戻る。
【００６０】
読込んだ文字が区切り文字である場合には（Ｓ４２でＹＥＳ）、バッファに格納されている文章を区切り部２８からスコア計算部２６に出力し（Ｓ４６）、バッファをクリアする（Ｓ４８）。その後、Ｓ３６に戻る。
【００６１】
［スコア計算部２６の処理］
図１０および図１１を参照して、スコア計算部２６の処理について説明する。
【００６２】
図１１を参照して、スコア計算部２６は、区切り部２８より入力される入力文字列Ｘの長さをｌｅｎ＿Ｘとし、ｌｅｎ＿Ｘの要素数を有する配列ｖａｌｕｅ，ｔａｂｌｅおよびｆｒｏｍを作成する（Ｓ５２）。ここで、ｔａｂｌｅ［ｉ］は１文字目からｉ文字目までの重みの最適値（最大値）を示す。ｖａｌｕｅ［ｉ］はｆｒｏｍ［ｉ］文字目からｉ文字目までの重みの最適値（最大値）を示す。ｆｒｏｍ［ｉ］はｉ文字目における重みが最適（最大）になる区切りの開始位置を示す。
【００６３】
配列ｖａｌｕｅ，ｔａｂｌｅおよびｆｒｏｍの要素を初期化する（Ｓ５４）。すなわち、配列ｔａｂｌｅのすべての要素をｍｉｎ＿ｓｃｏｒｅ×ｌｅｎ＿Ｘに初期化する。ここで、ｍｉｎ＿ｓｃｏｒｅは予め定められた定数であり、ここでは、ｍｉｎ＿ｓｃｏｒｅ＝−１００００とする。また、配列ｖａｌｕｅのすべての要素を０に初期化する。さらに、配列ｆｒｏｍのすべての要素について、ｋ番目の要素を（ｋ−１）に初期化する。
【００６４】
次に、入力文字列の着目文字を表わすカウンタｉを１に設定する（Ｓ５６）。すなわち、入力文字列の先頭を指示するようにカウンタｉの値を設定する。
【００６５】
ｔａｂｌｅ［ｉ］＝ｍｉｎ＿ｓｃｏｒｅ×ｌｅｎ＿Ｘであれば、ｔａｂｌｅ［ｉ］＝０とし、それ以外の場合には何もしない（Ｓ５８）。
【００６６】
カウンタｊの値をｉ＋１に設定する（Ｓ６０）。文字列Ｘのｉ文字目からｊ文字目までの文字列をｘとする（Ｓ６２）。文字列ｘの先頭文字が「−」または「」（空白）であるか否かを判断する（Ｓ６４）。文字列ｘの先頭文字が「−」または「　」でなければ（Ｓ６４でＮＯ）、文字列ｘのｔｆ，ｄｆおよびｄｆ２を計算する（Ｓ６６）。ｄｆが１以上か否か、すなわち文字列ｘがドキュメント群内に出現したか否かが判断される（Ｓ６８）。なお、ｔｆは全ドキュメントにおいて文字列ｘの出現する回数を示す。
【００６７】
文字列ｘがドキュメント群内に出現していれば（Ｓ６８でＹＥＳ）、ｄｆ２の値がｍｉｎ＿ｄｆ２よりも大きいか否かが判断される（Ｓ７０）。ｍｉｎ＿ｄｆ２は予め定められた定数であり、ここでは３としている。
【００６８】
ｄｆ２がｍｉｎ＿ｄｆ２よりも大きい場合には（Ｓ７０でＹＥＳ）、ｔｆが全ドキュメント数Ｎよりも大きいか否かが判断される（Ｓ７２）。ｔｆがＮよりも大きい場合には（Ｓ７２でＹＥＳ）、重みｓｃｏｒｅがｌｏｇ（ｓａｔｕｒａｔｉｏｎ＿ｓｃｏｒｅ）として求められる（Ｓ７４）。ここで、ｓａｔｕｒａｔｉｏｎ＿ｓｃｏｒｅは予め定められた定数であり、ここでは０．５に設定されている。
【００６９】
ｔｆがＮ以下の場合には（Ｓ７２でＮＯ）、重みｓｃｏｒｅがｌｏｇ（ｄｆ２／ｄｆ）として求められる（Ｓ７６）。
【００７０】
ｄｆ２がｍｉｎ＿ｄｆ２以下の場合には（Ｓ７０でＮＯ）、重みｓｃｏｒｅがｍｉｎ＿ｓｃｏｒｅとして求められる（Ｓ７８）。
【００７１】
Ｓ７４、Ｓ７６またはＳ７８の後、ｔａｂｌｅ［ｊ］が（ｓｃｏｒｅ＋ｔａｂｌｅ［ｉ］）よりも小さいか否かが判断される（Ｓ８０）。ｔａｂｌｅ［ｊ］が（ｓｃｏｒｅ＋ｔａｂｌｅ［ｊ］）よりも小さい場合には（Ｓ８０でＹＥＳ）、ｆｒｏｍ［ｊ］にｉが代入され、ｔａｂｌｅ［ｊ］に（ｓｃｏｒｅ＋ｔａｂｌｅ［ｉ］）が代入され、ｖａｌｕｅ［ｊ］にｓｃｏｒｅが代入される（Ｓ８２）。
【００７２】
文字列ｘの先頭の文字が「−」または「　」である場合（Ｓ６４でＹＥＳ）、ｄｆが０の場合（Ｓ６８でＮＯ）、ｔａｂｌｅ［ｊ］が（ｓｃｏｒｅ＋ｔａｂｌｅ［ｉ］）以上の場合（Ｓ８０でＮＯ）またはＳ８２の処理の後、カウンタｊの値を１つインクリメントする（Ｓ８４）。その後、ｊがｌｅｎ＿Ｘよりも大きくなったか否かが判断される（Ｓ８６）。
【００７３】
ｊがｌｅｎ＿Ｘ以下の場合には（Ｓ８６でＮＯ）、Ｓ６２に戻る。ｊがｌｅｎ＿Ｘより大きい場合には（Ｓ８６でＹＥＳ）、カウンタｉの値を１つインクリメントする（Ｓ８８）。その後、ｉがｌｅｎ＿Ｘよりも大きいか否かが判断される（Ｓ９０）。ｉがｌｅｎ＿Ｘ以下の場合には（Ｓ９０でＮＯ）、Ｓ５８に戻る。ｉがｌｅｎ＿Ｘよりも大きい場合には（Ｓ９０でＹＥＳ）、配列ｆｒｏｍおよびｖａｌｕｅを演算結果記憶部３０に記憶し（Ｓ９２）、スコア計算部２６における処理を終了する。
【００７４】
たとえば、文字列「２０００年問題の対応策について」を分割したときの配列ｆｒｏｍ，ｖａｌｕｅおよびｔａｂｌｅの値は図１２に示すようになる。これより各単語は図１３のように区切られる。なお、括弧内が各単語の重みを示している。
【００７５】
図１４を参照して、文字列ａの出現するドキュメントの数ｄｆおよび文字列ａが二回以上出現するドキュメントの数ｄｆ２を求める処理（図１０のＳ６６）について説明する。この処理では、同一の文字列に対する処理時間を短縮するために、文字列ａと計算したｄｆおよびｄｆ２とを、ドキュメントの数を記憶するためのハッシュテーブル（以下「ドキュメント数ハッシュテーブル」という）に登録することで、再度の計算を不要としている。文字列ａがドキュメント数ハッシュテーブルに登録されているかを判定する。文字列ａが登録済みであれば（Ｓ１０１でＹＥＳ）、登録されているｄｆおよびｄｆ２を求める（Ｓ１０２）。
【００７６】
文字列ａが登録されていなければ（Ｓ１０１でＮＯ）、サフィックスファイルの先頭から順に文字列ａを探し、最初に見つかった文字列ａに対応するサフィックスをｍｉｎとする（Ｓ１０３）。サフィックスｍｉｎが求まらない場合、すなわちサフィックスファイルに文字列ａが含まれていない場合は（Ｓ１０４でＹＥＳ）、文字列ａがドキュメントに出現しない場合である。このため、ｄｆおよびｄｆ２の値を０とする（Ｓ１０５）。
【００７７】
サフィックスｍｉｎが求まった場合は（Ｓ１０４でＮＯ）、サフィックスファイル中、サフィックスｍｉｎ以降で最後に出現する文字列ａに対応するサフィックスをｍａｘとする（Ｓ１０６）。サフィックスがｍｉｎからｍａｘまでの範囲が文字列ａと一致する文字列である。これらの文字列に付されたドキュメント番号で相異なるものの数を求め、この数をｄｆとする（Ｓ１０７）。また、これらの文字列に付されたドキュメント番号を参照し、同一のドキュメント番号が２つ以上存在するものの数を求め、その数をｄｆ２とする（Ｓ１０８）。
【００７８】
Ｓ９８の処理またはＳ９５の処理の後、文字列ａとドキュメントの数ｄｆおよびｄｆ２とをドキュメント数ハッシュテーブルに登録する（Ｓ１０９）。Ｓ９９の処理またはＳ９２の処理の後、ｄｆおよびｄｆ２をそれぞれ、文字列ａの出現するドキュメントの数、文字列ａが２回以上出現するドキュメントの数として返す（Ｓ１１０）。
【００７９】
図１５を参照して、全ドキュメントにおいて文字列ａの出現する回数ｔｆを求める処理（図１０のＳ６６）について説明する。
【００８０】
サフィックスファイルの先頭から順に文字列ａを探し、最初に出現する文字列ａのサフィックスをｍｉｎとする（Ｓ１２１）。サフィックスｍｉｎが求まらない場合、すなわちサフィックスファイルに文字列ａが含まれていない場合は（Ｓ１２２でＹＥＳ）、ｔｆに０を代入する（Ｓ１２３）。サフィックスｍｉｎが求まった場合には（Ｓ１２２でＮＯ）、サフィックスファイルにおいて、最後に出現する文字列ａのサフィックスをｍａｘとする（Ｓ１２４）。ｔｆを次式（２）にしたがって求める（Ｓ１２５）。
【００８１】
ｔｆ＝ｍａｘ−ｍｉｎ＋１　　　　　　　　　　　　　　…（２）
Ｓ１２３またはＳ１２５の後、ｔｆを文字列ａの出現する回数として返す（Ｓ１２６）。
【００８２】
［ドキュメント分割部３２の処理］
ドキュメント分割部３２は、演算結果記憶部３０に記憶された配列ｆｒｏｍおよびｖａｌｕｅに基づいて、入力されたドキュメントを分割する。すなわち、ドキュメントを分割した際の重みｓｃｏｒｅの合計値が最大となるように、ドキュメントを分割する。
【００８３】
［絞込み部３４の処理］
絞込み部３４は、上述の［キーワード候補の選別］で説明した図６のフローチャートで示される処理を実行し、キーワードを絞り込む。
【００８４】
［キーワード抽出装置２０の構成例］
上述したキーワード抽出装置２０は、コンピュータにより実現することが可能である。図１６を参照して、キーワード抽出装置２０は、コンピュータ４１と、コンピュータ４１に指示を与えるためのキーボード４５およびマウス４６と、コンピュータ４１により演算された結果等を表示するためのディスプレイ４２と、コンピュータ４１が実行するプログラムをそれぞれ読取るための磁気テープ装置４３、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ　Ｄｉｓｃ−Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）装置４７および通信モデム４９とを含む。
【００８５】
キーワード抽出装置２０のプログラムは、コンピュータ４１で読取可能な記録媒体である磁気テープ４４またはＣＤ−ＲＯＭ４８に記録され、磁気テープ装置４３およびＣＤ−ＲＯＭ装置４７でそれぞれ読取られる。または、通信回線を介して通信モデム４９で読取られる。
【００８６】
図１７を参照して、コンピュータ４１は、磁気テープ装置４３、ＣＤ−ＲＯＭ装置４７または通信モデム４９を介して読取られたプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）５０と、コンピュータ４１の動作に必要なその他のプログラムおよびデータを記憶するためのＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）５１と、プログラム、プログラム実行時のパラメータ、演算結果などを記憶するためのＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）５２と、プログラムおよびデータなどを記憶するための磁気ディスク５３とを含む。
【００８７】
磁気テープ装置４３、ＣＤ−ＲＯＭ装置４７または通信モデム４９により読取られたプログラムは、ＣＰＵ５０で実行され、キーワード抽出処理が実行される。
【００８８】
なお、サフィックスファイル記憶部２４および演算結果記憶部３０は、ＲＡＭ５２または磁気ディスク５３により実現される。その他のキーワード抽出装置２０の構成部は、ＣＰＵ５０で実行されるソフトウェアにより実現される。
【００８９】
［文字列ｘの重みの計算式の変形例］
図３のＳ８または図１０のＳ７６では、文字列ｘの重みをｌｏｇ（ｄｆ２／ｄｆ）として求めているが、出現頻度、出現集中度、部分文字列長およびドキュメントの平均サイズを考慮して、ドキュメントの平均サイズが２００文字より大きいときは、ｌｏｇ｛（Ｎ／ｄｆ）×（ｄｆ２／ｄｆ）×ｌｅｎ（ｘ）｝として重みを求め、ドキュメントの平均サイズが２００文字以下の場合には、ｌｏｇ｛（Ｎ／ｄｆ）×ｌｅｎ（ｘ）｝として重みを求めるようにしてもよい。各ドキュメントが小さくなると、出現集中度が０に近くなる傾向がある。このため、ドキュメントの平均サイズで重みの計算方法を変えることにより、出現頻度の値が小さくなっても適切な重みを計算することが可能になる。
【００９０】
以上説明したように、本実施の形態によると形態素解析のように辞書を予め必要としなくてもキーワードの抽出ができる。
【００９１】
［実施の形態２］
本実施の形態に係る情報検索装置は、実施の形態１で説明したのと同様のコンピュータにより実現される。
【００９２】
本実施の形態は、抽出したキーワードによる文字列同士の類似度の算出方法に関する。入力された文字列とデータベースに登録された複数のドキュメントとの類似度を算出することが想定されている。文字列同士の一致部分を求める際に、データベース中のすべてのドキュメントそれぞれに対して、入力文字列から抽出したキーワードを含むドキュメントをサフィックスファイルの利用によって効率的にデータベース内から検索するという方法を用いている。
【００９３】
一致情報の収集は抽出されたキーワードに対し、次のような方法で行なう。ドキュメントデータベース全体からそのキーワードを含むドキュメントを求める。それら各ドキュメント内におけるそのキーワードの出現場所、入力文字列におけるキーワードの出現場所、キーワードの長さ、キーワードの重みを一致情報として記録する。
【００９４】
通常、得られた一致情報は、記録・管理することなく、そのまま重みが加算され類似度が算出される。しかし、これを記録・管理することにより、一致したキーワードの重みを加算して類似度を算出する方法だけでなく、高速性を保ったまま、多くの類似度算出方法に適用可能としている。
【００９５】
入力文字列とデータベース内のドキュメントとの類似度は、一致したキーワードに付けられた重みを加算することによって算出される。
【００９６】
本発明において、計算対象とするキーワードを抽出して算出する文字列類似度によるドキュメント検索プログラムの処理フローを図１８〜図２１に示す。本プログラムは、入力した検索文章に基づき、ドキュメントデータベースを検索し、類似度の高い複数のドキュメントを検索する。
【００９７】
図１８を参照して、検索文章に基づいてドキュメントデータベースを検索し、類似度の高いドキュメントを選び出して出力する処理について説明する。
【００９８】
まず、ある文字列の出現回数を効率よく計算する準備のために、ドキュメントデータベースに含まれる全ドキュメントを統合してサフィックスファイル（Ｓｕｆｆｉｘ　Ｆｉｌｅ）を作成する（Ｓ１３１）。
【００９９】
次に、検索文章を文字列Ｘに読込む（Ｓ１３２）。文字列Ｘから抽出したキーワードを、キーワード管理テーブルに記録する（Ｓ１３３）。
【０１００】
キーワード管理テーブルに記録された各キーワードに対し、一致情報を収集し、一致情報管理テーブルへの記録を行なう（Ｓ１３４）。一致情報とは、キーワードの文字列Ｘにおける出現場所、キーワードのドキュメント内における出現場所、キーワードの長さおよびキーワードの重みを表わす情報のことである。一致情報管理テーブルには、ドキュメント番号毎に、一致情報がリストとして記録される。Ｓ１３４の処理については後に詳述する。
【０１０１】
一致情報管理テーブルからある１つのドキュメントＹのリストを取出す（Ｓ１３５）。
【０１０２】
取出したリストより文字列ＸおよびドキュメントＹの類似度を計算する（Ｓ１３６）。Ｓ１３６の処理については後に詳述する。
【０１０３】
求めた類似度とドキュメント番号とを組にしてドキュメント管理テーブルに登録する（Ｓ１３７）。
【０１０４】
一致情報管理テーブルに記録されたすべてのリストについて類似度を計算したかどうかを判定する（Ｓ１３８）。すべてのリストについて類似度を計算していなければ（Ｓ１３８でＮＯ）、Ｓ１３５に戻る。
【０１０５】
すべてのリストについて類似度を計算していれば（Ｓ１３８でＹＥＳ）、ドキュメント管理テーブルの類似度とドキュメント番号との組を、類似度の高い順に並べ替える（Ｓ１３９）。
【０１０６】
類似度の高いドキュメントを出力する（Ｓ１４０）。出力するドキュメントは、１つだけであってもよいし、予め定められた所定の個数であってもよい。または、所定の類似度以上のドキュメントを出力するようにしてもよい。
【０１０７】
図１９を参照して、キーワード管理テーブルに記録された各キーワードと、ドキュメントデータベース内の各ドキュメントとの一致情報を収集し、その情報を一致情報管理テーブルに記録する処理（図１８のＳ１３４）について説明する。
【０１０８】
キーワード管理テーブルからある１つのキーワードを選びａとする（Ｓ１５１）。ドキュメントデータベース内でキーワードａが出現する場所をすべて求め、これを出現する場所の順に並べ替える（Ｓ１５２）。
【０１０９】
キーワードａの各出現場所に対し、キーワードａを含むドキュメント番号を求める。このとき、キーワードａは出現場所順に並んでいるので、得られるドキュメント番号も小さい順に並んでいる（Ｓ１５３）。
【０１１０】
キーワードａの出現場所を、出現場所の前から順に１つ選ぶ（Ｓ１５４）。選んだキーワードａの出現場所が、それを含むドキュメント内において最も前方にある出現場所かどうかを判定する（Ｓ１５５）。すなわち、選んだ出現場所のドキュメントと、１つ前に選んだ出現場所のドキュメントとが異なっていれば、それは選んだドキュメントにおける最初の出現場所である。選んだ出現場所のドキュメントと、１つ前に選んだ出現場所のドキュメントとが同じであれば、それは選んだドキュメントにおける２番目以降の出現場所である。
【０１１１】
キーワードａの出現場所がドキュメント内において最初であると判断された場合には（Ｓ１５５でＹＥＳ）、入力文字列Ｘにおけるキーワードａの出現場所（以下「ｓｔａｒｔＸ」という）、ドキュメント内におけるキーワードａの出現場所（以下「ｓｔａｒｔｄｏｃ」という）、キーワードａの長さ（以下「ｔｅｒｍｌｅｎｇｔｈ」という）およびキーワードａの重み（以下「ｓｃｏｒｅ」という）を組にして一致情報管理テーブルに記録する（Ｓ１５６）。
【０１１２】
図２０を参照して、一致情報管理テーブルは、ドキュメント情報毎の一致情報のリストによって構成される。ドキュメント番号０００２に一致情報１および５が、ドキュメント番号０１００に一致情報２、３および６が、ドキュメント番号０１１１に一致情報４および７がリストとして記録されている。それぞれの一致情報には、入力文字列ＸにおけるキーワードのｓｔａｒｔＸ、ｓｔａｒｔｄｏｃ、ｔｅｒｍｌｅｎｇｔｈおよびｓｃｏｒｅが格納されている。
【０１１３】
新たにドキュメント番号０００２に関する一致情報８が得られた場合、図２０に示すように、これまで一致情報５を指していたリストの先頭を指すポインタは一致情報８を指し、一致情報８から一致情報５へのポインタが張られ、ドキュメント情報０００２のリストの先頭に一致情報８は記録される。
【０１１４】
再度図１９を参照して、Ｓ１５６の後またはキーワードａの出現場所がドキュメント内において２番目以降だと判断された場合には（Ｓ１５５でＮＯ）、キーワードａの出現場所をすべて調べたか否かを判定する（Ｓ１５７）。
【０１１５】
調べていない出現場所があれば（Ｓ１５７でＮＯ）、Ｓ１５４に戻る。すべての出現場所について調べて終えていれば（Ｓ１５７でＹＥＳ）、キーワード管理テーブル内のすべてのキーワードについて、一致情報の収集を行なったか否かを判定する（Ｓ１５８）。一致情報の収集をしていないキーワードが存在する場合には（Ｓ１５８でＮＯ）、まだ選んでいないキーワードａを読込むためにＳ１５１に戻る。すべてのキーワードについて一致情報の収集が終わっていれば（Ｓ１５８でＹＥＳ）、得られた一致情報管理テーブルを返す（Ｓ１５９）。
【０１１６】
図２１を参照して、入力文章ＸとドキュメントＹとの類似度を、一致情報管理テーブルから取出したリストを用いて、一致した文字列の重みの加算によって求める処理（図１８のＳ１３６）について説明する。
【０１１７】
ＸとＹの類似度（以下「ｓｉｍ」という）を０に初期化する（Ｓ１６１）。一致情報管理テーブルに記録されているＹに関するリストからある一つの一致情報を選び、Ｉとする（Ｓ１６２）。
【０１１８】
ｓｉｍに一致情報Ｉのｓｃｏｒｅを加算する（Ｓ１６３）。ドキュメントＹに関する一致情報のリストに記録されたすべての一致情報について調べたかどうかを判定する（Ｓ１６４）。もし、調べていない一致情報があれば（Ｓ１６４でＮＯ）、Ｓ１６２に戻る。すべての一致情報について調べていれば（Ｓ１６４でＹＥＳ）、得られたｓｉｍを入力文章ＸとドキュメントＹとの類似度として返す（Ｓ１６５）。
【０１１９】
以上説明したように本実施の形態に係る情報検索装置によると、ユーザが入力したドキュメントと類似するドキュメントを予め登録されているデータベースの中から探し出すことができるようになる。このため、たとえばＦＡＱ（Ｆｒｅｑｕｅｎｔｌｙ　Ａｓｋｅｄ　Ｑｕｅｓｔｉｏｎｓ）システムなどにおいて、ユーザが質問を入力文章として与えた場合に、その入力文章に対応するＦＡＱを取出すことができるようになる。
【０１２０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１２１】
【発明の効果】
辞書を必要とせずにドキュメントよりキーワードを抽出することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係るキーワード抽出装置の構成を示すブロック図である。
【図２】「ロボットについて」という語の部分文字列ｘとそれに対応するｄｆ、ｄｆ２、αおよびβの値を示す図である。
【図３】文字列の単語らしさ（重み）を推定するための処理のフローチャートである。
【図４】文字列の重みを用いてドキュメントを分割した例を示す図である。
【図５】形態素解析によりドキュメントを分割した例を示す図である。
【図６】キーワードを抽出するための処理のフローチャートである。
【図７】サフィックスファイル作成部２２の行なう処理のフローチャートである。
【図８】サフィックスファイルを説明するための図である。
【図９】区切り部２８の行なう処理のフローチャートである。
【図１０】スコア計算部２６の実行する処理のフローチャートである。
【図１１】スコア計算部２６での重み計算に用いられる配列ｖａｌｕｅ、ｔａｂｌｅおよびｆｒｏｍを説明するための図である。
【図１２】文字列「２０００年問題の対応策について」を分割したときの配列ｆｒｏｍ、ｖａｌｕｅおよびｔａｂｌｅの値を示す図である。
【図１３】重みにより各単語を区切った一例を示す図である。
【図１４】文字列ａの出現するドキュメントの数ｄｆおよび文字列ａが二回以上出現するドキュメントの数ｄｆ２を求める処理のフローチャートである。
【図１５】全ドキュメントにおいて文字列ａの出現する回数ｔｆを求める処理のフローチャートである。
【図１６】キーワード抽出装置を実現するコンピュータの外観図である。
【図１７】図１６に示すコンピュータのハードウェア構成を示す図である。
【図１８】検索文章に基づいてドキュメントデータベースを検索し、類似度の高いドキュメントを選び出して出力する処理のフローチャートである。
【図１９】キーワード管理テーブルに記録された各キーワードと、ドキュメントデータベース内の各ドキュメントとの一致情報を収集し、その情報を一致情報管理テーブルに記録する処理のフローチャートである。
【図２０】一致情報管理テーブルの構成を示す図である。
【図２１】入力文章ＸとドキュメントＹとの類似度を、一致情報管理テーブルから取出したリストを用いて、一致した文字列の重みの加算によって求める処理のフローチャートである。
【図２２】キーワードの出現集中度βの分布を示す図である。
【符号の説明】
２０　キーワード抽出装置、２２　サフィックスファイル作成部、２４　サフィックスファイル記憶部、２６　スコア計算部、２８　区切り部、３０　演算結果記憶部、３２　ドキュメント分割部、３４　絞込み部、４１　コンピュータ、４２　ディスプレイ、４３　磁気テープ装置、４４　磁気テープ、４５　キーボード、４６　マウス、４７　ＣＤ−ＲＯＭ装置、４８　ＣＤ−ＲＯＭ、４９　通信モデム、５０　ＣＰＵ、５１　ＲＯＭ、５２　ＲＡＭ、５３　磁気ディスク。
【図１】
2004013726.tif 000004
【図２】
2004013726.tif 000005
【図３】
2004013726.tif 000006
【図４】
2004013726.tif 000007
【図５】
2004013726.tif 000008
【図６】
2004013726.tif 000009
【図７】
2004013726.tif 000010
【図８】
2004013726.tif 000011
【図９】
2004013726.tif 000012
【図１０】
2004013726.tif 000013
【図１１】
2004013726.tif 000014
【図１２】
2004013726.tif 000015
【図１３】
2004013726.tif 000016
【図１４】
2004013726.tif 000017
【図１５】
2004013726.tif 000018
【図１６】
2004013726.tif 000019
【図１７】
2004013726.tif 000020
【図１８】
2004013726.tif 000021
【図１９】
2004013726.tif 000022
【図２０】
2004013726.tif 000023
【図２１】
2004013726.tif 000024
【図２２】
2004013726.tif 000025