SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
しょぼいカレンダーから
アニメデータベースを作る
2015/7/22
kawasaki.rb #26
ぺけみさお
● ぺけみさお(xmisao)
● http://www.xmisao.com/
● プログラマ(Java屋さん)
● 趣味のRubyist
自己紹介
本日のテーマ
ぺけアニメデータベースの紹介をします
http://animedb.xmisao.com/
突然ですが
アニメがわりと
好きです
野望
アニメ
データベースを
作る
やりたいこと
● アニメとより深く向き合うために…
○ あるアニメと似ているかも
知れないアニメを探したい
○ あるスタッフ/キャストが携わった
アニメを一覧したい
データはどこから
手に入れる?
Wikipedia ?
● 情報量はすごい
● 基本的にマシンリーダブルではないため、
プログラムによる定型的な情報抽出が困難
しょぼいカレンダー
● http://cal.syoboi.jp/
● その筋では有名なアニメ情報サイト
● アニメの放送時間をリアルタイムに更新
(スポーツ中継もなんのその)
● 過去3,000タイトル以上の放送日時、
キャスト、スタッフ等の情報を蓄積
● APIでほぼ全ての情報が取得可能
○ アニメ自動録画システムfoltiaなど
マニアックな応用例あり
しょぼいカレンダー参照系API一覧
● cal_chk.php
● db.php
○ TitleLookup
○ ProgLookup
○ ChLookup
○ ChGroupLookup
○ TitleViewCount
○ TitleRankHistory
○ TitlePointHistory
○ TitlePointTop
● json.php
○ TitleMedium
○ TitleLarge
○ TitleFull
○ ProgramByPID
○ ProgramByCount
○ ProgramByDate
○ SubTitles
○ ChFilter
○ ChIDFilter
● rss.php
● rss2.php
しょぼいカレンダーAPIの特徴
● データのアクセスには寛容
○ ほぼDBのテーブルのような生データが取得可能
がんばれば主要なデータはまるまる抜ける
● 統一感のないAPI
○ クエリや出力のフォーマットがまちまち
プログラムで個々に対応する必要がある
● 一部データは正規化されていない
○ スタッフの名前と役職、キャストと配役は
プレーンテキストを解析してパースする必要あり
Rubyで
しょぼいカレンダー
からデータを
取得したい
(PythonやJuliaではありません
この会はkawasaki.rbです)
しょぼいカレンダーAPI
のRubyラッパGem
● r7kamura / syoboi_calendar
○ 2013/4/10公開
○ 7,176ダウンロード / 23,550位
○ 主要な4つのAPIに対応
○ いわゆるRubyっぽい書き方が可能
● xmisao / syobocal ←拙作
○ 2014/4/16公開
○ 508ダウンロード / 92,604位
○ 参照系の全20APIに対応
○ 愚直にAPIをラッピング
先行のsyoboi_calendarは対応APIが不足
かつポリシーがいまいち好みじゃなかったため開発
syoboi_calendarによるコード例
require "syoboi_calendar"
client = SyoboiCalendar::Client.new
client.channels #=> an Array of SyoboiCalendar::Resources::Channel
client.programs #=> an Array of SyoboiCalendar::Resources::Program
client.titles #=> an Array of SyoboiCalendar::Resources::Title
syobocalによるコード例
require 'syobocal'
params = {"TID" => "1"}
Syobocal::DB::TitleLookup(params)
#=> Title Information of TID = 1
アニメ
データベース
の作成へ
データベースの作成
しょぼいカレンダーより以下のDBを作成
● タイトル 3,862件
● スタッフ17,221名(*)
● キャスト 7,623名(*)
● タイトル間類似度 約15M 通りを計算
○ 共通のスタッフとキャストの数を類似度としている
○ 数学的にはキャストとスタッフを高次元のベクトルとみな
して内積を類似度としている感じ
(*)表記揺れのためパースに不完全な箇所あり
Webインタフェースの開発
使ったもの
● Sinatra
● Sequel + SQLite3
● Nginx
● Amazon EC2
今後の課題
● 出現頻度を考慮した、もっと賢い類似度計算
● タイトル、キャスト、スタッフのクラスタリング
● 関係性や傾向のビジュアライジング
● etc
ぺけアニメ
データベースを
是非ご覧下さい
http://animedb.xmisao.com/

Contenu connexe

Plus de Misao X

BestGems.org 2018年の進化
BestGems.org 2018年の進化BestGems.org 2018年の進化
BestGems.org 2018年の進化Misao X
 
Rubyからg rpcでdocker化したkuromojiを使った話
Rubyからg rpcでdocker化したkuromojiを使った話Rubyからg rpcでdocker化したkuromojiを使った話
Rubyからg rpcでdocker化したkuromojiを使った話Misao X
 
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くMisao X
 
極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044Misao X
 
Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?Misao X
 
BestGems.org -RubyGemsランキングサイトのご紹介-
BestGems.org -RubyGemsランキングサイトのご紹介-BestGems.org -RubyGemsランキングサイトのご紹介-
BestGems.org -RubyGemsランキングサイトのご紹介-Misao X
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 

Plus de Misao X (7)

BestGems.org 2018年の進化
BestGems.org 2018年の進化BestGems.org 2018年の進化
BestGems.org 2018年の進化
 
Rubyからg rpcでdocker化したkuromojiを使った話
Rubyからg rpcでdocker化したkuromojiを使った話Rubyからg rpcでdocker化したkuromojiを使った話
Rubyからg rpcでdocker化したkuromojiを使った話
 
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書くRubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
 
極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044極貧Webサービス運用 kawasaki.rb #044
極貧Webサービス運用 kawasaki.rb #044
 
Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?
 
BestGems.org -RubyGemsランキングサイトのご紹介-
BestGems.org -RubyGemsランキングサイトのご紹介-BestGems.org -RubyGemsランキングサイトのご紹介-
BestGems.org -RubyGemsランキングサイトのご紹介-
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 

しょぼいカレンダーからアニメデータベースを作る