SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

テキスト・ネットワーク分析統合プラットフォームを学ぶ(AD)

テキスト・ネットワーク分析統合プラットフォーム
第2回:分析アプリケーションおよびTENA APIの使い方

TENAが実現する分析アプリケーションの実例

  • このエントリーをはてなブックマークに追加

 前回の記事では、ソーシャル・アナリティクスを実現するテキスト・ネットワーク分析統合プラットフォーム「TENA」を、データ構造、API、そしてアプリ構築に必要な分析フレームワークを中心に説明しました。今回の記事ではTENAが実現する分析アプリケーションの実例を、実際のAPIの利用例と共に説明します。

  • このエントリーをはてなブックマークに追加

はじめに

 前回の記事では、ソーシャル・アナリティクスを実現するテキスト・ネットワーク分析統合プラットフォーム(TExt and Network Analysis、以下、TENAと略します)を、データ構造、API、そしてアプリ構築に必要な分析フレームワークを中心に説明しました。ソーシャル・アナリティクスとは、ブログやSNSといったソーシャル・コンピューティング・ソフトウエアにおけるユーザーの行動とそれに伴うテキストを統合的に分析する技術です。今回の記事ではTENAが実現する分析アプリケーションの実例を、実際のAPIの利用例と共に説明します。

ブログユーザーに魅力的な情報を提供する:ブログサイト向けアプリケーション

 現在実装されているTENAのアプリケーションは、分析結果をブログやSNSといったユーザーに対して提供し、それによりツールへの滞留時間を長くしたり、活動頻度を上げたりといった効果を期待するものが中心となります。このアプリケーションの例として、ブログサイト向けのアプリケーションである「ブログ推薦」と「ブログサポーター」を紹介します。これらは、株式会社サイバーエージェント様のアメーバブログ(アメブロ)上でサービスとして用いられています。

ブログの執筆・閲覧行動に基づいたブログ推薦機能

ログインページにおけるブログ推薦機能

 ブログ推薦機能は、ユーザーが今まで書いた/読んだブログを基にして、ユーザーの気に入りそうなブログを求めることができる機能です。ブログサイトではブログを読むだけのユーザーであっても、自分のお気に入りのブログに対して簡単にアクセスすることができるポータルサイトのようなページが用意されていることがあります。そのようなユーザー専用のエリアに、ブログ推薦機能によって求められたブログを「オススメのブログ」として表示することにより、ユーザーの興味を広げ、ブログサイトへの滞在時間を延ばすことが期待できます。

ブログ推薦機能におけるユーザー嗜好のモデル化

 ブログ推薦機能では、TENAを用いてブログの執筆/閲覧履歴からユーザーの嗜好をモデル化し、お勧めのブログを推定しています。ユーザーの嗜好をモデル化する方法として、ブログの「コンテンツ」を中心にしたテキスト分析と、「行動」を中心としたネットワーク分析の2種類があります。テキスト分析による推薦は、ユーザーの書いた/読んだブログの内容に関連したブログを推薦するため、一貫した内容のブログを読んだり書いたりしているユーザーには有効です。それに対してネットワーク分析による推薦は、内容に関係なくそのユーザーと行動が似ているユーザーの集合を弁別し、その集合でよく読まれているにもかかわらず未だにそのユーザーが読んでいないブログを発見することができます。そのため、ネットワーク分析による推薦はブログの目的が内容なのではなく、芸能人などといった「ブログを書く人」に注目してブログを読んでいるユーザーに有効だと言えます。

テキスト分析によるブログ推薦

 テキスト分析による推薦では、前回の記事で説明した分析フレームワークの一つである「興味マトリクス」を用います。興味マトリクスとは、時間的な減衰を考慮して、ユーザーの行動別に関連したキーワードをベクトル表現で保持したものです。

 ユーザーの興味は日々刻々と入る情報によって影響を受け、変化していると考えることができます。それらをよく表しているのがテキストです。ユーザーが頻繁にブログに書く話題や、頻繁に訪問するブログに現れている話題は、そのユーザーが現在興味を持っている話題である場合が多いでしょう。しかし、「読んだ」内容よりも、「書いた」内容の方がユーザーの興味をよりよく示していると考えられるため、ユーザーの行動別にテキストを分けて、ユーザーの興味をモデル化する必要があります。さらに、興味は日々移り変わるものであり、興味があったものも時間がたつと共に忘れられていくと考えるのが妥当です。そのため、2週間前に読んだ記事に含まれるキーワードよりも、昨日読んだ記事に含まれるキーワードの方が、そのユーザーの興味をより強く表すと考えるのが妥当です。これらの「行動」と「時間による変化」を考慮したモデル表現が、興味マトリクスと呼ばれるものです。

 テキスト分析によるブログ推薦では、ユーザーの特徴およびブログの特徴を、それぞれ興味マトリクスを用いてモデル化しその近さを比べることで推薦するブログのランキングを得ます。

