【文献】
櫻井 茂明 外1名,キーフレーズに基づいたテキストの分析,知能と情報,日本,日本知能情報ファジィ学会,2005年 2月15日,第17巻第1号,p.52-59
【文献】
中渡瀬 秀一,統計的手法によるテキストからの重要語抽出メカニズム,情報処理学会研究報告,日本,社団法人情報処理学会,1995年 9月14日,第95巻第87号,p.41-48
【文献】
長尾 真 外2名,日本語文献における重要語の自動抽出,情報処理,日本,社団法人情報処理学会,1976年 2月15日,第17巻第2号,p.110-117
(58)【調査した分野】(Int.Cl.,DB名)
前記抽出部は、ある連鎖数に対して前記統計値が所定の第1閾値以上であるような、前記連鎖数と前記統計値との組合せを有するキーフレーズ領域に属する前記言語要素列を、抽出して出力する、ことを特徴とする請求項1に記載のフレーズ検出装置。
【発明を実施するための形態】
【0017】
次に、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本実施形態によるフレーズ検出装置の機能構成を示すブロック図である。図示するように、フレーズ検出装置1は、読込部11と、ツイート記憶部12と、分割部13と、グラフ生成部14(分析部)と、グラフ記憶部15と、ノード抽出部16(抽出部)とを含んで構成される。これら各部は、電子回路等を用いて実現される。また、ツイート記憶部12とグラフ記憶部15とは、磁気ハードディスク装置や半導体メモリ装置を用いて実現される。
【0018】
読込部11は、テキストデータを読み込み、ツイート記憶部12に記憶させる。ここでは、このテキストデータは、ソーシャル・ネットワーク・システムにおける発言のテキストであり、発言単位で識別されるものである。テキストデータの一例は、ツイッター(Twitter)におけるツイート(tweet,発言単位)のテキストである。ツイートは、ユーザーによる発言の一単位である。ツイートの長さに関して本来的には制約はないが、システムによっては1ツイートの長さ(文字数)が制限されている場合もある。
【0019】
なお、ソーシャル・ネットワーク・システムの典型例においては、そのユーザーが、ツイート単位でテキスト情報を発信する。ユーザーは、他のユーザーから発信されるツイートであって、所定の関係にあるツイートのみを、ソーシャルストリーム上で閲覧する。ここで、所定の関係とは、例えば、フォロー/被フォロー、フレンド(友達)、共通のクラスター(興味、話題、リスト等)への所属等である。
【0020】
ツイート記憶部12は、読込部11によって読み込まれたテキストデータを、発言単位で記憶する。ツイート記憶部12が記憶するデータの構成については、後述する。
【0021】
分割部13は、読込部11によって読み込まれたテキストデータ(文)を、単語(言語要素)の単位に分割する。
【0022】
グラフ生成部14は、分割部13によって分割された結果に基づき、テキストデータに含まれる単語のn−gram(エヌグラム、言語要素列)を抽出し、複数の単語n−gramの間の包含関係(ある単語列が、別の単語列に包含されるか否か)によるリンク情報を生成するとともに、各々の単語n−gramの統計的独立性を表すχ
2値(統計値)を算出する。また、グラフ生成部14は、n−gramを抽出する際に、そのn−gramを含む前記発言単位の識別情報(ツイートID)のリストを生成する。なお、グラフ生成部14がリンク情報を生成する際、単語の連鎖数(単語数)の差が1である(つまり1段階差の)n−gram間のリンク情報のみを直接生成する。それらのリンク情報を順にたどることにより、単語の連鎖数の差が2以上である(つまり多段階差の)n−gramのリンクも把握できる。ある単語n−gramをノードと捉えたとき、グラフ生成部14が生成するリンク情報によって、グラフ構造のデータが形成される。ここではこれを便宜上、グラフデータと呼ぶ。グラフ生成部14は、グラフデータをグラフ記憶部15に書き込む。
【0023】
グラフ記憶部15は、グラフ生成部14によって生成されたグラフデータを記憶する。グラフ記憶部15が記憶するデータの詳細な構成については、後述する。
【0024】
ノード抽出部16は、グラフ生成部14によって抽出された単語n−gramの連鎖数と、グラフ生成部14によって算出された単語n−gramのχ
2値と、単語n−gramに関するリンク情報が、所定の条件を満たすようなノード(n−gram)を抽出して出力する。
【0025】
具体的には、ノード抽出部16は、ある連鎖数に対してχ
2値が所定の第1閾値以上であるような、連鎖数とχ
2値との組合せを有するキーフレーズ領域に属するn−gramを、抽出して出力する。これにより、ノード抽出部16は、有意に出現頻度の高い(独立性が低いと検定される)フレーズを検出して出力できる。但し、ノード抽出部16は、連鎖数に対してχ
2値が所定の第2閾値以上であるような、連鎖数とχ
2値との組合せを有する異常値領域に属するn−gramを、除外して抽出する。これにより、出現頻度の高すぎるフレーズを検出しないように除外することができる。そのような異常値領域に属するフレーズは、他のツイートからコピー・アンド・ペースト(いわゆる「コピペ」)されたものである可能性が高いからである。
【0026】
図2は、ツイート記憶部12が記憶するデータの構成を示す概略図である。図示するように、ツイート記憶部12は、表形式のデータを記憶するものである。ツイート記憶部12は、ツイートを識別するためのツイートIDに関連付けて、発言者およびツイート内容を記憶する。図示する例では、ツイート記憶部12は、ツイートID「12345678」に関連付けて、発言者「abc_2011」およびツイート内容「今日はいい天気です」というデータを記憶している。
【0027】
図3は、グラフ記憶部15が記憶するデータの構成要素を示す概略図である。グラフ記憶部15は、ノードと有向リンク(リンク情報)で構成されるグラフのデータを記憶する。ここで、各ノードは、単語のn−gramに対応する。また、各有向リンクは、ノード間におけるn−gramの包含関係を表すものであり、具体的には例えばリンク先のノードを指し示すポインタ情報等で実現される。
【0028】
図示するように、ノードは、連鎖数と、文字列と、χ
2(カイ2乗)値と、ツイートIDリスト(発言単位の識別情報のリスト)へのリンク情報とを格納する。図示する例では、連鎖数は、当該n−gramにおける単語の連鎖数である。本例では、連鎖数は4である。また、文字列は、当該n−gramが表す文字列である。この文字列内においては、単語の区切りをハイフン「−」で表している。つまり「今日−は−いい−天気」という文字列は、「今日」、「は」、「いい」、「天気」という4つの単語の連鎖で構成されている。χ
2値は、当該n−gramの統計的性質を表す数値であり、その詳細については後述する。また、ツイートIDリストへのリンク情報は、当該n−gramが表す文字列「今日はいい天気」を含むツイートのツイートIDリストの所在を示す情報である。図示する例では、「12345678」、「23456789」、「44554545」、「67896789」、「77896789」の5個のIDが、該当するツイートIDである。ツイートIDリストは、同一のIDを複数含むことがないように、ユニークリストとして実装される。
【0029】
子n−gramへのリンクは、当該n−gramの文字列を含む、一段階下位の子のn−gramへのリンク情報である。ここで、直接リンクされている下位のn−gramは、文字列「今日−は−いい」(単語の連鎖数3)を表すn−gramと、文字列「は−いい−天気」(単語の連鎖数3)を表すn−gramの2つである。例えば、文字列「今日−は」(単語の連鎖数2)や「いい−天気」(単語の連鎖数2)や「天気」(単語の連鎖数1)なども、文字列[今日−は−いい−天気]に含まれるが、これらの文字列のn−gramへも、複数段階のリンクを経て到達可能である。逆に、親n−gramからのリンクは、文字列「今日−は−いい−天気」を含む、連鎖数が5のn−gramに対応するノードからのリンクである。
【0030】
図4は、グラフ記憶部15が記憶するn−gramのグラフの一例である。図示するデータ例には、n−gramに相当する15個のノードと、ノード間の親子関係を表す20本の有向リンクが含まれている。このグラフの元となる例文は「今日はいい天気です」というツイートである。同図の最も右側には、連鎖数5の5−gramのノードが存在し、その文字列は「今日−は−いい−天気−です」である。その子ノードとして2つのノードが存在し、それらの連鎖数はいずれも4であり、文字列はそれぞれ「今日−は−いい−天気」および「は−いい−天気−です」である。以下、同様に、3個の3−gram(トライグラム)のノード、4個の2−gram(バイグラム)のノード、5個の1−gram(ユニグラム)のノードが存在し、親子関係があるノード間が有向リンクで結ばれている。
【0031】
図5は、前述のグラフ記憶部15が記憶するn−gramのグラフを、連鎖数の軸とχ
2値の軸からなる直交座標系にマッピングして表したものである。同図において、横軸は連鎖数であり、縦軸はχ
2値である。また、この座標平面における第1象限は、異常値領域(コピー・アンド・ペースト領域とも呼ぶ)と、キーフレーズ領域と、その他の領域とに分割されている。同図において、境界線42は、異常値領域とキーフレーズ領域を分割する。また、境界線41は、キーフレーズ領域とその他の領域とを分割する。ここで示す例では、異常値領域は、連鎖数nがn
2以上で且つχ
2値がk
2(第2閾値)以上の領域である。また、キーフレーズ領域は、連鎖数nがn
1以上で且つχ
2値がk
1(第1閾値)以上の領域(慣用句らしい表現が含まれる領域)であって尚且つ異常値領域ではない領域である。言い換えれば、キーフレーズ領域は、(連鎖数nがn
1以上且つn
2以下)または((χ
2値がk
1以上且つk
2以下)、であるような領域である。つまり、境界線41は、n>n
1の領域において第1閾値を示す。また、境界線42は、n>n
2の領域において第2閾値を示す。なお、この座標軸上において、本来は各n−gramのノードは面積を持たないが、ここでは便宜的に楕円形でノードを表している。
【0032】
図5内では、n−gramの複数のノードを模式的に示している。これらのノードのうち、斜線でハッチングしたノード51、52および53は、キーフレーズとして抽出されるノードである。また、その他のノードは、キーフレーズには該当しないノードである。キーフレーズとして抽出されるノードは、キーフレーズ領域に属し、且つ後述する所定の条件を満たすノードである。
【0033】
なお、パラメーターの一例は、次の通りである。
図5において、n
1=5とし、n
2=10とする。また、σを標準偏差としたとき、k
1を2σに相当するχ
2値とし、k
2を4σに相当するχ
2値とする。
【0034】
図6は、
図5と同様に連鎖数の軸とχ
2値の軸からなる直交座標平面を示すものであり、異常値領域とキーフレーズ領域とその他の領域とを分割する境界線が
図5のそれらと異なる例である。
図6において、境界線44は、異常値領域とキーフレーズ領域を分割する。また、境界線43は、キーフレーズ領域とその他の領域とを分割する。ここで示す例では、異常値領域は、連鎖数nがn
4以上で、且つχ
2値が関数f
2(n)の値以上の領域である。つまり、関数f
2(n)は第2閾値を与える。また、キーフレーズ領域は、連鎖数nがn
3以上で、且つχ
2値が関数f
1(n)の値以上の領域であって尚且つ異常値領域ではない領域である。つまり、関数f
1(n)は第1閾値を与える。ここで、関数f
2(n)は、n≧n
4の領域で定義される単調減少関数である。また、関数f
1(n)は、n≧n
3の領域で定義される単調減少関数である。一例として、f
2(n)=α
2/n (但し、n≧n
4), f
1(n)=α
1/n (但し、n≧n
3)という関数を用いることができる。なお、α
1およびα
2は、それぞれ適宜定められる定数である。
【0035】
図5および
図6のそれぞれにおける異常値領域およびキーフレーズ領域の設定は、次の(1)および(2)の条件を満足させる。即ち、(1)連鎖数n=n
0においてχ
2値がaである位置が異常値領域であるならば、n≧n
0であって且つχ
2値がaである位置もまた異常値領域である。また、連鎖数n=n
0においてχ
2値がaである位置が異常値領域であるならば、n=n
0であって且つχ
2値がa以上である位置もまた異常値領域である。(2)連鎖数n=n
0においてχ
2値がaである位置がキーフレーズ領域あるいは異常値領域のいずれかであるならば、n≧n
0であって且つχ
2値がaである位置もまたキーフレーズ領域あるいは異常値領域のいずれかである。また、連鎖数n=n
0においてχ
2値がaである位置がキーフレーズ領域あるいは異常値領域のいずれかであるならば、n=n
0であって且つχ
2値がa以上である位置もまたキーフレーズ領域あるいは異常値領域のいずれかである。ここで述べたように、フレーズ検出装置1は、異常値領域およびキーフレーズ領域を設定する。
【0036】
なお、異常値領域に属するn−gramノードは、異常に高頻度なn−gramを表す。このような高頻度なn−gramは、あるツイートがコピー・アンド・ペーストされて別のツイートとして発信される場合に生じる。SNS等においては、しばしば、所定時間内にこのような高頻度なn−gramが発生する。フレーズ検出装置1は、異常値領域に属するn−gramを、コピー・アンド・ペーストによるツイートとして検出することができる。また、キーフレーズ領域に属するn−gramノードは、異常とは言えないまでも、有意に高い頻度で出現するn−gramを表している。フレーズ検出装置1は、キーフレーズ領域に属するn−gramを、SNS等における高頻度なキーフレーズとして検出する。
【0037】
図7は、フレーズ検出装置1がツイートのデータを読み込んでn−gramのグラフ構造への展開を行い、グラフデータをグラフ記憶部15に書き込むまでの処理の手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
【0038】
まずステップS1において、読込部11が、ツイートのデータを外部から読み込むとともに、読み込んだツイートをツイート記憶部12に登録する。
次にステップS2において、分割部13が、ツイート記憶部12に登録されている各ツイートの文を形態素解析する。形態素解析の処理自体は、既存の技術を用いて行なうことができる。形態素解析の結果、各文は、単語(形態素)の列に分解される。例えば、分割部13は、文「今日はいい天気です」を、「今日−は−いい−天気−です」という単語列(連鎖数は、5)に分解する。
【0039】
次にステップS3において、グラフ生成部14は、分割部13によって形態素解析された後の各ツイートを、n−gramのグラフ構造に展開する処理を行う。グラフ構造への展開の処理は次の通りである。まず、グラフ生成部14は、単語の列に分解されているツイートを取り出し、そのツイート全体に相当する連鎖数のn−gramノードを生成し、グラフ記憶部15に書き込む。例えば、「今日−は−いい−天気−です」という単語列の連鎖数は5であるので、グラフ生成部14は、まずこれに対応する5−gramのノードを生成する。そして、次に、グラフ生成部14は、その部分単語列である2種類の4−gramのノードを生成する。即ち、それらは、「今日−は−いい−天気」と「は−いい−天気−です」の2つである。さらに、3−gram、2−gram、1−gramの順に、部分単語列のノードを生成していく(
図4も参照)。このとき、展開するノードのツイートIDリストには、当該ツイートのIDを書き込む(
図3も参照)。
【0040】
さらに、グラフ生成部14は、次のツイートについても同様の処理を行い、これを繰り返すことにより、ツイート記憶部12に登録されているすべてのツイートについて、n−gramのグラフ構造への展開を行なう。なお、グラフ生成部14がグラフ構造への展開を行なう際に、既に処理したツイートと重複するn−gramを展開する場合には、新たなノードを生成するのではなく、当該n−gram用の既存のノードを利用する。つまり、グラフ生成部14は、既存のノードのツイートIDリストにツイートのIDを追記する。
【0041】
次にステップS4において、グラフ生成部14は、グラフ記憶部15に展開されたグラフの各ノードのχ
2値を算出する。なお、χ
2値を算出するために、入力データにおける各n−gramの出現回数を用いるが、この出現回数は、グラフ生成時に予めカウントしておいても良いし、χ
2値の計算の時点でカウントするようにしても良い。連鎖数Nのn−gram「A
1−A
2−・・・・・・−A
N」(ここで、A
1,A
2,・・・,A
Nの各々は単語)のχ
2値を算出する方法は、次の通りである。
このn−gramの出現確率p(A
1−A
2−・・・・・・−A
N)は、下の式(1)によって算出される。
【0043】
ここで、M
Nは、対象データに含まれる連鎖数Nのn−gram全体の集合である。また、uは、集合M
Nに属するn−gramである。また、d(u)は、対象データ全体におけるuの出現回数である。また、d(A
1−A
2−・・・・・・−A
N)は、対象データ全体におけるn−gram「A
1−A
2−・・・・・・−A
N」の出現回数である。
【0044】
また、単語A
i(1≦i≦N)は、各々が1−gramであり、これら各々の1−gramの出現確率は、下の式(2)によって算出される。
【0046】
ここで、M
1は、対象データに含まれる全ての1−gramの集合である。また、uは、集合M
1に属するn−gram(つまり、1−gram)である。また、d(u)は、対象データ全体におけるuの出現回数である。また、d(A
i)は、対象データ全体における単語(1−gram)A
iの出現回数である。つまり、式(2)で計算される値は、単語A
iの出現確率を表す。
【0047】
そして、式(1)および式(2)で算出された値を用いて、n−gram「A
1−A
2−・・・・・・−A
N」のχ
2値は、下の式(3)によって算出される。
【0049】
そして、グラフ生成部14は、計算されたχ
2値を、グラフ記憶部15内の各ノードに書き込む。このようにして、グラフ生成部14によってn−gramのグラフのデータが生成される。つまり、独立性検定に用いるχ
2値を算出できる。χ
2値は、n−gram確率と、そのn−gramをn個の1−gramに分解したときの1−gram(単語)確率とから算出される。これは、連続するn単語が、1単語ずつばらばらに出現する時に比べて有意に大きいかどうか検定するために用いられる値である。つまり、式(3)で計算されるχ
2値は、そのn−gramに含まれる個々の単語の出現頻度を考慮に入れながら、n−gramそのものの出現頻度を測る指標となり得る値である。
【0050】
図8は、フレーズ検出装置1がグラフ記憶部15のデータを元にキーフレーズノードを抽出する処理の手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
【0051】
まずステップS11において、ノード抽出部16は、グラフ記憶部15に記憶されているノードのうち、キーフレーズ領域に含まれるノードであって、且つ未処理のノードがまだ残っているか否かを判定する。キーフレーズ領域に含まれるか否かは、
図5および
図6にも示したように、ノードの連鎖数およびχ
2値の組合せにより判定できる。未処理のノードがキーフレーズ領域に残っている場合(ステップS11:YES)には次のステップS12に進み、残っていない場合(ステップS11:NO)にはこのフローチャート全体の処理を終了する。
【0052】
ステップS12からS16においては、未処理で、且つキーフレーズ領域に残っている、ひとつのノードを処理対象とする。ステップS12において、ノード抽出部16は、処理対象のノードが親を持つか否かを判断する。ここで、あるノードが親を持つということは、そのノードに流入する他のノードからのリンクが存在するということである。言い換えれば、あるノードが親を持つということは、そのノードのn−gramに対応する文字列を包含する、連鎖数が1つ多いn−gramの文字列が、読み込んだ入力データに含まれていたということである。親を持つ場合(ステップS12:YES)には、次の条件を判定するためにステップS13に進む。親を持たない場合(ステップS12:NO)には、当該ノードはキーフレーズに対応するものであり、ステップS16に進む。
【0053】
ステップS13に進んだ場合には、ノード抽出部16は、処理対象のノードが、キーフレーズ領域または異常値領域に先祖を持つか否かを判定する。先祖とは、処理対象のノードのn−gramを包含する、より連鎖数の多いn−gramに対応するノードである。言い換えれば、本ステップでは、ノード抽出部16は、処理対象のノードが、キーフレーズ領域または異常値領域に存在するn−gramの部分列に相当するか否かを判定する。先祖を持つ場合(ステップS13:YES)には、次の条件を判定するためにステップS14に進む。先祖を持たない場合(ステップS13:NO)には、当該ノードはキーフレーズに対応するものであり、ステップS16に進む。
【0054】
ステップS14に進んだ場合には、ノード抽出部16は、処理対象のノードに関してツイートの流入があるか否かを判定する。ステップS12において処理対象のノードは親ノードを有することを既に判定済みであるので、一般に、処理対象のノードは、単数または複数の親ノード(直接の親)を有する。ここで、異なるツイートの流入があるか否かは、次に述べる条件で判定可能である。即ち、各々の親ノードが有するツイートリストのうち、要素数が最多であるリストを、要素数最多リストと呼ぶ。要素数最多のリストが複数ある場合には、それらのうちの任意の一つを要素数最多リストとする。そして、要素数最多リストの要素数と、処理対象のノードの要素数が同じである場合には、異なるツイートの流入はないと言える。逆に、要素数最多リストの要素数が、処理対象のノードの要素数よりも少ない場合には、異なるツイートの流入があると言える。なお、この判定基準によれば、そもそも親が1ノードしかない場合には、異なるツイートの流入はない。異なる(新たな)ツイートの流入がある場合(ステップS14:YES)には、当該ノードはキーフレーズに対応するものであり、ステップS16に進む。異なるツイートの流入がない場合(ステップS14:NO)には、ステップS15に進む。
【0055】
なお、ステップS14の処理において、異なるツイートの判定条件を要素数の比較で処理できたのは、
図3に示したデータにおいて、ツイートIDのユニークリストを保持するようにしたためである。このデータ構造は、処理の効率化のためであり、本特許の基本となる考えは、集合の包含関係の判定である。
【0056】
ステップS15に進んだ場合には、処理対象のノードはキーフレーズに該当するものではないと、ノード抽出部16は認識する。そして、ステップS11の処理に戻る。
【0057】
ステップS16に進んだ場合には、ノード抽出部16は、処理対象のノードをキーフレーズに該当するものとして検出する。そして、ステップS11の処理に戻る。
【0058】
以上の処理をまとめると、ノード抽出部16がキーフレーズとして抽出するのは、キーフレーズ領域に存在して、且つ、次の(a)〜(c)のいずれかの条件を満たす単語列である。(a)親を持たない(つまり、そのn−gramを包含する、より連鎖数の多いn−gramがグラフ内に存在しない)。(b)親が存在するにしても、先祖のいずれもが、キーフレーズ領域または異常値領域のいずれにも属さない。(c)異なるツイートからの流入がある(つまり、要素数最多リストに含まれないツイートIDが、いずれかの親のツイートリストに含まれる)。ノード抽出部16は、上記の処理によって抽出されたノードを、キーフレーズとして、またはキーフレーズ候補として、外部に出力する。
【0059】
これを言い換えれば、次の通りである。ノード抽出部16は、ノード間のリンク情報に基づき、
(a)当該n−gramを包含し、且つ当該n−gramよりも連鎖数の大きい他のn−gramが存在しない、または、
(b)当該n−gramを包含し且つ当該n−gramよりも連鎖数の大きい他のn−gramについての連鎖数およびχ
2値の組合せが、いずれの前記の「他のn−gram」に関しても、キーフレーズ領域に属しない、
のいずれかの条件を満たす場合に限り、そのn−gramを抽出して出力する、これにより、包含関係にある単語列を重複して抽出してしまうことを防ぐことができる。
【0060】
また、ノード抽出部16は、ノード間のリンク情報に基づき、前記(a)または前記(b)に加えて、(c)当該n−gramを包含し且つ当該n−gramの連鎖数よりも連鎖数が1だけ大きいn−gramのそれぞれ対応するツイートIDリストのうち、要素数が最多のツイートIDリストには含まれないツイートIDが、他のツイートIDリストに含まれている、という条件を満たす場合にも当該n−gramを抽出して出力する。この(c)の条件は、当該n−gramに、異なるツイートからの流入があることを判定するための条件である。(c)の条件を用いることにより、包含関係にある単語列(n−gram)を除外しすぎてしまうことを防ぐことができる。
【0061】
なお、上述した実施形態におけるフレーズ検出装置の各部の機能をコンピューターで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0062】
本実施形態によるフレーズ検出装置を用いることにより、テレビ番組を見ながら(ツイッターなどの)ソーシャルストリームを利用して情報発信をする人たちの声を分析したい時に役立つ。特に、コピー・アンド・ペーストというオリジナリティーの少ない情報を除外しながら、多数出現する発言を検出したい時に役立つ。
【0063】
以上、一実施形態を説明したが、本発明はさらに次のような変形例でも実施することが可能である。なお、下で説明する複数の変形例の構成を組み合わせても良い。
【0064】
(変形例1)この変形例では、ノード抽出部16が常套句リストを予め記憶しておく。この常套句リストは、慣用句を予め列挙することによって構成されたデータである。そして、ノード抽出部16は、
図8に示した手順によってキーフレーズとして検出された単語列のうち、この常套句リストに含まれる表現を除外して、キーフレーズを出力する。これにより、常套的な慣用句がキーフレーズとして検出されるのを防ぐことができる。
【0065】
(変形例2)この変形例では、ノード抽出部16は、異常値領域に属するノードをも抽出し、出力する。また、異常値領域に属するノードの各々に対して、
図8に示したステップS12からS14までの判定を行なって、重複する単語列を除外するようにしても良い。この変形例では、フレーズ検出装置1は、ソーシャルストリーム等においてコピー・アンド・ペーストされたフレーズを検出することもできる。
【0066】
(変形例3)この変形例では、分割部13は、読込部11によって読み込まれたツイートを、単語単位ではなく文字(言語要素)単位に分割する。文字単位に分割する場合には、分割部13は、形態素解析の処理を行なう必要がない。そして、グラフ生成部14は、単語のn−gramではなく文字のn−gramによって、グラフのデータを展開する。そして、ノード抽出部16は、文字のn−gramを用いてキーワードフレーズを抽出し、出力する。
【0067】
(変形例4)この変形例では、実装するメモリ量等に応じて、取り扱うn−gramの連鎖数に上限を設ける。例えば、連鎖数の上限値を30としたとき、グラフ生成部14は、この上限値を超える連鎖数のn−gramのノードを生成しない。
【0068】
(変形例5)この変形例では、ノード抽出部16は、検出されたキーフレーズとともに、そのキーフレーズを含むツイートIDのリストを出力する。また、さらに、ノード抽出部16が、それらのツイートIDの各々に対応するURL(ユニフォーム・リソース・ロケーター)を出力するようにしても良い。
【0069】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。