十五夜のブロマガ

データ解析できるかな(2):データ取得と初期データ解析

2013/08/14 02:35 投稿

  • タグ:
  • プログラミング
  • データマイニング
  • 腐女子
  • pixiv

お盆ですね。みなさまいかがお過ごしでしょうか?せっかくのお休み期間なので、前回「データ解析できるかな(1):プログラムを読んで動かしてみる」の続きをやって遊んでしまいました。いやあ、プログラミングって楽しいですね。って最後の方はデータ整理ばかりしてましたが。

さて、pixivのAPIは有志が(だいぶ前に)調べたものがネットに以下のように存在します。

  1. iPhone向けpixiv API by moyashi
  2. Pixiv APIについて

これらからいくつかの言語用のラッパー(ライブラリ)も作られています。

  1. pxv: A pixiv API wrapper for Java
  2. PixivAPIWrapper.NET

1のpxvというのは、Java言語のラッパーで、オープンソースです。オープンソースなのでコードは当然公開されており、ホスティングされているSourceForge.JPで閲覧することができます。2のPixivAPIWrapper.NETは.NET用のラッパーで、こちらもオープンソースで、ホスティング先はCodePlexとなってます。どちらでも、より読みやすい方を読んで参考にするといいかもしれません。最近更新されてないので、ちょっとコードが古いですけどね。

私がよく仕事で使う言語はJavaなので、1を書き換えて利用するということも考えましたが、Pythonの勉強もかねているので、とりあえず上の2つは参考にとどめることにしました。

ということで、ログインしてセッションIDを試行錯誤しつつ取得し(ヒント:クッキー)、4ページを超えてデータが取れるか試してみました。結果は、成功!ということで、本格的に全データの取得に取り掛かってみました。

全データの取得

まず、最初に結論を述べておくと、全データの取得はできませんでした。残念!

がーっと回してみたところ、本APIでアクセス可能なのは10000件(ページ数にして200ページ)までのようです。それを超えてアクセスしようとすると、最後のページが返ってくる、という仕様になっています。PCでの検索限界もチェックしてみましたが、こちらは1000ページ(1ページあたり20件)総計20000件が限度のようでした。なお、こちらを利用する場合はHTMLファイルの解析が必要となります。ですので、今回は一般タグである「TIGER&BUNNY」および腐向けタグ「T&B女性向け」をそれぞれなぜか9998件と10000件取得したものを対象にデータ分析をしてみることにしました。

なお、あんちべさんの解析でもそうだと思うんですが、ジャンルタグなしのもの、仲間内のみでの公開、すでに消したもの、などもそれなりに存在することが考えられるので、あくまで大雑把な解析となりますので、ご注意ください。まあ、こんな感じで解析できるんだねっていう感じで見てもらえれば。はい。

タグの抽出と名寄せ

APIで取得できるデータ形式はこちらのAPIのデータ解析にも書かれていますが、現在でも変わってないようです。タグは14番目に格納されており、複数のタグが半角スペースの区切りで並んでいます。これを、取り出して半角スペースで分割し、タグごとにその個数を数え上げるプログラムまでが、あんちべさんの記事に書かれていました。ので、そのまま利用してタグごとの個数を集計したCSVファイルを作成しました。

「TIGER&BUNNY」のタグによる抽出およそ1万件(9998件)に対して、タグは総数で5万件ほどに分割されました。元の件数が1万弱でしたので、大雑把に5個平均のタグがついていることになります。さて、これをエクセルを使って目視で第一弾の名寄せをおこなった結果が以下のようになります。

なお、名寄せは例えば「バーナビー・ブルックスJr.」については以下のように対応付けをおこなってからピボットテーブルで集計しました。しかし、5万件に対して目視でおこなったため、まだ漏れがあります。あとよくわからないものについて揺らぎが出たので、タグの名称にも揺らぎが発生しています。

よく見かけるもの(20件以上)は、愛称や略称での揺らぎで、


それ(20件)未満のものは、半角文字表記、英語表記、タイプミス、それらの混合によるものが多いようです。

また、以下のようなタグとしてはあまり付けられないはずの日付や時刻が混じっています。

これはおそらく、APIのデータでタグの前に格納されている投稿日時が分割されたものでしょう。例えばタイトルなどの項目内にエスケープされてないカンマ(,)が許されているという問題で、分割時に項目のずれがおこってしまっている可能性を示唆しています。ちなみに、18とか22とかいう数字については別の意味がありますが、また後ほど。

ということで、まだ名寄せ漏れがありますので、カテゴリとサブカテゴリを導入してカテゴリごとに確認して揺らぎを除いていきます。あんちべさんはこの辺を階層クラスタリングでやっておられましたが、最初の一歩的にドメイン知識を使ってごりごりやってみます。階層クラスタリングのお勉強はまた後ですることにしましょう。

メインカテゴリは「ジャンル」「登場人物」「作品タイプ」「イベント」「別作品」「評価」「不明」とし、このうち「評価」は感想を含んでいて量が多いので、「別作品」と一緒に除いておきます。

「ジャンル」カテゴリは当該作品内で、アニメ本編か、その後の派生作品(映画、舞台、ゲームなど)かを区別するタグです。なおこの時点で既にタグ「TIGER&BUNNY」が元のデータ数を超えてますが、検索用に類似のタグを指定するためだと思われます。この前段階では基本的に目視での表記揺らぎしか統合してないはずなので、表記揺らぎも多重になってる可能性があります。

前の目視チェックのデータを眺めてみると、数がオーバーしたのはT&Bを含有したためのようです。

このような略称を持つタグはこれ以外にも多くありますので、前処理時点で重複を除く処理をしておくと精度が上がると思われます。まあ、ここでは初期データ解析ですので、それは後の課題に置いておきつつ、先へ進めましょう。

もうひとつ問題として発見されたのが生き別れのタグです。何かというと、本来ひとつのタグなのに、おそらくはつけた人がよくわからずに空白を入れてしまい、別れ別れになってしまっているタグです。これが良く見られたのが「イベント」カテゴリです。例えば、有名な同人誌即売会として「SUPER COMIC CITY XX」(XXには回数が入る)というのがあるのですが、これをそのままタグとして入力してしまうと、「SUPER」「COMIC」「CITY」「XX」というように4つのタグとして認識されてしまいます。先ほど、18とか22とかいう数字がタグとして取り出されていたのは、このせいです。

以下がその生き別れになったと思われるタグたちの一部です。どこにどう押し込もうか悩んでしまいますよね。

類似のタグに「SKY HIGH」や「WILD TIGER」があります。最近はpixiv自体を日本人だけではなく外国人も使っているようですし、本作品は海外展開もしているため、英単語でタグを登録する方もおられるようです。しかし、この場合同様に生き別れてしまいます。

もちろん、全体として見れば1万件に対して10個未満程度づつの頻度ですので誤差として捨ててもいい気はします。が、多くなると面倒なので、これも前処理で除けるようであれば除いてしまうようTODOリストに入れておきましょう。

ということで、ひとまずサブカテゴリごとに集計をかけてみます。

なるほど、最近そのビジュアルが公開されただけの新キャラ「ライアン・ゴールドスミス」がすでに7位まで食い込んでいるところが面白いですね。なお、これはあくまで直近1万件(2013年3月以降約5か月分メインタグは「TIGER&BUNNY」)のデータ内での結果で、全体での結果ではないことにご注意ください。

というあたりでタイムアップしたので、その他の集計はまた後ほど~。


コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事