(57)【要約】      （修正有）【課題】文書の集合からキーワードを効率よく抜き出す。【解決手段】キーワード生成方法は、文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理Ｓ１３０１と、検出された部分文字列の各々について上記集合との関連の強さを示すスコアを算出し、当該スコアに基づき部分文字列の中からキーワードを選択する選択処理Ｓ１３０３と、新たに選択されたキーワードの数を算出し、当該キーワードの数に基づいて、検出処理及び選択処理を終了するか否かを判定する判定処理Ｓ１３０５と、検出処理及び選択処理を終了しないと判定した場合に、上記基準値を更新して、検出処理と選択処理と判定処理とを反復する反復処理Ｓ１３０９とを含む。【選択図】図１３
2015090618.tif 000002
【特許請求の範囲】
【請求項１】
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択処理と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定処理と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出処理と前記選択処理と前記判定処理とを反復する反復処理と
を含み、コンピュータにより実行されるキーワード生成方法。
【請求項２】
前記反復処理において、反復の度に順次より小さい値へ前記基準値を更新する
請求項１記載のキーワード生成方法。
【請求項３】
前記判定処理において、前記キーワードの数が減少する傾向を示し、且つ前記キーワードの数が閾値を下回ったと判定した場合に、前記検出処理及び前記選択処理を終了すると判定する
請求項２記載のキーワード生成方法。
【請求項４】
前記反復処理において、反復の度に前記基準値の更新量をより小さくする
請求項２又は３記載のキーワード生成方法。
【請求項５】
前記反復処理において、前記キーワードの数が収束する段階に近づいているか否かを判定し、当該段階に近づいていると判定した場合に、前記基準値の更新量を小さくする
請求項２乃至４のいずれか１つ記載のキーワード生成方法。
【請求項６】
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択処理と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定処理と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出処理と前記選択処理と前記判定処理とを反復する反復処理と
をコンピュータに実行させるためのプログラム。
【請求項７】
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出部と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択部と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定部と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出部による処理と前記選択部による処理と前記判定部による処理とを反復させる反復部と
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキスト検索に係るキーワードを生成する技術に関する。
【背景技術】
【０００２】
例えば、ユーザが指定したキーワードに従って、テキストデータベースにおける文書を検索しても、ユーザの意図に合うものが漏れなく抽出されるとは限らない。
【０００３】
逃してしまった目的の文書を改めて抽出しようとする場合に、別のキーワードを考え出すことは、ユーザにとって面倒である。例えば、先に抽出された文書に含まれる単語から次のキーワードを選び出すようにしてもよいが、その候補は膨大となる。
【０００４】
キーワードの候補となる単語が多いと、処理時間は長くなる。一方、キーワードの候補となる単語を限定すると、有効なキーワードが生成されず、再び目的の文書を逃すことになるかもしれない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２４０７４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、一側面では、文書の集合からキーワードを効率よく抜き出すことである。
【課題を解決するための手段】
【０００７】
一態様に係るキーワード生成方法は、文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、検出された部分文字列の各々について上記集合との関連の強さを示すスコアを算出し、当該スコアに基づき部分文字列の中からキーワードを選択する選択処理と、新たに選択されたキーワードの数を算出し、当該キーワードの数に基づいて、検出処理及び選択処理を終了するか否かを判定する判定処理と、検出処理及び選択処理を終了しないと判定した場合に、上記基準値を更新して、検出処理と選択処理と判定処理とを反復する反復処理とを含む。
【発明の効果】
【０００８】
一側面としては、文書の集合からキーワードを効率よく抜き出すことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、ネットワークの概要を示す図である。
【図２】図２は、テキストデータの例を示す図である。
【図３】図３は、抽出装置のモジュール構成例を示す図である。
【図４】図４は、第１抽出結果の例を示す図である。
【図５】図５は、メイン処理フローを示す図である。
【図６】図６は、第１抽出部の内部モジュール構成例を示す図である。
【図７】図７は、第１抽出処理フローを示す図である。
【図８】図８は、第２抽出部の内部モジュール構成例を示す図である。
【図９】図９は、第２抽出処理フローを示す図である。
【図１０】図１０は、頻度に対する部分文字列数の特性を示す図である。
【図１１】図１１は、頻度に対するキーワード数の特性を示す図である。
【図１２】図１２は、キーワード生成部の内部モジュール構成例を示す図である。
【図１３】図１３は、キーワード生成処理フローを示す図である。
【図１４】図１４は、部分文字列検出処理フローを示す図である。
【図１５】図１５は、検出結果の例を示す図である。
【図１６】図１６は、キーワード選択処理フローを示す図である。
【図１７】図１７は、スコア算出処理フローを示す図である。
【図１８】図１８は、第１出現確率算出処理フローを示す図である。
【図１９】図１９は、第２出現確率算出処理フローを示す図である。
【図２０】図２０は、スコアの例を示す図である。
【図２１】図２１は、終了判定処理フローを示す図である。
【図２２】図２２は、キーワードの度数分布表の例を示す図である。
【図２３】図２３は、キーワードの度数分布図の例である。
【図２４】図２４は、キーワードの度数分布図の例を示す図である。
【図２５】図２５は、最低頻度更新処理（Ａ）フローを示す図である。
【図２６】図２６は、検出結果の例を示す図である。
【図２７】図２７は、スコアの例を示す図である。
【図２８】図２８は、キーワードテーブルの例を示す図である。
【図２９】図２９は、検出結果の例を示す図である。
【図３０】図３０は、スコアの例を示す図である。
【図３１】図３１は、キーワードテーブルの例を示す図である。
【図３２】図３２は、最低頻度更新処理（Ｂ）フローを示す図である。
【図３３】図３３は、最低頻度更新処理（Ｃ）フローを示す図である。
【図３４】図３４は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
図１に、ネットワークの概要を示す。抽出装置１０１と、データベース管理システム１０３とは、ネットワークを介して接続している。データベース管理システム１０３は、テキストデータベース１０５を有している。テキストデータベース１０５は、テキストデータを格納している。テキストデータは、複数のテキスト単位を含んでいる。テキスト単位は、テキストデータベース１０５が管理するデータの単位であって、文字列データを含んでいる。テキスト単位は、画像データ、写真データあるいは音声データなどのテキスト以外の付加データを含んでいてもよい。この例におけるテキスト単位は、簡易ブログの記事である。テキスト単位は、ブログの記事以外の文書であってもよい。
【００１１】
テキストデータベース１０５に格納されているテキストデータの例について説明する。図２に、テキストデータの例を示す。この例におけるテキストデータは、テーブルの形式である。テキストデータは、記事毎にレコードを有している。
【００１２】
この例は、「村田佳菜子」という名前の選手が出場するスポーツ大会の中継番組が放送されていた時間帯における簡易ブログの記事を示している。第１レコード（省略しているレコードを除く。以下同様）の記事は、「村田佳菜子ちゃん、良かった！  #xyztv」の文字列データを含んでいる。この記事は、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。この記事に含まれる「#xyztv」は、ハッシュタグの例である。投稿者は、投稿する記事が特定のテーマに関することを明示するために記事内に、当該テーマを識別するハッシュタグを記述する。この例における「#xyztv」は、ＸＹＺ放送局の番組に関する記事であることを示している。
【００１３】
ハッシュタグは、閲覧時に検索のキーとして用いられる。例えば、閲覧者がハッシュタグを指定して記事を検索することによって、当該ハッシュタグを含む記事が一覧画面に表示される。つまり、ハッシュタグを用いることによって、例えば特定のイベントや事項などに関連する記事が収集される。ハッシュタグは、特定のテーマに関する調査や分析にも用いられる。尚、ハッシュタグは「#」記号と半角英数字とで構成されている。
【００１４】
第２レコードの記事は、「佳菜子ちゃん素敵！」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。但し、この記事にはハッシュタグが含まれていない。
【００１５】
第３レコードの記事は、「むらかなかわいい  #xyztv」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。この記事には、第１レコードと同様にハッシュタグ「#xyztv」が含まれている。尚、記事中の「むらかな」は、「村田佳菜子」の氏名を略した同選手の愛称である。
【００１６】
第４レコードの記事は、「むらかな決めろ！」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。但し、この記事にはハッシュタグが含まれていない。この記事においても、愛称「むらかな」が用いられている。
【００１７】
第５レコードの記事は、「村田、まずまず良かったかな #xyztv」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。この記事には、第１レコード及び第３レコードと同様にハッシュタグ「#xyztv」が含まれている。
【００１８】
テキストデータには、他にも当該中継番組の視聴者が当該スポーツ大会に関して投稿した記事が含まれている。また、テキストデータには、当該スポーツ大会に関わらない記事も含まれている。
【００１９】
図１の説明に戻る。図１に示したネットワークは、例えばインターネットあるいはＬＡＮ（Local Area Network）である。抽出装置１０１は、ネットワークを介してテキストデータベース１０５から特定のテーマに関するテキスト単位（この例では、簡易ブログの記事）を抽出する。この例で、抽出装置１０１は、図２に示したテキストデータから当該中継番組の視聴者が投稿した当該スポーツ大会に関する記事を抽出する。図１では、抽出装置１０１とデータベース管理システム１０３とがネットワークを介して接続されている例を示しているが、データベース管理システム１０３と抽出装置１０１とが一体の装置であってもよい。
【００２０】
また、ユーザ端末１０７が抽出装置１０１に接続されている。ユーザ端末１０７は、抽出装置１０１によるサービスを利用するユーザが使用する端末である。図１では、前述と同様のネットワークを介して、ユーザ端末１０７と抽出装置１０１とが接続されているが、ユーザ端末１０７と抽出装置１０１とは、前述のネットワークと異なるネットワークを介して接続されるようにしてもよい。
【００２１】
続いて、抽出装置１０１のモジュール構成について説明する。図３に、抽出装置１０１のモジュール構成例を示す。抽出装置１０１は、パラメータ記憶部３０１、受付部３０３、第１抽出部３０５、第１抽出結果記憶部３０７、サンプリング部３０９、サンプリング結果記憶部３１１、第２抽出部３１３、第２抽出結果記憶部３１５及び出力部３１７を有している。
【００２２】
パラメータ記憶部３０１は、抽出装置１０１の処理において用いられるパラメータを記憶する。受付部３０３は、ユーザ端末１０７からのデータの入力を受け付ける。受付部３０３は、例えば上記パラメータ及び後述する第１抽出条件を受け付ける。上記パラメータには、例えば後述する最低頻度の初期値も含まれる。
【００２３】
抽出装置１０１は、例えば２回の抽出を行う。第１抽出部３０５は、そのうち先の抽出を行う。具体的には、第１抽出部３０５は、テキストデータベース１０５から第１抽出条件に適合するテキスト単位（この例では、簡易ブログの記事）を抽出する。また、第１抽出部３０５は、ハッシュタグを含む第１クエリをデータベース管理システム１０３へ送信する。ハッシュタグについての部分一致が、第１抽出条件に相当する。但し、第１抽出条件はハッシュタグ以外のテキストデータに関する条件であってもよい。
【００２４】
第１抽出部３０５は、抽出された結果（第１抽出結果という。）をデータベース管理システム１０３から取得する。この例では、第１抽出結果は、第１抽出条件に適合するテキスト単位（この例では、簡易ブログの記事）の集合である。第１抽出結果記憶部３０７は、第１抽出結果を記憶する。
【００２５】
図４に、第１抽出結果の例を示す。この第１抽出結果は、ハッシュタグ「#xyztv」によって検索された記事の集合である。図４に示した第１レコードの記事「村田佳菜子ちゃん、良かった！  #xyztv」は、図２に示した第１レコードから得られたものである。同様に、図４に示した第２レコードの記事「むらかなかわいい  #xyztv」は、図２に示した第３レコードから得られたものである。同様に、図４に示した第３レコードの記事「村田、まずまず良かったかな #xyztv」は、図２に示した第５レコードから得られたものである。
【００２６】
図２に示した第２レコード及び第４レコードの記事は、ハッシュタグ「#xyztv」を含まないので抽出されない。
【００２７】
図３の説明に戻って、サンプリング部３０９は、サンプリング処理を実行する。具体的には、サンプリング部３０９は、テキストデータベース１０５から無作為にテキスト単位（この例では、簡易ブログの記事）を抽出するようにデータベース管理システム１０３に要求し、抽出された結果（サンプリング結果という。）をデータベース管理システム１０３から取得する。サンプリング結果は、無作為に抽出されたテキスト単位の集合である。サンプリング結果記憶部３１１は、サンプリング結果を記憶する。
【００２８】
第２抽出部３１３は、テキストデータベース１０５から第１抽出結果に関連するテキスト単位（この例では、簡易ブログの記事）を抽出する。具体的には、第２抽出部３１３は、第１抽出結果に基づいてキーワードを生成し、当該キーワードを含む第２クエリをデータベース管理システム１０３に送信する。
【００２９】
第２抽出部３１３は、抽出された結果（第２抽出結果という。）をデータベース管理システム１０３から取得する。この例では、第２抽出結果は、上記キーワードを含むテキスト単位（この例では、簡易ブログの記事）の集合である。第２抽出結果記憶部３１５は、抽出された結果（第２抽出結果という。）を記憶する。
【００３０】
出力部３１７は、第２抽出結果を出力する。この例では、出力部３１７は、第２抽出結果をユーザ端末１０７へ送信する。但し、出力部３１７による出力の形態は送信に限らない。出力部３１７は、第２抽出結果を表示するようにしてもよい。出力部３１７は、第２抽出結果を記憶媒体に書き込むようにしてもよい。あるいは、出力部３１７は、第２抽出結果を印刷するようにしてもよい。
【００３１】
パラメータ記憶部３０１、受付部３０３、第１抽出部３０５、第１抽出結果記憶部３０７、サンプリング部３０９、サンプリング結果記憶部３１１、第２抽出部３１３、第２抽出結果記憶部３１５及び出力部３１７は、例えば図３４に示すハードウエア資源によって実現される。また、受付部３０３、第１抽出部３０５、サンプリング部３０９、第２抽出部３１３及び出力部３１７は、当該モジュールの処理の一部又は全部を、メモリ２５０１（図３４）にロードされたプログラムをＣＰＵ２５０３（図３４）で順次実行することにより実現するようにしてもよい。以上で、抽出装置１０１のモジュール構成についての説明を終える。
【００３２】
続いて、抽出装置１０１の処理について説明する。図５に、メイン処理フローを示す。受付部３０３は、ユーザ端末１０７からパラメータを受け付ける（Ｓ５０１）。受付部３０３は、受け付けたパラメータをパラメータ記憶部３０１に記憶させる。受け付けられるパラメータは、例えば後述する各種の基準値（最低頻度を含む。）、初期値及び付加値等である。既に設定されているパラメータを用いる場合には、Ｓ５０１の処理を省くようにしてもよい。
【００３３】
受付部３０３は、ユーザ端末１０７から第１抽出条件を受け付ける（Ｓ５０３）。第１抽出条件は、例えば特定のテーマに係るテキスト単位（この例では、簡易ブログの記事）を抽出するための条件である。例えば、第１抽出条件は、上述の通りハッシュタグによって指定される。第１抽出条件は、他の検索条件であってもよい。第１抽出条件は、記事中を検索するための文字列であってもよい。
【００３４】
第１抽出部３０５は、第１抽出処理を実行する（Ｓ５０５）。第１抽出処理を行う第１抽出部３０５の内部モジュール構成について説明する。図６に、第１抽出部３０５の内部モジュール構成例を示す。第１抽出部３０５は、第１クエリ生成部６０１、第１要求部６０３及び第１取得部６０５を有している。第１クエリ生成部６０１は、第１抽出条件に基づいて第１クエリを生成する。第１クエリは、第１抽出条件を満たすテキスト単位（この例では、簡易ブログの記事）をデータベース管理システム１０３に抽出させるための処理要求である。第１要求部６０３は、第１クエリをデータベース管理システム１０３に送信する。第１取得部６０５は、データベース管理システム１０３から第１抽出結果を取得する。
【００３５】
第１クエリ生成部６０１、第１要求部６０３及び第１取得部６０５は、例えば図３４に示すハードウエア資源によって実現される。第１クエリ生成部６０１、第１要求部６０３及び第１取得部６０５は、当該モジュールの処理の一部又は全部を、メモリ２５０１（図３４）にロードされたプログラムをＣＰＵ２５０３（図３４）で順次実行することにより実現するようにしてもよい。
【００３６】
図７に、第１抽出処理フローを示す。第１抽出部３０５の第１クエリ生成部６０１は、第１抽出条件に基づく第１クエリを生成する（Ｓ７０１）。
【００３７】
第１抽出部３０５の第１要求部６０３は、第１クエリをデータベース管理システム１０３へ送信する（Ｓ７０３）。第１抽出部３０５の第１取得部６０５は、データベース管理システム１０３から第１抽出結果を取得し、取得した第１抽出結果を第１抽出結果記憶部３０７に書く（Ｓ７０５）。以上で、第１抽出処理についての説明を終える。
【００３８】
このようにして、例えば図４に示した記事が抽出される。この第１抽出結果に含まれる記事は、ユーザが意図している特定のテーマに関連していると想定される。しかし、この段階で当該テーマに関連する記事が、残らず収集されているとは限らない。例えば、図２の第２レコードの記事や第４レコードの記事も、第１レコードの記事、第３レコードの記事あるいは第５レコードの記事と同様の感想を投稿したものであるが、抽出されていない。
【００３９】
図５の説明に戻って、サンプリング部３０９は、サンプリング処理を実行する（Ｓ５０７）。具体的には、サンプリング部３０９は、テキストデータベース１０５から無作為にテキスト単位（この例では、簡易ブログの記事）を抽出するようにデータベース管理システム１０３に要求し、抽出された結果（サンプリング結果）をデータベース管理システム１０３から取得する。サンプリング結果記憶部３１１は、サンプリング部３０９によるサンプリング結果を記憶する。サンプリング結果には、複数のテキスト単位が含まれている。
【００４０】
第２抽出部３１３は、第２抽出処理を実行する（Ｓ５０９）。第２抽出処理を行う第２抽出部３１３の内部モジュール構成について説明する。図８に、第２抽出部３１３の内部モジュール構成例を示す。第２抽出部３１３は、キーワード生成部８０１、キーワード記憶部８０３、第２クエリ生成部８０５、第２要求部８０７及び第２取得部８０９を有している。キーワード生成部８０１は、第１抽出結果に基づいてキーワードを生成する。キーワードは、第２抽出処理においてテキスト単位（この例では、簡易ブログの記事）を抽出するための条件になる。キーワードは、第１抽出結果に含まれるテキスト単位に含まれる部分文字列の中から選択される。例えば、図２に示した第２レコードの記事に含まれる「むらかな」の部分文字列が、キーワードになる。
【００４１】
キーワード記憶部８０３は、生成されたキーワードを記憶する。第２クエリ生成部８０５は、キーワードに基づいて第２クエリを生成する。第２要求部８０７は、第２クエリをデータベース管理システム１０３へ送信する。第２取得部８０９は、データベース管理システム１０３から第２抽出結果を取得する。
【００４２】
キーワード生成部８０１、キーワード記憶部８０３、第２クエリ生成部８０５、第２要求部８０７及び第２取得部８０９は、例えば図３４に示すハードウエア資源によって実現される。第２抽出部３１３は、キーワード生成部８０１、第２クエリ生成部８０５、第２要求部８０７及び第２取得部８０９は、当該モジュールの処理の一部又は全部を、メモリ２５０１（図３４）にロードされたプログラムをＣＰＵ２５０３（図３４）で順次実行することにより実現するようにしてもよい。
【００４３】
図９に、第２抽出処理フローを示す。第２抽出部３１３のキーワード生成部８０１は、キーワード生成処理を実行する（Ｓ９０１）。キーワード生成部８０１は、第１抽出結果に含まれるテキスト単位（この例では、簡易ブログの記事）に含まれる部分文字列を検出し、それらの部分文字列の中から第１抽出結果と関連の強い部分文字列を選択する。そして、選択された部分文字列がキーワードになる。
【００４４】
例えば、形態素解析によってテキスト単位（この例では、簡易ブログの記事）から単語を検出する方法がある。形態素解析によって検出された単語の中からキーワードを選択するようにしてもよい。しかし、形態素解析によって検出される単語は、予め候補として登録されているものに限られる。従って、未だ候補として登録されていない単語は、形態素解析によって検出されない。例えば、テキスト単位に含まれている新語、略語、専門用語あるいは方言の単語などが検出されないことがある。
【００４５】
本実施の形態では、テキスト単位に含まれている新語、略語、専門用語あるいは方言の単語などもキーワードに採用されるようにするために、頻出パターンマイニングによって部分文字列を検出する。
【００４６】
部分文字列は、連続する２文字以上の連なりである。例えば、「むらかなかわいい」の文における部分文字列は、「むら」、「むらか」、「むらかな」、（中略）、「むらかなかわいい」、「らか」、「らかな」、「らかなか」、（中略）、「らかなかわいい」、（中略）、「わい」、「わいい」、「いい」である。一方、「むらかなかわいい」の文に対する形態素解析では、例えば単語「かわいい」が検出される。このように、理論上の部分文字列の数は、形態素解析で検出される単語の数に比べてとても多い。
【００４７】
しかし、理論上の部分文字列を残らずキーワードの候補とするとキーワードを選択する処理が煩雑になる。本実施の形態では、所定頻度以上の部分文字列に限ってキーワードの候補とする。このようにすれば、キーワードの候補の数が制限されるので、キーワードを選択する処理の負担が軽くなる。尚、ここでいう頻度は、第１抽出結果に含まれるテキスト単位（この例では、簡易ブログの記事）のうち、当該部分文字列を含むテキスト単位の数である。別の言い方をすると、頻度は、第１抽出結果に含まれるテキスト単位に当該部分文字列が出現する回数である。但し、テキスト単位の複数箇所に部分文字列が含まれる場合には、１回とカウントする。また、上述の所定頻度は、基準値の一種であって、以下では最低頻度という。
【００４８】
一般的に、頻出パターンマイニングでは、要素列の集合から頻出するパターンを検出する。本実施の形態では、テキスト単位が要素列に相当し、文字が要素に相当し、部分文字列がパターンに相当する。つまり、頻出パターンマイニングによって、テキスト単位の集合から頻出する部分文字列を検出する。頻出パターンマイニングによって頻出する部分文字列を検出するようにすれば、理論上の部分文字列の各々について頻度を算出する方法に比べて、処理負担が小さくなる。
【００４９】
本実施の形態では、頻出パターンマイニングの一種であるModified Prefixspanを用いる。Modified Prefixspanは、要素間の距離を条件として要素列を検出する。本実施の形態では、文字間の距離を０とする条件によって文字列を検出する。
【００５０】
Modified Prefixspanについては、H. Kitakami, T. Kanbara, Y. Mori, S. Kuroki, Y. Yamazaki: "Modified PrefixSpan Method for Motif Discovery in Sequence Databases". PRICAI 2002: pp.482-491, 2002に詳述されている。
【００５１】
また、Modified Prefixspanは、最低頻度以上の頻度に係る要素列を検出する。但し、最低頻度が高すぎると、キーワードとすべき部分文字列を検出しなくなる。その場合には、抽出すべきテキスト単位（この例では、簡易ブログの記事）を抽出し損なう可能性がある。
【００５２】
他方、最低頻度が低すぎると、余分な部分文字列を検出するようになる。その結果、処理負担が大きくなり、処理時間が長くなる。
【００５３】
本実施の形態では、キーワードになる部分文字列の頻度に着目して、最低頻度を定めるようにする。
【００５４】
図１０に、頻度に対する部分文字列数の特性を示す。横軸は、部分文字列の頻度を示している。縦軸は、部分文字列の数を示している。頻度に対する部分文字列数の特性は、英語における単語の出現頻度についての経験則（ジップの法則）に近似すると想定される。そのように想定すると、図示するように頻度が小さい部分文字列は、その数が極めて多くなる。他方、頻度が大きい部分文字列は、その数が極めて少なくなる。この図における部分文字列は、理論上の部分文字列であって、キーワードになる部分文字列とキーワードにならない部分文字列との両方を含んでいる。
【００５５】
図１１に、頻度に対するキーワード数の特性を示す。横軸は、キーワードの頻度を示している。縦軸は、キーワード数を示している。この図は、図１０における部分文字列のうちキーワードになるものについての分布を示している。本実施の形態では、頻度に対するキーワードの分布は、山形を示すものと想定する。図１１の例は、正規分布に近似している。
【００５６】
この図で、例えば最もキーワード数が多い頻度（頻度の平均に相当する）よりも小さい値を、最低頻度に設定してModified Prefixspanを行えば半数以上のキーワードが検出される。本実施の形態では、頻度に対するキーワード数に基づいて最低頻度を設定する。
【００５７】
キーワード生成部８０１は、大きい方から小さい方への最低頻度を移行させながら、適当な際低頻度を探索するように処理する。具体的には、キーワード生成部８０１は、最低頻度を減じながらModified Prefixspanを行い、それに伴うキーワード数の変化によって、適当な最低頻度を判定するようにする。そして、適当な最低頻度であると判定された時点で検出されているキーワードが、キーワード生成部８０１による生成結果となる。
【００５８】
尚、キーワード生成部８０１は、第１抽出結果との関連の強さを示すスコアによって、部分文字列がキーワードに適するか否かを判定する。
【００５９】
キーワード生成処理を行うキーワード生成部８０１の内部モジュール構成について説明する。図１２に、キーワード生成部８０１の内部モジュール構成例を示す。キーワード生成部８０１は、部分文字列検出部１２０１、検出結果記憶部１２０３、キーワード選択部１２０５、選択結果記憶部１２０７、終了判定部１２０９、度数分布記憶部１２１１、反復部１２１３及びキーワード特定部１２１５を有している。
【００６０】
部分文字列検出部１２０１は、上述したModified Prefixspanによって、第１抽出結果記憶部３０７に含まれるテキスト単位（この例では、簡易ブログの記事）から部分文字列を検出する。検出結果記憶部１２０３は、部分文字列検出部１２０１による検出結果を記憶する。検出結果は、検出された一又は複数の部分文字列を含んでいる。キーワード選択部１２０５は、検出結果に含まれる部分文字列の中からキーワードを選択する。選択結果記憶部１２０７は、キーワード選択部１２０５による選択結果を記憶する。選択結果は、各回におけるキーワードテーブルを含む。キーワードテーブルには、選択されたキーワードが登録される。終了判定部１２０９は、キーワードの度数分布表を生成し、第２抽出処理の終了を判定する。度数分布記憶部１２１１は、キーワードの度数分布表を記憶する。反復部１２１３は、Modified Prefixspanに用いる最低頻度を更新し、部分文字列検出部１２０１による処理と、キーワード選択部１２０５による処理と、終了判定部１２０９による処理とを反復する。キーワード特定部１２１５は、第２抽出処理の結果であるキーワードを特定する。
【００６１】
部分文字列検出部１２０１、検出結果記憶部１２０３、キーワード選択部１２０５、選択結果記憶部１２０７、終了判定部１２０９、度数分布記憶部１２１１、反復部１２１３及びキーワード特定部１２１５は、例えば図３４に示すハードウエア資源によって実現される。部分文字列検出部１２０１、キーワード選択部１２０５、終了判定部１２０９、反復部１２１３及びキーワード特定部１２１５は、当該モジュールの処理の一部又は全部を、メモリ２５０１（図３４）にロードされたプログラムをＣＰＵ２５０３（図３４）で順次実行することにより実現するようにしてもよい。
【００６２】
図１３に、キーワード生成処理フローを示す。キーワード生成部８０１の部分文字列検出部１２０１は、部分文字列検出処理を実行する（Ｓ１３０１）。
【００６３】
図１４に、部分文字列検出処理フローを示す。部分文字列検出部１２０１は、頻出パターンマイニング処理を実行する（Ｓ１４０１）。
【００６４】
本実施の形態に係る頻出パターンマイニング処理について説明する。上述のように文字を要素とみなし、第１抽出結果に含まれるテキスト単位（この例では、簡易ブログの記事）を要素列とみなし、部分文字列をパターンとみなして頻出パターンマイニングを行う。本実施の形態では、頻出パターンマイニングの一種であるModified Prefixspanを実行する。このとき、部分文字列検出部１２０１は、パラメータ記憶部３０１に記憶されている最低頻度をModified Prefixspanに適用する。また、部分文字列検出部１２０１は、Modified Prefixspanに適用する最低要素数を２とする。更に、部分文字列検出部１２０１は、Modified Prefixspanに適用する要素間距離を０とする。
【００６５】
キーワード生成部８０１の部分文字列検出部１２０１は、検出された結果（検出結果）を検出結果記憶部１２０３に書く（Ｓ１４０３）。検出結果は、Modified Prefixspanによって検出された部分文字列の集合である。
【００６６】
図１５に、検出結果の例を示す。検出結果は、検出された部分文字列毎にレコードを有している。レコードは、部分文字列を格納するためのフィールドと、頻度を格納するためのフィールドとを有している。
【００６７】
この例は、最初に行った頻出パターンマイニングによる検出結果の例を示している。このときの最低頻度は６０に設定されている。従って、頻度が６０以上である部分文字列が検出される。
【００６８】
第１レコードは、部分文字列「良かった」を検出し、当該部分文字列の頻度が「７０」であることを示している。第２レコードは、部分文字列「かな」を検出し、当該部分文字列の頻度が「９０」であることを示している。部分文字列「良かった」と部分文字列「かな」とは、第１抽出結果に含まれる記事に頻繁に出現することを意味する。
【００６９】
図１３の説明に戻って、キーワード生成部８０１のキーワード選択部１２０５は、キーワード選択処理を実行する（Ｓ１３０３）。図１６に、キーワード選択処理フローを示す。キーワード選択部１２０５は、検出結果記憶部１２０３に記憶されている検出結果に含まれる部分文字列のうち、スコア算出処理の対象となっていない未処理の部分文字列を１つ特定する（Ｓ１６０１）。キーワード選択部１２０５は、特定した部分文字列について、スコア算出処理を実行する（Ｓ１６０３）。スコア算出処理では、特定された部分文字列についてのスコアを算出する。
【００７０】
この例におけるスコアは、第１出現確率を第２出現確率で除したリフト値である。第１出現確率は、第１抽出結果において当該部分文字列が出現する確率である。第２出現確率は、サンプリング結果において当該部分文字列が出現する確率である。スコアが大きい場合には、当該部分文字列は第１抽出結果との関連が強いことを意味する。スコアが小さい場合には、当該部分文字列は第１抽出結果との関連が弱いことを意味する。
【００７１】
図１７に、スコア算出処理フローを示す。キーワード選択部１２０５は、第１出現確率算出処理を実行する（Ｓ１７０１）。第１出現確率算出処理では、上述した第１出現確率を算出する。
【００７２】
図１８に、第１出現確率算出処理フローを示す。キーワード選択部１２０５は、第１抽出結果に含まれるテキスト単位（この例では、簡易ブログの記事）の数を特定する（Ｓ１８０１）。具体的には、キーワード選択部１２０５は、第１抽出結果記憶部３０７に記憶されている第１抽出結果に含まれるテキスト単位をカウントする。以下、このテキスト単位の数を第１テキスト単位数という。
【００７３】
次に、キーワード選択部１２０５は、第１抽出結果において、当該部分文字列を含むテキスト単位（この例では、簡易ブログの記事）の数をカウントする（Ｓ１８０３）。以下、このテキスト単位の数を第１出現頻度という。
【００７４】
そして、キーワード選択部１２０５は、第１抽出結果において当該部分文字列が出現する確率（第１出現確率）を算出する（Ｓ１８０５）。具体的には、キーワード選択部１２０５は、第１出現頻度を第１テキスト単位数で除して得られた商が、第１出現確率である。
【００７５】
図１７の説明に戻って、キーワード選択部１２０５は、第２出現確率算出処理を実行する（Ｓ１７０３）。第２出現確率算出処理では、上述した第２出現確率を算出する。
【００７６】
図１９に、第２出現確率算出処理フローを示す。キーワード選択部１２０５は、サンプリング結果に含まれるテキスト単位（この例では、簡易ブログの記事）の数を特定する（Ｓ１９０１）。具体的には、キーワード選択部１２０５は、サンプリング結果記憶部３１１に記憶されているサンプリング結果に含まれるテキスト単位をカウントする。以下、このテキスト単位の数を第２テキスト単位数という。
【００７７】
次に、キーワード選択部１２０５は、サンプリング結果において、当該部分文字列を含むテキスト単位（この例では、簡易ブログの記事）の数をカウントする（Ｓ１９０３）。以下、このテキスト単位の数を第２出現頻度という。
【００７８】
そして、キーワード選択部１２０５は、サンプリング結果において当該部分文字列が出現する確率（第２出現確率）を算出する（Ｓ１９０５）。具体的には、キーワード選択部１２０５は、第２出現頻度を第２テキスト単位数で除して得られた商が、第２出現確率である。
【００７９】
図１７の説明に戻って、キーワード選択部１２０５は、出現確率の比率（リフト値）を算出する（Ｓ１７０５）。具体的には、キーワード選択部１２０５は、第１出現確率を第２出現確率で除して得られた比率が、出現確率の比率（リフト値）である。
【００８０】
図１５に示した検出結果に含まれる部分文字列に対するスコアの例を、図２０に示す。第１レコードは、部分文字列「良かった」のスコアが「４」であることを示している。第２レコードは、部分文字列「かな」のスコアが「３」であることを示している。部分文字列「良かった」と部分文字列「かな」とは、共にスコアが小さい。つまりこれらの部分文字列は、第１抽出結果との関連が弱いことを意味する。これらの文字列は、一般的な文において頻繁に出現する文字列であるので、第１抽出結果と関連が特に強いとは言えない。
【００８１】
図１６の説明に戻って、キーワード選択部１２０５は、算出したスコアが基準値を越えているか否かを判定する（Ｓ１６０５）。当該基準値は、第１抽出結果との関連が強いか否かを判定するためのパラメータである。当該基準値は、パラメータ記憶部３０１に記憶されている。当該基準値は、パラメータ記憶部３０１によって受け付けられるパラメータの一つである。当該基準値は、最低スコアと呼ばれることもある。
【００８２】
算出したスコアが基準値を越えていると判定した場合には、キーワード選択部１２０５は、当該部分文字列を、今回のキーワードテーブルに登録する（Ｓ１６０７）。各回のキーワードテーブルは、選択結果記憶部１２０７に生成される。具体的には、キーワード選択部１２０５は、選択結果記憶部１２０７に記憶される今回のキーワードテーブルに当該部分文字列を設定する。このとき、キーワード選択部１２０５は、今回のキーワードテーブルにおいて当該部分文字列に対応するスコアを付加するようにしてもよい。
【００８３】
算出したスコアが基準値を越えていないと判定した場合には、キーワード選択部１２０５は、当該部分文字列を今回のキーワードテーブルに登録しない。例えば、図１５及び図２０に示した検出結果に含まれる部分文字列については、いずれもそのスコアが基準値を越えないので、今回のキーワードテーブルに登録されない。
【００８４】
キーワード選択部１２０５は、検出結果記憶部１２０３に記憶されている検出結果に含まれる部分文字列のうち、スコア算出処理の対象となっていない未処理の部分文字列があるか否かを判定する（Ｓ１６０９）。未処理の部分文字列があると判定した場合には、Ｓ１６０１の処理に戻って、キーワード選択部１２０５は上述した処理を繰り返す。未処理の部分文字列がないと判定した場合には、キーワード選択部１２０５は、キーワード選択処理を終了する。そして、図１３のＳ１３０５に移る。
【００８５】
図１３の説明に戻って、キーワード生成部８０１の終了判定部１２０９は、終了判定処理を実行する（Ｓ１３０５）。
【００８６】
図２１に、終了判定処理フローを示す。終了判定部１２０９は、現在の最低頻度が基準値以下か否かを判定する（Ｓ２１０１）。例えば、図１０に示したように頻度が２あるいは３になると、部分文字列の数が極端に多く、上述した第２出現確率算出処理などの処理負担が膨大になる。従って、本実施の形態では、最低頻度に下限を設ける。上記基準値は、最低頻度の下限を意味する。
【００８７】
現在の最低頻度が基準値以下であると判定した場合には、終了判定部１２０９は、判定結果を「終了する」と設定する（Ｓ２１０３）。このようにして、現在の最低頻度が基準値以下であると判定した場合には、以降の探索を行わないようにする。
【００８８】
現在の最低頻度が基準値以下ではないと判定した場合には、終了判定部１２０９は、新たな範囲を特定する（Ｓ２１０５）。終了判定処理は、上述したように頻度に対するキーワードの分布に基づいて行われる。そのために、終了判定部１２０９は、キーワードの度数分布表を生成する。新たな範囲は、頻度についての範囲であって、度数分布表における新たな階級に相当する。
【００８９】
図２２に、キーワードの度数分布表の例を示す。度数分布表は、階級毎にレコードを有している。階級は、頻度の範囲によって特定される。レコードは、頻度の範囲を格納するためのフィールドと、キーワード数を格納するためのフィールドとを有している。反復によって終了判定処理を行う度に、新たなレコードが追加される。
【００９０】
第１レコードは、頻度が６０以上の範囲におけるキーワード数が０であることを示している。第１レコードにおけるキーワード数は、１回目に生成されたキーワード数を示している。
【００９１】
第２レコードは、頻度が５７以上且つ６０未満の範囲におけるキーワード数が３であることを示している。第２レコードにおけるキーワード数は、２回目に生成されたキーワード数と１回目に生成されたキーワード数の差分、つまり２回目に新たに生成されたキーワードの数を示している。
【００９２】
第３レコードは、頻度が５４以上且つ５７未満の範囲におけるキーワード数が６であることを示している。第３レコードにおけるキーワード数は、３回目に生成されたキーワード数と２回目に生成されたキーワード数の差分、つまり３回目に新たに生成されたキーワードの数を示している。
【００９３】
第４レコードは、頻度が５１以上且つ５４未満の範囲におけるキーワード数が１２であることを示している。第４レコードにおけるキーワード数は、４回目に生成されたキーワード数と３回目に生成されたキーワード数の差分、つまり４回目に新たに生成されたキーワードの数を示している。
【００９４】
第５レコードは、頻度が４８以上且つ５１未満の範囲におけるキーワード数が１８であることを示している。第５レコードにおけるキーワード数は、５回目に生成されたキーワード数と４回目に生成されたキーワード数の差分、つまり５回目に新たに生成されたキーワードの数を示している。
【００９５】
この例では、範囲の大きさを均等にしているが、範囲の大きさを回毎に異なるようにしてもよい。
【００９６】
図２３に、キーワードの度数分布図の例を示す。この度数分布図は、図２２に示した度数分布表をグラフ化したもの（ヒストグラム）である。
【００９７】
図２１の説明に戻って、終了判定部１２０９は、新たな範囲におけるキーワード数を算出する（Ｓ２１０７）。具体的には、終了判定部１２０９は、今回のキーワードテーブルに含まれるキーワードをカウントし、今回のキーワード数から前回のキーワード数を引くことによって、新たな範囲におけるキーワード数を求める。
【００９８】
終了判定部１２０９は、度数分布表に新たなレコードを追加する（Ｓ２１０９）。新たなレコードには、新たな範囲と、キーワード数とが設定される。
【００９９】
終了判定部１２０９は、キーワード数の変化傾向を判定する（Ｓ２１１１）。変化傾向は、例えば増加傾向あるいは減少傾向のいずれかである。例えば、終了判定部１２０９は、前回の範囲におけるキーワード数よりも今回の範囲におけるキーワード数が増えている場合に、増加傾向と判定し、前回の範囲におけるキーワード数よりも今回の範囲におけるキーワード数が減っている場合に、減少傾向と判定する。あるいは、終了判定部１２０９は、今回の範囲におけるキーワード数を、前回より前の回の範囲におけるキーワード数と比較するようにしてもよい。終了判定部１２０９は、今回の範囲におけるキーワード数を、複数回の範囲におけるキーワード数と夫々比較して、各回の比較結果に基づいて変化傾向を判定するようにしてもよい。
【０１００】
終了判定部１２０９は、キーワード数の変化傾向が増加傾向であるか否かを判定する（Ｓ２１１３）。キーワード数の変化傾向が増加傾向であると判定した場合には、終了判定部１２０９は、判定結果を「終了しない」と設定する（Ｓ２１１９）。例えば、図２３に示すように、４回目の範囲におけるキーワード数が増加傾向にある場合には、キーワードとすべき部分文字列の多くが未だ検出されていないと推測されるので、キーワード生成処理を続行させる。
【０１０１】
キーワード数の変化傾向が増加傾向ではないと判定した場合には、終了判定部１２０９は、今回の範囲におけるキーワード数が第１基準値以下であるか否かを判定する（Ｓ２１１５）。第１基準値は、頻度の低下に伴いキーワード数が収束しつつあると判定するための基準である。第１基準値は、パラメータ記憶部３０１に記憶されている。第１基準値は、受付部３０３によって受け付けられるようにしてもよい。第１基準値は、第１テキスト単位数（この例では、第１抽出結果に含まれる記事の数）に応じ設定されるようにしてもよい。
【０１０２】
図２４に、キーワードの度数分布図の例を示す。図中の破線は、第１基準値を示している。最低頻度を１５に設定して部分文字列を検出した回の範囲におけるキーワード数は、第１基準値を上回っているので、キーワード数はまだ収束する段階に至っていないと想定される。
【０１０３】
次に最低頻度を１２に設定して部分文字列を検出した回の範囲におけるキーワード数は、第１基準値を下回っているので、キーワード数が収束しつつあると想定される。
【０１０４】
更に最低頻度を９に設定して部分文字列を検出した回の範囲におけるキーワード数は、再び第１基準値を下回っている。この時点において２回連続で第１基準値を下回ったことになる。本実施の形態は、このように２回連続して各回の範囲におけるキーワード数が第１基準値を下回った場合に、キーワード生成を終了させるようにする。連続数は、３以上であってもかまわない。また、１回でも第１基準値を下回った場合には、キーワード生成を終了させるようにしてもよい。
【０１０５】
図２１の説明に戻って、Ｓ２１１５で、今回の範囲におけるキーワード数が第１基準値以下ではないと判定した場合には、終了判定部１２０９は、判定結果を「終了しない」と設定する（Ｓ２１１９）。
【０１０６】
キーワード数が第１基準以下であると判定した場合には、終了判定部１２０９は、当該判定結果が連続した回数が所定数（この例では、２）に達したか否かを判定する。（Ｓ２１１７）。当該判定結果が連続した回数が所定数に達したと判定した場合には、終了判定部１２０９は、判定結果を「終了する」と設定する（Ｓ２１０３）。
【０１０７】
当該判定結果が連続した回数が所定数に達していないと判定した場合には、終了判定部１２０９は、判定結果を「終了しない」と設定する（Ｓ２１１９）。終了判定処理を終えると、図１３のＳ１３０７に示した処理に戻る。
【０１０８】
図１３の説明に戻って、反復部１２１３は、判定結果が「終了する」と設定されたか否かを判定する（Ｓ１３０７）。判定結果が「終了する」と設定されていないと判定した場合、つまり判定結果が「終了しない」と設定された場合には、キーワード生成部８０１の反復部１２１３は、最低頻度更新処理を実行する（Ｓ１３０９）。最低頻度更新処理によって、次の回における最低頻度が設定される。
【０１０９】
本実施の形態では、最低頻度更新処理（Ａ）を行う。図２５に、最低頻度更新処理（Ａ）フローを示す。反復部１２１３は、最低頻度から所定数（この例では、３）を減ずる（Ｓ２５０１）。当該所定数は、度数分布の階級を特定する範囲の大きさに相当する。従って、本実施の形態では、度数分布の階級を特定する範囲の大きさが均等になる。
【０１１０】
最低頻度更新処理を終えると、反復部１２１３は、Ｓ１３０１に処理を戻し、Ｓ１３０１の部分文字列検出処理と、Ｓ１３０３のキーワード選択処理と、Ｓ１３０５の終了判定処理とを反復する。
【０１１１】
このようにして、最低頻度を減じながら、キーワード生成を終了させると判定されるまで、部分文字列検出処理（Ｓ１３０１）とキーワード選択処理（Ｓ１３０３）と終了判定処理（Ｓ１３０５）とが繰り返される。
【０１１２】
最低頻度が１２に設定された回における検出結果の例を図２６に示す。この回では、頻度が１２以上である部分文字列が検出される。
【０１１３】
第１レコードは、部分文字列「村田」を検出し、当該部分文字列の頻度が「３２」であることを示している。第２レコードは、部分文字列「佳菜子」を検出し、当該部分文字列の頻度が「２９」であることを示している。第３レコードは、部分文字列「佳菜子ちゃん」を検出し、当該部分文字列の頻度が「１３」であることを示している。第４レコードは、部分文字列「良かった」を検出し、当該部分文字列の頻度が「７０」であることを示している。第５レコードは、部分文字列「かな」を検出し、当該部分文字列の頻度が「９０」であることを示している。第６レコードは、部分文字列「かわいい」を検出し、当該部分文字列の頻度が「３８」であることを示している。今回初めて検出された部分文字列「佳菜子ちゃん」の頻度は、これらの部分文字列の中では最も小さい。つまり、部分文字列「佳菜子ちゃん」が第１抽出結果に含まれる記事中に出現する確率は、比較的低い。
【０１１４】
図２６に示した検出結果に含まれる部分文字列に対するスコアの例を、図２７に示す。第１レコードは、部分文字列「村田」のスコアが「１０」であることを示している。第２レコードは、部分文字列「佳菜子」のスコアが「１００」であることを示している。第３レコードは、部分文字列「佳菜子ちゃん」のスコアが「１５０」であることを示している。第４レコードは、部分文字列「良かった」のスコアが「４」であることを示している。第５レコードは、部分文字列「かな」のスコアが「３」であることを示している。第６レコードは、部分文字列「かわいい」のスコアが「５」であることを示している。今回初めて検出された部分文字列「佳菜子ちゃん」のスコアは、これらの部分文字列の中では最も大きい。つまり、部分文字列「佳菜子ちゃん」は、第１抽出結果に含まれる記事との関連が最も強い。
【０１１５】
図２８は、図２７に示したスコアに基づくキーワードテーブルの例を示している。この例で、スコアの基準値は、５０である。従って、スコアが５０を越えた部分文字列「佳菜子」と部分文字列「佳菜子ちゃん」とが選択され、今回のキーワードテーブルに設定されている。スコアが５０を越えていない部分文字列「村田」と部分文字列「良かった」と部分文字列「かな」と部分文字列「かわいい」とは、選択されていない。
【０１１６】
図２９は、その次の回における検出結果の例を示している。この回では、最低頻度が１２に設定されている。従って、頻度が１２以上である部分文字列が検出される。第１レコード乃至第５レコードは、図２６の場合と同様である。第６レコードは、部分文字列「むらかな」を検出し、当該部分文字列の頻度が「１０」であることを示している。第７レコードは、図２６の第６レコードと同様である。今回初めて検出された部分文字列「むらかな」の頻度は、前回初めて検出された部分文字列「佳菜子ちゃん」の頻度に比べて、更に低い。部分文字列「むらかな」が第１抽出結果に含まれる記事中に出現する確率は、部分文字列「佳菜子ちゃん」が第１抽出結果に含まれる記事中に出現する確率よりも、更に低い。
【０１１７】
図２９に示した検出結果に含まれる部分文字列に対するスコアの例を、図３０に示す。第１レコード乃至第５レコードは、図２７の場合と同様である。第６レコードは、部分文字列「むらかな」のスコアが「６０」であることを示している。第７レコードは、図２７の第６レコードと同様である。今回初めて検出された部分文字列「むらかな」のスコアは、比較的大きい。つまり、部分文字列「むらかな」は、第１抽出結果に含まれる記事との関連が比較的強い。
【０１１８】
図３１は、図３０に示したスコアに基づくキーワードテーブルの例を示している。この例で、スコアの基準値は、前述した通り５０である。従って、スコアが５０を越えた部分文字列「佳菜子」と部分文字列「佳菜子ちゃん」とに加えて、部分文字列「むらかな」も選択され、今回のキーワードテーブルに設定されている。スコアが５０を越えていない部分文字列「村田」と部分文字列「良かった」と部分文字列「かな」と部分文字列「かわいい」とは、前回と同様に選択されていない。
【０１１９】
図１３の説明に戻って、Ｓ１３０７で、判定結果が「終了する」と設定されたと判定した場合には、キーワード生成部８０１のキーワード特定部１２１５は、キーワードを特定する（Ｓ１３１１）。具体的には、キーワード特定部１２１５は、最終回におけるキーワードテーブルに設定されているキーワードを特定する。キーワード生成処理を終えると、図９に示したＳ９０３の処理に戻る。
【０１２０】
図９の説明に戻って、第２抽出部３１３の第２クエリ生成部８０５は、キーワード生成処理で生成されたキーワードを含む第２クエリを生成する（Ｓ９０３）。第２クエリ生成部８０５は、例えば、キーワード生成処理で生成されたキーワードを残らずＯＲ条件で検索するためのクエリを生成する。あるいは、第２クエリ生成部８０５は、キーワード生成処理で生成されたキーワードを残らずＡＮＤ条件で検索するためのクエリを生成するようにしてもよい。あるいは、第２クエリ生成部８０５は、キーワード生成処理で生成されたキーワードの一部をＯＲ条件で検索するためのクエリを生成するようにしてもよい。あるいは、第２クエリ生成部８０５は、キーワード生成処理で生成されたキーワードの一部をＡＮＤ条件で検索するためのクエリを生成するようにしてもよい。
【０１２１】
第２抽出部３１３の第２要求部８０７は、第２クエリをデータベース管理システム１０３へ送信する（Ｓ９０５）。第２抽出部３１３の第２取得部８０９は、データベース管理システム１０３から第２抽出結果を取得し、取得した第２抽出結果を第２抽出結果記憶部３１５に書く（Ｓ９０７）。以上で、第２抽出処理についての説明を終える。第２抽出処理を終えると、図５のＳ５１１に示した処理に戻る。
【０１２２】
図５の説明に戻って、出力部３１７は、第２抽出結果を出力する（Ｓ５１１）。例えば、出力部３１７は、ユーザ端末１０７へ第２抽出結果を送信する。
【０１２３】
本実施の形態によれば、テキスト単位（例えば、簡易ブログの記事のような文書）の集合に潜在しているキーワードが、ある程度抜き出されたことを推測して、処理を終わらせることができる。従って、無駄な処理を省き、更にキーワードの有効性を担保できる。尚、処理終了の時点で適当な最低頻度が特定されている。
【０１２４】
また、一般的に部分文字列の数が多くなる範囲（頻度が低い範囲）における一連の処理を省くので、処理負担が軽減される。特に、スコア算出に係る処理負担が軽減される。
【０１２５】
更に、想定されるキーワード数の変化傾向に従って、潜在しているキーワードのうち多くが抜き出されたことを推定できる。
【０１２６】
［実施の形態２］
上述の実施の形態では、度数分布の階級を特定する頻度の範囲の大きさを均等とする例を示したが、本実施の形態では、頻度が小さくなるにつれて、度数分布の階級を特定する頻度の範囲を狭める例について説明する。
【０１２７】
本実施の形態では、最低頻度を求めるための除数のパラメータを設ける。当該除数のパラメータの初期値は、パラメータ記憶部３０１に記憶されている。当該除数のパラメータの初期値は、受付部３０３によって受け付けられるようにしてもよい。
【０１２８】
また、最低頻度更新処理において除数のパラメータに加算する所定の付加値を設ける。所定の付加値は、パラメータ記憶部３０１に記憶されている。所定の付加値は、受付部３０３によって受け付けられるようにしてもよい。
【０１２９】
本実施の形態では、図１３に示したＳ１３０９において、キーワード生成部８０１の反復部１２１３は、最低頻度更新処理（Ｂ）を実行する。図３２に、最低頻度更新処理（Ｂ）フローを示す。反復部１２１３は、除数のパラメータに所定の付加値を加算する（Ｓ３２０１）。
【０１３０】
反復部１２１３は、第１テキスト単位数を上記の除数で割り（Ｓ３２０３）、商を最低頻度に設定する（Ｓ３２０５）。
【０１３１】
このようにすれば、頻度が大きい段階では、最低頻度の変化量が大きくなる。従って、反復の回数を少なくすることができる。
【０１３２】
［実施の形態３］
実施の形態２では、所定の付加値を一定とする例について説明したが、本実施の形態では、キーワードの数が収束し始めるまでの第１の付加値と、キーワードの数が収束し始めてからの第２の付加値とを切り替える例について説明する。
【０１３３】
本実施の形態では、最低頻度更新処理において除数のパラメータに加算する付加値を２種類設ける。第１の付加値は、第２の付加値よりも大きい。第１の付加値と第２の付加値とは、パラメータ記憶部３０１に記憶されている。第１の付加値と第２の付加値とは、受付部３０３によって受け付けられるようにしてもよい。
【０１３４】
また、キーワード数が収束する段階に近づいているか否かを判定するための第２基準値を設ける。第２基準値は、Ｓ２１１５で用いる第１基準値よりも大きい値である。第２基準値は、パラメータ記憶部３０１に記憶されている。第２基準値は、受付部３０３によって受け付けられるようにしてもよい。第２基準値は、第１テキスト単位数（この例では、第１抽出結果に含まれる記事の数）に応じ設定されるようにしてもよい。
【０１３５】
本実施の形態では、図１３に示したＳ１３０９において、キーワード生成部８０１の反復部１２１３は、最低頻度更新処理（Ｃ）を実行する。図３３に、最低頻度更新処理（Ｃ）フローを示す。反復部１２１３は、Ｓ２１１１で判定した変化傾向が増加傾向であるか否かを判定する（Ｓ３３０１）。Ｓ２１１１で判定した変化傾向が増加傾向であると判定した場合には、反復部１２１３は、上述した除数のパラメータに第１の付加値を加算する（Ｓ３３０３）。
【０１３６】
例えば図１１に示した分布において、頻度が３０乃至６０の領域では、変化傾向が増加傾向であるため、除数のパラメータに第１の付加値が加算される。
【０１３７】
一方、Ｓ２１１１で判定した変化傾向が増加傾向ではないと判定した場合には、反復部１２１３は、キーワード数が第２基準値以上であるか否かを判定する。（Ｓ３３０５）。キーワード数が第２基準値以上であると判定した場合には、反復部１２１３は、除数のパラメータに第１の付加値を加算する（Ｓ３３０３）。
【０１３８】
例えば図１１に示した分布において、第２基準値がキーワード数１０程度に相当すると想定すると、頻度が２０乃至３０の領域では、キーワード数が第２基準値以上であるため、除数のパラメータに第１の付加値が加算される。
【０１３９】
他方、キーワード数が第２基準値未満であると判定した場合には、反復部１２１３は、除数のパラメータに第２の付加値を加算する（Ｓ３３０７）。
【０１４０】
例えば図１１に示した分布において、頻度が２０を下回る左側の領域では、キーワード数が第２基準値未満であるため、除数のパラメータに第２の付加値が加算される。
【０１４１】
反復部１２１３は、第１テキスト単位数を除数で割り（Ｓ３３０９）、反復部１２１３は、商を最低頻度に設定する（Ｓ３３１１）。
【０１４２】
このようにすれば、キーワード数が収束する段階に至るまで、最低頻度の変化量が大きい。従って、反復の回数を少なくすることができる。
【０１４３】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１４４】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１４５】
なお、上で述べた抽出装置１０１は、コンピュータ装置であって、図３４に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１４６】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１４７】
本実施の形態に係るキーワード生成方法は、文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、検出された部分文字列の各々について上記集合との関連の強さを示すスコアを算出し、当該スコアに基づき部分文字列の中からキーワードを選択する選択処理と、新たに選択されたキーワードの数を算出し、当該キーワードの数に基づいて、検出処理及び選択処理を終了するか否かを判定する判定処理と、検出処理及び選択処理を終了しないと判定した場合に、上記基準値を更新して、検出処理と選択処理と判定処理とを反復する反復処理とを含む。
【０１４８】
このようにすれば、文書の集合に潜在しているキーワードが、ある程度抜き出されたことを推測して、処理を終わらせることができる。従って、無駄な処理を省き、更にキーワードの有効性を担保できる。
【０１４９】
また、上記反復処理において、反復の度に順次より小さい値へ上記基準値を更新するようにしてもよい。
【０１５０】
このようにすれば、一般的に部分文字列の数が多くなる範囲（頻度が低い範囲）における一連の処理を省くようになるので、処理負担が軽減される。特に、スコア算出に係る処理負担が軽減される。
【０１５１】
また、上記判定処理において、キーワードの数が減少する傾向を示し、且つキーワードの数が閾値を下回ったと判定した場合に、検出処理及び選択処理を終了すると判定するようにしてもよい。
【０１５２】
このようにすれば、想定されるキーワード数の変化傾向に従って、潜在しているキーワードのうち多くが抜き出されたことを推定できるようになる。
【０１５３】
また、上記反復処理において、反復の度に上記基準値の更新量をより小さくするようにしてもよい。
【０１５４】
このようにすれば、キーワードの有効性を担保しつつ、反復の回数を減らすことができる。
【０１５５】
また、上記反復処理において、キーワードの数が収束する段階に近づいているか否かを判定し、当該段階に近づいていると判定した場合に、上記基準値の更新量を小さくするようにしてもよい。
【０１５６】
このようにすれば、キーワードの有効性を担保しつつ、反復の回数を減らすことができる。
【０１５７】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１５８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５９】
（付記１）
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択処理と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定処理と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出処理と前記選択処理と前記判定処理とを反復する反復処理と
を含み、コンピュータにより実行されるキーワード生成方法。
【０１６０】
（付記２）
前記反復処理において、反復の度に順次より小さい値へ前記基準値を更新する
付記１記載のキーワード生成方法。
【０１６１】
（付記３）
前記判定処理において、前記キーワードの数が減少する傾向を示し、且つ前記キーワードの数が閾値を下回ったと判定した場合に、前記検出処理及び前記選択処理を終了すると判定する
付記２記載のキーワード生成方法。
【０１６２】
（付記４）
前記反復処理において、反復の度に前記基準値の更新量をより小さくする
付記２又は３記載のキーワード生成方法。
【０１６３】
（付記５）
前記反復処理において、前記キーワードの数が収束する段階に近づいているか否かを判定し、当該段階に近づいていると判定した場合に、前記基準値の更新量を小さくする
付記２乃至４のいずれか１つ記載のキーワード生成方法。
【０１６４】
（付記６）
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択処理と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定処理と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出処理と前記選択処理と前記判定処理とを反復する反復処理と
をコンピュータに実行させるためのプログラム。
【０１６５】
（付記７）
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出部と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択部と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定部と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出部による処理と前記選択部による処理と前記判定部による処理とを反復させる反復部と
を有する情報処理装置。
【符号の説明】
【０１６６】
１０１  抽出装置    １０３  データベース管理システム
１０５  テキストデータベース    １０７  ユーザ端末
３０１  パラメータ記憶部    ３０３  受付部
３０５  第１抽出部    ３０７  第１抽出結果記憶部
３０９  サンプリング部    ３１１  サンプリング結果記憶部
３１３  第２抽出部    ３１５  第２抽出結果記憶部
３１７  出力部    ６０１  第１クエリ生成部
６０３  第１要求部    ６０５  第１取得部
８０１  キーワード生成部    ８０３  キーワード記憶部
８０５  第２クエリ生成部    ８０７  第２要求部
８０９  第２取得部    １２０１  部分文字列検出部
１２０３  検出結果記憶部    １２０５  キーワード選択部
１２０７  選択結果記憶部    １２０９  終了判定部
１２１１  度数分布記憶部    １２１３  反復部
１２１５  キーワード特定部
【図１】
2015090618.tif 000003
【図２】
2015090618.tif 000004
【図３】
2015090618.tif 000005
【図４】
2015090618.tif 000006
【図５】
2015090618.tif 000007
【図６】
2015090618.tif 000008
【図７】
2015090618.tif 000009
【図８】
2015090618.tif 000010
【図９】
2015090618.tif 000011
【図１０】
2015090618.tif 000012
【図１１】
2015090618.tif 000013
【図１２】
2015090618.tif 000014
【図１３】
2015090618.tif 000015
【図１４】
2015090618.tif 000016
【図１５】
2015090618.tif 000017
【図１６】
2015090618.tif 000018
【図１７】
2015090618.tif 000019
【図１８】
2015090618.tif 000020
【図１９】
2015090618.tif 000021
【図２０】
2015090618.tif 000022
【図２１】
2015090618.tif 000023
【図２２】
2015090618.tif 000024
【図２３】
2015090618.tif 000025
【図２４】
2015090618.tif 000026
【図２５】
2015090618.tif 000027
【図２６】
2015090618.tif 000028
【図２７】
2015090618.tif 000029
【図２８】
2015090618.tif 000030
【図２９】
2015090618.tif 000031
【図３０】
2015090618.tif 000032
【図３１】
2015090618.tif 000033
【図３２】
2015090618.tif 000034
【図３３】
2015090618.tif 000035
【図３４】
2015090618.tif 000036