11. Case.1
データ収集『⼝口コミデータを収集する』
11(C) HAKUHODO DY MEDIA PARTNERS 2015
たとえば、対象サイトから、ある⾔言葉葉を含むページのみの
URL⼀一覧を取得し、アクセス解析ツールで分析したい。
www.**/pg1
www.**/pg2
www.**/pg3
www.**/pg4
www.**/pg5
特定の
word
このページのアクセス状況を分析し、
サイト全体の傾向と⽐比較、など
※巨⼤大⼝口コミサイトで、膨⼤大にURLが存在するとする
特定の
word
特定の
word
12. Case.1
データ収集『⼝口コミデータを収集する』
12(C) HAKUHODO DY MEDIA PARTNERS 2015
たとえば、対象サイトの⼝口コミから、ある⾔言葉葉と同時に書き込まれる
ワード(共起語)を時系列列で分析したい。
クチコミ1
クチコミ2
クチコミ3
クチコミ4
クチコミ5
このサイトに含まれる
条件をみたす⼝口コミ⼀一覧から、
特定ワードの共起語を時系列列で分析
14. Case.1
データ収集『⼝口コミデータを収集する』
14(C) HAKUHODO DY MEDIA PARTNERS 2015
対象となるURLを設定し、再帰呼び出し(階層指定可)
ループ対象となるページを絞りたい場合は
上記ループ中で、正規表現で特定の⽂文字列列を含む
サブドメインなどを指定
urls = ["http://***.jp/"]
anemone.crawl(urls,:depth_limit => 1) do |anemone|
anemone.on_pages_like(%r[month=d+]) do |page|
15. Case.1
データ収集『⼝口コミデータを収集する』
15
(C) HAKUHODO DY MEDIA PARTNERS 2015
あとは、ブログの抜き出したい箇所に応じて、
正規表現で抜き出すか、あるいはdiv要素であればnokogiriで処理理
たとえば、下記のような要素から、
“⽇日時”、”タイトル”、”ユーザ名” を抜き出してcsvで書き出したい場合
action-box rounded
新規書き込み
2015/4/16 20:03
「科学技術が発達しすぎて不不安」
mirandora
近年年の科学技術の発展には、⽬目を⾒見見張るものが… 続きを読む
h2
title
user
新規書き込み
2015/4/16 19:52
「遺伝⼦子検査やってみたいですか?」
16. Case.1
データ収集『⼝口コミデータを収集する』
16(C) HAKUHODO DY MEDIA PARTNERS 2015
あとは、ブログの抜き出したい箇所に応じて、
正規表現で抜き出すか、あるいはdiv要素であればnokogiriで処理理
#chomp は改⾏行行を削除
#strip は先頭や末尾の空⽩白を削除
#gsub は⽂文字列列を置換する。
#tosjis は⽂文字コードを変換
CSV.open('amazon.csv','wb') do |csv|
csv << ['date','title',‘user']
url = "https://www.****"
page = agent.get(url)
html =Nokogiri::HTML(page.body,nil,'Shift-JIS')
if html.css('span.item-title').text.length == 0 then break
else
puts url
html.search('//div[@class="action-box rounded"]').each_with_index.map do
|box,i|
date = box.css(‘h2’).text.chomp.strip.gsub(“新規書き込み"," "). tosjis
title = box.css('span. title').text.chomp.strip.tosjis
user = box.css('div.user').text.chomp.strip.tosjis
csv << [date,title,user]
end
end
end
20. Case.2
データ収集『⼼心拍数データを収集する』
20(C) HAKUHODO DY MEDIA PARTNERS 2015
近年年、arduinoなどで使⽤用できる⼼心拍数センサが安価で⼿手に⼊入るが
特別な装置を使わずウェブカメラ経由でウェブアプリなどを通して
⼼心拍数データを収集する⽅方法を考える。
web camera + web RTC
ウェブカメラのみで可能(特別な装置不不要)
HTML5でjavascriptベースで実装可能なweb RTCを使⽤用
21. Case.2
データ収集『⼼心拍数データを収集する』
21(C) HAKUHODO DY MEDIA PARTNERS 2015
⼼心拍数は、指などの映像から得られる
“指の先端の⾎血中の酸素濃度度の変化”から推測可能
指の先端の⾎血中の酸素濃度度の変化によって、
「⾚赤⾊色光と⾚赤外光の吸光度度が異異なるので、
センサーで透過光や反射光を測定して分析する」(wikiより)
ことによりピーク値を検出することで、⼼心拍数を測定可
24. Case.2
データ収集『⼼心拍数データを収集する』
24(C) HAKUHODO DY MEDIA PARTNERS 2015
得られた映像から⾚赤⾊色チャンネルの明度度を計算
(1) 映像のフレームごとにcanvasに静⽌止画書き出し
(2) 静⽌止画imageの中から⾚赤⾊色チャンネルの明度度を計算
※各ピクセルの⾚赤⾊色チャンネルを合計し、ピクセル数で割る
※canvasの各ピクセル情報は、左上から順にR、G、B、アルファのデータ単位で格納
(data[0]〜~data[3]までで1セット、data[4]〜~data[7]で次のピクセル情報の1セット)
(3) 上記をタイムスタンプ付きのコンソールログとして書き出す。
canvasの各ピクセル情報
data[0]
data[1]
data[2]
data[3]
1ピクセル⽬目
R
G
B
α
data[4]
data[5]
data[6]
data[7]
2ピクセル⽬目
R
G
B
α
25. Case.2
データ収集『⼼心拍数データを収集する』
25(C) HAKUHODO DY MEDIA PARTNERS 2015
得られた映像から⾚赤⾊色チャンネルの明度度を計算
function getRedChannel(){ requestAnimationFrame(getRedChannel);
var video = document.getElementById('myVideo');
var buffer = document.createElement('canvas');
var bufferContext = buffer.getContext('2d');
buffer.width = video.width;
buffer.height = video.height;
bufferContext.drawImage(video, 0, 0,video.width,video.height);
var imagedata =
bufferContext.getImageData(0, 0, video.width, video.height);
var red_channel=0;
for (var i = 0; i < imagedata.data.length; i += 4) {
red_channel += imagedata.data[i+0]
}
console.log("red_channel:" + red_channel/(imagedata.data.length));
}
47. 47(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 4
データ可視化『神⼾戸市観光』
神⼾戸市観光客増加のため、潜在層のウェブ⾏行行動・移動履履歴データを分析。
それらをデータフュージョンし、クラスタごとの神⼾戸市での⾏行行動を可視化。
DMP + processing
DMPを⽤用いて様々なウェブ⾏行行動を⼀一元管理理
クラスタごとに⽣生成したシミュレーションモデルにより、
⼈人々の神⼾戸市内での観光状況を可視化
48. 48(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 4
データ可視化『神⼾戸市観光』
DMPとは、データマーケティングのためのデータを
オンライン上のCookieで格納する箱
DMP
(Data Management Platform)
DMP
会員情報
広告クリック
閲覧コンテンツ
ソーシャル
広告接触
趣味・嗜好
閲覧履履歴
1st
Party
Data
⾃自社データ
サービス利利⽤用履履歴
2nd
Party
Data
広告データ
3rd
Party
Data
第三者データ
49. 49(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 4
データ可視化『神⼾戸市観光』
神⼾戸市様が保有する観光サイト閲覧者が、
デモグラごとに普段どのような検索索をしているか、
どのようなサイトを閲覧しているか、分析
DMP
(Data Management Platform)
DMP
スポットごとの神⼾戸市観光ページ
→サイト来訪者の
デモグラ・興味を
推計
3rd
Party
Data
第三者データ
57. 57(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 5
データ可視化『Darvish』
データスタジアム社のデータ提供協⼒力力のもと、
Darvishが2013年年に投げたボールの全データを可視化&サウンド化
Three.js + Web Audio API
データから⾳音を⾃自動⽣生成
可視化&サウンド化により、Darvishの投球のリズムを体感
58. 58(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 5
データ可視化『Darvish』
ダルビッシュが2013年年に投げた1年年間の
球種、球速、結果のデータ
59. 59(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 5
データ可視化『Darvish』
さらに、球種ごとの、
縦揺れ、横揺れのデータ
60. 60(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 5
データ可視化『Darvish』
“速度度”を周波数(⾳音の⾼高さ)、
“球種”を⾳音波(⾳音の種類)にマッピング
⾳音テーブル 球速 to 周波数変換
61. 61(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 5
データ可視化『Darvish』
Web Audio API
HTML5による、動的に⾳音を⽣生成・処理理するためのJavascript API。
プラグイン不不要でブラウザのみで⾼高機能な⾳音声処理理が可能。
外部⾳音声読み込みの他、Javascriptのみで⾳音を⽣生成することもできる。
AudioContext
基本構成
Oscillator Effect Destination
APIアクセスのためのインスタンス(枠組み)
サウンド出⼒力力エフェクトサウンド⼊入⼒力力
connect connect
62. 62(C) HAKUHODO DY MEDIA PARTNERS 2015
Case. 5
データ可視化『Darvish』
Web Audio API
var eg = audioctx.createGain();
var osc = audioctx.createOscillator();
osc.connect(eg);
eg.connect(audioctx.destination);
var audioctx = new AudioContext();
新しいコンテキストインスタンスを⽣生成
⼊入出⼒力力と接続
//⾳音量量
eg.gain.value =0.4;
//⾼高さ
osc.frequency.value = 1500;
//波形
var type = 2;
osc.type = ["sine","square","sawtooth","triangle"][type];
⾳音を⽣生成(⾳音量量、⾼高さ、波形)