ネットワーク分析によるブログ推薦

 ネットワーク分析による推薦では、ユーザーとブログコンテンツにより作られるネットワーク構造を分析する分析フレームワークである「2部グラフ分析」を用いて、各ユーザーに対してブログを推薦します。2部グラフとは、2つのグループ(クラスタ)に分割されたノードの集合と、それぞれのクラスタ間に存在するリンクによって作られるグラフのことをいいます。このアプリケーションで用いる2部グラフを図1に示します。このグラフは、ユーザーとコンテンツという2種類のノード間に「読む」「書く」といった行動のリンクが張られたものです。

図1 ユーザーとブログによる2部グラフ
図1 ユーザーとブログによる2部グラフ

 2部グラフ分析を用いると、片方のクラスタから1つノードを選択し、同じクラスタに属する残りのノードを選択ノードに近い順番にランキングすることができます。このアプリケーションの場合は、あるユーザー(推薦対象ユーザー)を選んだとき、そのユーザーに「近い」ユーザーを知ることができます。ユーザーAとユーザーBの近さは、ユーザーAからユーザーBまでに、「読む」「書く」といったリンクを経由していく方法が何通りあるかで求めることができます。1つの「読む」「書く」行動を1つのリンクと数えると、距離も定義することができます。距離が短い経路が数多くあるユーザーは、同じようなブログに興味を持っているという意味で、そのユーザーに「近い」ユーザーであると言えます。この分析を用いて推薦対象ユーザーに近いユーザーの集合を求め、そのユーザーが読んでいるブログを集計することで、推薦するブログのランキングを求めることができます。

推薦結果の統合

 前に解説したように、テキスト分析およびネットワーク分析では性質の違う2つの結果が出力されますので、これらを統合してブログ推薦の結果とすることも可能です。TENAのプラットフォームでは、ユーザーの行動履歴やこれまでの興味をモデル化した興味マトリクスを取得できますので、あるユーザーに対して、どちらの推薦手法が有効か、検討することができます。例えば、書いたという行動履歴が多いユーザーに対してはテキスト分析の結果を優先的に、読む行動が中心のユーザーにはネットワーク分析を優先的に出す、といったポリシーを決めて結果を統合します。また、あるユーザーの興味の内容がある話題(例えば旅行やスポーツなど)に一貫したものであったのか、そうではないのかという判定を興味マトリクスで行うこともできるため、統合のポリシーを決めるための材料として用いることが可能です。

行動履歴に基づいたブログサポーター機能

 ブログサポーター機能は、あるブログを書いているブロガーのブログに対する行動やコメントの内容などから、ブロガーの熱心なファンである度合いを算出し、ランキングするアプリケーションです。このアプリケーションでは、ブロガーがブログを書いてから読者が読むまでの時間、コメント履歴とその内容、ブロガーと読者の近さなど、いろいろな観点からファン度合いを表すスコアが計算され、最終的にはこれらのスコアを統合することによってランキングが決定します。

 このアプリケーションでは、ブログ推薦と同様に2部グラフなどの分析フレームワークを用いてスコアを求める手法と、直接TENAコモンストアにアクセスして情報を取得しスコアを求める手法と2種類あります。TENAコモンストアには、ソーシャル・コンピューティング上のすべての情報が、抽象的なネットワーク構造として蓄積されています(TENAコモンストアのデータ構造の詳細については、前回の記事を参考にしてください)。ここでは、コメント履歴とその内容を基にしてスコアを計算する方法を例にとり、どのようにして「ブログサポーター度」を計算しているかを説明します。

