(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022178727
(43)【公開日】2022-12-02
(54)【発明の名称】分類システム、分類方法および分類プログラム
(51)【国際特許分類】
G06F 16/35 20190101AFI20221125BHJP
G06Q 10/04 20120101ALI20221125BHJP
【FI】
G06F16/35
G06Q10/04
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2021085727
(22)【出願日】2021-05-20
(71)【出願人】
【識別番号】517332845
【氏名又は名称】Arithmer株式会社
(72)【発明者】
【氏名】鈴木 良尚
(72)【発明者】
【氏名】武内 数馬
(72)【発明者】
【氏名】藤間 光徳
(72)【発明者】
【氏名】有田 親史
【テーマコード(参考)】
5B175
5L049
【Fターム(参考)】
5B175DA01
5B175FA03
5L049DD01
(57)【要約】 (修正有)
【課題】分析者が、テキストデータの分類結果から業務に必要な情報のみを抽出する分類システム、分類方法及び分類プログラムを提供する。
【解決手段】利用者端末、分析者端末、管理サーバ及び分類サーバによって実現される分類システムにおいて、分類サーバ300は、所定の単位で分割されたテキストデータを記憶する記憶部と、分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類部を有する処理部と、を備える。分類部は、テキストデータを単語毎に整数に変換して得られた整数列を入力して、複数のクラスへの分類確率を出力する学習モデル321を用いてテキストデータを分類する。
【選択図】
図15
【特許請求の範囲】
【請求項1】
所定の単位で分割されたテキストデータを記憶する記憶部と、
前記分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類部と、
を備える分類システム。
【請求項2】
前記分類部は、前記テキストデータを単語ごとに整数に変換して得られた整数列を入力して前記複数のクラスへの分類確率を出力する学習モデルを用いて前記テキストデータを分類する、
請求項1に記載の分類システム。
【請求項3】
前記学習モデルは、
前記整数列から数値行列を求める第1演算部と、
前記数値行列の入力に応じて前記複数のクラス分類確率を出力する第2演算部と、
を備える、請求項2に記載の分類システム。
【請求項4】
前記第1演算部は、前記整数列から分散表現を求め、
前記第2演算部は、前記分散表現の入力に応じて前記複数のクラス分類確率を出力する、
請求項3に記載の分類システム。
【請求項5】
前記分類部は、前記テキストデータを予め定められた単語数となるように固定長化処理を施して前記学習モデルへ入力する請求項2から4のいずれか1項に記載の分類システム。
【請求項6】
前記学習モデルは、畳み込み演算を実行する、
請求項2から5のいずれか1項に記載の分類システム。
【請求項7】
前記テキストデータは、300文字以内の文字数で構成されるものである、
請求項1から6のいずれか1項に記載の分類システム。
【請求項8】
前記分類部は、同一単語を含む前記テキストデータを異なるクラスに分類可能な学習モデルを用いて前記テキストデータを分類する、
請求項1から7のいずれか1項に記載の分類システム。
【請求項9】
前記記憶部に記憶されたテキストデータから、イベントに関する前記テキストデータを収集する収集部をさらに備える、請求項1から8のいずれか1項に記載の分類システム。
【請求項10】
前記テキストデータは、音声データを音声認識により変換した文字列である、請求項1から9のいずれか1項に記載の分類システム。
【請求項11】
所定の単位で分割されたテキストデータを記憶する記憶ステップと、
前記分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類ステップと、
をコンピュータが実行する分類方法。
【請求項12】
所定の単位で分割されたテキストデータを記憶する記憶ステップと、
前記分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類ステップと、
をコンピュータに実行させる分類プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分類システム、分類方法および分類プログラムに関する。
【背景技術】
【0002】
例えば事故の発生により鉄道が一定期間運休を余儀なくされるような場合に、運行の再開予測を一刻も早く知らなければならない利用者がいる。しかし、鉄道会社は正確を期するために不確かな情報を公表せず、往々にして運行を再開してからその旨を公表する。そこで、利用者は、ソーシャルメディアに対して発信された第三者のコメントを参照して、いち早く運行状況を予想し、行動する場合がある。しかし、ソーシャルメディアの個々のコメントは、即時性がある反面、正確性に劣る場合がある。このような背景のもと、ソーシャルメディアに発信されたコメントを、実際の状況を予測する材料とする技術が開発されるようになってきた(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば特許文献1では、ソーシャルメディア情報を用いて、駅の混雑を正確に予測することを意図した技術が開示されている。しかしながら、特許文献1に記載の技術は、ソーシャルメディアに発信された多数のコメントから、対象イベントの進行状態を大局的に予測するのには不向きな場合がある。
【課題を解決するための手段】
【0005】
本発明の第1の態様における分類システムは、所定の単位で分割されたテキストデータを記憶する記憶部と、前記分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類部とを備える。
【0006】
本発明の第2の態様における分類方法は、所定の単位で分割されたテキストデータを記憶する記憶ステップと、前記分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類ステップとを有する。
【0007】
本発明の第3の態様における分類プログラムは、所定の単位で分割されたテキストデータを記憶する記憶ステップと、前記分割された各テキストデータを予め定められた複数のクラスのいずれかに分類する分類ステップとをコンピュータに実行させる。
【0008】
このように、多数寄せ集められたコメントをその内容に応じて分類し、分類によって現れる大局的な傾向を利用して対象であるイベントの進行状態を判定する。このような手法によれば、個々のコメントの正確性の全体の予測に及ぼす影響を低減しつつ、いち早く判定結果を提示することができる。
【図面の簡単な説明】
【0009】
【
図1】本実施形態に係る状態判定システムが利用される全体環境と、状態判定に関する情報の流れを説明する図である。
【
図2】状態判定サーバのハードウェア構成を示す図である。
【
図3】コメントのクラスへの分類を説明する図である。
【
図4】コメントの整数列への変換を説明する図である。
【
図5】ニューラルネットワークの処理を説明する図である。
【
図7A】クラス割合と状態判定結果の時間推移を示すグラフである。
【
図7B】状態判定するための判定期間を説明するための図である。
【
図9】クラスAの割合の時間推移と再開判定時刻を示すグラフである。
【
図11】状態判定プログラムの処理手順を示すフロー図である。
【
図12】他の例における全体環境と、状態判定に関する情報の流れを説明する図である。
【
図13】分類システムが利用される全体環境と、分類に関する情報の流れを説明する図である。
【
図14】分類システムのニューラルネットワークの教師データの一例を示す図である。
【
図15】分類サーバのハードウェア構成を示す図である。
【
図16】分類プログラムの処理手順を示すフロー図である
【発明を実施するための形態】
【0010】
以下に発明の実施形態を通じて本発明を説明するが、特許請求の範囲に係る発明を以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
【0011】
(1)全体構成
図1は、本実施形態に係る状態判定システムが利用される全体環境と、状態判定に関する情報の流れを説明する図である。本実施形態における状態判定システムは、状態判定サーバ100によって実現される。状態判定サーバ100は、インターネット900に接続されており、インターネット900を介して、直接的または間接的に利用者のスマートフォン210、コメント発信者のスマートフォン910、およびメディアサーバ920と情報の授受を行う。
【0012】
より具体的には、コメント発信者が各自のスマートフォン910を操作して発信したツイート等のコメントは、インターネット900を介してメディアサーバ920へ送られ、メディアサーバ920に接続されたコメント蓄積部921に蓄積される。コメント蓄積部921は、例えば大容量のHDDによって構成されている。コメント発信者のスマートフォン910には、メディアサーバ920を運営する運営者によってリリースされたアプリケーションがインストールされており、コメント発信者は、当該アプリケーションを介してコメントをテキスト入力することができる。なお、コメントは、コメント発信者の発声を認識してテキスト変換したものであっても良い。
【0013】
コメント蓄積部921に蓄積されたコメント発信者のコメントは、アクセス権限に応じて閲覧することができる。このように特定のアプリケーションを介して利用者間でコメントを授受するサービスは、代表的にはソーシャルネットワークサービス(SNS)が知られている。ただし、本実施形態におけるソーシャルメディアは、SNSに限らず、発信者が一方的に情報を発信するサービスも含み得る。
【0014】
本実施形態における状態判定システムは、このように任意に運営されている1つまたは複数のソーシャルメディアを利用する。具体的には、状態判定サーバ100は、分析対象のイベントを定めると、当該イベントに関するコメントを特定コメントと定め、インターネット900を介してメディアサーバ920へアクセスし、コメント蓄積部921から特定コメントを収集する。複数のソーシャルメディアを利用する場合には、それぞれのソーシャルメディアのメディアサーバ920へアクセスする。状態判定サーバ100は、収集したコメントに基づいて当該イベントの現在または将来における進行状態を判定する演算処理を実行する。そして、利用者のスマートフォン210から状態判定のリクエストを受けると、スマートフォン210へ判定した判定結果を送信する。利用者は、気になるイベントの進行状態を、スマートフォン210に表示される判定結果により想像することができる。
【0015】
なお、ここでは、ツイート等のコメントとして、300文字以内の文字数で構成されるものを分析対象とする。以下においては、公共交通機関の非常停止後の運行再開事象を分析対象のイベントとして説明する。具体的には、発生した車両事故により運休が余儀なくされているある鉄道路線(「東急電鉄」の「東横線」を具体例とする)において、列車の運行再開に関する進行状態を判定する例を説明する。東横線の利用者は、例えば自宅やオフィスに居ながら、「現時点で運行が再開しているのか」や、「いつ運行が再開しそうか」といった情報を知りたい場合がある。そのような場合において、利用者は、スマートフォン210の専用アプリケーションを利用して、状態判定サーバ100へ状態判定をリクエストする。
【0016】
図2は、状態判定サーバ100のハードウェア構成を示す図である。状態判定サーバ100は、主に、処理部110、記憶部120、通信部130、および入力部140によって構成される。処理部110は、状態判定サーバ100の制御とプログラムの実行処理を行うプロセッサ(CPU及び/又はGPU等で構成される)である。処理部110は、記憶部120に記憶された状態判定プログラムを読み出して、状態判定に関する様々な処理を実行する。処理部110が収集部111としての処理を実行する場合には、コメント蓄積部921に蓄積されたコメントのうち、分析対象として指定されたイベントである「東横線の運行再開」に関する特定コメントを収集する。
【0017】
具体的には、収集部111は、通信部130を介してコメント蓄積部921へアクセスし、コメント蓄積部921で一定時間の間に蓄積されたコメントから、キーワード検索により特定コメントを抽出する。そして、キーワード検索により抽出されたコメントを特定コメントとして状態判定サーバ100へ取り込む。キーワード検索は、例えば、路線名に関する複数のキーワード(「東横線」「東急東横線」等)が予め設定されており、設定されているキーワードを含むコメントを抽出する。特定のキーワードについては、他のキーワードと共に含まれている場合に抽出候補とする等の抽出条件を定めても良い。また、キーワード検索を実行する対象コメントを、例えばタグ情報として東横線沿線の位置情報を有するコメントに限っても良い。
【0018】
処理部110が分類部112としての処理を実行する場合には、記憶部120から読み出したニューラルネットワーク121(以下「NN121」とする)を用いて特定コメントを、東横線の運行再開の進行状態に応じて定められた複数のクラスのいずれかに分類する。処理部110が判定部113としての処理を実行する場合には、設定した複数のクラスのうち着目する特定クラスに分類された特定コメントの割合に基づいて、現在または将来における東横線の運行再開の進行状態を判定する。分類部112と判定部113の具体的な処理については、後に詳述する。
【0019】
記憶部120は、不揮発性の記憶媒体であり、例えば大容量のHDDによって構成されている。記憶部120は、状態判定サーバ100の制御や処理を実行するプログラムを格納するほか、収集部111が収集した特定コメントを一時的に保管する役割も担う。また、学習モデルであるNN121を記憶している。本実施形態におけるNN121は、対象イベントである「東横線の列車運行再開」について、入力された特定コメントを、イベントの進行状態として設定された「再開した」「再開しそう」「止まっている」「無関係、判別不能」の4つのクラスのいずれかに分類する。
【0020】
通信部130は、インターネット900への接続および外部機器とのデータ授受を担い、例えばLANによって構成されている。通信部130は、判定部113が判定した判定結果を利用者のスマートフォン210へ出力する出力部としての機能も担う。入力部140は、システム管理者がプログラムの実行および停止を指示したり、メニューの設定やパラメータの調整を行ったりするための入力デバイスを含む。なお、本実施形態においては、状態判定サーバ100が状態判定システムの主要構成を備える構成を説明するが、例えば記憶部120がインターネット900に直接的に接続されたネットワークHDDで構成されていても良い。そのような場合には、分散して構成された装置の全体によって状態判定システムが構築される。
【0021】
(2)分類部の処理
次に、特定コメントのクラスへの分類について説明する。
図3は、特定コメントのクラスへの分類を説明する図である。ここでは、イベント「東横線の列車運行再開」の進行状態として、4つのクラス「再開した(クラスA)」「再開しそう(クラスB)」「止まっている(クラスC)」「無関係、判別不能(クラスD)」が予め設定されている。収集部111によって収集された特定コメントは、これら4つのクラスのいずれかに分類される。
【0022】
これらのうち「再開した(クラスA)」「再開しそう(クラスB)」「止まっている(クラスC)」の3つのクラスは、時間の推移と共に想定されるイベントの進行状態に対応している。例えば、収集された特定コメントが「東横線再開したって!」であれば、列車の運行が再開したことを意味するので、クラスAに分類される。また、「東横線試運転をしているみたい」であれば、列車の運行再開に向けて準備が進んでいる様子を表すので、クラスBに分類される。同様に、「地震で東横線が止まった」であれば、列車が動いていないことが推測されるので、クラスCに分類される。
【0023】
一方、「東横線」について言及しているので特定コメントとして収集されたものの、その内容が列車運行再開の進行状態とは関係ないコメントや、そもそも進行状態に関係するものか否かを判別できないコメントも存在し得る。そのような特定コメントは、進行状態に対して「無関係、判別不能(クラスD)」のコメントと分類される。例えば、収集された特定コメントが「東横線は東急だよね」であれば、列車の運行再開とは関係のないコメントなので、クラスDに分類される。
【0024】
なお、本実施形態においては、時間の推移と共に想定される状態を3つのクラスに区分したが、これに限らず、例えば多くの特定コメントが収集できそうな場合にはより多くの情報を抽出し得るので、区分を細分化しても良い。例えば、「再開した」を「臨時ダイヤで再開した」と「通常ダイヤに戻った」などに分けても良い。逆に、コメント数が期待できないような場合には、区分を減らしても良い。
【0025】
本実施形態においては、このようなクラスの分類を分類部112が行う。分類部112は、NN121へ特定コメントを入力し、出力としてすべてのクラス毎への分類確率を受け取る。分類確率の値が最も大きいクラスを当該特定コメントのクラスと判定する。NN121に、事前に正解クラスが紐づけられた大量のコメント例を教師データとして学習させたものを用いる。本実施形態におけるNN121を具体的に説明する。
【0026】
分類部112は、コメントを整数列に変換してNN121へ入力する。
図4は、コメントの整数列への変換を説明する図である。ここでは、コメントの例として「東急東横線が動き出したようです。」を説明する。
【0027】
分類部112は、まず、入力コメントに対して形態素解析を行い、単語単位の分かち書きにする。そして、単語ごとに分解した後に、活用語を終止形に変換する。これにより、入力コメントは、「'東急','東横線','が','動く','出す','た','ようだ','。'」と分解される。なお、対象言語を英語とする場合には、スペース文字による単語の区切りをそのまま利用する。
【0028】
ここで、NN121は、特定コメントを単語ごとに整数に変換して得られた整数列を入力して前記複数のクラスへの分類確率を出力する。具体的に、NN121は複数の層から構成される。NN121の第一層では、整数列から数値行列を求める。さらに詳しくは、NN121の第一層では、このように分解した入力コメントのそれぞれの単語を分散表現に変換する。各単語の分散表現は、d次元の行ベクトルとして表される。したがって、n単語に分解される一つの入力コメントは、n行d列の数値行列で表現される。
【0029】
コメント発信者が発信するコメントは、1文であるとは限らない。また、1文がいくつの単語で構成されるかも不定である。また、ソーシャルメディアによっては、コメント可能な字数が制限されている場合もある。発信されたそれぞれのコメントについて、すべての単語を数値ベクトル化すれば、そのコメントが含む内容を最大限に利用できるが、数値行列化した場合に、コメントごとに行列のサイズが異なることになる。
【0030】
本発明者らは、コメントの主要な内容は、当該コメント内で比較的早い段階において言及されるという知見を得た。また、本発明者らは、コメントが140文字以内に制限されるソーシャルメディアの場合、30語の固定長化により8割以上の内容が収まるという知見を得た。そこで、本発明者らは、このような知見に基づいて任意のコメントに固定長化処理を施すことを想到した。
【0031】
本実施形態においては、分類部112は、収集部111が収集した特定コメントを予め定められた単語数になるように固定長化処理を施す。具体的には、収集した特定コメントに対して分かち書き処理を施した結果、30語を上回った場合には、上回った単語を棄却する。また、収集した特定コメントに対して分かち書き処理を施した結果、30語を下回った場合には、不足分を0ベクトルで補う。このように処理することにより、いずれの特定コメントも、30行d列の数値行列に変換することができる。特に、固定長化処理により、複数のコメントのバッチ並列処理が可能となり、一つずつ処理した場合に比べ100倍以上の高速化が実現する。
【0032】
なお、30語を超えるコメントにおいても先頭から30語以内で概ね趣旨を言及していることが多い。本発明者らは、コメントが140文字以内に制限されるソーシャルメディアの場合、30語を超える部分を棄却することによる分類精度の低下は1%程度であることを確認した。
【0033】
本実施形態においては、このように変換された特定コメントの数値行列を画像データに類似するデータに見立て、NN121の第二層に、画像処理において多用される畳み込み層を採用する。
図5は、NN121の処理を説明する概念図である。
【0034】
上述のように数値行列化された特定コメントに対し、畳み込み演算を実行することにより、コメント中の数単語のまとまり(n-gram)の特徴が抽出される。そして、プーリング処理が施され、コメントごとの特徴量が生成される。例えば、グローバル最大プーリングが実行される。その後、活性化関数にソフトマックス演算を持つ全結合層により、4つのクラスへの分類確率を計算する。4つのクラスは、それぞれクラスA、クラスB、クラスC、クラスDに対応する。
【0035】
なお、上記NN121では、畳み込み処理を行なう際に、単語分散表現の次元数dに応じた重みフィルターを用いる。具体的には、フィルターの幅をfとしてf行d列の数値行列により表現される重みフィルターが用いられる(
図5参照)。このような重みフィルターを用いることで、NN121は、コメントに含まれる概念が反映された情報を学習することが可能となる。
【0036】
例えば、コメントの中に「再開」という単語が含まれている場合、単なる形態素解析による分類では、「再開した(クラスA)」に分類するのか、「再開しそう(クラスB)」に分類するのかを決定することができない。これに対し、上記NN121では、特定の表現に反応する重みフィルターを学習しているので、「再開した(クラスA)」に分類するのか、「再開しそう(クラスB)」に分類するのかを適切に決定することができる。換言すると、上記NN121は、同一単語を含むコメントを異なるクラスに分類可能な学習モデルであり、概念に応じたクラス分類を可能としている。
【0037】
また、上記NN121では、単語を数値ベクトル化するための処理で用いるパラメータの学習と、畳み込み処理から分類確率計算までに用いられるパラメータの学習とを一連のバックプロパゲーションで実行することができる。これにより、特定ジャンルのコメントの分類に特化した単語分散表現やn-gramの特徴を獲得するため、クラス分類の精度を高めることができる。なお、上記の畳み込み層及びプーリング層に替えて、多層LSTMやTransformerを用いても同様の効果を得ることが可能である。その他、NN121は、上述のものに限定されず、クラス分類できるものであれば任意のものを採用することができる。
【0038】
本発明者らは、災害時に運休となった路線に対してソーシャルメディアへ発信された実際のコメントを収集し、手作業でその内容に応じた正解クラスをそれぞれのコメントに与えて教師データを作成し、これらを学習させることによってNN121を作成した。そして、学習に利用していないコメントを使って、作成したNN121の分類精度を検証した。
図6は、クラス分類の検証結果を示す図である。
【0039】
学習に利用していない検証用のコメント数は649個である。そのうち、作業者がクラスAと判断する(すなわちクラスAが正解である)コメント数は143個であり、NN121は、そのうち125個をクラスAに分類されると判断した。同様に、作業者がクラスBと判断するコメント数は292個であり、NN121は、そのうち258個をクラスBに分類されると判断した。さらに、作業者がクラスCと判断するコメント数は92個であり、NN121は、そのうち70個をクラスCに分類されると判断した。そして、作業者がクラスDと判断するコメント数は122個であり、NN121は、そのうち102個をクラスDに分類されると判断した。すなわち、正しく分類できたコメント数は555個であり、NN121による分類の正解率は約85%であった。この程度の正解率が達成できれば、NN121による分類は十分に実用に耐えるものと考えられる。
【0040】
(3)判定部の処理
収集部111が一定時間の間に収集した特定コメントのそれぞれを、分類部112がクラスAからクラスDのいずれかに分類すると、全体のコメント数に対してそれぞれのクラスに属するコメント数の割合を計算することができる。判定部113は、各クラスの当該割合に着目することにより、現在または将来における対象イベントの進行状態の判定結果を算出する。なお、ここでは、分類部112は、一定期間毎に特定コメントを複数のクラスAからクラスDのいずれかに分類するものであり、例えば1分間毎に各コメントをいずれかのクラスに分類する。
【0041】
現在または将来における対象イベントの進行状態を判定する場合には、時間の推移と共に想定される状態を定めたクラスA,クラスBおよびクラスCのそれぞれのコメント数の割合を演算の対象とすることが望ましい。すなわち、クラスA,クラスBおよびクラスCのそれぞれの割合を算出する場合に、進行状態とは無関係なコメントおよび判別不能なコメントが分類されるクラスDのコメント数を除外して算出する。具体的には、収集されたクラスAのコメント数がnA個、クラスBのコメント数がnB個、クラスCのコメント数がnC個、クラスDのコメント数がnD個である場合には、クラスAの割合TAをTA=nA/(nA+nB+nC)、クラスBの割合TBをTB=nB/(nA+nB+nC)、クラスCの割合TCをTC=nC/(nA+nB+nC)のように計算し、クラスDのコメント数を考慮しない。このように計算すれば、コメント数が急増した場合でも計算量を抑えることができる。また、各クラスの割合の変化がイベントの進行状態の推移をより反映すると期待できる。
【0042】
第1実施例として、現在におけるイベントの進行状態を判定する手法について説明する。イベントの例は、引き続き「東横線の運行再開」であり、本実施例も実際に発生したイベントについて特定コメントを収集し、検証したものである。
【0043】
図7Aは、「東横線の運行再開」のイベントにおけるクラス割合と状態判定結果の時間推移を示すグラフである。横軸は時刻を表す。左縦軸は各クラスの割合(%)を表し、右縦軸は判定結果を0、1、2で表す。判定結果「0」は「止まっている」の予測を表し、「1」は「再開しそう」の予測を表し、「2」は「再開した」の予測を表す。点線で示すグラフは、クラスAの割合の推移を表す。破線で表すグラフは、クラスBの割合の推移を表す。なお、クラスCの割合は、100-(クラスAの割合+クラスBの割合)であるので省略している。また、それぞれの割合の推移には、突発的な変化を軽減するノイズ除去フィルターを適用している。実線で示すグラフは、判定部113が判定した判定結果の推移を表す。
【0044】
全体の傾向としては、クラスCが大きな割合を占めている期間の「現在における進行状態」の判定結果は「止まっている」であり、クラスBが大きな割合を占めている期間の「現在における進行状態」の判定結果は「再開しそう」であり、クラスAが大きな割合を占めている期間の「現在における進行状態」の判定結果は「再開した」である。ただし、本実施例は、その時点において最大の割合を占めるクラスに対応する進行状態を「現在における進行状態」とするものに限定されるものではない。判定部113は、その時点における各割合に、直前に判定した進行状態を加味して、現在における前記イベントの前記進行状態を判定してもよい。このような処理により、時間の経過に対して、判定される進行状態が頻繁に遷移してしまうことを防ぐことができる。
【0045】
具体的な演算について説明する。現在における進行状態を判定するために、判定部113は、状態推定演算を行う。状態推定演算は、進行状態を状態番号i(i=0:止まっている、i=1:再開しそう、i=2:再開した)で表した場合に、総コストCをi=0、1、2に対して計算し、Cが最小となるiを決定する演算である。総コストC
iは、
【数1】
で表される。ここで、σ
iはフィッティングコストであり、τ
iは遷移コストである。フィッティングコストσ
iは、観測値(収集されたコメントの分類)と状態(イベントの進行状態)の当てはまりにくさの指標である。フィッティングコストは、観測値と状態が一致しているほど小さく、離れているほど大きい値になる。
【0046】
具体的には、以下のように計算する。コメント分類番号j(j=0:止まっている、j=1:再開しそう、j=2:再開した)、時刻t、時刻tに収集された分類jのコメント数n
t,j、時刻tに収集された全コメント数S
t、励起状態における確率変動の割合を示す行列Q(Qは励起状態数×励起状態数の行列で、Q[0][0],Q[0][1],Q[1][0],Q[1][1]の要素を有する。各要素の値はハイパーパラメータである。)と定義すると、状態iに対するフィッティングコストσiは、
【数2】
により計算される。logの括弧内は、多項分布の確率質量関数になっている。上述したようにコメントの割合によって計算する場合、フィッティングコストσ
iは分類jの割合(%)T
t,jを用いて、
【数3】
となる。ここで、Γ(s)はガンマ関数であり、
【数4】
で表される。p
i,jは、状態iにおけるコメント分類jの発生確率であり、行列で表すと、
【数5】
となる。
【0047】
まず、基底状態としてi=0(止まっている)における確率を決定する。
【数6】
【0048】
次に、行列Qを用いて励起状態としてi=1(再開しそう)、i=2(再開した)における確率を決定する。
【数7】
【0049】
各成分は確率なので、各i(各行ごと)に対して、Σjpi,j=1、各i,j(各成分ごと)に対してpi,j≧0が課せられる。そこで、これらの条件を満たすように修正を加える。具体的には、pi,j<0であるi,jについてpi,j=0とし、Σjpi,j=ptmp>1であるiについてpi,j=pi,j/ptmpとする。
【0050】
このような手法はバースト検知として知られているが、よく知られたバースト検知は励起状態が一つであり、行列Qの対角成分を2、非対角成分を1とするのが一般的である。しかし、本実施例における運行再開の進行状態においては、i=1(再開しそう)とi=2(再開した)の観測値が共起しやすいと考えられるので、非対角成分を1より大きくしている。本実施形態においては、Q[0][0]=2.0、Q[0][1]=1.2、Q[1][0]=1.2、Q[1][1]=2.0と設定した。
【0051】
遷移コストτ
iは、概念的には状態遷移に支払うコストであり、ある状態から別の状態へは、計算される遷移コストτ
iが大きいほど移りにくいことになる。具体的には、以下のように計算する。現在の進行状態を上記と同様に状態番号iで表すと、直前の状態i
直前からの遷移コストτ
iは、
【数8】
で計算される。γは、直前と現在の状態間の遷移のしにくさを定義する行列であり、ハイパーパラメータである。ここではγを遷移行列と名付ける。また、logの項は、フィッティングコストとスケールを合わせるために導入している。本実施形態においては、遷移行列γを、
【数9】
と設定した。例えば、「止まっている(i=0)」から「再開しそう(i=1)」への遷移コストを計算する場合は、γ[0][1]=10が用いられる。本実施形態においては設定していないが、i=1からi=2への遷移を事実上禁止したい場合には、γ[1][2]=10000000などとすれば良い。逆に、i=1からi=2への遷移が他の遷移よりも非常に発生しやすい場合には、γ[1][2]の値を負の値に設定しても良い。このように、プログラムの設計者等は、実際の現象を分析して実情に即すように遷移行列γの各成分をカスタマイズすることが肝要である。なお、一般的なバースト検知手法は、例えば、J. Kleinberg, "Bursty and Hierarchical Structure in Streams,"Proceeding of the 8th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 2002.に詳しい。
【0052】
上記の演算による総コストC
iのうち最も小さい値を示す状態番号iの進行状態を、現在における進行状態の判定結果とする。
図7Aに示す例では、判定部113は、20時50分ころまでは「止まっている」と判定し、それから22時10分ころまでは「再開しそう」と判定し、それ以降は「再開した」と判定している。なお、この事象において鉄道会社が正式に運行再開をアナウンスした時刻は22時30分であった。実際にはそれ以前に運転が再開されたと考えられるので、本実施形態における判定プログラムの判定結果が実際の推移におよそ対応していると推測できる。このような検証結果から、本実施形態に係る状態判定システムの利用者は、運行再開に関する進行状態をある程度の正確性をもっていち早く知ることができると言える。
【0053】
なお、現在における進行状態を判定するための演算手法は、上記のバースト検知手法に限らない。時間の経過に対して判定結果が頻繁に変化しないように、直前に判定した進行状態を加味する手法は、他にも種々採用し得る。演算を簡素化してプロセッサの負荷を軽減する場合には、例えば、各クラスの割合に予め用意した重み付け係数を乗じ、その中から大きな値を示すものを判定結果とすることもできる。この場合、ある状態から別の状態へ遷移する場合の重み付け係数は、遷移しやすいほど大きな値を設定しておく。
【0054】
上述した判定部113の処理について補足する。判定部113は、所定の判定期間毎にイベントの進行状態を判定する。例えば、
図7Bに示すように、判定期間は1分間とする。現在が時刻tであるとすると、現在のイベントの進行状態は、現在の時刻tに時間的に最も近い判定期間D1のコメントの分類結果に基づいて判定される。また、直前の判定期間D2は、現在の判定期間D1に時間的に逆方向に連続する判定期間である。
【0055】
このような前提で、判定部113は、一定期間毎(1分間毎)に収集した各クラスのコメントの割合(数6のp0,1 ,p0,2を参照)に基づいて、現在のイベントの進行状態を判定する判定期間D1において各クラスが取り得る発生確率(pi,j)を算出する。そして、判定部113は、算出した各クラスが取り得る発生確率(pi,j)と、判定期間D1に収集されたクラス毎のコメント数 (nt,j)とに基づいて、現在のフィッティングコストσiを算出する。
【0056】
また、判定部113は、現在のイベントの進行状態を判定する判定期間D1より前の判定期間D2の間に判定したイベントの進行状態と、判定期間D1に取り得るイベントの進行状態との間の遷移行列γに基づいて、遷移コストτiを算出する。
【0057】
そして、判定部113は、これらのフィッティングコストσi及び遷移コストτiから総コストCiを算出し、現在におけるイベントの進行状態を判定する。なお、総コストCiは、必ずしもフィッティングコストσi及び遷移コストτiの両方から算出される必要はなく、いずれか一方から算出されるものであってもよい。
【0058】
図8は、
図7Aのイベントに対して利用者のスマートフォン210に表示される状態判定結果の表示例である。スマートフォン210のディスプレイ211には、主に、イベント表示221と状態判定表示222が表示される。イベント表示221は、対象イベントの情報が表示される。対象イベントは、利用者により選択されたイベントであり、例えば、その時点で状態判定が提供されるイベント一覧のメニューから選択される。対象イベントの情報としては、例えば、「東横線は事故のため14:30から運休しています」のように表示される。
【0059】
状態判定表示222は、状態判定サーバ100から送られてきた判定結果が表示される。ここで状態判定サーバ100から送られてくるのは、現在における進行状態の判定結果であるので、例えば、「現在、東横線の状態は『再開しそう』です」のように表示される。このように、利用者は、自身のスマートフォン210で、対象イベントの現在における進行状態の判定結果を容易かつ簡潔に知ることができる。
【0060】
次に、第2実施例として、将来におけるイベントの進行状態を判定する手法について説明する。イベントの例は、引き続き「東横線の運行再開」であり、一つ目の実施例と同じものである。
【0061】
図9は、クラスAの割合の時間推移と再開判定時刻を示すグラフである。横軸は時刻を表す。縦軸はクラスAの割合(%)を表わす。点線で示すグラフは、クラスAの割合の推移を表すが、本実施例では状態判定サーバ100が22時ちょうどに利用者からのリクエストを受け取った場合を想定するので、22時00分までの推移を示す。なお、クラスAの割合の推移には、突発的な変化を軽減するノイズ除去フィルターを適用している。実線で示すグラフは、22時00分までのクラスAの割合の推移に対して当てはめたフィッティング関数を表す。
【0062】
フィッティング関数は、ここでは0から100の間で変化するように規格化したシグモイド型関数を利用する。図示するようにシグモイド型関数を当てはめることにより、クラスAの割合が22時00分以降にどうのように変化するかを推定する。
【0063】
クラスAの割合は「再開した」の割合なので、この割合が一定値を超えると列車の運行が実際に再開されていると考えることができる。そこで、本実施例では、その閾値Saを80%と定め、当てはめたフィッティング関数が80%を超える時刻を、運行の再開予測時刻とする。図の例ではフィッティング関数が80%を超える時刻は22時28分である。したがって、判定部113は、将来におけるイベントの進行状態である「再開予測時刻」を、22時28分であると判定する。上述のように、この事象において鉄道会社が正式に運行再開をアナウンスした時刻は22時30分であったので、良好な判定結果であると評価できる。なお、本実施例ではフィッティング関数としてシグモイド型関数を採用したが、事象に合わせて他の関数をフィッティング関数として採用しても良い。
【0064】
図10は、
図9のイベントに対して利用者のスマートフォン210に表示される再開予測時刻の表示例である。スマートフォン210のディスプレイ211には、主に、イベント表示221と状態判定表示222が表示される。イベント表示221は、
図8の例と同様である。
【0065】
状態判定表示222は、状態判定サーバ100から送られてきた判定結果が表示される。ここで状態判定サーバ100から送られてくるのは、将来における進行状態の判定結果であるので、例えば、「東横線の再開予測時刻は『22:28』です」のように表示される。このように、利用者は、自身のスマートフォン210で、対象イベントの将来における進行状態の判定結果を容易かつ簡潔に知ることができる。
【0066】
(4)状態判定処理
次に、本実施形態における状態判定サーバ100の処理手順について説明する。状態判定サーバ100による状態判定処理は、状態判定プログラムがコンピュータであるプロセッサに各ステップを実行させることにより実現される。
図11は、状態判定プログラムの処理手順を示すフロー図である。
【0067】
図示するフローは、システム管理者が対象イベントを定めてサービスの提供を開始した時点から始まる。収集部111は、ステップS101で、ソーシャルメディアに対して発信されたコメントのうち、対象イベントに関する特定コメントを、メディアサーバ920のコメント蓄積部921から収集する。ステップS102へ進むと、分類部112は、記憶部120から読み出したNN121を用いて、ステップS101で収集された特定コメントを、イベントの進行状態に応じて定められた複数のクラスのいずれかに分類する。
【0068】
イベントごとに設定される単位時間が経過したら、判定部113は、ステップS103で、その間に収集され分類された特定コメントにおけるクラスごとの割合に基づいて、現在または将来における対象イベントの進行状態を判定する。このとき、判定に用いるクラスを特に着目する特定クラスと定め、特定クラスに分類された特定コメントの割合に基づいて進行状態を判定すると良い。上述の第1実施例では、除外クラスとしたクラスD以外のクラスA、クラスBおよびクラスCが特定クラスであり、第2実施例では、フィッティング関数を当てはめたクラスAが特定クラスである。クラスの設定の仕方によっては、全てのクラスを特定クラスとしても良い。
【0069】
ステップS104へ進み、処理部110は、利用者のスマートフォン210(ここでは「リクエスト端末」とする)から、状態判定のリクエストを受け取ったか否かを確認する。受け取っていたらステップS105へ、受け取っていなければステップS105をスキップしてステップS106へ進む。ステップS105へ進んだ場合には、ステップS103で判定した判定結果をリクエスト端末へ出力し、ステップS106へ進む。
【0070】
ステップS106へ進むと、処理部110は、イベント処理が終期に達したか否かを判断する。例えば、対象イベントが列車の運行再開であれば、実際に列車の運行が再開された情報を取得してから所定時間の経過後を終期とする。終期は、対象イベントごとに、状態判定のリクエストが途絶えると判定される時期に設定すると良い。処理部110は、イベント処理が終期に達していないと判断した場合には、ステップS101へ戻り、終期に達したと判断した場合には、一連の処理を終了させる。
【0071】
なお、上述の説明では、状態判定サーバ100が単一の装置で動作される例を用いて説明したが、状態判定サーバ100の構成は、発明の要旨を逸脱しない範囲で、適宜構成の追加又は変更が可能なものである。例えば、
図12に示すように、状態判定サーバ100がリクエスト端末から直接リクエストを受け付けるのではなく、別途設置したリクエスト処理装置800がリクエスト端末210からリクエストを受け付ける構成であってもよい。この場合、状態判定サーバ100は、ステップS103で進行状態の判定をする度に、所定の記憶装置850に進行状態の判定結果を書き込む。リクエスト処理装置800は、リクエスト端末210からのリクエストを受け取った場合に、上記記憶装置850から最新の判定結果を取り出して、リクエスト端末210に出力する。
【0072】
以上、公共交通機関の非常停止後の運行再開事象を対象イベントとして本実施形態を説明したが、分析対象とするイベントはこれに限らない。例えば、特定名所の桜の開花事象を対象イベントとすることもできる。この場合、進行状態として、例えば「つぼみ」「三分咲き」「五分咲き」「満開近い」「満開」「散り始め」「葉桜」の7クラスを設定し得る。また、「千鳥ヶ淵の桜、もうすぐ満開だね」のようなコメントが特定コメントとして収集される。
【0073】
(5)テキスト分類
図13は、テキストデータから各種業務に必要な情報を抽出する分類システムが利用される全体環境と、分類に関する情報の流れを説明する図である。以下、利用者と分析者が、マーケティング業務に携わるマーケターであること前提として説明する。
分類システムは、利用者端末350、分析者端末360、管理サーバ930、分類サーバ300によって実現される。
【0074】
利用者端末350は、利用者が使用する端末装置であり、一般的なコンピュータにより実現可能なものである。ここでは、利用者端末350はイベント会場や展示場などに携行して設置することが可能なものである。利用者端末350は、イベント会場や展示場での会話を集音し、音声データを生成すると、インターネット900を介して管理サーバ930へ音声データを送信する。
【0075】
分析者端末360は、一般的なコンピュータにより実現可能なものであり、イベント会場や展示場での会話の音声データなどを分析するために分析者が使用する端末装置である。分析者端末360は分類サーバ300と通信して、分類サーバ300による音声データの分析結果などを出力する。
【0076】
管理サーバ930は、利用者端末350から送信された音声データの音声認識を行い文字列に変換する。管理サーバ930は、変換した文字列を所定の単位(話者単位、文単位)に分割し、分割したテキストデータをテキストデータ記憶部931に記憶する。テキストデータ記憶部931は、例えば大容量のHDDによって構成されている。テキストデータ記憶部931に記憶されるテキストデータの一部は、後述のニューラルネットワーク321の教師データであり、事前に正解クラスが紐づけられている。教師データを記憶する場所は、分類サーバ300の記憶部320でもよいし、管理サーバ930や分類サーバ300とは別のサーバ(例えば、ニューラルネットワーク321等の学習用に準備したサーバ)の記憶部でもよい。ここでは、正解クラスは「E」「F」「G」「H」の4つのクラスであり、例えば、「商品に関してポジティブな発言(クラスE)」「商品に関してネガティブな発言(クラスF)」「商品に関してポジティブでもネガティブでもない発言(クラスG)」「商品と関係のない発言(クラスH)」である。なお、正解クラスの分類の種類や数は、本実施形態の例示に限定されるものではなく、利用者の業務に適した分類の種類や数を選択することができる。
【0077】
図14は、本実施形態における教師データの一例を示す図である。
図14において、教師データは、所定の単位(話者単位、文単位)で管理された各テキストデータに対して、4つのクラスのいずれかが紐づけられている。例えば、話者1の「A社のヒーターは寒さがしのげてよかった。」のテキストデータに対してクラスEが紐づけられており、話者1の「ただ、持ち運びの時に重くて運びづらい。」のテキストデータに対してクラスFが紐づけられている。
【0078】
分類サーバ300は、インターネット900に接続されており、インターネット900を介して、直接的または間接的に利用者の利用者端末350、分析者の分析者端末360、管理サーバ930と情報の授受を行う。分類サーバ300は、
図15に示すように、主に、処理部310、記憶部320、通信部130、および入力部140によって構成される。処理部310は、分類サーバ300の制御とプログラムの実行処理を行うプロセッサ(CPU及び/又はGPU等で構成される)である。処理部310は、記憶部320に記憶された分類プログラムを読み出して、分類に関する様々な処理を実行する。例えば、処理部310は、収集部311としての処理やクラスタリング部313としての処理を実行する。
処理部310が収集部311としての処理を実行する場合には、管理サーバ930のテキストデータ記憶部931からテキストデータを収集する。処理部310が分類部312としての処理を実行する場合には、記憶部320から読み出したニューラルネットワーク321(以下「NN321」とする)を用いて、収集部311が収集したテキストデータを、予め定められた複数のクラス(「E」,「F」,「G」,「H」)のいずれかに分類する。分類部312は上述した分類部112と同様の機能を有する。したがって、分類部312の処理は、
図2の分類部112がコメント(所定の単位、すなわち、ソーシャルメディアへの発信者の発信の単位、のテキストデータ)を4つのクラス(複数のクラス)のいずれかに分類する処理と同じである。
処理部310がクラスタリング部313としての処理を実行する場合には、記憶部320から読み出したクラスタリングモデル322を用いて、分類部312により分類されたテキストデータに対してクラスタリングを行う。具体的には、分類部312で同じクラスに分類されたテキストデータが、どのような内容かによってグループ分けされる。
【0079】
記憶部320は、不揮発性の記憶媒体であり、例えば大容量のHDDによって構成されている。記憶部320は、分類サーバ300の制御や処理を実行するプログラムを格納するほか、収集部311が収集したテキストデータを一時的に記憶する役割も担う。また、学習モデルであるNN321とクラスタリングモデル322を記憶している。本実施形態におけるNN321は、所定の単位のテキストデータを予め定められた「E」「F」「G」「H」の4つのクラスのいずれかに分類するモデルであり、テキストデータ記憶部931に記憶された教師データで学習されている。クラスタリングモデル322は、分類部312から出力された同じクラスのテキストデータに基づいて、教師なし学習で学習されている。クラスタリングモデル322は、事前にグループ分けされた教師データに基づいて、教師あり学習により学習されるものでもよい。
【0080】
通信部130は、インターネット900への接続および外部機器とのデータ授受を担い、例えばLANによって構成されている。通信部130は、分類部312による分類結果及びクラスタリング部313によるクラスタリング結果を分析者の分析者端末360へ出力する出力部としての機能も担う。入力部140は、システム管理者がプログラムの実行および停止を指示したり、メニューの設定やパラメータの調整を行ったりするための入力デバイスを含む。
【0081】
図16は、分類プログラムの処理手順を示すフロー図である。
ステップS301で、処理部310は、通信部130を介して、分析者端末360からの分類指示を受けとる。処理部310は、収集部311の機能により、分類指示に基づいて、テキストデータ記憶部931からテキストデータを収集し、記憶部320に記憶する。
【0082】
ステップS302で、処理部310は、分類部312の機能により、記憶部320から読み出したNN321を用いて、収集された各テキストデータを「E」「F」「G」「H」のいずれかに分類する。
ステップS303で、処理部310は、クラスタリング部313の機能により、記憶部320から読み出したクラスタリングモデル322を用いて、ステップS302で分類された各クラスのテキストデータの属するグループを決定する。
ステップS304で、処理部310は、通信部130を介して、分類部312による分類結果とクラスタリング部313によるクラスタリング結果を分析者端末360へ出力する。
【0083】
このように、上述した分類システムは、テキストデータ記憶部931が所定の単位で分割されたテキストデータを記憶し、分類部312が分割された各テキストデータを予め定められた複数のクラスのいずれかに分類し、同じクラスに分類されたテキストデータに対してクラスタリング部313がクラスタリングを行うものである。このような構成により、分析者は、テキストデータの分類結果から業務に必要な情報のみを抽出し、利用することができる。例えば、分析者は、「商品に関してポジティブな発言(クラスE)」に紐づけられたテキストデータのみを抽出したり、「商品に関してネガティブな発言(クラスF)」に紐づけられたテキストデータのみを抽出したりすることで、抽出したテキストデータをマーケティングや商品開発へのフィードバックに利用できる。また、分析者は、同じクラスに分類されたテキストデータのクラスタリング結果を参照することで、クラス毎にどのような内容の意見が多かったかを確認することができる。
【0084】
なお、上記説明では、利用者端末350に、イベント会場や展示場での会話の音声データが入力されるとしたが、管理サーバ930のテキストデータ記憶部931に記憶されるテキストデータはこれに限られるものではない。例えば、テキストデータ記憶部931に記憶されるテキストデータの他の例としては、SNSや口コミサイトから抽出したテキストデータ、マーケティング調査におけるアンケートのテキストデータ、Webサイトへの問い合わせ,コールセンター,お客様相談窓口における対話ログのテキストデータ、社内日報,議事録,報告書等の文書のテキストデータ、トレンド予測に関するテキストデータ、が挙げられる。また、管理サーバ930がテキストデータを管理する所定の単位は、話者単位や文単位に限定されるものではない。
なお、上記説明において、分類サーバ300、利用者端末350、分析者端末360、管理サーバ930を別の構成としたが、これらの構成の一部又は全部は一体化した装置として実現されてもよいものである。
【0085】
また、利用者端末350が、音声データと当該音声データで言及されている商品名とを関連付けて送信し、管理サーバ930が、分割したテキストデータと商品名とを関連付けて記憶してもよい。さらに、分類サーバ300に記憶されるNN321は、テキストデータに関連付けられた商品毎に異なる個別モデルであってもよいし、複数の商品に対して汎用的に利用できる汎用モデルであってもよい。同様に、分類サーバ300に記憶されるクラスタリングモデル322も、個別モデルでも汎用モデルでもよい。さらに、分類サーバ300の処理部310は、分析者端末360から分類対象の商品名に関する指示を受けとり、指示された商品名に関連付けられたテキストデータをテキストデータ記憶部922から抽出して収集するものでもよい。さらに、分類サーバ300の処理部310は、商品名に対応するNN321のモデルを用いて分類部312としての処理を実行するものでもよいし、商品名に対応するクラスタリングモデル322のモデルを用いてクラスタリング部313としての処理を実行するものでもよい。なお、テキストデータと関連付けられる情報は、音声データを記録した日付やイベントの名称等であってもよい。
【0086】
<他の実施形態>
本開示は、上記各実施形態そのままに限定されるものではない。本開示は、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できるものである。また、本開示は、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の開示を形成できるものである。例えば、実施形態に示される全構成要素から幾つかの構成要素は削除してもよいものである。さらに、異なる実施形態に構成要素を適宜組み合わせてもよいものである。
【符号の説明】
【0087】
100 状態判定サーバ、110,310 処理部、111,311 収集部、112,312 分類部、113 判定部、120,320 記憶部、121,321 NN、130 通信部、140 入力部、210 スマートフォン、211 ディスプレイ、221 イベント表示、222 状態判定表示、300 分類サーバ、313 クラスタリング部、322 クラスタリングモデル、360 分析者端末、900 インターネット、910 スマートフォン、920 メディアサーバ、921 コメント蓄積部、930 管理サーバ、931 テキストデータ記憶部