Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

pixivのタグ情報+cytoscape+PHPで、「魔法少女まどか☆マギカ」をネットワーク分析

3,019 views

Published on

Network Analysis used cytoscape about Madoka Magica.

Published in: Technology
  • Be the first to comment

pixivのタグ情報+cytoscape+PHPで、「魔法少女まどか☆マギカ」をネットワーク分析

  1. 1. 魔法少女まどか☆マギカを ネットワーク解析するまで 立ちマミさん(yもも氏) pixivイラストID:45063978
  2. 2. 目次 はじめに プログラム編 • 情報収拾の流れ • pixivイラスト検索API • pixivイラスト検索APIのデー タ構造 • プログラムでpixiv APIを読み 込む • PHP側の準備(1)〜(4) cytoscape編 • ソフトウェア「cytoscape」 • cytoscapeを起動 • Cytoscapeでグラフを描画 • Cytoscapeのグラフのデザイ ン 結果発表 • 結果発表(1)〜(2) • 謝辞 • 参考にしたWebサイト グラフ編 • グラフとは? • グラフ基礎知識(1)〜(2)
  3. 3. はじめに • 本スライドの対象 – データマイニング、機械学習、自然言語処理など を始めたい人 – pixiv APIの使い方が分からない人 • 本スライドの趣旨 – 「ネットワーク分析」と言う技術を題材に、 pixivイラスト検索APIの活用法を説明 – pixiv APIをExcelなどで使うためのテクニックを 収録
  4. 4. グラフ編 立ちマミさん(yもも氏) pixivイラストID:45063978
  5. 5. グラフとは? • 例えば上図においてA駅とB駅まで移動す る事を考える • A駅とB駅の曲がり具合は考えず、A駅とB 駅「つながり方」のみに注目 • このようにA駅とB駅のつながり方を図に した物をグラフと言う
  6. 6. グラフに関する基礎知識 • 一般にグラフG=(V,E)は節点Vの集合と 辺Eの集合からなる • 例えば右図のような場合、AからDを節 点、それらを結ぶ線の事を辺と呼ぶ 有向グラフ • 上図のように、各節点対(u,v)において方向(矢印) が定められているモデル 無向グラフ • 各節点対(u,v)において方向を考えないモデル 辺と節点 グラフの種類
  7. 7. グラフに関する基礎知識(2) • 上図は重み付き有向グラフの一例 • 重み付き有向グラフは、例えば東京駅から新宿 駅まで、どのルートを通ると最短で移動できる かを調べる時などに用いられる 重み付き有向グラフ • 節点対(u,v)の関係に重みと呼ばれる数値が伴うモデル
  8. 8. プログラム編 立ちマミさん(yもも氏) pixivイラストID:45063978
  9. 9. 情報収拾の流れ • 3:保存したcsvを「Cytoscape」で読み込み、 ネットワークを作成してみる • 次のページでは、1,2を行うのに必須のpixiv イラスト検索APIについて説明する • 1:pixivイラスト検索APIでカップリングの組み合わせ20 通りの情報を取得 • 2:各組み合わせ300枚分の閲覧数の合計を計算し、csv に保存する • 下記の3つの手順により情報収拾を行う
  10. 10. pixivイラスト検索API • pixivの特定のイラストにおけるページ数や閲覧数の情報 がcsv形式でまとめられたもの • 以下のURLにアクセスするとcsvファイルを取得できる http://spapi.pixiv.net/iphone/search.php?&s_mode=s_tag&word =(A)%20&order=date&PHPSESSID=0&p=1 • ここでWebブラウザからアクセスすると以下の ように表示される
  11. 11. pixivイラスト検索APIのデータ構造 • pixivのイラスト検索APIのデータ構造の一部は以下 • 表作成にあたり「Pixivイラスト検索APIの取得結果のデータ 構造を調べる(nezuq氏:Qiita)」を抜粋 • http://qiita.com/nezuq/items/e4c55bb9c68bf5785e73 列の内容 列の内容 イラストID illust_id 使用ソフト tool_name 作者ID user_id 評価回数 evaluate_cnt 拡張子 extension 総合点 evaluate_sum タイトル title 閲覧数 view_cnt サーバ番号 server_no キャプション caption 作者名 user_name ページ数 page_cnt 128*128画像のURL Illust_128_url 作者ID(表示名) user_disp_id 480mw画像のURL Illust_480mw_url R18フラグ r18_flg 投稿日時 Illust_entry_dt 作者画像URL user_url タグ tags
  12. 12. プログラムでpixiv APIを読み込む • pixivのイラスト検索APIは、Python、R、PHPの 各言語から呼び出す事ができる • インターネットでは以下が主に使われている – R + igraphに依る方法 – Python + NetworkXに依る方法 • そこで本記事ではPHP + Cytoscapeを用い た方法を紹介
  13. 13. PHP側の準備(1):状況の確認 • 下は「まどほむ」タグにおけるAPI • 上の(23019)と言った、閲覧数の合計を 抽出 • この23019が、左から数えて何番目かを 確認
  14. 14. PHP側の準備(2):API呼び出し $view_cnt = 0; $pixiv_url =<APIのURL>; $pixiv_csv = file_get_contents($pixiv_url); まずpixiv APIのcsvファイルをfile_get_contentsで取得 $pixiv_csv_row = explode(“n”, $pixiv_csv); for($k=0;$k<count($pixiv_csv_row);$k++) { $pixiv_csv_col = explode(",", $pixiv_csv_row[$k]); $view_cnt += str_replace('"',’’$pixiv_csv_col[17]); } 次に取得したcsvファイルから合計を算出 行と列との分離にexplode
  15. 15. PHP側の準備(3):csvに出力 • 次に項目(フィールド)の順番に注意 – Cytoscapeの場合 [(節点の)矢印の始点、矢印の終点、重み]の順 – フィールドの順番は予め確認しておく • 最後に文字コードに注意する – mb_convert_encodingの第二引数はコンフィグで変え られるようにしておく – 文字コードはutf8が無難(Excelの場合ならSJIS) $csv_word .= mb_convert_encoding($character_name[$i],$character,"auto"); $csv_word .= ",".mb_convert_encoding($character_name[$j],$character,"auto"); $csv_word .= ",".$view_cnt."n"; • csvに出力する場合、以下のようにcsvのデータ格納用の変 数($csv等)を用意しておく
  16. 16. PHP側の準備(4):補足 • ソースコードの全容を見たい方は https://gist.github.com/ryuichi69/25d58a6aef40cbe7d508 • csvをPHPの配列に格納する方法が分かりにくい 場合は http://lmaker.blog17.fc2.com/blog-entry-62.html
  17. 17. cytoscape編 立ちマミさん(yもも氏) pixivイラストID:45063978
  18. 18. ソフトウェア「cytoscape」 • Cytoscapeとはネットワーク分析を行なう 為のソフト • ソフトのインストールは http://www.cytoscape.org
  19. 19. cytoscapeを起動 • まず「File」→「Session」を選択 • 次にメニュー3番目 「Import Network From File」を 選択し、csvを読み込む • csvを読み込むとInteraction Difinitionが登場 • 上において • Source Interactionに矢印の始点の節点 • Interaction Typeにグラフの重み • Target Interactionに矢印の終点の節点 にあたるcsvの列を選択
  20. 20. Cytoscapeでグラフを描画 • グラフのレイアウトを変えたいときはメニュー の「Layout」 • 自分は「Degree Sorted Circle Layout」を良く使 う • 選択後、右図のようにグラフの形状が変化
  21. 21. Cytoscapeのグラフのデザイン • グラフの「Control Panel」では図の微調整が可 能(左図) • このとき一番上のバーを選択すると、グラフの デザイン例を選ぶ事が可能(中図) • 最終的にレイアウト変更ができた(右図)
  22. 22. 結果発表 立ちマミさん(yもも氏) pixivイラストID:45063978
  23. 23. 結果発表(1) • 各カップリング毎の投稿数を下表にまとめる • 「まどほむ」「ほむまど」等順序が違う場合も別々 に集計 • 閲覧数累計50万以上の組み合わせは以下の通り 「まどほむ」「ほむまど」「マミほむ」「ほむマミ」「マミ杏」 「さや杏」「杏さや」「さやまど」 まど ほむ さや 杏 マミ まど 0 1,311,188 458,567 52,353 420,492 ほむ 1,428,102 0 715,201 230,813 1,127,690 さや 621,758 800,636 0 732,965 343,152 杏 330,751 300,852 844,842 0 361,395 マミ 553,836 1,117,441 572,302 517,635 0
  24. 24. 結果発表(2) • 最後にcytoscapeでネットワーク図を作ったものを公開 • まどほむのカップリング熱が高いのが一目で分かる
  25. 25. 謝辞 本スライド作成にあたって協力して下さったすべての方に 感謝申し上げます。 スライドのイラスト 立ちマミさん(yもも氏):pixivイラストID:45063978 Qiita Pixivイラスト検索APIの取得結果のデータ構造を調べる (nezuq氏) http://qiita.com/nezuq/items/e4c55bb9c68bf5785e73
  26. 26. 参考になったWebサイト(1) pixivのタグ頻度から考えるラブライブのカップリング 驚異のアニヲタ社会復帰への道 http://d.hatena.ne.jp/MikuHatsune/20130905/1378299747 pixiv のタグ情報を用いた「ラブライブ! School idol project」の カップリングネットワークの構築 (iwi) 備忘録 http://iwiwi.hatenadiary.jp/entry/2014/06/28/003736 【Python】【pixiv】pixivAPIから、アニメキャライラストのタグデータを csvで出力する 歩いたら休め http://kiito.hatenablog.com/entry/2013/11/26/212139
  27. 27. 参考にしたWebサイト(2) 【D3.js】Gunma.webのソーシャルグラフ作ってみた。 GUNMA GIS GEEK http://shimz.me/blog/node-js/2701 csvを配列に格納する方法・二次元配列 [csvを配列に格納して表示する] 忘却のWEBプログラマー人生辞書 http://lmaker.blog17.fc2.com/blog-entry-62.html Cytoscape J http://cytoscape.wordpress.com/
  28. 28. ご清聴ありがとうございました 立ちマミさん(yもも氏) pixivイラストID:45063978

×