ブログサポーター度:計算例

 図2にブログサポーターの計算例を示します。ここでは、あるブロガーAに対してのブログサポーター度を計算しているとします。まず、ブロガーAのブログのテキストコンテンツノードを取得します。これは、ブロガーAのノードを取得し、Outlinkの中から[LinkType:書く]で終点がテキストコンテンツノードであるものを取得すればよいわけです。同様に、ブログコンテンツに対してコメントをしている「コメントノード」を取得し、各コメントに対してコメントをした読者のノードを取得します。そのコメントのタイミング(ブログコンテンツが作成されてからコメントが作成されるまでの時刻)と内容の重なり(ブログコンテンツとコメントのキーワードの重なり)から、各読者のブロガーAに対するブログサポーター度が計算されます。

図2 ブログサポーター度の計算
図2 ブログサポーター度の計算

ブログサポーター度の分散によるファン分布の比較

 ブログサポーターでは、各ブロガーのファンのランキングを取得するだけではなく、そのブロガーのファンがどのような性質を持っているのか、またそのファンの数はどのくらいか、といったことを知ることができます。例えば、閲覧によるスコアが高い人は多いが、ブロガーと関連した内容のブログを書いているのかという観点でのスコアは低いといった場合、そのブロガーは閲覧数の割には影響力が低いのではないか、といった推察をすることができます。

 また、一般的にブログサポーター度は図3に示すように点数が高くなるほど人数が少なくなる傾向にあります。ブログサポーター度に基づいて、ブログの読者をA,B,Cといったクラスわけを行えば、ブロガー同士の熱心なファンの数字の比較を行うことが可能になります。

図3 ブログサポーター度による読者のクラスわけの例:
(横軸はスコア、縦軸は読者の数を示す)
図3 ブログサポーター度による読者のクラスわけの例:(横軸はスコア、縦軸は読者の数を示す)

 このように、ブログサイトにおけるブロガーの真の人気を計ることのできる機能は、次の章で紹介するようなサイトオーナー様向けのアプリケーションの一つとして捉えることができるでしょう。

ネット上での議論を分析する:オンラインディスカッション分析

 ネット上での情報発信には、ブログのように自分の領域で自分の意見を発信する他に、掲示板のようなパブリックな場所へ意見を書き込むといった方法もあります。ブログに比べ、掲示板などでは同じ目的や話題を持った人たちが集まり、お互いの情報によりよい意見としてまとまったりすることがあります。このような掲示板は、人とコンテンツの関係のほかに、コンテンツ同士の関係(返答や時系列など)を持ちますので、関係を扱うことが特徴のTENAによる分析が有効です。ここでは、オンラインディスカッションの一つである、Jamを分析するJam分析機能を紹介しましょう。

大規模オンラインディスカッション:Jam

 IBMではオンラインで行うディスカッションを数多く開催しています。オンラインディスカッションの中には、全世界100以上、15万人以上が参加するものもあり、3-4日間という短い間に数万の発言が投稿されます。IBMではこのようなオンラインディスカッションをJamと呼んでいます。過去に開催されたJamの詳細や今まで行われた分析はこちらこちら(PDF)に詳しく記載されています。

Jam分析ツール:JASMIN(Jam AnalysiS and MINing)

 Jamは全世界にわたって開催されるため、前日に発言した内容が次の日の朝には大きな議論となって発展していたり、前の日に注目していた話題に返答が付きすぎて話題についていけなくなったりといった現象がおきてしまいます。2008年に開催されたInnovationJamでは、議論にアドバイザーとして参加する人や、議論を調停する役割の人など、Jamの運営側が議論の中身を理解するためにJASMIN(Jam AnalysiS and MINing)というツールを用いました。JASMINはテキストマイニングの技術(ICA:前回の記事参照)とTENAの技術を統合して作られたツールです。Jamでは、発言に対する返答でまとめられた一連の議論をスレッドと呼んでいますが、スレッドにおいて議論の流れや、スレッドに関連する情報を可視化するところでTENAが使われています。

 図4はJASMINのスレッド可視化ツールを示しています。スレッド表示の右には、このスレッドと関連の深いスレッドが表示されています。これは、このスレッドに書き込んだ人たちが書き込んだ他のスレッドです。この出力もTENAによって計算されたもので、「協調フィルタリング」と呼ばれる手法を用いたものです。この協調フィルタリングは、手法として前章で述べたネットワーク分析によるブログ推薦とよく似ています。

図4 JASMIN スレッド可視化ツール
図4 JASMIN スレッド可視化ツール

 中央には、ノードを一つのJamの発言、リンクを返答構造である木構造として、スレッドが視覚化されています。ノードの大きさは、次節で解説する手法で計算された「重要度」を示しています。スレッド表示の左側には、その重要度順に発言がリストされています。このリストあるいはスレッドのノードをクリックすることにより、発言のテキストが左下に表示されます。

 次節ではTENAの技術を用いてこの重要度をどのように求めるのか、詳しく解説します。

