Comments
Description
Transcript
テキスト・ネットワーク情報分析技術 TENA 日本アイ・ビー・エム株式会社
IBM Research - Tokyo テキスト・ネットワーク情報分析技術 TENA 日本アイ・ビー・エム株式会社 東京基礎研究所 村上 明子 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA -本日のアジェンダ- 1. テキスト・ネットワーク分析技術(TENA)概要 2. TENAアプリケーション 1. サイバーエージェント様事例 1.ブログサポーター 2.ブログ推薦 2. TENAとテキストマイニング技術の融合: InnovationJam分析 3. TENA実装詳細 1. TENAデータ構造 2. TENAコモンストア API例 3. TENAコモンストア 実装 4. おわりに 2 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA -本日のアジェンダ- 1. テキスト・ネットワーク分析技術(TENA)概要 2. TENAアプリケーション 1. サイバーエージェント様事例 1.ブログサポーター 2.ブログ推薦 2. TENAとテキストマイニング技術の融合: InnovationJam分析 3. TENA実装詳細 1. TENAデータ構造 2. TENAコモンストア API例 3. TENAコモンストア 実装 4. おわりに 3 © 2009 IBM Corporation IBM Research - Tokyo 背景: ソーシャル・コンピューティングの台頭 - コミュニケーションの変化 - 4 © 2009 IBM Corporation IBM Research - Tokyo 背景: ソーシャル・コンピューティングの台頭 - コミュニケーションツールの多様化 - SNS 比較サイト 無料動画 サイト Wiki ブログ チャット・ メッセンジャー 5 検索 エンジン クチコミ © 2009 IBM Corporation IBM Research - Tokyo ソーシャル・コンピューティング: 行動履歴とコンテンツ - 人の行動やコンテンツから人の嗜好や関係が分かる ソーシャル・コンピューティング上では、その上でやり取りされるコンテンツ(テキストなど)だけではなく、行動の履 歴を取得することができます コンテンツには、人の意見や嗜好などが含まれます – 「くずアイスって知ってる?新製品らしいけど、美味しいよ~」 – 「私は新しいコノンのデジカメ、いけてると思うね!買いだよ。」 さらに、コンテンツに対する人の行動から一人一人の人の嗜好をモデル化したり、コンテンツの重要度を知ること ができます – 「サッカー」に関するキーワードが含まれるコンテンツを継続的に読んでいる人はサッカーに興味があると推 測できます – 多くの人に読まれるブログは人気ブログだと分かります。さらに、そのブログでコンテンツが作成されてから 読まれるまでの時間を見ることで、そのブログのコンテンツをどのくらいの人が期待して待っているかを知る ことができます My Blog 14Aug08 12Aug08 11Aug08 My Blog 14Aug08 My Blog 12Aug08 14Aug08 11Aug08 12Aug08 11Aug08 My Blog My Blog 14Aug08 14Aug08 12Aug08 My Blog 14Aug08 12Aug08 11Aug08 11Aug08 12Aug08 11Aug08 6 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク情報分析技術 - 「人(ユーザー)の行動」と「テキスト」を複合的に分析 人の行動とテキストの情報を処理・蓄積することで、ユーザーの興味の変化や行動の傾向を知 ることを可能にします。 テキストだけ、ネットワークだけでは理解できないユーザーの行動や嗜好を分析することが可能 です。 ネットワーク (人の行動) テキスト ブログ更新、ニュース購読、動画視聴など ブログ、広告、レビュー記事など My Blog 14Aug08 聴いた 書いた × 12Aug08 11Aug08 読んだ My Blog 購入した 14Aug08 12Aug08 11Aug08 7 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク情報分析技術(TENA) 概要 友達 コメント 聴いた 読んだ 購入した 8 コモンストア (データベース) ①TENAデータ構造 ブログ サポーター 機能 分析では、「ユーザー の行動」と「テキスト データ」を組み合わせ た分析が可能です。 結果 ブログ推薦 機能 サービス等 として ブログ サイトへ ③TENA アプリケーション … ブログを書くなどの 「ユーザーの行動」は、「ユー ザー」と「テキストデータ」に 「書いた」という関係があると 考えることができます。 これを、ユーザーとテキスト データ間の「リンク」として表 すことで、ネットワーク構造と みなすことができます。 前処理 書いた 分析フレームワーク - 「人(ユーザー)の行動」と「テキスト」を複合的に分析 ②TENA 聴いた 分析フレームワーク分析機能 コモンストアでは、ユーザー およびブログなどの各種コン テンツを「ノード」、ユーザー の行動をノード間の「リンク」 とするネットワーク構造とし て保持します。 © 2009 IBM Corporation IBM Research - Tokyo TENA概要① TENAデータ構造 - 「人」、「コンテンツ」と「関係」、「行動」をひとつのデータ構造として蓄積 TENAではブログやSNSといったソーシャルコンピューティング上での人、コンテンツを抽象化さ れたネットワーク構造としてデータベース(TENAコモンストア)に蓄積します – 人、ブログなどのコンテンツはノード、友人関係などのノード間の関係および「ブログを読ん だ」などの関係はリンクとして表現します – ノードには人名などの定型情報と、コンテンツのテキストを自然言語処理した結果などの 非定型情報が保持されます TENAコモンストアはそのグラフ構造に対する効率的なアクセスを可能とするAPIを提供します 9 © 2009 IBM Corporation IBM Research - Tokyo TENA概要② TENA分析フレームワーク - TENAコモンストアに蓄積された情報を分析可能なデータ構造に変換 TENAコモンストアには、「人」や「コンテンツ」に関する多くの情報が蓄積されています – TENAアプリケーションはそれらの情報を分析することにより、様々な情報を生み出します TENA分析フレームワークは、それらのアプリケーションで共通に使われるデータまたはデータ構 造を提供したり、分析手法を提供したりします – コンテンツの中に含まれるキーワードでコンテンツの内容をモデル化(特徴ベクトル) – 人が過去に読んだり書いたりしたコンテンツを基に、人の興味をモデル化(興味マトリクス) – 2つの異なるノード(例:人、コンテンツ)間のリンク(例:閲覧行動)を用いて、ノードの類似度を 取得(2部グラフ分析) TENA分析フレームワーク TENAアプリケーション TENAコモンストア 10 © 2009 IBM Corporation IBM Research - Tokyo TENA分析フレームワーク例(1) 行動マトリクス・興味マトリクス - ユーザーの興味をモデル化 行動マトリクスにより、ある一定時間のユーザーの興味をモデル化します ユーザーの行った行動とそれに対応するテキストデータから抜き出した興味キーワードは、一定時間ご とに行動・キーワード別に行動マトリクスとして蓄積されます。行動マトリクスはユーザーの行動から、あ る時刻におけるユーザーの興味を表したものとなります 行動 ユーザー テキスト情報 ブログを書く メッセージを書く ブログを読む コメントを読む ブログ メッセージ コメント 行動マトリクス … … キーワード – 行動 興味マトリクスにより、現在のユーザーの興味をモデル化します – – 上記の方法で作成された行動マトリクスを、時間の経過により興味が減衰するモデルを用いて逐次更 新していきます キーワードの種類や行動により興味の減衰の度合いが異なることをモデル化しています •「○○が好き」という表現はほとんど変化をしない •「ダイエット」は長く興味が持続するが商品名などは数日 で忘れてしまう •「読んだ」より「書いた」方が興味の持続する時間が長い © 2009 IBM Corporation IBM Research - Tokyo TENA分析フレームワーク例(2) 2部グラフ分析 -ノード(人、コンテンツ)の類似性を知る2部グラフ分析を用いることにより類似したノードを取得することが可能です – 2部グラフとは、全体のネットワークからユーザーノードやコンテンツノードといった異なる種類の ノードを指定し、その間のリンク構造利用して作るグラフです あるノードを指定すると、そのノードの類似度が高いノードがランキングされます – ランダムウォーク手法を用いて計算されます – 指定されたノードから他のノードへのパス(リンクを辿ってそのノードまで到達する道のり)がより短く より多い場合、類似度が高いとみなします ユーザーとブログとの 2部グラフ スコア低 (類似度小) ユーザーノード ブログノード XXXX XXXX XXXX XXXX スコア高 (類似度大) 対象ノード AAA XXXX XXXX XXXX スコア低 (類似度小) XXXX XXXX 12 ブログを読む © 2009 IBM Corporation IBM Research - Tokyo TENA概要③ TENAアプリケーション - TENAコモンストア及びTENA分析フレームワークの情報を知識に変換 TENAコモンストアやTENA分析フレームワークによって得られた情報より、多様なアプリケーション を構築することができます – 人に対して情報を提供するアプリケーション • 分析結果を利用して、人に新しい情報を提供するアプリケーションです 例:ブログ推薦 – サイトのオーナーが情報を利用するアプリケーション • 分析結果をマーケティングなどの情報として利用するアプリケーションです 例:インフルエンサーの発見 ブログ推薦 13 インフルエンサーの発見 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA -本日のアジェンダ- 1. テキスト・ネットワーク分析技術(TENA)概要 2. TENAアプリケーション 1. サイバーエージェント様事例 1.ブログサポーター 2.ブログ推薦 2. TENAとテキストマイニング技術の融合: InnovationJam分析 3. TENA実装詳細 1. TENAデータ構造 2. TENAコモンストア API例 3. TENAコモンストア 実装 4. おわりに 14 © 2009 IBM Corporation IBM Research - Tokyo サイバーエージェント様事例: TENAアプリケーション - 日本No.1ブログサイト「アメーバブログ」上にてサービス実施 アメーバブログ上で2009年4月よりベータサービスとして公開されています。 ブログサポーター 有名人ブログの読者を、そのブログへの熱心度/忠誠度/興味の一致度 など様々な観点からスコア付けします 有名人ブログ閲覧時にリストとして提示します ログイン時に読者登録している有名人ブログの中での順位を知ることができます スパムブログなどが読者として現れることを阻止することができ、閲覧・コメント などの行動や、読者同士の交流を促進することができます ブログ推薦 ユーザーの行動(ブログの作成・閲覧)に基づき、ユーザーが興味が あると予測されるブログのリストをスコア付けで提供します ログイン時にリストとして提示することができます 行動だけではなく、ブログの内容に基づいた推薦が可能です 閲覧ブログの対象を広げて頂く事で、ブログのメディア価値を高めることができます ご参考:プレスリリース サイバーエージェント様: http://www.cyberagent.co.jp/news/press/2009/0203_1.html IBM: http://www-06.ibm.com/jp/press/2009/02/0301.html 15 © 2009 IBM Corporation IBM Research - Tokyo TENAアプリケーション① ブログ・サポーター ブログの読者を、そのブログへの熱心度/忠誠度など様々な観点からスコア付けし、ブロ グのサポーター(熱心な読者)を算出します テキスト分析 ブログ筆者と読者の近さに基づくランキング ブログ筆者と読者の近さに基づくランキング •ブログとコメントを含まれるキーワードからモデル化 •ブログとコメントを含まれるキーワードからモデル化 して比較 して比較 •ブログの文体・文字種等を用いて特徴をモデル化し、 •ブログの文体・文字種等を用いて特徴をモデル化し、 一般的なブログと比較 一般的なブログと比較 ネットワーク分析 読者の行動分析に基づくランキング 読者の行動分析に基づくランキング •閲覧・コメント・訪問お知らせ等の回数と時刻を考慮 •閲覧・コメント・訪問お知らせ等の回数と時刻を考慮 して読者の熱心度を計算 して読者の熱心度を計算 •ブログを読んでコメントしている読者を上位に、アフィリエイト •ブログを読んでコメントしている読者を上位に、アフィリエイト やスパムと推察される読者を下位とすることが可能 やスパムと推察される読者を下位とすることが可能 16 © 2009 IBM Corporation IBM Research - Tokyo ブログサポーター実施例: -アメーバブログ様におけるブログサポーター - アメーバブログ様の「芸能人・有名人ブログ」 に対して、TENA ブロ グサポーターアプリケーションを用いてブログサポーターを抽出して います ブログサポーターアプリが出力したブログサポーターのうち、スコア の高い上位5件を表示します – サポーターはその芸能人・有名人に対して「読者」と呼ばれる機 能に登録をしているユーザーの中から選ばれます – 1日ごとに5人出力されます。1日に表示される5人は、表示のリ クエスト毎に表示順を変化して表示します 各「芸能人・有名人ブログ」のトップページ内、「このブログの読者」の 下に、ブログサポーターのハンドルネームが表示されます – ハンドルネームをクリックすることにより、そのブログサポーター のプロファイルページに移動します。これにより、閲覧中のユー ザーがブログサポーターと交流することが可能になります – 閲覧中のユーザーのログイン有無に依らず表示されます – 右図は一例です。芸能人・有名人ブログの画面レイアウトによっ て表示のされ方が異なります ※画面は「渋谷ではたらく社長のアメブロ」( http://ameblo.jp/shibuya/ ) 2009年 4月20日11時時点のものです 17 © 2009 IBM Corporation IBM Research - Tokyo TENAアプリケーション② ブログ推薦 ユーザーの行動(ブログの作成・閲覧)に基づき、ユーザーが興味が あると予測されるブログのリストをスコア付けで提供します テキスト分析 ネットワーク分析 コンテンツに基づく推薦 コンテンツに基づく推薦 行動に基づく推薦 行動に基づく推薦 •• 推薦対象のブログおよびユーザーの興味を、ブログに 推薦対象のブログおよびユーザーの興味を、ブログに 出現するキーワードを用いてモデル化 出現するキーワードを用いてモデル化 •• ユーザーとブログを「読んだ」という行動でリンクし、 ユーザーとブログを「読んだ」という行動でリンクし、 ネットワークとする ネットワークとする •• そのネットワーク上で、あるユーザーが「たどり着き そのネットワーク上で、あるユーザーが「たどり着き やすい」ブログを推薦する やすい」ブログを推薦する •時間軸を加味することにより、長期的・短期的な興味のモデ •時間軸を加味することにより、長期的・短期的な興味のモデ ルを作成可能 ルを作成可能 •• それらの一致度により、推薦するブログとスコアを決定 それらの一致度により、推薦するブログとスコアを決定 •ユーザーの書いた・読んだ履歴から推察される興味と関連 •ユーザーの書いた・読んだ履歴から推察される興味と関連 した内容のブログを推薦可能 した内容のブログを推薦可能 •読んだブログが似ているユーザーが読んだブログを推 •読んだブログが似ているユーザーが読んだブログを推 薦するとともに、さらに、そのユーザーと似ている別の 薦するとともに、さらに、そのユーザーと似ている別の ユーザーが読んだことが可能 ユーザーが読んだことが可能 推薦対象 ユーザー 推薦対象 ユーザー 推薦 My Blog My Blog My Blog 嗜好を推定 推薦 推薦 My Blog My Blog My Blog 読んだブログ記事 18 My Blog 書いたブログ記事 © 2009 IBM Corporation IBM Research - Tokyo ブログ推薦実施例: -アメーバブログ様におけるブログ推薦1日ごとに、ログインユーザーに対して「オ ススメブログ」としてブログ推薦の結果を提 示します – ログインページ(アメーバブログ「マイ ページ」)内、画面中央下にリンクを表 示します。ここがクリックされるとタイト ルを3件表示します – タイトルはそれぞれのブログのトップ ページにリンクされています すべてのユーザーに推薦結果を出すわけ ではありません – 分析前日のユーザーの活動度(ブログ の執筆・閲覧などの行動の数)の高い ユーザーに対して、ブログ推薦は推薦 結果を出します – 活動度の低かったユーザーには、前 日までのそのユーザーの推薦結果、 またはその日のブログのアクセスラン キング上位が表示されます 「オススメのブログを見る」 をクリック ※画面は弊社社員のアメーバIDでログインしたページの2009年4月20日11時 時点のものです 19 © 2009 IBM Corporation IBM Research - Tokyo アプリケーション導入の効果:ブログサポーター - 主観評価 アクセスランキング上位の有名人のブログサポーターの上位のプロファイルページおよびブログ ページを参照し、当該有名人のファンであるか主観的に判定を致しました(弊社研究員によって実 施) – 上位N人のうち、プロファイルページ及びブログにより明示的にその有名人のファンであるとわ かるユーザーを判定し、その割合を精度としました 精度において、男性有名人と女性芸能人には顕著な差が見られました – 男性芸能人、特に男性アイドルに関してはいい結果となりました – 女性芸能人、公に見える情報(プロファイル、ブログ)に女性芸能人のファンであることを示さな い傾向にあるようです 女性芸能人 (アイドル) 男性芸能人 (俳優・アイドル) 男性芸能人 (俳優・歌手) 男性芸能人 (ミュージシャン) 上位5人 0.60 1.00 1.00 0.80 上位10人 0.50 1.00 0.90 0.70 上位20人 0.47 0.80 0.95 0.84 *評価の時点で存在しないページは除き精度を出しています 20 © 2009 IBM Corporation IBM Research - Tokyo アプリケーション導入の効果:ブログサポーター -アメーバブログユーザーからの評価 •「ブログサポーター」について、サービス開始約2週間でアメーバブログ 上に826件の書込みがありました 評価表現の存在した文書 •評価表現抽出技術を用いて評価したところ、ブログサポーターサービ 355件の内訳 スについて書かれた記事のうち、75%のブログに好評表現が多く見ら 不評表現のみ れました 51件 不評表現が多い 24件 実際のブログのコメントの例 昨日、会社から帰ってPCから成実様のブログを拝 見して・・5人の読者のHNが載っていて、そのうち の一人が自分のHN(上から2番目)だったのでびっ くりしたよ。でも、成実様のサポーターとして自分の HNが載っていたのを確認できて、嬉しかったな 何ですかコレ『ブログサポーター』いつからこんなシ ステムが!サ・・サポーター(Ω;) (Ω;) (Ω;) あの~・・(^▽^;) 私なにも・・・ (^▽^;) (^▽ ^;) でも大歓迎です\(-^□^-)/ 興奮し過ぎ て手汗が 眠気なんて吹っ飛びました。勉強終わっ ても眠れないかも。布川サンへ サポーターと認 めて頂きありがとうございます これからもサポー トさせてください たいして何もできないかもしれま せんが、精一杯の努力は致します 今後ともよろ しくお願いします。 21 好評表現が多い 41件 好評表現のみ196件 好評表現内訳 嬉しい 90件 良い(いい) 評価表現抽出 ・評判分析 – – – – 44件 そのほかの表現(~10件) 光栄です 面白い 有効です 気に入った © 2009 IBM Corporation IBM Research - Tokyo アプリケーション導入の効果:ブログ推薦 - サイバーエージェント様社員による主観評価 テキスト分析による推薦、ネットワーク分析による推薦、2分析を統合した分析(テキスト・ネットワーク統合分析)の うち、どの分析が主観的に優れているか評価を行いました – サイバーエージェント様の社員28人を対象として、主観調査を行って頂きました – 実際の行動情報を利用した3種類の推薦リストをお見せし、 「内容を詳しく読んでみたい」ブログ、「推薦結果と して提示されると不快なブログ」に分類して頂きました テキスト・ネットワーク統合分析の制度が他の2種類の分析の精度を上回っていることが分かりました – 平均精度、上位N件の精度ともに上回っています 行動回数の少ないユーザーについては、いずれの手法でも精度が低い可能性があることが分かりました – 推薦表示は、ある程度行動を行っているユーザーに対して行うほうがよいという判断につながりました 平均精度 精度(上位3件) 精度(上位10件) 精度(上位20件) 0.35 0.3 0.25 0.2 0.15 0.1 0.05 過去1週間の記事書込+閲覧回数が 過去1週間の記事書込+閲覧回数が 上位200,000人以内のユーザーでの平均 上位200,000人以内のユーザーでの平均 過去1週間の記事書込+閲覧回数が 過去1週間の記事書込+閲覧回数が 上位400,000人以内のユーザーでの平均 上位400,000人以内のユーザーでの平均 0 テキスト + ネットワーク 22 ネットワーク テキスト テキスト + ネットワーク ネットワーク テキスト © 2009 IBM Corporation IBM Research - Tokyo アプリケーション導入の効果:ブログ推薦 - クリックログ解析による評価 ブログ推薦による推薦結果を表示したユーザーと、アクセスランキングを提示したユーザーにつ いて正規化クリック率**の比較を行いました – ブログ推薦アプリケーションでは、前日の行動回数の上位20万人に対して分析を行い、上 位3件を結果として提示しています。結果の出ないユーザーに関しては、当日のアクセスラン キングの上位3件を表示しています。 その結果、推薦結果を提示したユーザーの方が、アクセスランキングを提示したユーザーより、 およそ6倍クリックが多いことが分かりました 提示ユーザー数 クリック数 (1日あたりの平均*) (1日あたりの平均*) 正規化クリック率* ** アプリによる推薦結果を 提示したユーザー 198,982 1154 0.126 [%] アクセスランキングを 提示したユーザー 79,097 約6倍 77 0.0204 [%] *2009年4月9-16日のデータから、推薦結果が更新されなかった12・13・16日を除外した5日間の平均を算出 **正規化クリック率=提示した3件の中でクリックされた数÷提示件数(3件)で算出 23 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA -本日のアジェンダ- 1. テキスト・ネットワーク分析技術(TENA)概要 2. TENAアプリケーション 1. サイバーエージェント様事例 1.ブログサポーター 2.ブログ推薦 2. TENAとテキストマイニング技術の融合: InnovationJam分析 3. TENA実装詳細 1. TENAデータ構造 2. TENAコモンストア API例 3. TENAコモンストア 実装 4. おわりに 24 © 2009 IBM Corporation IBM Research - Tokyo TENAアプリケーション: InnovationJam分析 - JASMIN (Jam Analysis and MINing System) IBMでは大規模なオンラインディスカッションを継続的に行っています。 – 参加者は全世界の社員や社員の家族、そしてお客様。 – 2008年のInnovationJamでは、5日間で、9万回のログイン、3万2千件のポストが寄せ られました InnovationJam分析アプリケーションJASMINは、このような大規模なオンライン・ディス カッションへの参加や分析を支援するアプリケーションです – しばらく間をおいて参加したときに、今の議論のトレンドを知りたい – 検索は一つ一つの発言ではなく、話題単位で行いたい – スレッドには複数の発言(posting)があり、大量にあると順番に見ていくのが大変 解決策として以下の機能が提供されています – 話題となっているスレッドやキーワードを表示するインターフェースの提供 – スレッドの検索機能の提供 – 重要な発言を抽出し、スレッド内の発言を概観できるようなインターフェースの提供 JASMINにはTENAの技術のほかに、IBMのテキストマイニング技術であるIBM TAKMIの 技術が使われています 25 © 2009 IBM Corporation IBM Research - Tokyo JASMIN 機能紹介: Thread Overview - TENA APIを用いて「参加者から指示された意見」を発見する - このスレッドに書き込 んでいる人が他のど んなスレッドに書き込 んでいるかを表示 →お勧めスレッド ノードクリックで詳細表示 発言をノード、返答関係をリン クとするグラフ表示 ノードにマウスオーバーすると 中身を表示 ノードの大きさはスレッド内 での重要度を示す 26 ノードダブルクリックでJamシ ステムへジャンプ © 2009 IBM Corporation IBM Research - Tokyo JASMIN 機能紹介: 重要発言判定 - TENA APIを用いて「参加者から指示された意見」を発見する - 賛成! 賛成! 27 コンテンツに対する人の行動履歴は多くの知 識を含んでいます – 掲示板である発言に返答が集まっていれ ば、その発言は「注目されている」という意 味で価値があるといえます また、コンテンツの返答に含まれているテキス トには、そのコンテンツに対する評価も多く含 まれています – 発言に対する返答(賛成!反対!) これらの「行動」と「テキスト」をあわせることで コンテンツである「発言」の価値を求めることが できます – 多くの人から返答され「賛成」された発言 は重要な発言 © 2009 IBM Corporation IBM Research - Tokyo ご参考: 重要発言スコア計算手法 「賛成」「賛同」「反対」「提案」などの意見表現をコンテンツから取得する 意見表現に基づき、以下の値を決定する コンテンツに基づく発言の価値(「提案」などがあれば高い) 親発言に対する賛同度(「賛成」は正、「反対」は負の値) それらの値から再帰的に発言の価値を計算 伝播係数a=0.8 1 賛成 S2=1 C2=3.24 R42=1.0 R21=1.0 R31= -1.0 2 28 Ci = Si + a × ∑ C j × R ji 反対 j R52=1.0 4 S4=1 C4=S4=1 発言 i 自身の価値 Si 発言iから発言jへの価値の付与 Rji 発言iの最終的な価値 Ci S1=1 C1=0.232 5 S5=1 C5=1.8 3 R63=1.0 R95=1.0 R73=1.0 SiとRijは発言i中にある意見表現によって決定 発言iの重要度Ciは返答文書の末端から最初の発言に 向かって再帰的に計算 S3=1 C3=4.2 R83=1.0 9 6 7 8 S9=1 C9=S9=1 S6=1 C6=S6=1 S7=1 C7=S7=1 S8=2 C8=S8=2 提案 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA -本日のアジェンダ- 1. テキスト・ネットワーク分析技術(TENA)概要 2. TENAアプリケーション 1. サイバーエージェント様事例 1.ブログサポーター 2.ブログ推薦 2. TENAとテキストマイニング技術の融合: InnovationJam分析 3. TENA実装詳細 1. TENAデータ構造 2. TENAコモンストア API例 3. TENAコモンストア 実装 4. おわりに 29 © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストア データ構造 - グラフ構造に対する効率的なアクセス TENAコモンストアには人、コンテンツが、関係や行動とともに抽象化されたネットワーク構造として蓄積されて います – ノードは、人やコンテンツだけではなく、ファイル、コミュニティ、所属組織なども表します • ノードには人名などの定型情報だけではなく、コンテンツのテキストを自然言語処理した結果(キー ワード、評判分析結果、意見分析結果など)が付与されます – リンクには以下の3種類があります • 状態を表すリンク • 行動を表すリンク • 関係を表すリンク 30 © 2009 IBM Corporation IBM Research - Tokyo 基本オブジェクト: ノードとリンク - 人やコンテンツを表すノード、状態・関係・行動を表すリンク ノードは人、ブログ記事、組織などを表し、グラフ中では頂点となります ノードが持つ情報は以下のとおり: – ID : String ( 一意に識別をするためのもの) – Type : String ID: P_01234 Type: Person Timestamp:20090401 Name:Ichiro Dept:Sales. Insurance • Ex. Person, File, Organizationなどノードのタイプを示すもの – Timestamp : Date • (主に)ノードの作成された時刻を保持します – Attributes : 任意のString name-valueペア • 例. (“author”, “Ichiro”), (“filename”, “minute.txt”) • ひとつのnameに対して複数のvalueを許します リンクは状態、関係、行動を表し、グラフ中では有向なエッジとなります リンクが持つ情報は以下のとおり: – Type : String • Ex. Write, Read, IsFriend,Own …といった行動や関係を示します – FromNodeId : String • このリンクの参照元を示します – ToNodeId : String • このリンクの参照先を示します – Timestamp : Date – Attributes :任意のString name-valueペア • Timestamp、 Attributesともにノードと同じです 31 Type: Write FromNodeId: P_01234 ToNodeId: M_98765 Timestamp:20090914 ID: M_98765 Type: Minute Timestamp:20090914 Filename:minute.txt Title:Discussion on the project X Keyword:DB2 Keyword:XML Keyword:Delay © 2009 IBM Corporation IBM Research - Tokyo データ構造例: ノードタイプ・リンクタイプ - ブログにおけるデータ構造例 - 32 © 2009 IBM Corporation IBM Research - Tokyo データ構造例: 属性(attributes) - ブログにおけるデータ構造例 - 33 © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストアAPI例 -TENAコモンストアにおける基本クエリ TENAコモンストアでは以下の基本クエリでノード・リンクの情報を取得します – getNode(String id) • 与えられたidのノードを返します – getOutLinks(String nodeId) • 与えられたidのノードのoutlinkを返します XのInlink – getInLinks(String nodeId) • 与えられたidのノードのinlinkを返します ノード X – iterator(NodeQuery) • 与えられたノードの条件(NodeQueryで示します)を満たすノードのリストを返します XのOutlink – iterator(LinkQuery) • 与えられたリンクの条件(LinkQueryで示します)を満たすリンクのリストを返します – getNumberOfNodes(), getNumberOfLinks() • TENAコモンストア内のノード数、リンク数を返します – getLatestTimestamp(), getOldestTimestamp() • TENAコモンストア内の最新のタイムスタンプ、最古のタイムスタンプを返します 実装によっては以下のメソッドもサポートされます – – – – 34 addNode(Node), addLink(Link) deleteNode(String), deleteLink(String, String) deleteLinkByFromNode(String), deleteLinkByToNode(String) commit(), rollback() © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストアAPI:データ構築例 import com.ibm.tena.store.impl.lucene.LuceneCommonStore; import com.ibm.tena.impl.NodeImpl; import com.ibm.tena.impl.LinkImpl; ID: P_01234 Type: Person Timestamp:20090401 Name:Ichiro Dept:Sales. Insurance // Specifies the directory for Lucene index. LuceneCommonStore commonStore = new LuceneCommonStore(new File("C:/data/commonstore"); // RdbCommonStore is also available in the following code. SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyyMMdd"); // Creates a node NodeImpl node = new NodeImpl(); node.setId("P_01234"); node.setType("Person"); node.setTimestamp(dateFormat.parse("20090401")); node.getAttributes().addAttribute(("Name", "Ichiro")); node.getAttributes().addAttribute(("Dept", "Sales. Insurance")); Type: Write FromNodeId: P_01234 ToNodeId: M_98765 Timestamp:20090914 // Adds a node to the CommonStore commonStore.addNode(node); // Issues commit if you want to reflect the change to the CommonStore immediately commonStore.commit(); // Creates a link LinkImpl link = new LinkImpl(); link.setFromNodeId("P_01234"); link.setFromNodeType("Person"); link.setToNodeId("M_98765"); link.setToNodeType("Minute"); link.setType("Write"); link.setTimestamp(dateFormat.parse("20090914")); // Adds a link to the CommonStore commonStore.addLink(link); 35 ID: M_98765 Type: Minute Timestamp:20090914 Filename:minute.txt Title:Discussion on the project X Keyword:DB2 Keyword:XML Keyword:Delay © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストアAPI:クエリ例(1) import import import import com.ibm.tena.store.CommonStore; com.ibm.tena.Node; com.ibm.tena.Link; com.ibm.tena.TenaObjectIterator; ID: P_01234 Type: Person Timestamp:20090401 Name:Ichiro Dept:Sales. Insurance // Omitted the initialization step of CommonStore CommonStore commonStore; // Obtains outlinks for a specific node Link[] outLinks = commonStore.getOutLinks("P_01234"); for (Link link : outLinks) { // Obtains the end point node of each outlink Node contentNode = commonStore.getNode(link.getToNodeId()); // Obtains attributes from each node String contentId = contentNode.getId(); List<String> keywordList = contentNode.getAttribute().get("Keyword"); } // Obtains all of the nodes in the store. // It may take much time TenaObjectIterator<Node> nodeIt = commonStore.iterator(Node.class); while (nodeIt.hasNext()) { Node node = nodeIt.next(); // Do something } // Be sure to call close for each iterator. nodeIt.close(); // Be sure to close the CommonStore. commonStore.close(); 36 Type: Write FromNodeId: P_01234 ToNodeId: M_98765 Timestamp:20090914 ID: M_98765 Type: Minute Timestamp:20090914 Filename:minute.txt Title:Discussion on the project X Keyword:DB2 Keyword:XML Keyword:Delay © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストアAPI:クエリ例(2) import import import import com.ibm.tena.store.CommonStore; com.ibm.tena.Node; com.ibm.tena.Link; com.ibm.tena.TenaObjectIterator; ID: P_01234 Type: Person Timestamp:20090401 Name:Ichiro Dept:Sales. Insurance // Omitted the initialization step of CommonStore CommonStore commonStore; // Creates a query for retrieving nodes NodeQuery nodeQuery = new NodeQuery(); nodeQuery.setType("Person"); nodeQuery.getAttributes().addAttribute("Sales. Insurance"); TenaObjectIterator<Node> nodeIt = commonStore.search(nodeQuery); while (nodeIt.hasNext()) { Node node = nodeIt.next(); // Do something } nodeIt.close(); // Creates a query for retrieving links LinkQuery linkQuery = new LinkQuery(); linkQuery.setFromNodeId("P_01234"); linkQuery.setToNodeId("M_98765"); TenaObjectIterator<Link> linkIt = commonStore.search(linkQuery); while (linkIt.hasNext()) { Link link = linkIt.next(); // Do something } linkIt.close(); // Be sure to close the CommonStore. commonStore.close(); 37 Type: Write FromNodeId: P_01234 ToNodeId: M_98765 Timestamp:20090914 ID: M_98765 Type: Minute Timestamp:20090914 Filename:minute.txt Title:Discussion on the project X Keyword:DB2 Keyword:XML Keyword:Delay © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストアAPI:利用例 - ブログサポーターにおけるクエリ利用例 コメントに関するブロガーAのサポーター度を計算します ノードのOutlink,Inlink取得により該当ノードを取得し、ノードの属性情報(タイムスタンプ、キー ワード)とあわせてブログサポーター度を計算します 書く コメントB 読者B コメント 書く ブロガーA ブログ コンテンツ A コメント 書く コメントC 読者C コメント ブログAとコメントDの時刻、 およびキーワードの重なりから ブロガーAに対する読者Dのサポー ター度を計算 38 書く コメントD 読者D © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストア:実装 - 用途によって選択可能な3つの実装 TENAコモンストアはグラフ構造に対する効率的なアクセスを可能にするAPIを提供します 用途によって選択可能な3つの実装があります 聴いた 読んだ 前処理 (言語処理) 書いた TENAコモンストア 購入した 39 による実装 分析機能 ブログ サポーター 機能 ブログ推薦 機能 結果 サービス等 として ブログ サイトへ … RDBによる実装 Apache Lucene 分析フレームワーク 聴いた 簡潔データ構造 (Succinct Data Structure) による実装 © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストア:RDB実装とApache Lucene実装 ※図は実装の概念を示したものです Node表 RDB実装 – – – – 関係データベースのテーブル構造に、ノードとリンクの 関係を保持します コモンストアへのクエリはSQLに変換されて実行され ます RDBの持つトランザクション機能(commit/rollback)が そのまま活用されています。データの更新も即時に行 えます インデックス構築時間や検索時間は Apache Lucene 実装より遅い傾向にある(注)ため、更新が頻繁に発生 する比較的小規模のデータに向いています ID TYPE TIMESTAMP P_12345 Person 20090401 M_98765 Minute 20090914 : : : Link表 TYPE FROM TO TIMESTAMP Write P_12345 M_98765 20090914 : : (注)実行時間はRDBのチューニングに大きく依存します : ※図は実装の概念を示したものです KEY Apache Lucene 実装 – – – オープンソースの全文検索エンジンライブラリである Apache Lucene のインデックス構造を利用して、ノード やリンクの検索をサポートします 検索エンジンの機能を利用して、ノードやリンクの属性 に対する複雑な検索が可能です インデックス構築時間・検索時間ともに、RDB実装に比 べて高速です M_98765 Type:Minute Timestamp:20090914 … … … … : … : … … P_12345 … : : : Type:Person Timestamp:20090401 KEY FROM:P_12345 Type:Write Timestamp:20090914 … : 40 © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストア:簡潔データ構造による実装 データへの高速アクセスのためには、メインメモリにインデックスを保存する必要があります しかし、一般的にブログなどのソーシャル・コンピューティングのデータは、人ノードだけで数万、ブログ などのコンテンツも含めると数百万のノードとなります – これらのインデックスは数十GBとなり、メモリに格納することは困難です メモリ上への効率的に格納する方法として簡潔データ構造を用います – 簡潔データ構造は圧縮したままの状態での検索等を実現するものであり、検索にかかる計算量 は非圧縮時と同等です – グラフ構造におけるリンクの構造のみ保持し、そのほかのクエリーは別実装で対応します メインメモリ上 A Common Store A B 3 A 簡潔データ構造 に変換 E 0 C 6 2 5 1 C D E 4 D HDD上でこのネットワークにランダムアク セスすると 5-10 msかかります 41 B ⎛0 ⎜ ⎜0 ⎜0 ⎜ ⎜0 ⎜0 ⎝ B C D ネットワーク の簡潔データ 構造 E 1 0 11 0 0 ⎞ ⎟ 0 0 12 13⎟ 0 0 1 4 •高速ランダムアクセス 0⎟ (<< 1ms). ⎟ •少ないメモリ使用量. 0 0 0 •多彩なAPIをサポート: 15⎟ 0 0 1 6 無0 ⎟⎠existLink(u,v): ノードuからノードvへのリンクの有 getOutLinks(v): ノードvのアウトリンクの取得 getInLinks(v):ノードvのインリンクの取得 getLinkId(e): IDの取得 getLink(id): 指定されたIDのリンクを取得 … © 2009 IBM Corporation IBM Research - Tokyo TENAコモンストアの実装によるパフォーマンス比較 -用途によって利用する実装を選択可能 - Lucene 簡潔データ構造 インデックス作成 のパフォーマンス ☺ N/A (他のCommonStore から構築します) クエリのパフォー マンス ☺ ☺☺☺ RDB 42 (いくつかのクエリはサ ポートされません) (グラフ構造に関する クエリのみサポート) ノード/リンクの逐 次追加 ☺ ☺ N/A ノード/リンクの更 新 ☺☺ ☺ N/A (トランザクション管理 をサポート) © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA -本日のアジェンダ- 1. テキスト・ネットワーク分析技術(TENA)概要 2. TENAアプリケーション 1. サイバーエージェント様事例 1.ブログサポーター 2.ブログ推薦 2. TENAとテキストマイニング技術の融合: InnovationJam分析 3. TENA実装詳細 1. TENAデータ構造 2. TENAコモンストア API例 3. TENAコモンストア 実装 4. おわりに 43 © 2009 IBM Corporation IBM Research - Tokyo テキスト・ネットワーク分析技術:TENA - 様々なビジネスの場に展開 コミュニティを活かした コミュニティを活かした 効果的なマーケティング・販促 効果的なマーケティング・販促 オンライン上でのアイディア創出 オンライン上でのアイディア創出 インフルエンサー 新事業・サービスの 企画 TENA 嗜好が似ている顧客を特定・ 嗜好が似ている顧客を特定・ 顧客参加型の共同商品開発 顧客参加型の共同商品開発 テキスト マイニング 新商品の開発 例) スポーツカー好きの グループ 44 © 2009 IBM Corporation