本発明は、分析支援プログラム、分析支援方法および情報処理装置に関する。
従来、ウェブサイトの動線分析を行う手法として、サンキー・ダイアグラム(Sankey diagram)という図表が利用されている。サンキー・ダイアグラムは、ウェブサイトのようにツリー構造になっているものの分析に有効である。
先行技術としては、例えば、チャットログの発話文から各発話文間の関連度を分析する際に利用可能な所定の手がかりを取得し、取得した手がかりとヒューリスティックスを利用して、所定の発話文に対する複数の他の発話文それぞれに対して関連度の強弱を表すポイントを付与するものがある。
しかしながら、従来技術では、ループ構造を含むチャットの動線分析を行うことが難しい。
一つの側面では、本発明は、チャットの動線分析を支援することを目的とする。
1つの実施態様では、チャットのトーク処理を定義したスクリプト情報を参照して、前記トーク処理に対応するノードと、前記トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定し、前記スクリプト情報と、前記トーク処理に関するチャットログとに基づいて、設定した前記複数のノードに含まれるノード間を接続する有向なエッジを設定し、前記複数のノードを含み、設定した前記エッジによりノード間を接続したネットワークグラフを表示する際に、前記トーク処理に関するチャットログに基づいて、前記エッジの表示態様を変更して表示する、分析支援プログラムが提供される。
本発明の一側面によれば、チャットの動線分析を支援することができるという効果を奏する。
図1は、分析支援システム100のシステム構成例を示す説明図である。
図2は、情報処理装置101のハードウェア構成例を示すブロック図である。
図3は、スクリプト情報の具体例を示す説明図である。
図4は、チャットログDB120の記憶内容の一例を示す説明図である。
図5は、情報処理装置101の機能的構成例を示すブロック図である。
図6は、ネットワークグラフの表示例を示す説明図である。
図7は、ネットワークグラフ内のループ構造の一例を示す説明図である。
図8は、情報処理装置101の分析支援処理手順の一例を示すフローチャートである。
以下に図面を参照して、本発明にかかる分析支援プログラム、分析支援方法および情報処理装置の実施の形態を詳細に説明する。
(実施の形態)
まず、分析支援システム100のシステム構成例について説明する。分析支援システム100は、実施の形態にかかる情報処理装置101を含むコンピュータシステムであり、例えば、チャットボットを利用したFAQ(Frequently Asked Questions)システムの動線分析に利用される。
図1は、分析支援システム100のシステム構成例を示す説明図である。図1において、分析支援システム100は、情報処理装置101と、クライアント装置102と、を含む。分析支援システム100において、情報処理装置101およびクライアント装置102は、有線または無線のネットワーク110を介して接続される。ネットワーク110は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
ここで、情報処理装置101は、チャットログDB(DataBase)120を有し、チャットの動線分析を支援するコンピュータである。チャットは、チャットボットと人間との間や、人間同士で会話を行うためのシステムである。例えば、チャットボットが決められたメッセージを表示(発話)したり、選択肢を表示したりして、人間との会話が行われる。
チャットの動線解析は、チャット上でどのような会話がどのような頻度で行われたかなどを分析するものである。情報処理装置101は、例えば、サーバである。チャットログDB120の記憶内容については、図4を用いて後述する。また、以下の説明では、チャットボットと人間との間で会話を行う場合を想定する。
クライアント装置102は、分析支援システム100のユーザが使用するコンピュータである。分析支援システム100のユーザは、例えば、チャットの動線分析を行う分析者である。クライアント装置102は、例えば、PC(Personal Computer)、タブレット型PC、スマートフォンなどである。
ここで、ウェブサイトの動線分析を行う手法として、サンキー・ダイアグラムという図表が知られている。しかし、サンキー・ダイアグラムは、ウェブサイトのようにツリー構造になっているものには有効な分析方法であるが、チャットの動線分析に利用することは難しい。
例えば、チャットのスクリプトは、ツリー構造になっておらず、また、あるところまで話した後に、前に発言したところに戻るようなループが発生することが多い。このような、ツリー構造ではなく、ループ構造を含むチャットの動線分析には、サンキー・ダイアグラムは不向きである。
そこで、本実施の形態では、チャットの動線分析にネットワークグラフを用いることで、ツリー構造になっていない複雑な構造やループ構造を含むチャット上でのユーザの動きを可視化して、チャットの動線解析を支援する分析支援方法について説明する。
(情報処理装置101のハードウェア構成例)
つぎに、情報処理装置101のハードウェア構成例について説明する。
図2は、情報処理装置101のハードウェア構成例を示すブロック図である。図2において、情報処理装置101は、CPU(Central Processing Unit)201と、メモリ202と、ディスクドライブ203と、ディスク204と、通信I/F(Interface)205と、可搬型記録媒体I/F206と、可搬型記録媒体207と、を有する。また、各構成部は、バス200によってそれぞれ接続される。
ここで、CPU201は、情報処理装置101の全体の制御を司る。CPU201は、複数のコアを有していてもよい。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOS(Operating System)のプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU201のワークエリアとして使用される。メモリ202に記憶されるプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させる。
ディスクドライブ203は、CPU201の制御に従ってディスク204に対するデータのリード/ライトを制御する。ディスク204は、ディスクドライブ203の制御で書き込まれたデータを記憶する。ディスク204としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F205は、通信回線を通じてネットワーク110に接続され、ネットワーク110を介して外部のコンピュータ(例えば、図1に示したクライアント装置102)に接続される。そして、通信I/F205は、ネットワーク110と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F205には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F206は、CPU201の制御に従って可搬型記録媒体207に対するデータのリード/ライトを制御する。可搬型記録媒体207は、可搬型記録媒体I/F206の制御で書き込まれたデータを記憶する。可搬型記録媒体207としては、例えば、CD(Compact Disc)−ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、情報処理装置101は、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ等を有することにしてもよい。また、情報処理装置101は、上述した構成部のうち、例えば、ディスクドライブ203、ディスク204、可搬型記録媒体I/F206、可搬型記録媒体207を有していなくてもよい。また、図1に示したクライアント装置102についても、情報処理装置101と同様のハードウェア構成により実現することができる。ただし、クライアント装置102は、上述した構成部のほかに、入力装置、ディスプレイ等を有する。
(スクリプト情報の具体例)
つぎに、情報処理装置101が用いるスクリプト情報の具体例について説明する。
図3は、スクリプト情報の具体例を示す説明図である。図3において、スクリプト情報300は、チャットのトーク処理を定義した情報であり、チャットボットの会話の流れを定義したものに相当する。ただし、図3では、スクリプト情報300の一部を抜粋して表示している。
トーク処理は、チャットボットの動作(挙動)を実現するための処理である。例えば、トーク処理は、発話する処理、選択肢を表示する処理、ユーザ操作に応じて選択肢を選択する処理、選択された選択肢に応じた手続を行う処理、トーク処理を終了する処理などを含む。
具体的には、例えば、スクリプト情報300は、ステップ情報310,320,330を含む。各ステップ情報310,320,330において、labelは、トーク処理のステップの名前を示す。seq_idは、ステップのIDを示す。stepは、ステップの種類を示す。
ステップの種類としては、例えば、text、select、option、endなどがある。ステップの種類「text」は、発話する処理を表す。ステップの種類「select」は、選択肢を表示する処理を表す。ステップの種類「option」は、選択肢を選択する処理を表す。ステップの種類「end」は、トーク処理を終了する処理を表す。
textは、チャットボットが発話する文章、または、ユーザ操作に応じて選択された選択肢を示す。nextSeqsは、次のステップのIDを示す。nextSeqsに、複数のIDが設定されている場合は、ユーザ操作に応じて選択された選択肢に応じて次のステップが決まる。
(チャットログDB120の記憶内容)
つぎに、情報処理装置101が有するチャットログDB120の記憶内容について説明する。チャットログDB120は、例えば、図2に示したメモリ202、ディスク204などの記憶装置により実現される。
図4は、チャットログDB120の記憶内容の一例を示す説明図である。図4において、チャットログDB120は、ルームID、タイムスタンプ、seq_id、前のseq_id、labelおよびメッセージのフィールドを有する。各フィールドに情報を設定することで、チャットログ(例えば、チャットログ400−1〜400−7)がレコードとして記憶される。
ここで、ルームIDは、チャットを行うルームのIDを示す。ルームIDによれば、チャットボットとの一連の会話を特定することができる。タイムスタンプは、ステップが実行された日時を示す。seq_idは、実行されたステップのIDを示す。前のseq_idは、直前に実行されたステップのIDを示す。labelは、実行されたステップの名前を示す。メッセージは、実行されたステップで発話された文章、または、選択された選択肢を示す。
例えば、チャットログ400−1によれば、ルームID「R1」のルームについて、2019年1月8日0時10分に、seq_id「0001」およびlabel「TXT−1」のステップが実行されてメッセージ「こんにちは。」が表示されたことを特定することができる。
また、チャットログ400−2によれば、ルームID「R1」のルームについて、2019年1月8日0時10分に、seq_id「0002」およびlabel「SLC−1」のステップが実行されてメッセージ「以下の選択肢から1つ選んでください。」が表示されたことを特定することができる。さらに、seq_id「0001」のステップが直前に実行されたことを特定することができる。
(情報処理装置101の機能的構成例)
図5は、情報処理装置101の機能的構成例を示すブロック図である。図5において、情報処理装置101は、取得部501と、生成部502と、表示制御部503と、を含む。取得部501〜表示制御部503は制御部となる機能であり、具体的には、例えば、図2に示したメモリ202、ディスク204、可搬型記録媒体207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、通信I/F205により、その機能を実現する。各機能部の処理結果は、例えば、メモリ202、ディスク204などの記憶装置に記憶される。
取得部501は、チャットに関するスクリプト情報を取得する。ここで、スクリプト情報は、チャットのトーク処理を定義した情報(シナリオ)である。トーク処理は、チャットボットの動作(挙動)を実現するための処理であり、例えば、発話する処理、選択肢を表示する処理、選択肢を選択する処理、トーク処理を終了する処理などを含む。
具体的には、例えば、取得部501は、図1に示したクライアント装置102から、図3に示したようなスクリプト情報300を受信することにより、受信したスクリプト情報300を取得する。また、取得部501は、不図示の入力装置を用いたユーザの操作入力により、スクリプト情報300を取得することにしてもよい。
また、取得部501は、チャットのトーク処理に関するチャットログを取得する。ここで、チャットログは、チャット上で実際に行われた会話についてのログであり、どのような会話がいつ行われたのかを特定可能な情報である。例えば、チャットログは、図4に示したように、ルームID、タイムスタンプ、seq_id、前のseq_id、labelおよびメッセージを含む。
具体的には、例えば、取得部501は、クライアント装置102からチャットログを受信することにより、受信したチャットログを取得する。また、取得部501は、不図示の入力装置を用いたユーザの操作入力により、チャットログを取得することにしてもよい。また、取得部501は、チャットボットを利用したFAQシステムから、チャットログを取得することにしてもよい。取得されたチャットログは、例えば、図4に示したチャットログDB120に記憶される。
生成部502は、ネットワークグラフを生成する。ここで、ネットワークグラフとは、ノードの集合と、ノード間をつなぐ有向なエッジの集合とからなるグラフである。具体的には、生成部502は、第1の設定部504と、第2の設定部505と、決定部506と、を含む。
第1の設定部504は、取得されたスクリプト情報を参照して、トーク処理に対応するノードと、トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定する。ここで、トーク処理に対応するノードは、チャットボットが行う動作(挙動)を実現する処理に対応するノードである。例えば、トーク処理に対応するノードは、発話する処理に対応するノード、選択肢を表示する処理に対応するノード、選択肢を選択する処理に対応するノード、トーク処理を終了する処理に対応するノードなどである。
分析する観点に対応するノードは、どのような観点で動線分析を行うかに応じて設定されるノードである。例えば、分析する観点に対応するノードは、チャットのトーク処理の終了に対応するノードであり、スクリプト情報に定義されたいずれの処理にも対応しない新たなノードとして設定される。なお、トーク処理の終了には、会話が正常に終了した場合だけでなく、会話の途中で強制終了した場合も含まれる。
以下の説明では、分析する観点に対応するノードを「特定ノード」と表記する場合がある。なお、どのようなノードを、分析する観点に対応する特定ノードとするかは、予め決められていてもよく、また、クライアント装置102から指定されることにしてもよい。
具体的には、例えば、第1の設定部504は、スクリプト情報300を参照して、発話する処理に対応するノード、選択肢を表示する処理に対応するノード、選択肢を選択する処理に対応するノード、および、トーク処理を終了する処理に対応するノードを設定する。また、第1の設定部504は、チャットのトーク処理の終了に対応する特定ノードを設定する。
第2の設定部505は、取得されたスクリプト情報と、取得されたトーク処理に関するチャットログとに基づいて、設定した複数のノードに含まれるノード間をつなぐ有向なエッジを設定する。具体的には、例えば、第2の設定部505は、スクリプト情報300を参照して、あるステップ(処理)から他のステップへの遷移を特定することにより、ノード間をつなぐ有向なエッジを設定する。
また、第2の設定部505は、例えば、チャットログDB120を参照して、特定ノードと他のノードとの有向なエッジを設定する。例えば、特定ノードを、チャットのトーク処理の終了に対応するノードとする。この場合、第2の設定部505は、チャットログDB120を参照して、チャットのトーク処理を終了した処理に対応するノードから、特定ノードへの有向なエッジを設定する。
チャットのトーク処理を終了した処理は、例えば、seq_idに、ステップの種類が「end」のステップのIDが設定されたチャットログから特定される(会話が正常終了したパターン)。また、チャットのトーク処理を終了した処理は、例えば、同一のルームIDが設定されたチャットログのうち、最後のチャットログ(タイムスタンプが最新のチャットログ)から特定される(会話が強制終了したパターン)。
なお、上述した説明では、特定ノードとして、チャットのトーク処理の終了に対応するノードを例に挙げて説明したが、これに限らない。例えば、トーク処理に対応するノードのうちのいずれかのノードを、特定のノードとしてもよい。すなわち、第1の設定部504は、トーク処理のいずれかの処理に対応するノードを、分析する観点に対応する特定ノードに設定してもよい。この場合、第2の設定部505は、例えば、チャットログDB120を参照して、特定のノードに対応する処理への他のノードに対応する処理からの遷移を検出することにより、そのノード間をつなぐ有向なエッジを設定する。ただし、スクリプト情報300をもとに設定されるエッジと重複するエッジについては、重複してエッジが設定されないように、設定対象から除外する。これにより、例えば、チャットボットが行う特定の動作がどのような頻度で行われたかといったことを分析し易くなる。
決定部506は、取得されたトーク処理に関するチャットログに基づいて、設定されたエッジの表示態様を決定する。具体的には、例えば、決定部506は、トーク処理に関するチャットログから特定される、エッジで接続されたノード間の遷移回数に応じて、当該エッジの太さまたは色を決定することにしてもよい。
より詳細に説明すると、例えば、決定部506は、チャットログDB120を参照して、設定されたエッジごとに、当該エッジで接続されたノード間の遷移回数を計数する。例えば、チャットログ400−2を例に挙げると、決定部506は、seq_id「0001」のステップに対応するノードから、seq_id「0002」のステップに対応するノードへの遷移を検出し、そのノード間の遷移回数をインクリメントする。
また、特定ノードを、チャットのトーク処理の終了に対応するノードとする。この場合、決定部506は、チャットログDB120を参照して、同一のルームIDが設定されたチャットログのうち、最後のチャットログを特定する。そして、決定部506は、特定したチャットログのseq_id「0001」のステップに対応するノードから、特定ノードへの遷移を検出し、そのノード間の遷移回数をインクリメントする。
そして、決定部506は、エッジごとに計数した遷移回数に応じて、当該エッジの太さまたは色を決定する。例えば、決定部506は、計数した遷移回数が多くなるほど太くなるように、エッジの太さを決定してもよい。また、決定部506は、計数した遷移回数が多くなるほど濃くなるように、エッジの色の濃淡を決定してもよい。
なお、決定部506は、ノード間の遷移回数を計数するにあたり、期間を設定することにしてもよい。期間は、例えば、クライアント装置102から指定することができる。期間が設定された場合、決定部506は、タイムスタンプが期間内のチャットログを参照して、ノード間の遷移回数を計数する。
そして、生成部502は、例えば、第1の設定部504によって設定された複数のノードと、第2の設定部505によって設定されたエッジとを含み、エッジの表示態様を、決定部506によって決定された表示態様とするネットワークグラフを生成する。
表示制御部503は、生成部502によって生成されたネットワークグラフを表示する制御を行う。具体的には、例えば、表示制御部503は、複数のノードと、ノード間を接続するエッジとを含むネットワークグラフを表示する際に、エッジごとに決定された表示態様で当該エッジを表示する。
これにより、ネットワークグラフを表示する際に、チャットログに基づき決定された表示態様により、ノード間を接続するエッジの表示態様を変更して表示することができる。ネットワークグラフは、例えば、情報処理装置101の不図示のディスプレイ、または、クライアント装置102に表示される。
ネットワークグラフの表示例については、図6を用いて後述する。
また、表示制御部503は、ネットワークグラフを表示する際に、特定ノードを、他のノードと異なる大きさで表示することにしてもよい。具体的には、例えば、表示制御部503は、特定ノードを、他のノードに比べて大きく表示することにしてもよい。なお、各ノードに対応するアイコンは、例えば、各ノードに対応するステップの種類に応じて予め決められている。
また、表示制御部503は、ネットワークグラフを表示する際に、特定ノードを、他のノードと異なる形状で表示することにしてもよい。具体的には、例えば、表示制御部503は、特定ノードを四角形のアイコンとし、他のノードを丸型のアイコンとしてもよい。
(ネットワークグラフの表示例)
つぎに、ネットワークグラフの表示例について説明する。
図6は、ネットワークグラフの表示例を示す説明図である。また、図7は、ネットワークグラフ内のループ構造の一例を示す説明図である。図6において、ネットワークグラフ600は、ノードの集合(例えば、ノードN1〜N10)と、ノード間をつなぐ有向なエッジの集合(例えば、エッジe1〜e11)とからなるグラフである。ただし、図6では、ネットワークグラフ600の一部を抜粋して表示している。
ネットワークグラフ600において、ノードN1〜N9は、スクリプト情報300(図3参照)をもとに設定された、トーク処理に対応するノードである。例えば、ノードN1は、ステップ情報310(図3参照)が表すステップに対応するノードである(label:TXT−1、seq_id:0001)。
また、ノードN2は、ステップ情報320(図3参照)が表すステップに対応するノードである(label:SLC−1、seq_id:0002)。ノードN3は、ステップ情報330(図3参照)が表すステップに対応するノードである(label:OPT−1、seq_id:0003)。
ノードN10は、分析する観点に対応する特定ノードである。ここでは、ノードN10は、トーク処理(チャット)の終了に対応するノードである。また、ノードN10は、他のノードよりも大きいアイコンで表現されている。
また、ネットワークグラフ600において、エッジe1〜e8は、スクリプト情報300(図3参照)をもとに設定された、ノード間を接続するエッジである。また、エッジe9〜e11は、チャットログDB120をもとに設定された、ノードN10(特定ノード)とノードN7〜N9とを接続するエッジである。
また、ネットワークグラフ600において、各エッジe1〜e11は、チャットログDB120内のチャットログから特定される、各エッジe1〜e11で接続されたノード間の遷移回数に応じた太さで表示されている。例えば、チャットログ400−2から、エッジe1で接続されたノードN1からノードN2への遷移が検出され、遷移回数がインクリメントされる。
また、チャットログ400−3から、エッジe2で接続されたノードN2からノードN3への遷移が検出され、遷移回数がインクリメントされる。また、チャットログ400−4から、エッジe5で接続されたノードN3からノードN6への遷移が検出され、遷移回数がインクリメントされる。
また、チャットログ400−7は、同一のルームID「R10」が設定されたチャットログのうちの最後のチャットログであり、ステップの種類が「end」のステップのIDが設定されたチャットログである。この場合、チャットログ400−7から、エッジe11で接続されたノードN9からノードN10への遷移が検出され、遷移回数がインクリメントされる。
また、同一のルームIDが設定されたチャットログのうちの最後のチャットログのseq_idが「0007」の場合、エッジe9で接続されたノードN7からノードN10への遷移が検出され、遷移回数がインクリメントされる。また、同一のルームIDが設定されたチャットログのうちの最後のチャットログのseq_idが「0008」の場合、エッジe10で接続されたノードN8からノードN10への遷移が検出され、遷移回数がインクリメントされる。
ネットワークグラフ600によれば、分析者(例えば、クライアント装置102のユーザ)は、チャットの動線分析を行うことができる。例えば、ネットワークグラフ600によれば、分析者は、チャット上でどのような会話がどのような頻度で行われたかを、各エッジの太さから判断することができる。
また、トーク処理とは異なる分析する観点に対応する特定ノードとして、トーク処理の終了に対応するノードN10を設定することで、ユーザの離脱という観点で分析することができる。例えば、エッジe10の太さから、ノードN8に対応する処理において強制終了が多く発生していることがわかる。ユーザが離脱する割合が高い箇所がわかれば、その原因を究明して、何らかの対策を講じることができる。
また、トーク処理とは異なる分析する観点に対応する特定ノードとして、トーク処理の終了に対応するノードN10を設定することで、全ての会話はノードN10につながることになる。このため、ネットワークグラフ600内のノード数が多くなったとしても、ノードN10が中心となって表示され、分析の観点になる軸ができて、ユーザにとって見やすいものとなる。
また、ネットワークグラフ600によれば、図7に示すループ700(ノードN1⇒ノードN2⇒ノードN3⇒ノードN6⇒ノードN1)のような、ループ構造についても表現することができる。このため、分析者は、例えば、前に発言したところに戻るようなループが頻繁に発生している箇所を特定して、チャットボットの発言内容や選択肢などに問題がないかを分析することができる。
(情報処理装置101の分析支援処理手順)
つぎに、情報処理装置101の分析支援処理手順について説明する。ここでは、チャットのトーク処理に関するチャットログは、チャットログDB120に記憶されているものとする。
図8は、情報処理装置101の分析支援処理手順の一例を示すフローチャートである。図8のフローチャートにおいて、まず、情報処理装置101は、チャットに関するスクリプト情報を取得する(ステップS801)。つぎに、情報処理装置101は、取得したスクリプト情報を参照して、トーク処理に対応するノードと、トーク処理とは異なる分析する観点に対応する特定ノードとを含む複数のノードを設定する(ステップS802)。
そして、情報処理装置101は、取得したスクリプト情報と、チャットログDB120内のチャットログとに基づいて、設定した複数のノードに含まれるノード間をつなぐ有向なエッジを設定する(ステップS803)。つぎに、情報処理装置101は、チャットログDB120を参照して、設定したエッジごとに、当該エッジで接続されたノード間の遷移回数を計数する(ステップS804)。
そして、情報処理装置101は、エッジごとに計数したノード間の遷移回数に応じて、当該エッジの太さを決定する(ステップS805)。つぎに、情報処理装置101は、設定した複数のノードと、設定したエッジとを含み、エッジの太さを、決定した太さとするネットワークグラフを生成する(ステップS806)。
そして、情報処理装置101は、生成したネットワークグラフを表示して(ステップS807)、本フローチャートによる一連の処理を終了する。これにより、ツリー構造になっていない複雑な構造やループ構造を含むチャット上でのユーザの動きを可視化することができる。
以上説明したように、実施の形態にかかる情報処理装置101によれば、チャットのトーク処理を定義したスクリプト情報を参照して、トーク処理に対応するノードと、トーク処理とは異なる分析する観点に対応する特定ノードとを含む複数のノードを設定することができる。トーク処理に対応するノードは、例えば、発話する処理に対応するノード、選択肢を表示する処理に対応するノード、トーク処理を終了する処理に対応するノードなどである。また、情報処理装置101によれば、スクリプト情報と、トーク処理に関するチャットログとに基づいて、設定した複数のノードに含まれるノード間を接続する有向なエッジを設定することができる。そして、情報処理装置101によれば、設定した複数のノードを含み、設定したエッジによりノード間を接続したネットワークグラフを表示する際に、トーク処理に関するチャットログに基づいて、エッジの表示態様を変更して表示することができる。
これにより、ツリー構造になっていない複雑な構造やループ構造を含むチャット上でのユーザの動きを可視化して、チャットの動線分析を支援することができる。例えば、チャット上で行われた実際の会話の記録に基づいて、動線(スクリプトの経路)の流量を可視化することができる。
また、情報処理装置101によれば、トーク処理とは異なる分析する観点に対応する特定ノードとして、トーク処理の終了に対応するノードを設定することができる。
これにより、ユーザの離脱という観点でチャットの動線分析を行うことができる。また、ネットワークグラフ内のノード数が多くなったとしても、全ての会話が特定ノードにつながるため、特定ノードが中心となって表示されて、分析の観点になる軸ができ、ネットワークグラフの視認性を高めることができる。
また、情報処理装置101によれば、トーク処理に関するチャットログから特定される、エッジで接続されたノード間の遷移回数に応じて、当該エッジの太さまたは色を変更して表示することができる。
これより、ノード間の遷移回数が多いほど、エッジを太く描画したり、濃い色で描画したりすることができ、動線(スクリプトの経路)の流量を直感的に理解しやすい態様で可視化することができる。
また、情報処理装置101によれば、ネットワークグラフを表示する際に、分析する観点に対応する特定ノードを、他のノードと異なる大きさで表示することができる。
これより、分析する観点に対応する特定ノードを判別しやすくさせることができる。
なお、本分析支援方法は、チャットのように、ツリー構造ではなく、ループ構造を含むコンテンツについての動線分析にも有効である。例えば、オンラインゲーム、スマホゲーム、スマホ向けアプリなどについて、ユーザの離脱という観点で分析したい場合に有効である。
また、本実施の形態で説明した分析支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分析支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本分析支援プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した情報処理装置101は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
100 分析支援システム
101 情報処理装置
102 クライアント装置
110 ネットワーク
120 チャットログDB
200 バス
201 CPU
202 メモリ
203 ディスクドライブ
204 ディスク
205 通信I/F
206 可搬型記録媒体I/F
207 可搬型記録媒体
300 スクリプト情報
501 取得部
502 生成部
503 表示制御部
504 第1の設定部
505 第2の設定部
506 決定部
600 ネットワークグラフ
700 ループ
本発明は、分析支援プログラム、分析支援方法および情報処理装置に関する。
従来、ウェブサイトの動線分析を行う手法として、サンキー・ダイアグラム(Sankey diagram)という図表が利用されている。サンキー・ダイアグラムは、ウェブサイトのようにツリー構造になっているものの分析に有効である。
先行技術としては、例えば、チャットログの発話文から各発話文間の関連度を分析する際に利用可能な所定の手がかりを取得し、取得した手がかりとヒューリスティックスを利用して、所定の発話文に対する複数の他の発話文それぞれに対して関連度の強弱を表すポイントを付与するものがある。
しかしながら、従来技術では、ループ構造を含むチャットの動線分析を行うことが難しい。
一つの側面では、本発明は、チャットの動線分析を支援することを目的とする。
1つの実施態様では、チャットのトーク処理を定義したスクリプト情報を参照して、前記トーク処理に対応するノードと、前記トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定し、前記スクリプト情報と、前記トーク処理に関するチャットログとに基づいて、設定した前記複数のノードに含まれるノード間を接続する有向なエッジを設定し、前記複数のノードを含み、設定した前記エッジによりノード間を接続したネットワークグラフを表示する際に、前記トーク処理に関するチャットログに基づいて、前記エッジの表示態様を変更して表示する、分析支援プログラムが提供される。
本発明の一側面によれば、チャットの動線分析を支援することができるという効果を奏する。
図1は、分析支援システム100のシステム構成例を示す説明図である。
図2は、情報処理装置101のハードウェア構成例を示すブロック図である。
図3は、スクリプト情報の具体例を示す説明図である。
図4は、チャットログDB120の記憶内容の一例を示す説明図である。
図5は、情報処理装置101の機能的構成例を示すブロック図である。
図6は、ネットワークグラフの表示例を示す説明図である。
図7は、ネットワークグラフ内のループ構造の一例を示す説明図である。
図8は、情報処理装置101の分析支援処理手順の一例を示すフローチャートである。
以下に図面を参照して、本発明にかかる分析支援プログラム、分析支援方法および情報処理装置の実施の形態を詳細に説明する。
(実施の形態)
まず、分析支援システム100のシステム構成例について説明する。分析支援システム100は、実施の形態にかかる情報処理装置101を含むコンピュータシステムであり、例えば、チャットボットを利用したFAQ(Frequently Asked Questions)システムの動線分析に利用される。
図1は、分析支援システム100のシステム構成例を示す説明図である。図1において、分析支援システム100は、情報処理装置101と、クライアント装置102と、を含む。分析支援システム100において、情報処理装置101およびクライアント装置102は、有線または無線のネットワーク110を介して接続される。ネットワーク110は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
ここで、情報処理装置101は、チャットログDB(DataBase)120を有し、チャットの動線分析を支援するコンピュータである。チャットは、チャットボットと人間との間や、人間同士で会話を行うためのシステムである。例えば、チャットボットが決められたメッセージを表示(発話)したり、選択肢を表示したりして、人間との会話が行われる。
チャットの動線解析は、チャット上でどのような会話がどのような頻度で行われたかなどを分析するものである。情報処理装置101は、例えば、サーバである。チャットログDB120の記憶内容については、図4を用いて後述する。また、以下の説明では、チャットボットと人間との間で会話を行う場合を想定する。
クライアント装置102は、分析支援システム100のユーザが使用するコンピュータである。分析支援システム100のユーザは、例えば、チャットの動線分析を行う分析者である。クライアント装置102は、例えば、PC(Personal Computer)、タブレット型PC、スマートフォンなどである。
ここで、ウェブサイトの動線分析を行う手法として、サンキー・ダイアグラムという図表が知られている。しかし、サンキー・ダイアグラムは、ウェブサイトのようにツリー構造になっているものには有効な分析方法であるが、チャットの動線分析に利用することは難しい。
例えば、チャットのスクリプトは、ツリー構造になっておらず、また、あるところまで話した後に、前に発言したところに戻るようなループが発生することが多い。このような、ツリー構造ではなく、ループ構造を含むチャットの動線分析には、サンキー・ダイアグラムは不向きである。
そこで、本実施の形態では、チャットの動線分析にネットワークグラフを用いることで、ツリー構造になっていない複雑な構造やループ構造を含むチャット上でのユーザの動きを可視化して、チャットの動線解析を支援する分析支援方法について説明する。
(情報処理装置101のハードウェア構成例)
つぎに、情報処理装置101のハードウェア構成例について説明する。
図2は、情報処理装置101のハードウェア構成例を示すブロック図である。図2において、情報処理装置101は、CPU(Central Processing Unit)201と、メモリ202と、ディスクドライブ203と、ディスク204と、通信I/F(Interface)205と、可搬型記録媒体I/F206と、可搬型記録媒体207と、を有する。また、各構成部は、バス200によってそれぞれ接続される。
ここで、CPU201は、情報処理装置101の全体の制御を司る。CPU201は、複数のコアを有していてもよい。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOS(Operating System)のプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU201のワークエリアとして使用される。メモリ202に記憶されるプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させる。
ディスクドライブ203は、CPU201の制御に従ってディスク204に対するデータのリード/ライトを制御する。ディスク204は、ディスクドライブ203の制御で書き込まれたデータを記憶する。ディスク204としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F205は、通信回線を通じてネットワーク110に接続され、ネットワーク110を介して外部のコンピュータ(例えば、図1に示したクライアント装置102)に接続される。そして、通信I/F205は、ネットワーク110と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F205には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F206は、CPU201の制御に従って可搬型記録媒体207に対するデータのリード/ライトを制御する。可搬型記録媒体207は、可搬型記録媒体I/F206の制御で書き込まれたデータを記憶する。可搬型記録媒体207としては、例えば、CD(Compact Disc)−ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、情報処理装置101は、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ等を有することにしてもよい。また、情報処理装置101は、上述した構成部のうち、例えば、ディスクドライブ203、ディスク204、可搬型記録媒体I/F206、可搬型記録媒体207を有していなくてもよい。また、図1に示したクライアント装置102についても、情報処理装置101と同様のハードウェア構成により実現することができる。ただし、クライアント装置102は、上述した構成部のほかに、入力装置、ディスプレイ等を有する。
(スクリプト情報の具体例)
つぎに、情報処理装置101が用いるスクリプト情報の具体例について説明する。
図3は、スクリプト情報の具体例を示す説明図である。図3において、スクリプト情報300は、チャットのトーク処理を定義した情報であり、チャットボットの会話の流れを定義したものに相当する。ただし、図3では、スクリプト情報300の一部を抜粋して表示している。
トーク処理は、チャットボットの動作(挙動)を実現するための処理である。例えば、トーク処理は、発話する処理、選択肢を表示する処理、ユーザ操作に応じて選択肢を選択する処理、選択された選択肢に応じた手続を行う処理、トーク処理を終了する処理などを含む。
具体的には、例えば、スクリプト情報300は、ステップ情報310,320,330を含む。各ステップ情報310,320,330において、labelは、トーク処理のステップの名前を示す。seq_idは、ステップのIDを示す。stepは、ステップの種類を示す。
ステップの種類としては、例えば、text、select、option、endなどがある。ステップの種類「text」は、発話する処理を表す。ステップの種類「select」は、選択肢を表示する処理を表す。ステップの種類「option」は、選択肢を選択する処理を表す。ステップの種類「end」は、トーク処理を終了する処理を表す。
textは、チャットボットが発話する文章、または、ユーザ操作に応じて選択された選択肢を示す。nextSeqsは、次のステップのIDを示す。nextSeqsに、複数のIDが設定されている場合は、ユーザ操作に応じて選択された選択肢に応じて次のステップが決まる。
(チャットログDB120の記憶内容)
つぎに、情報処理装置101が有するチャットログDB120の記憶内容について説明する。チャットログDB120は、例えば、図2に示したメモリ202、ディスク204などの記憶装置により実現される。
図4は、チャットログDB120の記憶内容の一例を示す説明図である。図4において、チャットログDB120は、ルームID、タイムスタンプ、seq_id、前のseq_id、labelおよびメッセージのフィールドを有する。各フィールドに情報を設定することで、チャットログ(例えば、チャットログ400−1〜400−7)がレコードとして記憶される。
ここで、ルームIDは、チャットを行うルームのIDを示す。ルームIDによれば、チャットボットとの一連の会話を特定することができる。タイムスタンプは、ステップが実行された日時を示す。seq_idは、実行されたステップのIDを示す。前のseq_idは、直前に実行されたステップのIDを示す。labelは、実行されたステップの名前を示す。メッセージは、実行されたステップで発話された文章、または、選択された選択肢を示す。
例えば、チャットログ400−1によれば、ルームID「R1」のルームについて、2019年1月8日0時10分に、seq_id「0001」およびlabel「TXT−1」のステップが実行されてメッセージ「こんにちは。」が表示されたことを特定することができる。
また、チャットログ400−2によれば、ルームID「R1」のルームについて、2019年1月8日0時10分に、seq_id「0002」およびlabel「SLC−1」のステップが実行されてメッセージ「以下の選択肢から1つ選んでください。」が表示されたことを特定することができる。さらに、seq_id「0001」のステップが直前に実行されたことを特定することができる。
(情報処理装置101の機能的構成例)
図5は、情報処理装置101の機能的構成例を示すブロック図である。図5において、情報処理装置101は、取得部501と、生成部502と、表示制御部503と、を含む。取得部501〜表示制御部503は制御部となる機能であり、具体的には、例えば、図2に示したメモリ202、ディスク204、可搬型記録媒体207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、通信I/F205により、その機能を実現する。各機能部の処理結果は、例えば、メモリ202、ディスク204などの記憶装置に記憶される。
取得部501は、チャットに関するスクリプト情報を取得する。ここで、スクリプト情報は、チャットのトーク処理を定義した情報(シナリオ)である。トーク処理は、チャットボットの動作(挙動)を実現するための処理であり、例えば、発話する処理、選択肢を表示する処理、選択肢を選択する処理、トーク処理を終了する処理などを含む。
具体的には、例えば、取得部501は、図1に示したクライアント装置102から、図3に示したようなスクリプト情報300を受信することにより、受信したスクリプト情報300を取得する。また、取得部501は、不図示の入力装置を用いたユーザの操作入力により、スクリプト情報300を取得することにしてもよい。
また、取得部501は、チャットのトーク処理に関するチャットログを取得する。ここで、チャットログは、チャット上で実際に行われた会話についてのログであり、どのような会話がいつ行われたのかを特定可能な情報である。例えば、チャットログは、図4に示したように、ルームID、タイムスタンプ、seq_id、前のseq_id、labelおよびメッセージを含む。
具体的には、例えば、取得部501は、クライアント装置102からチャットログを受信することにより、受信したチャットログを取得する。また、取得部501は、不図示の入力装置を用いたユーザの操作入力により、チャットログを取得することにしてもよい。また、取得部501は、チャットボットを利用したFAQシステムから、チャットログを取得することにしてもよい。取得されたチャットログは、例えば、図4に示したチャットログDB120に記憶される。
生成部502は、ネットワークグラフを生成する。ここで、ネットワークグラフとは、ノードの集合と、ノード間をつなぐ有向なエッジの集合とからなるグラフである。具体的には、生成部502は、第1の設定部504と、第2の設定部505と、決定部506と、を含む。
第1の設定部504は、取得されたスクリプト情報を参照して、トーク処理に対応するノードと、トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定する。ここで、トーク処理に対応するノードは、チャットボットが行う動作(挙動)を実現する処理に対応するノードである。例えば、トーク処理に対応するノードは、発話する処理に対応するノード、選択肢を表示する処理に対応するノード、選択肢を選択する処理に対応するノード、トーク処理を終了する処理に対応するノードなどである。
分析する観点に対応するノードは、どのような観点で動線分析を行うかに応じて設定されるノードである。例えば、分析する観点に対応するノードは、チャットのトーク処理の終了に対応するノードであり、スクリプト情報に定義されたいずれの処理にも対応しない新たなノードとして設定される。なお、トーク処理の終了には、会話が正常に終了した場合だけでなく、会話の途中で強制終了した場合も含まれる。
以下の説明では、分析する観点に対応するノードを「特定ノード」と表記する場合がある。なお、どのようなノードを、分析する観点に対応する特定ノードとするかは、予め決められていてもよく、また、クライアント装置102から指定されることにしてもよい。
具体的には、例えば、第1の設定部504は、スクリプト情報300を参照して、発話する処理に対応するノード、選択肢を表示する処理に対応するノード、選択肢を選択する処理に対応するノード、および、トーク処理を終了する処理に対応するノードを設定する。また、第1の設定部504は、チャットのトーク処理の終了に対応する特定ノードを設定する。
第2の設定部505は、取得されたスクリプト情報と、取得されたトーク処理に関するチャットログとに基づいて、設定した複数のノードに含まれるノード間をつなぐ有向なエッジを設定する。具体的には、例えば、第2の設定部505は、スクリプト情報300を参照して、あるステップ(処理)から他のステップへの遷移を特定することにより、ノード間をつなぐ有向なエッジを設定する。
また、第2の設定部505は、例えば、チャットログDB120を参照して、特定ノードと他のノードとの有向なエッジを設定する。例えば、特定ノードを、チャットのトーク処理の終了に対応するノードとする。この場合、第2の設定部505は、チャットログDB120を参照して、チャットのトーク処理を終了した処理に対応するノードから、特定ノードへの有向なエッジを設定する。
チャットのトーク処理を終了した処理は、例えば、seq_idに、ステップの種類が「end」のステップのIDが設定されたチャットログから特定される(会話が正常終了したパターン)。また、チャットのトーク処理を終了した処理は、例えば、同一のルームIDが設定されたチャットログのうち、最後のチャットログ(タイムスタンプが最新のチャットログ)から特定される(会話が強制終了したパターン)。
なお、上述した説明では、特定ノードとして、チャットのトーク処理の終了に対応するノードを例に挙げて説明したが、これに限らない。例えば、トーク処理に対応するノードのうちのいずれかのノードを、特定のノードとしてもよい。すなわち、第1の設定部504は、トーク処理のいずれかの処理に対応するノードを、分析する観点に対応する特定ノードに設定してもよい。この場合、第2の設定部505は、例えば、チャットログDB120を参照して、特定のノードに対応する処理への他のノードに対応する処理からの遷移を検出することにより、そのノード間をつなぐ有向なエッジを設定する。ただし、スクリプト情報300をもとに設定されるエッジと重複するエッジについては、重複してエッジが設定されないように、設定対象から除外する。これにより、例えば、チャットボットが行う特定の動作がどのような頻度で行われたかといったことを分析し易くなる。
決定部506は、取得されたトーク処理に関するチャットログに基づいて、設定されたエッジの表示態様を決定する。具体的には、例えば、決定部506は、トーク処理に関するチャットログから特定される、エッジで接続されたノード間の遷移回数に応じて、当該エッジの太さまたは色を決定することにしてもよい。
より詳細に説明すると、例えば、決定部506は、チャットログDB120を参照して、設定されたエッジごとに、当該エッジで接続されたノード間の遷移回数を計数する。例えば、チャットログ400−2を例に挙げると、決定部506は、seq_id「0001」のステップに対応するノードから、seq_id「0002」のステップに対応するノードへの遷移を検出し、そのノード間の遷移回数をインクリメントする。
また、特定ノードを、チャットのトーク処理の終了に対応するノードとする。この場合、決定部506は、チャットログDB120を参照して、同一のルームIDが設定されたチャットログのうち、最後のチャットログを特定する。そして、決定部506は、特定したチャットログのseq_id「0001」のステップに対応するノードから、特定ノードへの遷移を検出し、そのノード間の遷移回数をインクリメントする。
そして、決定部506は、エッジごとに計数した遷移回数に応じて、当該エッジの太さまたは色を決定する。例えば、決定部506は、計数した遷移回数が多くなるほど太くなるように、エッジの太さを決定してもよい。また、決定部506は、計数した遷移回数が多くなるほど濃くなるように、エッジの色の濃淡を決定してもよい。
なお、決定部506は、ノード間の遷移回数を計数するにあたり、期間を設定することにしてもよい。期間は、例えば、クライアント装置102から指定することができる。期間が設定された場合、決定部506は、タイムスタンプが期間内のチャットログを参照して、ノード間の遷移回数を計数する。
そして、生成部502は、例えば、第1の設定部504によって設定された複数のノードと、第2の設定部505によって設定されたエッジとを含み、エッジの表示態様を、決定部506によって決定された表示態様とするネットワークグラフを生成する。
表示制御部503は、生成部502によって生成されたネットワークグラフを表示する制御を行う。具体的には、例えば、表示制御部503は、複数のノードと、ノード間を接続するエッジとを含むネットワークグラフを表示する際に、エッジごとに決定された表示態様で当該エッジを表示する。
これにより、ネットワークグラフを表示する際に、チャットログに基づき決定された表示態様により、ノード間を接続するエッジの表示態様を変更して表示することができる。ネットワークグラフは、例えば、情報処理装置101の不図示のディスプレイ、または、クライアント装置102に表示される。
ネットワークグラフの表示例については、図6を用いて後述する。
また、表示制御部503は、ネットワークグラフを表示する際に、特定ノードを、他のノードと異なる大きさで表示することにしてもよい。具体的には、例えば、表示制御部503は、特定ノードを、他のノードに比べて大きく表示することにしてもよい。なお、各ノードに対応するアイコンは、例えば、各ノードに対応するステップの種類に応じて予め決められている。
また、表示制御部503は、ネットワークグラフを表示する際に、特定ノードを、他のノードと異なる形状で表示することにしてもよい。具体的には、例えば、表示制御部503は、特定ノードを四角形のアイコンとし、他のノードを丸型のアイコンとしてもよい。
(ネットワークグラフの表示例)
つぎに、ネットワークグラフの表示例について説明する。
図6は、ネットワークグラフの表示例を示す説明図である。また、図7は、ネットワークグラフ内のループ構造の一例を示す説明図である。図6において、ネットワークグラフ600は、ノードの集合(例えば、ノードN1〜N10)と、ノード間をつなぐ有向なエッジの集合(例えば、エッジe1〜e11)とからなるグラフである。ただし、図6では、ネットワークグラフ600の一部を抜粋して表示している。
ネットワークグラフ600において、ノードN1〜N9は、スクリプト情報300(図3参照)をもとに設定された、トーク処理に対応するノードである。例えば、ノードN1は、ステップ情報310(図3参照)が表すステップに対応するノードである(label:TXT−1、seq_id:0001)。
また、ノードN2は、ステップ情報320(図3参照)が表すステップに対応するノードである(label:SLC−1、seq_id:0002)。ノードN3は、ステップ情報330(図3参照)が表すステップに対応するノードである(label:OPT−1、seq_id:0003)。
ノードN10は、分析する観点に対応する特定ノードである。ここでは、ノードN10は、トーク処理(チャット)の終了に対応するノードである。また、ノードN10は、他のノードよりも大きいアイコンで表現されている。
また、ネットワークグラフ600において、エッジe1〜e8は、スクリプト情報300(図3参照)をもとに設定された、ノード間を接続するエッジである。また、エッジe9〜e11は、チャットログDB120をもとに設定された、ノードN10(特定ノード)とノードN7〜N9とを接続するエッジである。
また、ネットワークグラフ600において、各エッジe1〜e11は、チャットログDB120内のチャットログから特定される、各エッジe1〜e11で接続されたノード間の遷移回数に応じた太さで表示されている。例えば、チャットログ400−2から、エッジe1で接続されたノードN1からノードN2への遷移が検出され、遷移回数がインクリメントされる。
また、チャットログ400−3から、エッジe2で接続されたノードN2からノードN3への遷移が検出され、遷移回数がインクリメントされる。また、チャットログ400−4から、エッジe5で接続されたノードN3からノードN6への遷移が検出され、遷移回数がインクリメントされる。
また、チャットログ400−7は、同一のルームID「R10」が設定されたチャットログのうちの最後のチャットログであり、ステップの種類が「end」のステップのIDが設定されたチャットログである。この場合、チャットログ400−7から、エッジe11で接続されたノードN9からノードN10への遷移が検出され、遷移回数がインクリメントされる。
また、同一のルームIDが設定されたチャットログのうちの最後のチャットログのseq_idが「0007」の場合、エッジe9で接続されたノードN7からノードN10への遷移が検出され、遷移回数がインクリメントされる。また、同一のルームIDが設定されたチャットログのうちの最後のチャットログのseq_idが「0008」の場合、エッジe10で接続されたノードN8からノードN10への遷移が検出され、遷移回数がインクリメントされる。
ネットワークグラフ600によれば、分析者(例えば、クライアント装置102のユーザ)は、チャットの動線分析を行うことができる。例えば、ネットワークグラフ600によれば、分析者は、チャット上でどのような会話がどのような頻度で行われたかを、各エッジの太さから判断することができる。
また、トーク処理とは異なる分析する観点に対応する特定ノードとして、トーク処理の終了に対応するノードN10を設定することで、ユーザの離脱という観点で分析することができる。例えば、エッジe10の太さから、ノードN8に対応する処理において強制終了が多く発生していることがわかる。ユーザが離脱する割合が高い箇所がわかれば、その原因を究明して、何らかの対策を講じることができる。
また、トーク処理とは異なる分析する観点に対応する特定ノードとして、トーク処理の終了に対応するノードN10を設定することで、全ての会話はノードN10につながることになる。このため、ネットワークグラフ600内のノード数が多くなったとしても、ノードN10が中心となって表示され、分析の観点になる軸ができて、ユーザにとって見やすいものとなる。
また、ネットワークグラフ600によれば、図7に示すループ700(ノードN1⇒ノードN2⇒ノードN3⇒ノードN6⇒ノードN1)のような、ループ構造についても表現することができる。このため、分析者は、例えば、前に発言したところに戻るようなループが頻繁に発生している箇所を特定して、チャットボットの発言内容や選択肢などに問題がないかを分析することができる。
(情報処理装置101の分析支援処理手順)
つぎに、情報処理装置101の分析支援処理手順について説明する。ここでは、チャットのトーク処理に関するチャットログは、チャットログDB120に記憶されているものとする。
図8は、情報処理装置101の分析支援処理手順の一例を示すフローチャートである。図8のフローチャートにおいて、まず、情報処理装置101は、チャットに関するスクリプト情報を取得する(ステップS801)。つぎに、情報処理装置101は、取得したスクリプト情報を参照して、トーク処理に対応するノードと、トーク処理とは異なる分析する観点に対応する特定ノードとを含む複数のノードを設定する(ステップS802)。
そして、情報処理装置101は、取得したスクリプト情報と、チャットログDB120内のチャットログとに基づいて、設定した複数のノードに含まれるノード間をつなぐ有向なエッジを設定する(ステップS803)。つぎに、情報処理装置101は、チャットログDB120を参照して、設定したエッジごとに、当該エッジで接続されたノード間の遷移回数を計数する(ステップS804)。
そして、情報処理装置101は、エッジごとに計数したノード間の遷移回数に応じて、当該エッジの太さを決定する(ステップS805)。つぎに、情報処理装置101は、設定した複数のノードと、設定したエッジとを含み、エッジの太さを、決定した太さとするネットワークグラフを生成する(ステップS806)。
そして、情報処理装置101は、生成したネットワークグラフを表示して(ステップS807)、本フローチャートによる一連の処理を終了する。これにより、ツリー構造になっていない複雑な構造やループ構造を含むチャット上でのユーザの動きを可視化することができる。
以上説明したように、実施の形態にかかる情報処理装置101によれば、チャットのトーク処理を定義したスクリプト情報を参照して、トーク処理に対応するノードと、トーク処理とは異なる分析する観点に対応する特定ノードとを含む複数のノードを設定することができる。トーク処理に対応するノードは、例えば、発話する処理に対応するノード、選択肢を表示する処理に対応するノード、トーク処理を終了する処理に対応するノードなどである。また、情報処理装置101によれば、スクリプト情報と、トーク処理に関するチャットログとに基づいて、設定した複数のノードに含まれるノード間を接続する有向なエッジを設定することができる。そして、情報処理装置101によれば、設定した複数のノードを含み、設定したエッジによりノード間を接続したネットワークグラフを表示する際に、トーク処理に関するチャットログに基づいて、エッジの表示態様を変更して表示することができる。
これにより、ツリー構造になっていない複雑な構造やループ構造を含むチャット上でのユーザの動きを可視化して、チャットの動線分析を支援することができる。例えば、チャット上で行われた実際の会話の記録に基づいて、動線(スクリプトの経路)の流量を可視化することができる。
また、情報処理装置101によれば、トーク処理とは異なる分析する観点に対応する特定ノードとして、トーク処理の終了に対応するノードを設定することができる。
これにより、ユーザの離脱という観点でチャットの動線分析を行うことができる。また、ネットワークグラフ内のノード数が多くなったとしても、全ての会話が特定ノードにつながるため、特定ノードが中心となって表示されて、分析の観点になる軸ができ、ネットワークグラフの視認性を高めることができる。
また、情報処理装置101によれば、トーク処理に関するチャットログから特定される、エッジで接続されたノード間の遷移回数に応じて、当該エッジの太さまたは色を変更して表示することができる。
これより、ノード間の遷移回数が多いほど、エッジを太く描画したり、濃い色で描画したりすることができ、動線(スクリプトの経路)の流量を直感的に理解しやすい態様で可視化することができる。
また、情報処理装置101によれば、ネットワークグラフを表示する際に、分析する観点に対応する特定ノードを、他のノードと異なる大きさで表示することができる。
これより、分析する観点に対応する特定ノードを判別しやすくさせることができる。
なお、本分析支援方法は、チャットのように、ツリー構造ではなく、ループ構造を含むコンテンツについての動線分析にも有効である。例えば、オンラインゲーム、スマホゲーム、スマホ向けアプリなどについて、ユーザの離脱という観点で分析したい場合に有効である。
また、本実施の形態で説明した分析支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分析支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本分析支援プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した情報処理装置101は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)チャットのトーク処理を定義したスクリプト情報を参照して、前記トーク処理に対応するノードと、前記トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定し、
前記スクリプト情報と、前記トーク処理に関するチャットログとに基づいて、設定した前記複数のノードに含まれるノード間を接続する有向なエッジを設定し、
前記複数のノードを含み、設定した前記エッジによりノード間を接続したネットワークグラフを表示する際に、前記トーク処理に関するチャットログに基づいて、前記エッジの表示態様を変更して表示する、
処理をコンピュータに実行させることを特徴とする分析支援プログラム。
(付記2)前記分析する観点に対応するノードは、前記トーク処理の終了に対応するノードである、ことを特徴とする付記1に記載の分析支援プログラム。
(付記3)前記表示する処理は、
前記トーク処理に関するチャットログから特定される、前記エッジで接続されたノード間の遷移回数に応じて、前記エッジの太さまたは色を変更して表示する、ことを特徴とする付記2に記載の分析支援プログラム。
(付記4)前記表示する処理は、
前記ネットワークグラフを表示する際に、前記分析する観点に対応するノードを、他のノードと異なる大きさで表示する、ことを特徴とする付記3に記載の分析支援プログラム。
(付記5)前記トーク処理に関するチャットログに基づいて、前記エッジの表示態様を決定する、処理を前記コンピュータに実行させ、
前記表示する処理は、
前記複数のノードを含み、前記エッジによりノード間を接続したネットワークグラフを表示する際に、決定した前記表示態様で前記エッジを表示する、ことを特徴とする付記4に記載の分析支援プログラム。
(付記6)前記トーク処理は、発話する処理と、選択肢を表示する処理と、前記トーク処理を終了する処理と、を含む、ことを特徴とする付記1〜5のいずれか一つに記載の分析支援プログラム。
(付記7)チャットのトーク処理を定義したスクリプト情報を参照して、前記トーク処理に対応するノードと、前記トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定し、
前記スクリプト情報と、前記トーク処理に関するチャットログとに基づいて、設定した前記複数のノードに含まれるノード間を接続する有向なエッジを設定し、
前記複数のノードを含み、設定した前記エッジによりノード間を接続したネットワークグラフを表示する際に、前記トーク処理に関するチャットログに基づいて、前記エッジの表示態様を変更して表示する、
処理をコンピュータが実行することを特徴とする分析支援方法。
(付記8)チャットのトーク処理を定義したスクリプト情報を参照して、前記トーク処理に対応するノードと、前記トーク処理とは異なる分析する観点に対応するノードとを含む複数のノードを設定し、
前記スクリプト情報と、前記トーク処理に関するチャットログとに基づいて、設定した前記複数のノードに含まれるノード間を接続する有向なエッジを設定し、
前記複数のノードを含み、設定した前記エッジによりノード間を接続したネットワークグラフを表示する際に、前記トーク処理に関するチャットログに基づいて、前記エッジの表示態様を変更して表示する、
制御部を有することを特徴とする情報処理装置。
100 分析支援システム
101 情報処理装置
102 クライアント装置
110 ネットワーク
120 チャットログDB
200 バス
201 CPU
202 メモリ
203 ディスクドライブ
204 ディスク
205 通信I/F
206 可搬型記録媒体I/F
207 可搬型記録媒体
300 スクリプト情報
501 取得部
502 生成部
503 表示制御部
504 第1の設定部
505 第2の設定部
506 決定部
600 ネットワークグラフ
700 ループ