発言の重要度の計算方法

 Jamのデータは、発言および発言を行った人をノードとして扱います。また、人と発言は「書く」というリンク、発言と発言は返答関係というリンクとして扱います。テキストノードだけをこのデータから取り出すと、Jamでは同じ発言に複数の返答を付けられるため、構造は一つの発言から広がる木構造となります。これがJamでのスレッドに値します。

 このような構造とテキストの内容から、どの意見が参加者によって重要とみなされたかを計算することができます。まず、テキスト中から抽出された意見などの表現を抽出し、それに基づいてその発言が返答元に対し「賛成」あるいは「反対」しているかどうか判断します(賛成、反対以外の表現も用いますがここでは説明しません)。また、発言自身の内容より、その発言自身の価値も求めておきます。多くの人に「賛成」された意見は重要、「反対」された意見は重要ではないという指標に基づき、再帰的に重要度を計算します。

 重要度の計算について図5に示します。この図の例では、発言3には「賛成」2つ(発言6および7)、「提案」1つ(発言8)の計3つ返答があります。それぞれの返答には返答がないため、発言3の最終的な価値は発言6,7の価値に賛成の係数(価値を発言元に伝えるため正の値)を掛けたもの、および発言8の価値に提案の係数を掛けたもの、および発言3自身の価値、すべてを足したものになります。それを新しい発言3の価値として、発言1の価値を求めるといった方法で、最終的にすべての発言の価値、すなわち重要度を計算します。反対意見の場合、返答もとの価値を下げるという意味ですから、係数は負の値になります。重要度の詳しい計算方法について詳しく知りたい場合は、こちらを参照してください。

図5 Jamにおける発言の重要度の計算方法
図5 Jamにおける発言の重要度の計算方法

テキスト・ネットワーク分析プラットフォーム:今後の展望

 TENAで扱うデータ構造および分析フレームワークを用いれば、ソーシャル・コンピューティングに対するさまざまな分析アプリケーションを構築することが可能になります。今回は主にインターネット上におけるソーシャル・コンピューティング上でのアプリケーションを取り上げましたが、今後はエンタープライズにおけるソーシャル・コンピューティングの利用も多く考えられます。

エンタープライズにおけるソーシャル・コンピューティングの役割

 現在、ブログやコミュニティといったSNSの要素が、社内のナレッジ共有のツールとして浸透しつつあります。IBMでは、Lotus Connectionsというブログ、プロフィール、ブックマーク共有、アクティビティ管理、コミュニティ、wikiといったソーシャルコンピューティング・ソフトウエアの統合プラットフォームを提供しており、情報共有のみならず知的共同作業やタスク管理といった用途にまでその可能性を広げています(Lotus Connectionsについての詳しい情報はこちらこちら、またはこのページなどをご覧ください)。TENAの技術を用いることにより、Lotus Connectionsでのユーザーの行動を、コンテンツを含めて分析することが可能になります。それにより、例えば、社内で役員が発信したメッセージがどのくらい浸透しているのか知ることができたり、社内で同じ興味を持つ社員を理解してプロジェクトのチーミングに役立てたりすることができます。ソーシャル・コンピューティングをエンタープライズで活用するには、ただ情報共有の場としてツールを用意するだけではなく、そのツールの上での情報(コンテンツ、行動履歴共に)活用することを視野にいれることにより、ツールの利用率の向上や、導入によるビジネスへの効果を期待することができるようになるでしょう。

終わりに

 この記事では、2回に分けてTENAが可能にするさまざまな分析アプリケーションを通じ、TENAの扱うデータ構造とそれにアクセスするためのAPIを解説しました。ソーシャル・コンピューティングは、コミュニケーションの場を提供するにとどまらず、コンテンツおよびそれに対する行動を分析することでより強力なツールとなったり、ビジネス上での意思決定を可能としたりすることが可能となります。テキストと行動を統合的に扱えるTENAでは、ソーシャル・コンピューティングで考えられるさまざまな手法を、データの構造の作りこみなしに試すことができます。私たちはTENAのような技術で分析が容易になることにより、ソーシャル・コンピューティングの利用範囲がさらに拡大していくことを期待しています。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4427 2009/09/24 16:33

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング