以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
本実施の形態を実現する分析装置では、ソーシャルメディアにおける下記の3つのポイントとなる性質を利用する。
第1のポイントは、つぶやき及びトピックが両方とも時刻情報を有していることである。つぶやきは、投稿された時刻情報を有し、トピックは、ある時刻にあるURLにアクセスしたらこのトピックであったというトピック取得時刻情報を有する。
第2のポイントは、時刻の経過に対して、トピックの変化は一般的に不可逆であることである。次々に新しいトピックに更新されて変わっていき、元のトピックには戻らない。そして、更新と更新の間はいつアクセスしても同じトピックである。例えば、WWW上のあるURLの内容が、時刻9:00の時点で「アイドルグループAをCMに起用」であったとすると、時刻11:00の時点で「社長スキャンダル」に更新されるまでの間、そのURLの内容は、「アイドルグループAをCMに起用」の状態である。すなわち、あるURLに記載されている内容は、ある時点にある状態であり、その後のある時点で同じ状態であれば、その期間は同じ内容であったと推定できる。
第3のポイントは、上述した通り、特にマイクロブログに顕著なように、ユーザは見たり聞いたりしたものをすぐにつぶやきとして投稿する傾向にあるという点である。URLが記載されたつぶやきは、ユーザがあるトピックを閲覧後、さほど時間をおかずに該当トピックのURLを記載して投稿している可能性が高い。
これら3つのポイントを利用することで、時刻の前後関係を使って、対応トピックを推定することができる。単体のつぶやきとトピックの対応付けでは十分な確信が持てない場合でも、前後のつぶやきとトピックの並びから、トピックを推定する。
次に、本実施の形態の概略を説明する。 まず、トピックとは、本実施の形態を実現する分析装置が、つぶやき分析時に、つぶやきに記載されたURLにアクセスして取得する、ある時刻のコンテンツのスナップショット、例えば、最も簡単には、HTMLファイルをダウンロードしてきたものであるとする。
トピックは、別の時刻に収集しても、内容に変更がなければ、同じトピックであることを特定するために同じトピックIDを付与して、同じトピックとして扱う。変更の有無を調べる方法としては、例えば、最も簡単には、取得したファイルに差異がないかどうかを見る。
また、つぶやき時刻の後、一定時間(例えば5分と設定)内にトピックを取得できた場合は、つぶやきが参照しているトピックを正しく取得できたものとし、つぶやきとトピックの対応付け「確定」とする。確定できなかったつぶやきがあった場合に、対応するトピックの推定を行うとする。
図3は、本実施の形態の概略を説明するための図(その1)である。
図3では、分析装置が、対応づけられたつぶやきとトピックの組み合わせをつぶやき時刻の時系列順に並べ、その前後関係を用いてトピックを推定する。
図3の(A)に示すように、トピックが取得できなかったつぶやき「早く見たい! http://a.com/」というつぶやきがあり、手持ちのトピックから対応するトピックを推定する。今、推定対象のトピックとして、「アイドルグループAをCMに起用」のトピックがある。機械学習等の従来手法によって、このつぶやきとトピックの間に関係あり、と単体で推定しようとしたが、推定の結果、確信度が低い場合は、推定が正しい可能性が低く、推定結果を採用できない。
そこで、本実施の形態では、このつぶやきに記載されたURL「http://a.com/」を含む他のつぶやきとトピックの組み合わせを、つぶやき時刻の時系列順に並べる。そうすると、図3の(B)に示すように、つぶやき「早く見たい! http://a.com/」が、つぶやき「超嬉しい http://a.com/」と「CDプレゼントだって http://a.com/」に挟まれる形となる。そして、「超嬉しい http://a.com/」と「CDプレゼントだって http://a.com/」のトピックは、両方とも「アイドルグループAをCMに起用」で確定である。このような場合には、同一のトピックにはさまれている間のトピックは同一、すなわちつぶやき「早く見たい! http://a.com/」が示しているトピックは、「アイドルグループAをCMに起用」であると判断する。
図4は、本実施の形態の概略を説明するための図(その2)である。
図4では、分析装置が、時刻の前後関係を用いるのに加えて、確信度スコアの大小を用いてトピックを推定する。
図4の(A)に示すように、つぶやき時刻9:00のつぶやき「超嬉しい http://a.com/」は、つぶやかれてすぐに分析及びトピック取得が実行され、つぶやきに対応するトピックとして「アイドルグループAをCMに起用」が確定している。確定の場合、確信度100として扱う。同様に、つぶやき時刻11:00のつぶやき「許せない http://a.com/」も、つぶやきに対応するトピック「社長スキャンダル」が確定(確信度100)している。
そして、上記両つぶやき時刻に挟まれたつぶやき時刻9:30には、つぶやき「また? http://a.com/」があったとする。このつぶやき「また? http://a.com/」は、対応するトピックが取得できなかったので、対応トピックの推定を行う。時刻の前後関係から、前のトピックである「アイドルグループAをCMに起用」か、又は後のトピックである「社長スキャンダル」のどちらかの可能性がある。そこで、機械学習等を用いてトピックの推定を行う。ここでは、機械学習の推定で確信度50で「社長スキャンダル」と推定された。
更に、図4の(B)に示すように、つぶやき「また? http://a.com/」と「許せない http://a.com/」の間の時刻10:30に、もう1つのつぶやき「アイドルグループA大好き http://a.com/」があったとする。このつぶやき「アイドルグループA大好き http://a.com/」にも、対応するトピックがないので、対応トピックの推定を行う。トピック「アイドルグループAをCMに起用」か、又は「社長スキャンダル」のどちらかの可能性がある。そこで、機械学習等を用いてトピックの推定を行う。ここでは、確信度95で「アイドルグループAをCMに起用」が推定されている。
ここで、上記4つのつぶやきとトピック全体の時系列の流れを見直してみると、上記第2のポイントとして説明したように、トピックは不可逆であるため、一度「アイドルグループAをCMに起用」から「社長スキャンダル」になったトピックが、その後に再度「アイドルグループAをCMに起用」には戻らないはずである。したがって、上記2つの推定の何れかが間違っていることになる。
それぞれの推定の確信度を見て、確信度の高い方を信用すると、つぶやき「アイドルグループA大好き http://a.com/」とトピック「アイドルグループAをCMに起用」の対応付けは確信度95、つぶやき「また? http://a.com/」とトピック「社長スキャンダル」の対応付けは確信度50であるので、後者が間違っていると推定できる。したがって、トピック「アイドルグループAをCMに起用」とトピック「アイドルグループAをCMに起用」の間の時間帯にある、つぶやき「また? http://a.com/」の対応先のトピックは、「アイドルグループAをCMに起用」であった、すなわち、つぶやき「超嬉しい http://a.com/」からつぶやき「アイドルグループA大好き http://a.com/」までの間の時間帯では、トピックに更新がなかったと推定される。
このように、本実施の形態では、つぶやきとトピックの対応付けを単体で推定するのに加えて、つぶやきとトピックの対応付けを時系列で並べた後、確信度の高い対応付けを信用して、確信度の低い対応付けを変更する。
次に、上記変更のパターンについて説明する。
図5は、トピックの推定結果の変更のパターンを説明するための図である。
図5の(A)に示したパターン1は、最新の推定結果により、それまでの推定結果が変更される例である。
まず、時系列順に並べて、最初と最後に確定の組み合わせがあり、最初のトピックはトピックIDが「1」のトピック、最後のトピックはトピックIDが「2」のトピックである。上から2番目のトピックは、つぶやきに対しトピックが取得できなかったものであり、分析装置により推定が行われ、トピックID「2」のトピックであるとされた。その確信度は50である。この時点では、3つのトピックを時系列順に見ると、「1→2→2」であるので、矛盾はないため変更は行われていない。
続いて、図5(A)中の左端に矢印で示している、上から3番目のつぶやきが新たに入ってきて、これもつぶやきに対しトピックが取得できなかったものであるため、分析装置が、対応するトピックを推定する。その結果、確信度95でトピックID「1」のトピックと推定された。
この時点で、4つのトピックを時系列順にみると、「1→2→1→2」となっており、トピックの変化に矛盾が生じているため、2つの推定のどちらかが間違っていると考えられる。2つの推定の確信度を比較すると、確信度50と確信度95であるから、確信度95の方が正しい可能性が高い。そこで、確信度50の以前の推定は、最初の確定のトピックID「1」と確信度95の最新の推定のトピックID「1」に挟まれる形で、トピックID「1」へと変更される。
図5の(B)に示したパターン2は、最新の推定結果が、それまでの推定結果をもとに変更される例である。
まず、最初と最後に確定の組み合わせがあり、最初のトピックはトピックID「1」のトピック、最後のトピックはトピックID「2」のトピックである。上から3番目のトピックは、つぶやきに対しトピックが取得できなかったものであり、分析装置により推定が行われ、トピックID「1」であるとされた。その確信度は95である。この時点では、3つのトピックを時系列順に見ると、「1→1→2」であるので、矛盾はないため変更は行われていない。
続いて、図5(B)中の左端に矢印で示している、上から2番目のつぶやきが新たに入ってきて、これもつぶやきに対しトピックが取得できなかったものであるため、分析装置が、対応するトピックを推定する。その結果、確信度50でトピックID「2」と推定された。
この時点で、4つのトピックを時系列順にみると、「1→2→1→2」となっており、トピックの変化に矛盾が生じているため、2つの推定のどちらかが間違っていると考えられる。2つの推定の確信度を比較すると、確信度50と確信度95であるから、確信度95の方が正しい可能性が高い。そこで、最新の推定である確信度50の方の推定は、最初の確定のトピックID「1」と確信度95の以前の推定のトピックID「1」に挟まれる形で、トピックID「1」へと変更される。
このように、確信度の高いつぶやきが確信度の低いつぶやきのトピックを変更するのであり、つねに新しい推定が過去の推定を変更するとは限らない。
さらに、本実施の形態は、分析装置による推定結果の変更が発生した際、どのつぶやきとトピックの組み合わせによって対応するトピックが変更されたのかを記録しておき、それをもとに、分析装置が、さらなる変更を行うか確認する。
上述のようにしてトピックの変更を行った後、その変更の根拠となっていたつぶやきとトピックの組み合わせ自体が、後に別のつぶやきとトピックの組み合わせにより変更されてしまった場合、当初の変更は根拠が失われて、信頼できなくなる。そのため、変更が発生した場合、分析装置は、自身がどのつぶやきを根拠に変更されたのか、履歴をとっておく。同時に、他の履歴をたどり、過去に自身が根拠となって変更が発生したものを抽出して、分析装置が過去の変更の取り消しを行う。
図6は、変更履歴を用いた再変更を説明するための図である。
図6において、まず、図6中の(A)の左端に矢印で示すように、つぶやき4が新たに入ってきたことにより、以前に分析装置により推定された確信度の低い(確信度50)つぶやき2のトピックが、つぶやき3とつぶやき4に挟まれて、トピックID「1」からトピックID「2」へ変更される。この際、分析装置は、つぶやき2が変更された根拠(つぶやき4)を記録しておく。
次に、図6中の(B)の左端に矢印で示すように、つぶやき5が新たに入ってきたことにより、つぶやき2の変更の根拠となったつぶやき4のトピックが、つぶやき1とつぶやき5に挟まれて、トピックID「2」からトピックID「1」へ変更される。このとき、以前につぶやき2の変更の根拠となったつぶやき4が変更されたので、過去のつぶやき2の変更は信頼できなくなる。そこで、図6中の(C)に示すように、つぶやき2のトピックは、トピックID「2」への変更を取り消して元のトピックID「1」に戻す。
以上により、本実施の形態では、分析タイミングのずれで、つぶやきが参照するトピック取得を逃した場合であっても、分析装置が、推定によりつぶやきと手持ちのトピックとを対応づけて、データを補完することができる。単体の「つぶやきとトピック」の対応推定(例えば、機械学習等)に比べて、後で時系列の前後関係と推定の確信度から判断し直す変更を加えることで、推定精度・カバー範囲が向上する。これにより、トピックごとの注目度集計をする場合も、精度が上がる。
さらに、本発明を適用した実施の形態を詳細に説明する。
図7は、分析装置が実行するソーシャルメディア分析処理の流れを示すフローチャートである。
まず、ステップS701において、分析装置が、「つぶやき取得処理」を実行することによりつぶやきを取得する。「つぶやき取得処理」の詳細は、図8乃および図9を用いて説明する。
そして、ステップS702において、分析装置が、「つぶやき分析処理」を実行することにより、ステップS701で取得したつぶやきを分析する。「つぶやき分析処理」の詳細は、図10乃至図15を用いて説明する。
このソーシャルメディア分析処理は、定期的に実行される。
図8は、図7のステップS701で実行される「つぶやき取得処理」の流れを示すフローチャートであり、図9は、つぶやきDBの例を示す図である。
まず、図8のステップS801において、分析装置が、例えば各ソーシャルメディアが提供するデータ取得用のAPI(Application Programming Interface:アプリケーション・プログラミング・インターフェース)にアクセスしてつぶやき群を取得する。もしくは、別途ファイル等で取得しても構わない。
次に、ステップS802において、分析装置が、ステップS801で取得したつぶやき群について、それぞれのつぶやきを特定するためのつぶやきID、つぶやきそのもののテキスト情報、つぶやきが投稿された時刻の情報を、図9に示すつぶやきDBに格納する。
そして、ステップS803において、分析装置が、新規につぶやきDBに追加したつぶやき群を、後述するつぶやき分析部に渡す。
次に、分析装置が実行するつぶやき分析処理について説明する。
まず、図10は、推定・変更に用いるデータの蓄積を説明するための図であり、分析処理において、つぶやきとトピックの対応付け確定のデータを蓄積する方法のうち、これまでに述べてきた方法とは別の方法を説明するための図である。
上述の通り、つぶやき時刻後、一定時間(例えば5分と設定)内にトピックを取得できた場合は、つぶやきが参照しているトピックを正しく取得できたものとし、つぶやきとトピックの対応付け「確定」とする。「確定」は、後の推定のための大事な情報源になるため、ここで、他にも「確定」を増やす方法について説明する。図10に示す通り、9:00のつぶやき「超嬉しい http://a.com/」に対応するトピックは、9:01に「http://a.com/」にアクセスして取得できたため、対応「確定」である。今、15:00の時点で再度分析処理が行われ、9:30のつぶやき「また? http://a.com/」が処理対象となっている。しかし、こちらはつぶやかれてからすでに5分以上過ぎているため、対応するトピックが取得できなかったケースにあたる(この後、推定処理が行われる)。9:30の時点でURL「http://a.com/」が示していたトピックは、今からではもう取得できないが、同じURLの現在15:00のトピックであれば、今、URLにアクセスすれば取得可能である。つまり、図10に示すように、15:00のつぶやきは存在していないが、15:00の時点で「http://a.com/」のトピックが今得られるトピックであることは確かな事実であるので、この情報は、本来存在しない15:00のダミーのつぶやきと、15:00に取得したトピックとを組み合わせた、ダミーの「確定」組み合わせの情報として蓄積し、後の推定の材料として活かす。
図11は、図7のステップS702で実行される「つぶやき分析処理」の流れを示すフローチャートであり、図12は、トピックDBの例を示す図であり、図13は、つぶやき−トピックID対応DBの例を示す図である。
まず、図11のステップS1101において、分析装置が新規のつぶやき群からつぶやきを1つ取り出した場合(ステップS1101:ある)は、ステップS1102において、分析装置が、そのつぶやきのテキストからURLを抽出できるかできないかを判断する。
抽出できない場合(ステップS1102:N)は、ステップS1101に戻り、抽出できる場合(ステップS1102:Y)は、ステップS1103において、分析装置が、そのURLにアクセスし、そのURLの現在のトピックを取得する。
次に、ステップS1104において、分析装置が、図12に示したようなトピックDBを検索し、同じURLを持つ過去のトピック情報があるかないかを判断する。トピックDBには、「URL」「トピック取得時刻」「トピック」、及び「トピック」を特定するための「トピックID」が格納されている。なお、図12において、カラム「トピック」は、例えば実体であるHTMLファイルのファイル名を示す。「URL」は同じ「http//a.com/」であるが、トピック取得時刻が違うため、「xxx.html」と「zzz.html」の2つのHTMLファイルがある。この異なる2つのHTMLファイルは、内容が同一と過去に判定されているため、同一の「トピックID」として「1」が付与されている。
続いて、同じURLを持つ過去のトピック情報がない場合(ステップS1104:N)は、ステップS1105において、分析装置が、新規にトピックIDを付与する。他方、同じURLを持つ過去のトピック情報がある場合(ステップS1104:Y)は、ステップS1106において、分析装置が、現在のトピックと同じURLの過去のトピックのうち、トピック取得時刻が最も直前のものを取り出し、現在のトピックとの同一判定を行う。同一であれば同一のトピックIDを付与し、同一でなければ新規のトピックIDを付与する。
そして、ステップS1107において、分析装置が、ステップS1103で取得したトピックを、URL、トピック取得時刻(すなわち現在の時刻)、トピックIDとともに、図12に例示したようなトピックDBに格納する。
次に、ステップS1108において、分析装置が、現在処理中のつぶやきを、図13に示すようなつぶやき−トピックID対応DBのレコード形式に変換する。
そして、ステップS1109において、分析装置が、トピックとつぶやきの対応付けが確定か、すなわち、トピック取得時刻とつぶやき時刻との差分が所定の閾値、例えば5分以内か5分を越えたかを判断する。
トピック取得時刻とつぶやきが蓄積された時刻との差分が所定の閾値内である場合(ステップS1109:Y)は、つぶやきとトピックIDの対応が対応確定であるので、ステップS1110において、分析装置が、処理中のつぶやきとトピックIDを対応づけて、確定フラグ付きでつぶやき−トピックID対応DBに格納した後、ステップS1101に戻る。つぶやき−トピックID対応DBには、「対応ID」「つぶやき」「つぶやき時刻」「トピック取得時刻」「URL」「トピックID」「対応関係」「変更根拠履歴」が格納されている。なお、カラム「対応関係」には、対応「確定」又は対応「推定」が入る。「推定」の場合は、「確信度スコア」もあわせて記載される。なお、ここで、「対応ID」とは、「つぶやき」と「トピックID」との対応付けを特定するための識別子であり、例えば図13に示すように「1」から順に1ずつ増やしながら付与することができる。
他方、トピック取得時刻とつぶやきが蓄積された時刻との差分が所定の閾値内でない場合(ステップS1109:N)は、つぶやきと対応するトピックが取得できなかった状態であるので、分析装置が、図14及び図15を用いて説明するトピックの「対応推定処理」を実行する。
図14及び図15は、分析装置が実行する「対応推定処理」の流れを示すフローチャートである。
ここで、図16乃至図29の具体例を用いながら、図14及び図15内のそれぞれのステップについて説明する。まず、図16乃至図20は、あるつぶやきとトピックの組み合わせ単体の推定を行い、その結果、十分な確信度がなく、対応トピック不明、といったん判定されたものが、他のつぶやきとトピックの組み合わせとあわせて推定し直したことにより、変更されて解決する例である。なお、図16乃至図20は、図13に示したつぶやき−トピックID対応DBと同様のレコード形式であるが、説明に不要なカラム「対応ID」「変更根拠履歴」は省略してある。
まず、図14のステップS1401において、分析装置が、「ダミー確定」にあたるレコードの作成を行う。推定対象となっているつぶやきに記載されたURLと現在のトピックIDとを、つぶやき−トピックID対応DBのレコード形式に変換する。対応するつぶやきは存在しないが、カラム「つぶやき」にはダミーの旨を記載、「つぶやき時刻」にはダミー時刻としてトピック取得時刻を入れ、カラム「対応関係」に「確定」を入れる。
図16に示すように、具体的には、推定処理の対象となっているつぶやきが「ほにゃら http://a.com/」という8:00のつぶやき、つぶやきから抽出したURLが「http://a.com/」、「http://a.com/」が指している現在のトピックが取得された時刻が12:00、現在のトピックIDが「2」である。そのため、ダミー確定のレコードでは、カラム「つぶやき時刻」に12:00が入れられている。
次に、ステップS1402において、分析装置が、つぶやき−トピックID対応DBから、つぶやきに記載されたURLと同一のURLを持つレコードを抽出する。
具体的には、図16に示すように、つぶやき「ほにゃ http://a.com/」、つぶやき時刻7:00、トピック取得時刻7:05、トピックID「1」、対応関係「確定」、という1レコードが抽出されている。
そして、ステップS1403において、分析装置が、ステップS1402で抽出したレコードが1個以上あるかないかを判断する。
ここで、もし、つぶやき−トピックID対応DBから抽出したレコードが1個もなかった場合は(ステップS1403のN)、過去に蓄積された情報を活用した推定は行えないということであるので、ステップS1404にて、推定処理中のつぶやき「ほにゃら http://a.com/」と、現在のトピックID(つまりダミーレコードのトピックID)「2」との対応関係を単体で推定することになる。推定方法には、例えば機械学習を用いる。
推定の結果、算出された確信度に応じて、ステップS1405において、分析装置が、推定処理中のつぶやき「ほにゃら http://a.com/」と、トピックID「2」を対応づける、もしくは、つぶやき「ほにゃら http://a.com/」の対応トピックは「不明」である、とする。
なお、トピック「不明」を対応付けるのは、確信度が所定値、例えば40点以下の場合である。そして、推定処理中のつぶやきレコードのカラム「トピックID」に現在のトピックID「2」または「不明」、カラム「対応関係」に「推定」を入れて、ダミー確定レコードと共に、つぶやき−トピックID対応DBに格納する。ここで分析装置による対応推定処理は終了となり、図11のステップS1101に戻る。
しかし、図16に示す例では、DBから抽出したレコード数が1であるので(ステップS1403のY)、ステップS1406において、分析装置が、DBから抽出したレコード、推定処理中のつぶやきのレコード、ダミーレコードの3レコードをつぶやき時刻でソートし、これらは図16の順番で並べられる。
続いて、ステップS1407において、分析装置が、ソート済みのレコードの中から、推定処理中のつぶやきのレコードの前後で、カラム「対応関係」が「確定」と「確定」にはさまれた区間のレコードを抽出する。ここでは、図16に示す3レコードである。
次に、ステップS1408において、分析装置が、推定処理中のつぶやきのレコードが、同じトピックIDの「確定」レコードに挟まれているかを判定する。
もし、ここで同じトピックIDの確定にはさまれているのであれば(ステップS1408のY)、推定処理中のつぶやきレコードに対応するトピックIDも、同じトピックIDで「確定」になり、あとはステップS1409において、分析装置が、推定処理中のつぶやきレコードに、トピックIDと確定情報を格納して、ダミーレコードとあわせてつぶやき−トピックID対応DBに格納し、「対応推定処理」のフローは終了となる。そして、図11のステップS1101に戻る。
しかし、図16に示す例では、トピックID「1」の確定レコードと、トピックID「2」の確定レコードに挟まれているので、ステップS1408はNとなり、ステップS1410に進む。
ステップS1410では、分析装置が、推定処理中のつぶやきを挟んでいる前後の確定レコードの「トピックID」から、トピックIDの候補を抽出する。
図16に示す例では、トピックID「1」または「2」が候補である。
続いて、ステップS1411において、分析装置が、推定処理中のつぶやきレコードのつぶやき「ほにゃら http://a.com/」と、それぞれのトピックID候補との対応関係を単体で、例えば機械学習を利用して推定し、確信度を算出する。
ここで、トピックID「1」である確信度スコアが20点、トピック「2」である確信度スコアが10点だったとする。
ステップS1412において、分析装置が、各確信度スコアから、つぶやきと対応するトピックIDを選出する。
前述の通り、「スコアがこれ以上ないとどちらとも対応付けせず不明とする」閾値を40点としていた場合、トピックID「1」、トピックID「2」どちらのスコアも低すぎる(閾値以下である)ので、ここでの推定結果は、1でも2でもなく「不明」である。よって、分析装置は、推定対象のつぶやきレコードのカラム「トピックID」に「不明」を格納、カラム「対応関係」に「推定」および推定結果のスコアもあわせて格納する。つまり、図14内のステップの推定処理の結果は、図17の通りとなる。
次に、図15のステップS1501において、分析装置が、対応確定と対応確定に挟まれた区間のレコードの並びの中に、トピックIDの変更候補があるかないかを判断する。例えば、トピックIDが1から2に変更になった後に再度1に戻る等、トピックIDの時間的な前後関係で矛盾がないかを見る。矛盾があるつぶやきとトピックの対応付けレコードのうち、確信度の低い方の対応付けレコードが変更候補となる。また、トピックIDが不明だったトピックが、同じIDにはさまれて決まることがないかを見る。その場合は不明トピックのレコードが変更候補となる。
図17に示す通り、ここでのトピックIDの並びは「1→不明→2」で、矛盾があるわけではなく、また、同じトピックIDに挟まれた「不明」があるわけでもないので、ステップS1501はNとなり、ステップS1502に進む。そして、対応推定中のレコードおよびダミー確定のレコード、つまり図17内の下2つのレコードを、つぶやき−トピックID対応DBに格納して、分析装置による「対応推定処理」のフローを終了する。そして、図11のステップS1101に戻る。
次に、図15内のステップS1501がYとなる場合について、今度は新しく図18の具体例を用いて説明する。
図18の例は、図16、17を使って説明してきた12:00のつぶやき分析処理が一通り終了し、次に15:00の時点で、新たなつぶやき分析処理が行われている際の例である。
図18に示した通り、新たに現在推定処理中となっているつぶやきは、9:00のつぶやき「ほにゃらら http://a.com/」である。また、図18の他のレコードは、図14のステップS1403でつぶやき-対応トピックDBから抽出されたレコード(つまり、前回12:00の際のつぶやき分析処理の結果)と、15:00現在のダミー確定のレコードの状態を示している。
図14のステップS1406で、分析装置が、これらのレコードをつぶやき時刻でソートすると、推定処理中のつぶやきレコード(つぶやき「ほにゃらら http://a.com/」のレコード)は、図18中の矢印の位置、つまり8:00のつぶやき「ほにゃら http://a.com/」と、12:00のダミー確定のつぶやきの間に入り、ソート結果は図19に示す通りとなる。
この場合、図14中のステップS1410で抽出された、トピックIDの候補は、前後の確定レコードのトピックであるから、7:00のつぶやき「ほにゃ http://a.com/」のトピックであるトピックID「1」か、12:00のダミー確定のトピックであるトピックID「2」のどちらかとなる。
続いて図14のステップS1411で、分析装置が、推定処理中のつぶやき「ほにゃらら http://a.com/」と、それぞれのトピックID候補との対応関係を単体で、例えば機械学習を利用して推定し、確信度を算出する。
その結果、トピックID「1」である確信度スコアが80点、トピックID「2」である確信度スコアが10点となり、図14中のステップS1412で、分析装置が、トピックID「1」と判定する。
ここで、図15内のステップS1501で、分析装置が、レコードの並びからトピックIDの変更候補があるかを見ると、図19の上から3つのレコードの並びにおいて、トピックIDが「1→不明→1」となる(ステップS1501がY)。
そこで、ステップS1503において、上から2つ目のトピックID「不明」だったレコードが、図20の通り、分析装置によってトピックID「1」に変更される。
ステップS1504、S1505は、後に別の例で説明するため、ここでは説明を省略し、ステップS1506において、分析装置により変更候補がまだあると判断されれば(S1506がY)、分析装置は、ステップS1503に戻り処理を続ける。他方、分析装置により他にトピックの並びの矛盾も不明もないと判断されれば(S1506がN)、図20に示す通り、ステップS1507において、分析装置が、図20のレコードの並びのうち、更新分、すなわち、上から2番目のつぶやき「ほにゃら http://a.com/」のレコード、3番目のつぶやき「ほにゃらら http://a.com/」のレコード、5番目のダミーレコードをつぶやき−トピックID対応DBに格納して、対応推定処理を終了する。
以上のようにして、分析装置は、あるつぶやきとトピックの組み合わせ単体の推定を行い、その結果、十分な確信度がなく、対応トピック不明、といったん判定されたものであっても、他のつぶやきとトピックの組み合わせとあわせて推定し直したことにより、推定結果の変更が起こって、解決することができる。
次に、図21乃至図29を用いて、変更の変更が起こる例を説明する。なお、図21乃至図29は、図13に示したつぶやき−トピックID対応DBと同様のレコード形式であるが、図21乃至図25については説明に不要なカラム「対応ID」「変更根拠履歴」を省略してある。
図14および図15のすでに説明済みのステップについては詳細に追うことを省略するが、新しく図21に示す例では、分析装置によるつぶやき分析処理を実行する時刻12:00の時点において、推定処理中のつぶやきは、つぶやき時刻8:00のつぶやき「ほにゃら http://a.com/」である。また、つぶやき−トピックID対応DBから抽出したレコード、12:00現在のダミー確定レコードをつぶやき時刻でソートすると、図21の順序になり、推定処理対象のつぶやきレコードは、確定のトピックID「1」とトピックID「2」のレコードに挟まれているため、この2つのトピックIDが推定候補となる。
推定処理中のつぶやき「ほにゃら http://a.com/」と、それぞれのトピックID候補との対応関係を単体で、例えば機械学習を利用して推定し、確信度を算出する。その結果、トピックID「1」の確信度スコアが20点、トピックID「2」の確信度スコアが50点となり、トピックID「2」と判定された。その結果が図22である。
また、次に時刻15:00の時点で分析装置によりつぶやき分析処理が再度実行され、図23に示す通り、推定処理中のつぶやきは、9:00のつぶやき「ほにゃらら http://a.com/」である。また、つぶやき−トピックID対応DBから抽出したレコード(前回12:00の処理結果)、15:00現在のダミー確定レコードをつぶやき時刻でソートすると、図24に示す通りの順序になり、推定処理対象のつぶやきレコードは、「確定」のトピックID「1」と「確定」のトピックID「2」のレコードに挟まれているため、この2つのトピックIDが推定候補となる。
推定処理中のつぶやき「ほにゃらら http://a.com/」と、それぞれのトピックID候補との対応関係を単体で、例えば機械学習を利用して推定し、確信度を算出する。その結果、トピックID「1」である確信度スコアが60点、トピックID「2」である確信度スコアが10点となり、トピックID「1」と判定された(ここまでで、図14のステップS1412)。
ここで、図15のステップS1501において、分析装置が、レコードの並びの中にトピックIDの変更候補があるかを判定すると、図25に示す通り、上から3つのレコードのトピックIDの並びが「1→2→1」となっており、矛盾がある。
カラム「対応関係」の確信度スコアを見ると、2番目のつぶやき「ほにゃら http://a.com/」のレコードがトピックID「2」である確信度は50、3番目のつぶやき「ほにゃらら http://a.com/」のレコードがトピックID「1」である確信度は60であるため、スコアの小さい2番目のレコードが変更候補である。
よって、ステップS1503で、図25に示す通り、分析装置により2番目のレコードのトピックIDが「2→1」に変更され、上から3つのレコードの間はすべてトピックID「1」だった、との推定結果となる。
ここで、図26に示す通り、変更された2番目のレコード(対応ID2、説明を省略してきたが、各レコードには対応IDが付与されている)のカラム「変更根拠履歴」には、今起こった変更が、対応ID4のレコードを根拠として、トピックID「2→1」へと変更された旨が記録される。
さらに、次の推定処理対象のつぶやきとして、図27に示すように、8:30のつぶやき「ほにゃららら http://a.com/」(対応ID6)が入ってきて、トピックIDの候補が「1」か「2」であり、対応関係を単体で、例えば機械学習を利用して推定すると、トピックID「2」であると推定された。
続いて、図15のステップS1501で、分析装置が、変更候補を判定すると、図27に示す通り、トピックの推移は上から「1→1→2→1→2…」となっており、矛盾が発生している。つまり、対応ID6のレコード、もしくは対応ID4のレコードの推定が誤っていることになる。対応ID6のレコードは、確信度90でトピックID「2」、対応ID4のレコードは、確信度60でトピックID「1」であるため、確信度スコアの小さい対応ID4のレコードが変更候補となる。
そこで、図15のステップS1503において、分析装置により対応ID4のレコードのカラム「トピックID」が「1→2」に変更され、該当レコードのカラム「変更根拠履歴」には、今起こった変更が、対応ID6を根拠として、トピックID「1→2」への変更であった旨が記録される。その結果を図28に示す。
すでに述べた通り、ある変更の根拠となっていた情報が後に変更されてしまった場合、それは根拠として信頼できなくなったので、当初の変更の取り消しを行う必要がある。
そこで、次に図15のステップS1504において、分析装置により、今変更のあった対応ID4のレコードを根拠として実施された、過去の変更がなかったかの判定が行われる。上述の通り、対応ID2のレコードは、対応ID4のレコードを根拠として変更が行われた経緯があるので、図28の各レコードの変更履歴の最終変更において、対応ID4を根拠にしているレコードがあるかを調べると、対応ID2のレコードが該当する。
そこで、ステップS1505において、分析装置が、該当するID2のレコードの過去の変更を取り消す。図29に示す通り、対応ID2のレコードのトピックIDは、過去に「2→1」に変更されていたものが、「2」に戻され、変更履歴も削除される。
以上のようにして、推定結果の変更の変更が起こる。このように変更が繰り返されることで、全体の推定精度を高めていくことができる。
図30は、本実施の形態を実行する分析装置の構成図(その1)である。
本発明が適用される分析装置は、つぶやき取得部3001及びつぶやき分析部3003を備える。
つぶやき分析部3003は、つぶやき情報抽出部3004、トピック取得部3005、トピック同一判定部3007、及びつぶやき−トピックID対応判定部3008を備える。そして、つぶやき−トピックID対応判定部3008は、確定対応付部3010、トピックID候補選出部3011、対応推定部3012、推定規則DB3013、及び変更部3014を備える。
また、つぶやきDB3002、トピックDB3006、つぶやき−トピックID対応DB3009を備える。
つぶやき取得部3001は、ソーシャルメディアのAPIにアクセスしてつぶやき群を取得し、つぶやきDB3002に格納する。
つぶやき情報抽出部3004は、つぶやきDB3002からつぶやきを取り出し、URL等のつぶやき情報を抽出する。
トピック取得部3005は、つぶやきに記載されたURLにアクセスし、そのURLの現在のトピックを取得する。
トピック同一判定部3007は、現在のトピックと同じURLの過去のトピックとの同一判定を行い、同一であれば同一のトピックIDを付与し、同一でなければ新規のトピックIDを付与して、トピックDB3006に格納する。
確定対応付部3010は、処理中のつぶやきとトピックIDの「確定」の対応づけを付与する。
トピックID候補選出部3011は、処理中のつぶやきをはさんでいる前後の「確定」レコードから、トピックIDの候補を抽出する。
対応推定部3012は、推定規則DB3013を参照し、機械学習等によりつぶやきとトピックとの対応関係を推定する。
変更部3014は、時系列順に並べたつぶやきとトピックの対応関係について、トピックの推移に矛盾や不明がないか調べ、矛盾や不明がある場合に、トピックIDを変更する。
また、本実施の形態の分析装置を利用しながら、対応付けの事例を蓄積していき、それを機械学習の学習データとして利用する(再学習する)こともできる。
次に、蓄積した事例を学習データに利用する例を説明する。
図31は、蓄積した事例を学習データに利用する例を説明するための図である。
機械学習には、すでに述べた通り、学習フェーズと推定フェーズがある。推定を行うためには、事前に正例・負例による学習データで、学習、すなわち推定のための規則の自動生成を行っておく必要がある。学習データを人手で作成するのは大きな労力が必要となるので、できるだけ自動的に学習データを生成することが望ましい。
本発明では、上述の実施の形態で蓄積するつぶやき−トピックID対応DBのデータのうち、対応づけ「確定」のつぶやきとトピックの組み合わせの事例を学習データとして利用することができる。
図31に示す通り、学習フェーズでは、「確定」のつぶやきとトピックの組み合わせの事例を正例として、対応推定規則を学習する。例えば、正例であるつぶやき「超嬉しい http://a.com/」とトピック「アイドルグループAをCMに起用」の組み合わせの対応推定規則を学習する。また、本来組み合わせられていたつぶやきとトピック以外の組み合わせ事例を負例として、対応推定規則を学習する。例えば、負例であるつぶやき「超嬉しい http://a.com/」とトピック「社長スキャンダル」の組み合わせの対応推定規則を学習する。この対応推定規則を用いて、推定フェーズにて対応推定を行う。
また、対応付け「確定」の事例のみならず、「推定」の事例も、確信度が閾値以上であるならば、学習データとして利用しても構わない。
以上のようにすれば、本実施の形態の分析装置の利用に応じて蓄積データが変更され、学習データとして利用可能なデータが増えていくため、定期的に再学習することで、推定精度が向上する。
図32は、本実施の形態を実行する分析装置の構成図(その2)である。
図32に示した分析装置を用いて、蓄積した事例を学習データに利用することができる。
学習データ生成部3215は、つぶやきDB3002、トピックDB3006、及びつぶやき−トピックID対応DB3009に格納されたデータに基づいて、学習データを生成し、学習データDB3216に格納する。学習部3217は、学習データDB3216に格納された学習データに基づいて、学習又は再学習を行い、推定規則DB3013を更新する。
図33は、変形例を説明するための図である。
上述してきた実施の形態では、利用する時刻情報として、つぶやき時刻とトピック取得時刻を用いた。これらの時刻情報に加えて、トピックの最終更新時刻を用いることもできる。
図33に示す通り、現在推定対象となっているのは、左端に矢印の付いた9:00のつぶやき「ほにゃらら http://a.com/」のレコードである。
トピックの最終更新時刻を用いない実施の形態の場合、つぶやき時刻の前後関係から、トピックID「1」又は「2」を候補として推定を行うが、ここで図33中の一番下のダミー確定のレコードの最終更新時刻により、8:30以降はトピックID「2」であることがわかる。よって、推定しなくても「トピックID2で確定」にすることができる。これにより、確定レコードを増やすことができる。
以上、本発明の実施の形態を、図面を参照しながら説明してきたが、上述してきた本発明の実施の形態は、分析装置の一機能としてハードウェアまたはDSP(Digital Signal Processor)ボードやCPUボードでのファームウェアもしくはソフトウェアにより実現することができる。
また、本発明が適用される分析装置は、その機能が実行されるのであれば、上述の実施の形態に限定されることなく、単体の装置であっても、複数の装置からなるシステムあるいは統合装置であっても、LAN、WAN等のネットワークを介して処理が行なわれるシステムであってもよいことは言うまでもない。
また、バスに接続されたCPU、ROMやRAMのメモリ、入力装置、出力装置、外部記録装置、媒体駆動装置、ネットワーク接続装置で構成されるシステムでも実現できる。すなわち、前述してきた実施の形態のシステムを実現するソフトェアのプログラムを記録したROMやRAMのメモリ、外部記録装置、可搬記録媒体を、分析装置に供給し、その分析装置のコンピュータがプログラムを読み出し実行することによっても、達成されることは言うまでもない。
この場合、可搬記録媒体等から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した可搬記録媒体等は本発明を構成することになる。
プログラムを供給するための可搬記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、DVD−RAM、磁気テープ、不揮発性のメモリーカード、ROMカード、電子メールやパソコン通信等のネットワーク接続装置(言い換えれば、通信回線)を介して記録した種々の記録媒体などを用いることができる。
また、コンピュータ(情報処理装置)がメモリ上に読み出したプログラムを実行することによって、前述した実施の形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施の形態の機能が実現される。
さらに、可搬型記録媒体から読み出されたプログラムやプログラム(データ)提供者から提供されたプログラム(データ)が、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施の形態の機能が実現され得る。
すなわち、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または形状を取ることができる。