[実施の形態1]
図1に、ネットワークの概要を示す。抽出装置101と、データベース管理システム103とは、ネットワークを介して接続している。データベース管理システム103は、テキストデータベース105を有している。テキストデータベース105は、テキストデータを格納している。テキストデータは、複数のテキスト単位を含んでいる。テキスト単位は、テキストデータベース105が管理するデータの単位であって、文字列データを含んでいる。テキスト単位は、画像データ、写真データあるいは音声データなどのテキスト以外の付加データを含んでいてもよい。この例におけるテキスト単位は、簡易ブログの記事である。テキスト単位は、ブログの記事以外の文書であってもよい。
テキストデータベース105に格納されているテキストデータの例について説明する。図2に、テキストデータの例を示す。この例におけるテキストデータは、テーブルの形式である。テキストデータは、記事毎にレコードを有している。
この例は、「村田佳菜子」という名前の選手が出場するスポーツ大会の中継番組が放送されていた時間帯における簡易ブログの記事を示している。第1レコード(省略しているレコードを除く。以下同様)の記事は、「村田佳菜子ちゃん、良かった! #xyztv」の文字列データを含んでいる。この記事は、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。この記事に含まれる「#xyztv」は、ハッシュタグの例である。投稿者は、投稿する記事が特定のテーマに関することを明示するために記事内に、当該テーマを識別するハッシュタグを記述する。この例における「#xyztv」は、XYZ放送局の番組に関する記事であることを示している。
ハッシュタグは、閲覧時に検索のキーとして用いられる。例えば、閲覧者がハッシュタグを指定して記事を検索することによって、当該ハッシュタグを含む記事が一覧画面に表示される。つまり、ハッシュタグを用いることによって、例えば特定のイベントや事項などに関連する記事が収集される。ハッシュタグは、特定のテーマに関する調査や分析にも用いられる。尚、ハッシュタグは「#」記号と半角英数字とで構成されている。
第2レコードの記事は、「佳菜子ちゃん素敵!」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。但し、この記事にはハッシュタグが含まれていない。
第3レコードの記事は、「むらかなかわいい #xyztv」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。この記事には、第1レコードと同様にハッシュタグ「#xyztv」が含まれている。尚、記事中の「むらかな」は、「村田佳菜子」の氏名を略した同選手の愛称である。
第4レコードの記事は、「むらかな決めろ!」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。但し、この記事にはハッシュタグが含まれていない。この記事においても、愛称「むらかな」が用いられている。
第5レコードの記事は、「村田、まずまず良かったかな #xyztv」の文字列データを含んでいる。この記事も、当該中継番組の視聴者が当該スポーツ大会の感想を投稿したものである。この記事には、第1レコード及び第3レコードと同様にハッシュタグ「#xyztv」が含まれている。
テキストデータには、他にも当該中継番組の視聴者が当該スポーツ大会に関して投稿した記事が含まれている。また、テキストデータには、当該スポーツ大会に関わらない記事も含まれている。
図1の説明に戻る。図1に示したネットワークは、例えばインターネットあるいはLAN(Local Area Network)である。抽出装置101は、ネットワークを介してテキストデータベース105から特定のテーマに関するテキスト単位(この例では、簡易ブログの記事)を抽出する。この例で、抽出装置101は、図2に示したテキストデータから当該中継番組の視聴者が投稿した当該スポーツ大会に関する記事を抽出する。図1では、抽出装置101とデータベース管理システム103とがネットワークを介して接続されている例を示しているが、データベース管理システム103と抽出装置101とが一体の装置であってもよい。
また、ユーザ端末107が抽出装置101に接続されている。ユーザ端末107は、抽出装置101によるサービスを利用するユーザが使用する端末である。図1では、前述と同様のネットワークを介して、ユーザ端末107と抽出装置101とが接続されているが、ユーザ端末107と抽出装置101とは、前述のネットワークと異なるネットワークを介して接続されるようにしてもよい。
続いて、抽出装置101のモジュール構成について説明する。図3に、抽出装置101のモジュール構成例を示す。抽出装置101は、パラメータ記憶部301、受付部303、第1抽出部305、第1抽出結果記憶部307、サンプリング部309、サンプリング結果記憶部311、第2抽出部313、第2抽出結果記憶部315及び出力部317を有している。
パラメータ記憶部301は、抽出装置101の処理において用いられるパラメータを記憶する。受付部303は、ユーザ端末107からのデータの入力を受け付ける。受付部303は、例えば上記パラメータ及び後述する第1抽出条件を受け付ける。上記パラメータには、例えば後述する最低頻度の初期値も含まれる。
抽出装置101は、例えば2回の抽出を行う。第1抽出部305は、そのうち先の抽出を行う。具体的には、第1抽出部305は、テキストデータベース105から第1抽出条件に適合するテキスト単位(この例では、簡易ブログの記事)を抽出する。また、第1抽出部305は、ハッシュタグを含む第1クエリをデータベース管理システム103へ送信する。ハッシュタグについての部分一致が、第1抽出条件に相当する。但し、第1抽出条件はハッシュタグ以外のテキストデータに関する条件であってもよい。
第1抽出部305は、抽出された結果(第1抽出結果という。)をデータベース管理システム103から取得する。この例では、第1抽出結果は、第1抽出条件に適合するテキスト単位(この例では、簡易ブログの記事)の集合である。第1抽出結果記憶部307は、第1抽出結果を記憶する。
図4に、第1抽出結果の例を示す。この第1抽出結果は、ハッシュタグ「#xyztv」によって検索された記事の集合である。図4に示した第1レコードの記事「村田佳菜子ちゃん、良かった! #xyztv」は、図2に示した第1レコードから得られたものである。同様に、図4に示した第2レコードの記事「むらかなかわいい #xyztv」は、図2に示した第3レコードから得られたものである。同様に、図4に示した第3レコードの記事「村田、まずまず良かったかな #xyztv」は、図2に示した第5レコードから得られたものである。
図2に示した第2レコード及び第4レコードの記事は、ハッシュタグ「#xyztv」を含まないので抽出されない。
図3の説明に戻って、サンプリング部309は、サンプリング処理を実行する。具体的には、サンプリング部309は、テキストデータベース105から無作為にテキスト単位(この例では、簡易ブログの記事)を抽出するようにデータベース管理システム103に要求し、抽出された結果(サンプリング結果という。)をデータベース管理システム103から取得する。サンプリング結果は、無作為に抽出されたテキスト単位の集合である。サンプリング結果記憶部311は、サンプリング結果を記憶する。
第2抽出部313は、テキストデータベース105から第1抽出結果に関連するテキスト単位(この例では、簡易ブログの記事)を抽出する。具体的には、第2抽出部313は、第1抽出結果に基づいてキーワードを生成し、当該キーワードを含む第2クエリをデータベース管理システム103に送信する。
第2抽出部313は、抽出された結果(第2抽出結果という。)をデータベース管理システム103から取得する。この例では、第2抽出結果は、上記キーワードを含むテキスト単位(この例では、簡易ブログの記事)の集合である。第2抽出結果記憶部315は、抽出された結果(第2抽出結果という。)を記憶する。
出力部317は、第2抽出結果を出力する。この例では、出力部317は、第2抽出結果をユーザ端末107へ送信する。但し、出力部317による出力の形態は送信に限らない。出力部317は、第2抽出結果を表示するようにしてもよい。出力部317は、第2抽出結果を記憶媒体に書き込むようにしてもよい。あるいは、出力部317は、第2抽出結果を印刷するようにしてもよい。
パラメータ記憶部301、受付部303、第1抽出部305、第1抽出結果記憶部307、サンプリング部309、サンプリング結果記憶部311、第2抽出部313、第2抽出結果記憶部315及び出力部317は、例えば図34に示すハードウエア資源によって実現される。また、受付部303、第1抽出部305、サンプリング部309、第2抽出部313及び出力部317は、当該モジュールの処理の一部又は全部を、メモリ2501(図34)にロードされたプログラムをCPU2503(図34)で順次実行することにより実現するようにしてもよい。以上で、抽出装置101のモジュール構成についての説明を終える。
続いて、抽出装置101の処理について説明する。図5に、メイン処理フローを示す。受付部303は、ユーザ端末107からパラメータを受け付ける(S501)。受付部303は、受け付けたパラメータをパラメータ記憶部301に記憶させる。受け付けられるパラメータは、例えば後述する各種の基準値(最低頻度を含む。)、初期値及び付加値等である。既に設定されているパラメータを用いる場合には、S501の処理を省くようにしてもよい。
受付部303は、ユーザ端末107から第1抽出条件を受け付ける(S503)。第1抽出条件は、例えば特定のテーマに係るテキスト単位(この例では、簡易ブログの記事)を抽出するための条件である。例えば、第1抽出条件は、上述の通りハッシュタグによって指定される。第1抽出条件は、他の検索条件であってもよい。第1抽出条件は、記事中を検索するための文字列であってもよい。
第1抽出部305は、第1抽出処理を実行する(S505)。第1抽出処理を行う第1抽出部305の内部モジュール構成について説明する。図6に、第1抽出部305の内部モジュール構成例を示す。第1抽出部305は、第1クエリ生成部601、第1要求部603及び第1取得部605を有している。第1クエリ生成部601は、第1抽出条件に基づいて第1クエリを生成する。第1クエリは、第1抽出条件を満たすテキスト単位(この例では、簡易ブログの記事)をデータベース管理システム103に抽出させるための処理要求である。第1要求部603は、第1クエリをデータベース管理システム103に送信する。第1取得部605は、データベース管理システム103から第1抽出結果を取得する。
第1クエリ生成部601、第1要求部603及び第1取得部605は、例えば図34に示すハードウエア資源によって実現される。第1クエリ生成部601、第1要求部603及び第1取得部605は、当該モジュールの処理の一部又は全部を、メモリ2501(図34)にロードされたプログラムをCPU2503(図34)で順次実行することにより実現するようにしてもよい。
図7に、第1抽出処理フローを示す。第1抽出部305の第1クエリ生成部601は、第1抽出条件に基づく第1クエリを生成する(S701)。
第1抽出部305の第1要求部603は、第1クエリをデータベース管理システム103へ送信する(S703)。第1抽出部305の第1取得部605は、データベース管理システム103から第1抽出結果を取得し、取得した第1抽出結果を第1抽出結果記憶部307に書く(S705)。以上で、第1抽出処理についての説明を終える。
このようにして、例えば図4に示した記事が抽出される。この第1抽出結果に含まれる記事は、ユーザが意図している特定のテーマに関連していると想定される。しかし、この段階で当該テーマに関連する記事が、残らず収集されているとは限らない。例えば、図2の第2レコードの記事や第4レコードの記事も、第1レコードの記事、第3レコードの記事あるいは第5レコードの記事と同様の感想を投稿したものであるが、抽出されていない。
図5の説明に戻って、サンプリング部309は、サンプリング処理を実行する(S507)。具体的には、サンプリング部309は、テキストデータベース105から無作為にテキスト単位(この例では、簡易ブログの記事)を抽出するようにデータベース管理システム103に要求し、抽出された結果(サンプリング結果)をデータベース管理システム103から取得する。サンプリング結果記憶部311は、サンプリング部309によるサンプリング結果を記憶する。サンプリング結果には、複数のテキスト単位が含まれている。
第2抽出部313は、第2抽出処理を実行する(S509)。第2抽出処理を行う第2抽出部313の内部モジュール構成について説明する。図8に、第2抽出部313の内部モジュール構成例を示す。第2抽出部313は、キーワード生成部801、キーワード記憶部803、第2クエリ生成部805、第2要求部807及び第2取得部809を有している。キーワード生成部801は、第1抽出結果に基づいてキーワードを生成する。キーワードは、第2抽出処理においてテキスト単位(この例では、簡易ブログの記事)を抽出するための条件になる。キーワードは、第1抽出結果に含まれるテキスト単位に含まれる部分文字列の中から選択される。例えば、図2に示した第2レコードの記事に含まれる「むらかな」の部分文字列が、キーワードになる。
キーワード記憶部803は、生成されたキーワードを記憶する。第2クエリ生成部805は、キーワードに基づいて第2クエリを生成する。第2要求部807は、第2クエリをデータベース管理システム103へ送信する。第2取得部809は、データベース管理システム103から第2抽出結果を取得する。
キーワード生成部801、キーワード記憶部803、第2クエリ生成部805、第2要求部807及び第2取得部809は、例えば図34に示すハードウエア資源によって実現される。第2抽出部313は、キーワード生成部801、第2クエリ生成部805、第2要求部807及び第2取得部809は、当該モジュールの処理の一部又は全部を、メモリ2501(図34)にロードされたプログラムをCPU2503(図34)で順次実行することにより実現するようにしてもよい。
図9に、第2抽出処理フローを示す。第2抽出部313のキーワード生成部801は、キーワード生成処理を実行する(S901)。キーワード生成部801は、第1抽出結果に含まれるテキスト単位(この例では、簡易ブログの記事)に含まれる部分文字列を検出し、それらの部分文字列の中から第1抽出結果と関連の強い部分文字列を選択する。そして、選択された部分文字列がキーワードになる。
例えば、形態素解析によってテキスト単位(この例では、簡易ブログの記事)から単語を検出する方法がある。形態素解析によって検出された単語の中からキーワードを選択するようにしてもよい。しかし、形態素解析によって検出される単語は、予め候補として登録されているものに限られる。従って、未だ候補として登録されていない単語は、形態素解析によって検出されない。例えば、テキスト単位に含まれている新語、略語、専門用語あるいは方言の単語などが検出されないことがある。
本実施の形態では、テキスト単位に含まれている新語、略語、専門用語あるいは方言の単語などもキーワードに採用されるようにするために、頻出パターンマイニングによって部分文字列を検出する。
部分文字列は、連続する2文字以上の連なりである。例えば、「むらかなかわいい」の文における部分文字列は、「むら」、「むらか」、「むらかな」、(中略)、「むらかなかわいい」、「らか」、「らかな」、「らかなか」、(中略)、「らかなかわいい」、(中略)、「わい」、「わいい」、「いい」である。一方、「むらかなかわいい」の文に対する形態素解析では、例えば単語「かわいい」が検出される。このように、理論上の部分文字列の数は、形態素解析で検出される単語の数に比べてとても多い。
しかし、理論上の部分文字列を残らずキーワードの候補とするとキーワードを選択する処理が煩雑になる。本実施の形態では、所定頻度以上の部分文字列に限ってキーワードの候補とする。このようにすれば、キーワードの候補の数が制限されるので、キーワードを選択する処理の負担が軽くなる。尚、ここでいう頻度は、第1抽出結果に含まれるテキスト単位(この例では、簡易ブログの記事)のうち、当該部分文字列を含むテキスト単位の数である。別の言い方をすると、頻度は、第1抽出結果に含まれるテキスト単位に当該部分文字列が出現する回数である。但し、テキスト単位の複数箇所に部分文字列が含まれる場合には、1回とカウントする。また、上述の所定頻度は、基準値の一種であって、以下では最低頻度という。
一般的に、頻出パターンマイニングでは、要素列の集合から頻出するパターンを検出する。本実施の形態では、テキスト単位が要素列に相当し、文字が要素に相当し、部分文字列がパターンに相当する。つまり、頻出パターンマイニングによって、テキスト単位の集合から頻出する部分文字列を検出する。頻出パターンマイニングによって頻出する部分文字列を検出するようにすれば、理論上の部分文字列の各々について頻度を算出する方法に比べて、処理負担が小さくなる。
本実施の形態では、頻出パターンマイニングの一種であるModified Prefixspanを用いる。Modified Prefixspanは、要素間の距離を条件として要素列を検出する。本実施の形態では、文字間の距離を0とする条件によって文字列を検出する。
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は、最低頻度以上の頻度に係る要素列を検出する。但し、最低頻度が高すぎると、キーワードとすべき部分文字列を検出しなくなる。その場合には、抽出すべきテキスト単位(この例では、簡易ブログの記事)を抽出し損なう可能性がある。
他方、最低頻度が低すぎると、余分な部分文字列を検出するようになる。その結果、処理負担が大きくなり、処理時間が長くなる。
本実施の形態では、キーワードになる部分文字列の頻度に着目して、最低頻度を定めるようにする。
図10に、頻度に対する部分文字列数の特性を示す。横軸は、部分文字列の頻度を示している。縦軸は、部分文字列の数を示している。頻度に対する部分文字列数の特性は、英語における単語の出現頻度についての経験則(ジップの法則)に近似すると想定される。そのように想定すると、図示するように頻度が小さい部分文字列は、その数が極めて多くなる。他方、頻度が大きい部分文字列は、その数が極めて少なくなる。この図における部分文字列は、理論上の部分文字列であって、キーワードになる部分文字列とキーワードにならない部分文字列との両方を含んでいる。
図11に、頻度に対するキーワード数の特性を示す。横軸は、キーワードの頻度を示している。縦軸は、キーワード数を示している。この図は、図10における部分文字列のうちキーワードになるものについての分布を示している。本実施の形態では、頻度に対するキーワードの分布は、山形を示すものと想定する。図11の例は、正規分布に近似している。
この図で、例えば最もキーワード数が多い頻度(頻度の平均に相当する)よりも小さい値を、最低頻度に設定してModified Prefixspanを行えば半数以上のキーワードが検出される。本実施の形態では、頻度に対するキーワード数に基づいて最低頻度を設定する。
キーワード生成部801は、大きい方から小さい方への最低頻度を移行させながら、適当な際低頻度を探索するように処理する。具体的には、キーワード生成部801は、最低頻度を減じながらModified Prefixspanを行い、それに伴うキーワード数の変化によって、適当な最低頻度を判定するようにする。そして、適当な最低頻度であると判定された時点で検出されているキーワードが、キーワード生成部801による生成結果となる。
尚、キーワード生成部801は、第1抽出結果との関連の強さを示すスコアによって、部分文字列がキーワードに適するか否かを判定する。
キーワード生成処理を行うキーワード生成部801の内部モジュール構成について説明する。図12に、キーワード生成部801の内部モジュール構成例を示す。キーワード生成部801は、部分文字列検出部1201、検出結果記憶部1203、キーワード選択部1205、選択結果記憶部1207、終了判定部1209、度数分布記憶部1211、反復部1213及びキーワード特定部1215を有している。
部分文字列検出部1201は、上述したModified Prefixspanによって、第1抽出結果記憶部307に含まれるテキスト単位(この例では、簡易ブログの記事)から部分文字列を検出する。検出結果記憶部1203は、部分文字列検出部1201による検出結果を記憶する。検出結果は、検出された一又は複数の部分文字列を含んでいる。キーワード選択部1205は、検出結果に含まれる部分文字列の中からキーワードを選択する。選択結果記憶部1207は、キーワード選択部1205による選択結果を記憶する。選択結果は、各回におけるキーワードテーブルを含む。キーワードテーブルには、選択されたキーワードが登録される。終了判定部1209は、キーワードの度数分布表を生成し、第2抽出処理の終了を判定する。度数分布記憶部1211は、キーワードの度数分布表を記憶する。反復部1213は、Modified Prefixspanに用いる最低頻度を更新し、部分文字列検出部1201による処理と、キーワード選択部1205による処理と、終了判定部1209による処理とを反復する。キーワード特定部1215は、第2抽出処理の結果であるキーワードを特定する。
部分文字列検出部1201、検出結果記憶部1203、キーワード選択部1205、選択結果記憶部1207、終了判定部1209、度数分布記憶部1211、反復部1213及びキーワード特定部1215は、例えば図34に示すハードウエア資源によって実現される。部分文字列検出部1201、キーワード選択部1205、終了判定部1209、反復部1213及びキーワード特定部1215は、当該モジュールの処理の一部又は全部を、メモリ2501(図34)にロードされたプログラムをCPU2503(図34)で順次実行することにより実現するようにしてもよい。
図13に、キーワード生成処理フローを示す。キーワード生成部801の部分文字列検出部1201は、部分文字列検出処理を実行する(S1301)。
図14に、部分文字列検出処理フローを示す。部分文字列検出部1201は、頻出パターンマイニング処理を実行する(S1401)。
本実施の形態に係る頻出パターンマイニング処理について説明する。上述のように文字を要素とみなし、第1抽出結果に含まれるテキスト単位(この例では、簡易ブログの記事)を要素列とみなし、部分文字列をパターンとみなして頻出パターンマイニングを行う。本実施の形態では、頻出パターンマイニングの一種であるModified Prefixspanを実行する。このとき、部分文字列検出部1201は、パラメータ記憶部301に記憶されている最低頻度をModified Prefixspanに適用する。また、部分文字列検出部1201は、Modified Prefixspanに適用する最低要素数を2とする。更に、部分文字列検出部1201は、Modified Prefixspanに適用する要素間距離を0とする。
キーワード生成部801の部分文字列検出部1201は、検出された結果(検出結果)を検出結果記憶部1203に書く(S1403)。検出結果は、Modified Prefixspanによって検出された部分文字列の集合である。
図15に、検出結果の例を示す。検出結果は、検出された部分文字列毎にレコードを有している。レコードは、部分文字列を格納するためのフィールドと、頻度を格納するためのフィールドとを有している。
この例は、最初に行った頻出パターンマイニングによる検出結果の例を示している。このときの最低頻度は60に設定されている。従って、頻度が60以上である部分文字列が検出される。
第1レコードは、部分文字列「良かった」を検出し、当該部分文字列の頻度が「70」であることを示している。第2レコードは、部分文字列「かな」を検出し、当該部分文字列の頻度が「90」であることを示している。部分文字列「良かった」と部分文字列「かな」とは、第1抽出結果に含まれる記事に頻繁に出現することを意味する。
図13の説明に戻って、キーワード生成部801のキーワード選択部1205は、キーワード選択処理を実行する(S1303)。図16に、キーワード選択処理フローを示す。キーワード選択部1205は、検出結果記憶部1203に記憶されている検出結果に含まれる部分文字列のうち、スコア算出処理の対象となっていない未処理の部分文字列を1つ特定する(S1601)。キーワード選択部1205は、特定した部分文字列について、スコア算出処理を実行する(S1603)。スコア算出処理では、特定された部分文字列についてのスコアを算出する。
この例におけるスコアは、第1出現確率を第2出現確率で除したリフト値である。第1出現確率は、第1抽出結果において当該部分文字列が出現する確率である。第2出現確率は、サンプリング結果において当該部分文字列が出現する確率である。スコアが大きい場合には、当該部分文字列は第1抽出結果との関連が強いことを意味する。スコアが小さい場合には、当該部分文字列は第1抽出結果との関連が弱いことを意味する。
図17に、スコア算出処理フローを示す。キーワード選択部1205は、第1出現確率算出処理を実行する(S1701)。第1出現確率算出処理では、上述した第1出現確率を算出する。
図18に、第1出現確率算出処理フローを示す。キーワード選択部1205は、第1抽出結果に含まれるテキスト単位(この例では、簡易ブログの記事)の数を特定する(S1801)。具体的には、キーワード選択部1205は、第1抽出結果記憶部307に記憶されている第1抽出結果に含まれるテキスト単位をカウントする。以下、このテキスト単位の数を第1テキスト単位数という。
次に、キーワード選択部1205は、第1抽出結果において、当該部分文字列を含むテキスト単位(この例では、簡易ブログの記事)の数をカウントする(S1803)。以下、このテキスト単位の数を第1出現頻度という。
そして、キーワード選択部1205は、第1抽出結果において当該部分文字列が出現する確率(第1出現確率)を算出する(S1805)。具体的には、キーワード選択部1205は、第1出現頻度を第1テキスト単位数で除して得られた商が、第1出現確率である。
図17の説明に戻って、キーワード選択部1205は、第2出現確率算出処理を実行する(S1703)。第2出現確率算出処理では、上述した第2出現確率を算出する。
図19に、第2出現確率算出処理フローを示す。キーワード選択部1205は、サンプリング結果に含まれるテキスト単位(この例では、簡易ブログの記事)の数を特定する(S1901)。具体的には、キーワード選択部1205は、サンプリング結果記憶部311に記憶されているサンプリング結果に含まれるテキスト単位をカウントする。以下、このテキスト単位の数を第2テキスト単位数という。
次に、キーワード選択部1205は、サンプリング結果において、当該部分文字列を含むテキスト単位(この例では、簡易ブログの記事)の数をカウントする(S1903)。以下、このテキスト単位の数を第2出現頻度という。
そして、キーワード選択部1205は、サンプリング結果において当該部分文字列が出現する確率(第2出現確率)を算出する(S1905)。具体的には、キーワード選択部1205は、第2出現頻度を第2テキスト単位数で除して得られた商が、第2出現確率である。
図17の説明に戻って、キーワード選択部1205は、出現確率の比率(リフト値)を算出する(S1705)。具体的には、キーワード選択部1205は、第1出現確率を第2出現確率で除して得られた比率が、出現確率の比率(リフト値)である。
図15に示した検出結果に含まれる部分文字列に対するスコアの例を、図20に示す。第1レコードは、部分文字列「良かった」のスコアが「4」であることを示している。第2レコードは、部分文字列「かな」のスコアが「3」であることを示している。部分文字列「良かった」と部分文字列「かな」とは、共にスコアが小さい。つまりこれらの部分文字列は、第1抽出結果との関連が弱いことを意味する。これらの文字列は、一般的な文において頻繁に出現する文字列であるので、第1抽出結果と関連が特に強いとは言えない。
図16の説明に戻って、キーワード選択部1205は、算出したスコアが基準値を越えているか否かを判定する(S1605)。当該基準値は、第1抽出結果との関連が強いか否かを判定するためのパラメータである。当該基準値は、パラメータ記憶部301に記憶されている。当該基準値は、パラメータ記憶部301によって受け付けられるパラメータの一つである。当該基準値は、最低スコアと呼ばれることもある。
算出したスコアが基準値を越えていると判定した場合には、キーワード選択部1205は、当該部分文字列を、今回のキーワードテーブルに登録する(S1607)。各回のキーワードテーブルは、選択結果記憶部1207に生成される。具体的には、キーワード選択部1205は、選択結果記憶部1207に記憶される今回のキーワードテーブルに当該部分文字列を設定する。このとき、キーワード選択部1205は、今回のキーワードテーブルにおいて当該部分文字列に対応するスコアを付加するようにしてもよい。
算出したスコアが基準値を越えていないと判定した場合には、キーワード選択部1205は、当該部分文字列を今回のキーワードテーブルに登録しない。例えば、図15及び図20に示した検出結果に含まれる部分文字列については、いずれもそのスコアが基準値を越えないので、今回のキーワードテーブルに登録されない。
キーワード選択部1205は、検出結果記憶部1203に記憶されている検出結果に含まれる部分文字列のうち、スコア算出処理の対象となっていない未処理の部分文字列があるか否かを判定する(S1609)。未処理の部分文字列があると判定した場合には、S1601の処理に戻って、キーワード選択部1205は上述した処理を繰り返す。未処理の部分文字列がないと判定した場合には、キーワード選択部1205は、キーワード選択処理を終了する。そして、図13のS1305に移る。
図13の説明に戻って、キーワード生成部801の終了判定部1209は、終了判定処理を実行する(S1305)。
図21に、終了判定処理フローを示す。終了判定部1209は、現在の最低頻度が基準値以下か否かを判定する(S2101)。例えば、図10に示したように頻度が2あるいは3になると、部分文字列の数が極端に多く、上述した第2出現確率算出処理などの処理負担が膨大になる。従って、本実施の形態では、最低頻度に下限を設ける。上記基準値は、最低頻度の下限を意味する。
現在の最低頻度が基準値以下であると判定した場合には、終了判定部1209は、判定結果を「終了する」と設定する(S2103)。このようにして、現在の最低頻度が基準値以下であると判定した場合には、以降の探索を行わないようにする。
現在の最低頻度が基準値以下ではないと判定した場合には、終了判定部1209は、新たな範囲を特定する(S2105)。終了判定処理は、上述したように頻度に対するキーワードの分布に基づいて行われる。そのために、終了判定部1209は、キーワードの度数分布表を生成する。新たな範囲は、頻度についての範囲であって、度数分布表における新たな階級に相当する。
図22に、キーワードの度数分布表の例を示す。度数分布表は、階級毎にレコードを有している。階級は、頻度の範囲によって特定される。レコードは、頻度の範囲を格納するためのフィールドと、キーワード数を格納するためのフィールドとを有している。反復によって終了判定処理を行う度に、新たなレコードが追加される。
第1レコードは、頻度が60以上の範囲におけるキーワード数が0であることを示している。第1レコードにおけるキーワード数は、1回目に生成されたキーワード数を示している。
第2レコードは、頻度が57以上且つ60未満の範囲におけるキーワード数が3であることを示している。第2レコードにおけるキーワード数は、2回目に生成されたキーワード数と1回目に生成されたキーワード数の差分、つまり2回目に新たに生成されたキーワードの数を示している。
第3レコードは、頻度が54以上且つ57未満の範囲におけるキーワード数が6であることを示している。第3レコードにおけるキーワード数は、3回目に生成されたキーワード数と2回目に生成されたキーワード数の差分、つまり3回目に新たに生成されたキーワードの数を示している。
第4レコードは、頻度が51以上且つ54未満の範囲におけるキーワード数が12であることを示している。第4レコードにおけるキーワード数は、4回目に生成されたキーワード数と3回目に生成されたキーワード数の差分、つまり4回目に新たに生成されたキーワードの数を示している。
第5レコードは、頻度が48以上且つ51未満の範囲におけるキーワード数が18であることを示している。第5レコードにおけるキーワード数は、5回目に生成されたキーワード数と4回目に生成されたキーワード数の差分、つまり5回目に新たに生成されたキーワードの数を示している。
この例では、範囲の大きさを均等にしているが、範囲の大きさを回毎に異なるようにしてもよい。
図23に、キーワードの度数分布図の例を示す。この度数分布図は、図22に示した度数分布表をグラフ化したもの(ヒストグラム)である。
図21の説明に戻って、終了判定部1209は、新たな範囲におけるキーワード数を算出する(S2107)。具体的には、終了判定部1209は、今回のキーワードテーブルに含まれるキーワードをカウントし、今回のキーワード数から前回のキーワード数を引くことによって、新たな範囲におけるキーワード数を求める。
終了判定部1209は、度数分布表に新たなレコードを追加する(S2109)。新たなレコードには、新たな範囲と、キーワード数とが設定される。
終了判定部1209は、キーワード数の変化傾向を判定する(S2111)。変化傾向は、例えば増加傾向あるいは減少傾向のいずれかである。例えば、終了判定部1209は、前回の範囲におけるキーワード数よりも今回の範囲におけるキーワード数が増えている場合に、増加傾向と判定し、前回の範囲におけるキーワード数よりも今回の範囲におけるキーワード数が減っている場合に、減少傾向と判定する。あるいは、終了判定部1209は、今回の範囲におけるキーワード数を、前回より前の回の範囲におけるキーワード数と比較するようにしてもよい。終了判定部1209は、今回の範囲におけるキーワード数を、複数回の範囲におけるキーワード数と夫々比較して、各回の比較結果に基づいて変化傾向を判定するようにしてもよい。
終了判定部1209は、キーワード数の変化傾向が増加傾向であるか否かを判定する(S2113)。キーワード数の変化傾向が増加傾向であると判定した場合には、終了判定部1209は、判定結果を「終了しない」と設定する(S2119)。例えば、図23に示すように、4回目の範囲におけるキーワード数が増加傾向にある場合には、キーワードとすべき部分文字列の多くが未だ検出されていないと推測されるので、キーワード生成処理を続行させる。
キーワード数の変化傾向が増加傾向ではないと判定した場合には、終了判定部1209は、今回の範囲におけるキーワード数が第1基準値以下であるか否かを判定する(S2115)。第1基準値は、頻度の低下に伴いキーワード数が収束しつつあると判定するための基準である。第1基準値は、パラメータ記憶部301に記憶されている。第1基準値は、受付部303によって受け付けられるようにしてもよい。第1基準値は、第1テキスト単位数(この例では、第1抽出結果に含まれる記事の数)に応じ設定されるようにしてもよい。
図24に、キーワードの度数分布図の例を示す。図中の破線は、第1基準値を示している。最低頻度を15に設定して部分文字列を検出した回の範囲におけるキーワード数は、第1基準値を上回っているので、キーワード数はまだ収束する段階に至っていないと想定される。
次に最低頻度を12に設定して部分文字列を検出した回の範囲におけるキーワード数は、第1基準値を下回っているので、キーワード数が収束しつつあると想定される。
更に最低頻度を9に設定して部分文字列を検出した回の範囲におけるキーワード数は、再び第1基準値を下回っている。この時点において2回連続で第1基準値を下回ったことになる。本実施の形態は、このように2回連続して各回の範囲におけるキーワード数が第1基準値を下回った場合に、キーワード生成を終了させるようにする。連続数は、3以上であってもかまわない。また、1回でも第1基準値を下回った場合には、キーワード生成を終了させるようにしてもよい。
図21の説明に戻って、S2115で、今回の範囲におけるキーワード数が第1基準値以下ではないと判定した場合には、終了判定部1209は、判定結果を「終了しない」と設定する(S2119)。
キーワード数が第1基準以下であると判定した場合には、終了判定部1209は、当該判定結果が連続した回数が所定数(この例では、2)に達したか否かを判定する。(S2117)。当該判定結果が連続した回数が所定数に達したと判定した場合には、終了判定部1209は、判定結果を「終了する」と設定する(S2103)。
当該判定結果が連続した回数が所定数に達していないと判定した場合には、終了判定部1209は、判定結果を「終了しない」と設定する(S2119)。終了判定処理を終えると、図13のS1307に示した処理に戻る。
図13の説明に戻って、反復部1213は、判定結果が「終了する」と設定されたか否かを判定する(S1307)。判定結果が「終了する」と設定されていないと判定した場合、つまり判定結果が「終了しない」と設定された場合には、キーワード生成部801の反復部1213は、最低頻度更新処理を実行する(S1309)。最低頻度更新処理によって、次の回における最低頻度が設定される。
本実施の形態では、最低頻度更新処理(A)を行う。図25に、最低頻度更新処理(A)フローを示す。反復部1213は、最低頻度から所定数(この例では、3)を減ずる(S2501)。当該所定数は、度数分布の階級を特定する範囲の大きさに相当する。従って、本実施の形態では、度数分布の階級を特定する範囲の大きさが均等になる。
最低頻度更新処理を終えると、反復部1213は、S1301に処理を戻し、S1301の部分文字列検出処理と、S1303のキーワード選択処理と、S1305の終了判定処理とを反復する。
このようにして、最低頻度を減じながら、キーワード生成を終了させると判定されるまで、部分文字列検出処理(S1301)とキーワード選択処理(S1303)と終了判定処理(S1305)とが繰り返される。
最低頻度が12に設定された回における検出結果の例を図26に示す。この回では、頻度が12以上である部分文字列が検出される。
第1レコードは、部分文字列「村田」を検出し、当該部分文字列の頻度が「32」であることを示している。第2レコードは、部分文字列「佳菜子」を検出し、当該部分文字列の頻度が「29」であることを示している。第3レコードは、部分文字列「佳菜子ちゃん」を検出し、当該部分文字列の頻度が「13」であることを示している。第4レコードは、部分文字列「良かった」を検出し、当該部分文字列の頻度が「70」であることを示している。第5レコードは、部分文字列「かな」を検出し、当該部分文字列の頻度が「90」であることを示している。第6レコードは、部分文字列「かわいい」を検出し、当該部分文字列の頻度が「38」であることを示している。今回初めて検出された部分文字列「佳菜子ちゃん」の頻度は、これらの部分文字列の中では最も小さい。つまり、部分文字列「佳菜子ちゃん」が第1抽出結果に含まれる記事中に出現する確率は、比較的低い。
図26に示した検出結果に含まれる部分文字列に対するスコアの例を、図27に示す。第1レコードは、部分文字列「村田」のスコアが「10」であることを示している。第2レコードは、部分文字列「佳菜子」のスコアが「100」であることを示している。第3レコードは、部分文字列「佳菜子ちゃん」のスコアが「150」であることを示している。第4レコードは、部分文字列「良かった」のスコアが「4」であることを示している。第5レコードは、部分文字列「かな」のスコアが「3」であることを示している。第6レコードは、部分文字列「かわいい」のスコアが「5」であることを示している。今回初めて検出された部分文字列「佳菜子ちゃん」のスコアは、これらの部分文字列の中では最も大きい。つまり、部分文字列「佳菜子ちゃん」は、第1抽出結果に含まれる記事との関連が最も強い。
図28は、図27に示したスコアに基づくキーワードテーブルの例を示している。この例で、スコアの基準値は、50である。従って、スコアが50を越えた部分文字列「佳菜子」と部分文字列「佳菜子ちゃん」とが選択され、今回のキーワードテーブルに設定されている。スコアが50を越えていない部分文字列「村田」と部分文字列「良かった」と部分文字列「かな」と部分文字列「かわいい」とは、選択されていない。
図29は、その次の回における検出結果の例を示している。この回では、最低頻度が12に設定されている。従って、頻度が12以上である部分文字列が検出される。第1レコード乃至第5レコードは、図26の場合と同様である。第6レコードは、部分文字列「むらかな」を検出し、当該部分文字列の頻度が「10」であることを示している。第7レコードは、図26の第6レコードと同様である。今回初めて検出された部分文字列「むらかな」の頻度は、前回初めて検出された部分文字列「佳菜子ちゃん」の頻度に比べて、更に低い。部分文字列「むらかな」が第1抽出結果に含まれる記事中に出現する確率は、部分文字列「佳菜子ちゃん」が第1抽出結果に含まれる記事中に出現する確率よりも、更に低い。
図29に示した検出結果に含まれる部分文字列に対するスコアの例を、図30に示す。第1レコード乃至第5レコードは、図27の場合と同様である。第6レコードは、部分文字列「むらかな」のスコアが「60」であることを示している。第7レコードは、図27の第6レコードと同様である。今回初めて検出された部分文字列「むらかな」のスコアは、比較的大きい。つまり、部分文字列「むらかな」は、第1抽出結果に含まれる記事との関連が比較的強い。
図31は、図30に示したスコアに基づくキーワードテーブルの例を示している。この例で、スコアの基準値は、前述した通り50である。従って、スコアが50を越えた部分文字列「佳菜子」と部分文字列「佳菜子ちゃん」とに加えて、部分文字列「むらかな」も選択され、今回のキーワードテーブルに設定されている。スコアが50を越えていない部分文字列「村田」と部分文字列「良かった」と部分文字列「かな」と部分文字列「かわいい」とは、前回と同様に選択されていない。
図13の説明に戻って、S1307で、判定結果が「終了する」と設定されたと判定した場合には、キーワード生成部801のキーワード特定部1215は、キーワードを特定する(S1311)。具体的には、キーワード特定部1215は、最終回におけるキーワードテーブルに設定されているキーワードを特定する。キーワード生成処理を終えると、図9に示したS903の処理に戻る。
図9の説明に戻って、第2抽出部313の第2クエリ生成部805は、キーワード生成処理で生成されたキーワードを含む第2クエリを生成する(S903)。第2クエリ生成部805は、例えば、キーワード生成処理で生成されたキーワードを残らずOR条件で検索するためのクエリを生成する。あるいは、第2クエリ生成部805は、キーワード生成処理で生成されたキーワードを残らずAND条件で検索するためのクエリを生成するようにしてもよい。あるいは、第2クエリ生成部805は、キーワード生成処理で生成されたキーワードの一部をOR条件で検索するためのクエリを生成するようにしてもよい。あるいは、第2クエリ生成部805は、キーワード生成処理で生成されたキーワードの一部をAND条件で検索するためのクエリを生成するようにしてもよい。
第2抽出部313の第2要求部807は、第2クエリをデータベース管理システム103へ送信する(S905)。第2抽出部313の第2取得部809は、データベース管理システム103から第2抽出結果を取得し、取得した第2抽出結果を第2抽出結果記憶部315に書く(S907)。以上で、第2抽出処理についての説明を終える。第2抽出処理を終えると、図5のS511に示した処理に戻る。
図5の説明に戻って、出力部317は、第2抽出結果を出力する(S511)。例えば、出力部317は、ユーザ端末107へ第2抽出結果を送信する。
本実施の形態によれば、テキスト単位(例えば、簡易ブログの記事のような文書)の集合に潜在しているキーワードが、ある程度抜き出されたことを推測して、処理を終わらせることができる。従って、無駄な処理を省き、更にキーワードの有効性を担保できる。尚、処理終了の時点で適当な最低頻度が特定されている。
また、一般的に部分文字列の数が多くなる範囲(頻度が低い範囲)における一連の処理を省くので、処理負担が軽減される。特に、スコア算出に係る処理負担が軽減される。
更に、想定されるキーワード数の変化傾向に従って、潜在しているキーワードのうち多くが抜き出されたことを推定できる。
[実施の形態2]
上述の実施の形態では、度数分布の階級を特定する頻度の範囲の大きさを均等とする例を示したが、本実施の形態では、頻度が小さくなるにつれて、度数分布の階級を特定する頻度の範囲を狭める例について説明する。
本実施の形態では、最低頻度を求めるための除数のパラメータを設ける。当該除数のパラメータの初期値は、パラメータ記憶部301に記憶されている。当該除数のパラメータの初期値は、受付部303によって受け付けられるようにしてもよい。
また、最低頻度更新処理において除数のパラメータに加算する所定の付加値を設ける。所定の付加値は、パラメータ記憶部301に記憶されている。所定の付加値は、受付部303によって受け付けられるようにしてもよい。
本実施の形態では、図13に示したS1309において、キーワード生成部801の反復部1213は、最低頻度更新処理(B)を実行する。図32に、最低頻度更新処理(B)フローを示す。反復部1213は、除数のパラメータに所定の付加値を加算する(S3201)。
反復部1213は、第1テキスト単位数を上記の除数で割り(S3203)、商を最低頻度に設定する(S3205)。
このようにすれば、頻度が大きい段階では、最低頻度の変化量が大きくなる。従って、反復の回数を少なくすることができる。
[実施の形態3]
実施の形態2では、所定の付加値を一定とする例について説明したが、本実施の形態では、キーワードの数が収束し始めるまでの第1の付加値と、キーワードの数が収束し始めてからの第2の付加値とを切り替える例について説明する。
本実施の形態では、最低頻度更新処理において除数のパラメータに加算する付加値を2種類設ける。第1の付加値は、第2の付加値よりも大きい。第1の付加値と第2の付加値とは、パラメータ記憶部301に記憶されている。第1の付加値と第2の付加値とは、受付部303によって受け付けられるようにしてもよい。
また、キーワード数が収束する段階に近づいているか否かを判定するための第2基準値を設ける。第2基準値は、S2115で用いる第1基準値よりも大きい値である。第2基準値は、パラメータ記憶部301に記憶されている。第2基準値は、受付部303によって受け付けられるようにしてもよい。第2基準値は、第1テキスト単位数(この例では、第1抽出結果に含まれる記事の数)に応じ設定されるようにしてもよい。
本実施の形態では、図13に示したS1309において、キーワード生成部801の反復部1213は、最低頻度更新処理(C)を実行する。図33に、最低頻度更新処理(C)フローを示す。反復部1213は、S2111で判定した変化傾向が増加傾向であるか否かを判定する(S3301)。S2111で判定した変化傾向が増加傾向であると判定した場合には、反復部1213は、上述した除数のパラメータに第1の付加値を加算する(S3303)。
例えば図11に示した分布において、頻度が30乃至60の領域では、変化傾向が増加傾向であるため、除数のパラメータに第1の付加値が加算される。
一方、S2111で判定した変化傾向が増加傾向ではないと判定した場合には、反復部1213は、キーワード数が第2基準値以上であるか否かを判定する。(S3305)。キーワード数が第2基準値以上であると判定した場合には、反復部1213は、除数のパラメータに第1の付加値を加算する(S3303)。
例えば図11に示した分布において、第2基準値がキーワード数10程度に相当すると想定すると、頻度が20乃至30の領域では、キーワード数が第2基準値以上であるため、除数のパラメータに第1の付加値が加算される。
他方、キーワード数が第2基準値未満であると判定した場合には、反復部1213は、除数のパラメータに第2の付加値を加算する(S3307)。
例えば図11に示した分布において、頻度が20を下回る左側の領域では、キーワード数が第2基準値未満であるため、除数のパラメータに第2の付加値が加算される。
反復部1213は、第1テキスト単位数を除数で割り(S3309)、反復部1213は、商を最低頻度に設定する(S3311)。
このようにすれば、キーワード数が収束する段階に至るまで、最低頻度の変化量が大きい。従って、反復の回数を少なくすることができる。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上で述べた抽出装置101は、コンピュータ装置であって、図34に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係るキーワード生成方法は、文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、検出された部分文字列の各々について上記集合との関連の強さを示すスコアを算出し、当該スコアに基づき部分文字列の中からキーワードを選択する選択処理と、新たに選択されたキーワードの数を算出し、当該キーワードの数に基づいて、検出処理及び選択処理を終了するか否かを判定する判定処理と、検出処理及び選択処理を終了しないと判定した場合に、上記基準値を更新して、検出処理と選択処理と判定処理とを反復する反復処理とを含む。
このようにすれば、文書の集合に潜在しているキーワードが、ある程度抜き出されたことを推測して、処理を終わらせることができる。従って、無駄な処理を省き、更にキーワードの有効性を担保できる。
また、上記反復処理において、反復の度に順次より小さい値へ上記基準値を更新するようにしてもよい。
このようにすれば、一般的に部分文字列の数が多くなる範囲(頻度が低い範囲)における一連の処理を省くようになるので、処理負担が軽減される。特に、スコア算出に係る処理負担が軽減される。
また、上記判定処理において、キーワードの数が減少する傾向を示し、且つキーワードの数が閾値を下回ったと判定した場合に、検出処理及び選択処理を終了すると判定するようにしてもよい。
このようにすれば、想定されるキーワード数の変化傾向に従って、潜在しているキーワードのうち多くが抜き出されたことを推定できるようになる。
また、上記反復処理において、反復の度に上記基準値の更新量をより小さくするようにしてもよい。
このようにすれば、キーワードの有効性を担保しつつ、反復の回数を減らすことができる。
また、上記反復処理において、キーワードの数が収束する段階に近づいているか否かを判定し、当該段階に近づいていると判定した場合に、上記基準値の更新量を小さくするようにしてもよい。
このようにすれば、キーワードの有効性を担保しつつ、反復の回数を減らすことができる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択処理と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定処理と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出処理と前記選択処理と前記判定処理とを反復する反復処理と
を含み、コンピュータにより実行されるキーワード生成方法。
(付記2)
前記反復処理において、反復の度に順次より小さい値へ前記基準値を更新する
付記1記載のキーワード生成方法。
(付記3)
前記判定処理において、前記キーワードの数が減少する傾向を示し、且つ前記キーワードの数が閾値を下回ったと判定した場合に、前記検出処理及び前記選択処理を終了すると判定する
付記2記載のキーワード生成方法。
(付記4)
前記反復処理において、反復の度に前記基準値の更新量をより小さくする
付記2又は3記載のキーワード生成方法。
(付記5)
前記反復処理において、前記キーワードの数が収束する段階に近づいているか否かを判定し、当該段階に近づいていると判定した場合に、前記基準値の更新量を小さくする
付記2乃至4のいずれか1つ記載のキーワード生成方法。
(付記6)
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出処理と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択処理と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定処理と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出処理と前記選択処理と前記判定処理とを反復する反復処理と
をコンピュータに実行させるためのプログラム。
(付記7)
文書の集合において出現する頻度が基準値以上である部分文字列を一又は複数検出する検出部と、
検出された前記部分文字列の各々について前記集合との関連の強さを示すスコアを算出し、当該スコアに基づき前記部分文字列の中からキーワードを選択する選択部と、
新たに選択された前記キーワードの数を算出し、当該キーワードの数に基づいて、前記検出処理及び前記選択処理を終了するか否かを判定する判定部と、
前記検出処理及び前記選択処理を終了しないと判定した場合に、前記基準値を更新して、前記検出部による処理と前記選択部による処理と前記判定部による処理とを反復させる反復部と
を有する情報処理装置。