SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Pythonによるネットワーク分析
~Twitterデータの取得~
株式会社ブレインパッド
2015年7月9日
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.1
目次
1. はじめに
2. TwitterAPIの使い方
3. データの取得
4. おわりに
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.2
1.はじめに
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.3
本資料の位置づけ
 目的はPythonによるネットワーク分析を行うこと
 ネットワーク分析を行う際、頻繁に用いられるSNSのデータを利用する
 SNSデータの中で、「Twitter」データをAPIを用いて取得する
 以下のフローで分析を進める
1. Twitterデータの取得 ← 本資料ではここが対象
2. igraphを用いたネットワーク分析
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.4
TwitterAPIとは
 インターネットを経由してTwitterの機能を利用することができるTwitter社が提
供しているサービスのこと
 Twitter DevelopersでDocumentationを公開している
https://dev.twitter.com/overview/documentation
※2013年6月11日にTwitterAPI v1.1にバージョンが更新された
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.5
収集するデータ
 TwitterAPIから取得でき、分析によく用いられるデータは以下4つなどがある
 また、データの種類によって、データ量・期間などの取得制限がある
⇒ ネットワーク分析をするため「フォロー、フォロワーリスト」のデータを取得する
データの種類 取得制限
ユーザプロフィール -
ユーザのタイムライン 最新3,200タイムライン
ツイート検索 最新1週間
フォロー、フォロワーリスト -
※鍵付アカウントは取得できない
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.6
Pythonライブラリ
 Pythonには、以下のようなTwitterAPIのラッパーライブラリが多く存在する
• Twitter
• python-twitter
• tweepy
• twython
 ライブラリは便利だが、以下のような問題点がある
• APIの仕様変更の際、作成者の更新に依存する
• 取得できない情報が存在する
⇒ 今回はライブラリを利用せず直接APIを呼び出す
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.7
事前準備
 TwitterAPIにアクセスする前に以下項目を登録する必要がある
1. Twitterアカウントの登録
2. アプリケーションの登録
 登録を済ませると4つの鍵が発行され、これがAPIにアクセスする際必要となる
• Consumer Key
• Consumer Secret
• Access Token
• Access Token Secret
※こちらの登録方法はWEBにわかりやすい記事がいくつも存在するため割愛する
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.8
2.TwitterAPIの使い方
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.9
対象となるアカウントを取得する
 follower (フォロワー)を取得する際、対象アカウント識別情報が必要となる
 アカウント識別情報
• screen name
• user id
image
名前
screen name
アカウントページ
class="account-summary account-
summary-small js-nav“
data-nav="view_profile"><div
class="content"><div
class="account-group js-mini-
current-user" data-user-id=“***"
HTMLソース
※Web上に記載はされておらず、ソースから取得する必要がある
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.10
followerを取得できるエンドポイント
 followerを取得できるエンドポイントは2つある
 エンドポイントによって取得時間、取得データの種類が異なる
※大量のフォロワーを取得する際は、「GET followers/ids」が良い
エンドポイント 取得時間 取得データの種類
GET followers/ids あまり時間がかからない アカウントIDのみ
GET followers/list 時間がかかる 豊富
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.11
APIのリクエスト制限
 TwitterAPIには時間あたりのリクエスト制限がある
 エンドポイントによってリクエスト制限は異なる
 1リクエストあたり取得件数に大きな差がある
エンドポイント 15分内リクエスト数 1リクエストあたり取得件数
GET followers/ids 15 5,000
GET followers/list 15 200
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.12
データの取得イメージ
 エンドポイントによって取得できる情報が異なる
 フォロワー関係からネットワーク分析するのに、アカウント識別情報を統一する必
要がある
 「GET followers/list」は問題ないが、「GET followers/lds」はどちらか変換
しなくてはならない
screen name
GET followers/ids
Twitter社
followers
user id
screen name
GET followers/list
Twitter社
followers
screen name
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.13
アカウント識別情報を変換する方法
 アカウント識別情報を変換するには「users/lookup」を利用する
 対象アカウントを変換する方法と、フォロワーを変換する方法がある
 対象アカウントを変換する方がリクエスト制限にかかりにくい
• GET users/lookup
• 180 × 100 = 18,000
• GET followers/ids
• 15 × 5,000 = 75,000
※フォロワーを変換する場合、最大で75,000変換することになるが、変換できる最大は18,000
エンドポイント 15分内リクエスト数 1リクエストあたり取得件数
GET users/lookup 180 100
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.14
取得可能なユーザ情報
 取得可能なユーザ情報として以下などがある
key 名称
created_at 登録日
id ユーザID
screen_name ユーザ名
description 自己紹介
statuses_count ツイート数
followers_count フォロワー数
friends_count フォロイー数
favourites_count お気に入り数
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.15
3.データの取得
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.16
利用するエンドポイント
 フォロワーの取得
– GET followers/ids
 アカウントの変換
– GET users/lookup
※対象アカウントを「screen name」から「user id」に変換する
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.17
データ取得の流れ
 データ取得の流れは以下の通り
① 日本語文字を扱う処理
② OAuth認証
③ リクエスト(アカウントの変換)
④ レスポンス内容取得
⑤ リクエスト(フォロワー)
⑥ レスポンス内容取得
⑦ ページング処理
⑧ リクエスト制限による待機
 (参考) 応用
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.18
①日本語を扱う
 日本語を扱う際に文字化けを防ぐため、以下の処理を行う
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.19
②OAuth認証
 OAuth認証する際、「requests_oauthlib」というライブラリを利用する
 作成した鍵を利用してOAuth認証をする
# インストール
pip install requests_oauthlib
# または easy_install requests_oauthlib
# 読み込み
from requests_oauthlib import OAuth1Session
CONSUMER_KEY = '****************'
CONSUMER_SECRET = '****************'
ACCESS_TOKEN = '****************'
ACCESS_SECRET = '****************'
api = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN,
ACCESS_SECRET)
©BrainPad Inc. 2015, All rights reserved.20
③リクエスト(アカウントの変換)
 json形式でレスポンスされるので、「json」をインポートする
 変換するscreen nameが複数の場合、カンマ区切りの文字列で利用する
import json
# screen nameのリスト
scn_list = ['****']
# エンドポイント
url = 'https://api.twitter.com/1.1/users/lookup.json'
# カンマ区切りの文字列としてAPIで利用する
screen_name = ','.join(map(str, id_list))
# パラメータ
params = {'screen_name':screen_name}
# リクエスト
sid = api.get(url, params=params)
# json形式から変換
sid_j = sid.json()
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.21
④レスポンス内容取得
 リスト型の中に辞書型が入った形で返ってくる
 辞書型にはユーザ情報が入っている
>>> # screen nameの繰り返し
>>> for sid_list in sid_j:
・・・ print sid_list
・・・
{'scree_name':'*****', 'id':*******, ・・・}
>>>
>>> for sid_list in sid_j:
・・・ print sid_list['id']
*******
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.22
⑤リクエスト(フォロワー)
 json形式でレスポンスされるので、「json」をインポートする
 取得件数にあたる「count」は最大の5,000を指定
import json
# エンドポイント
url = 'https://api.twitter.com/1.1/followers/ids.json'
# user id
sid = '***********'
# ページング処理の際の初期値
cursor = -1
# パラメータ
params = {'screen_name':sid, 'cursor':cursor, 'count':5000}
# リクエスト
followers = api.get(url, params=params)
# json形式から変換
followers_j = followers.json()
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.23
⑥レスポンス内容取得
 辞書型で返ってくる
 valueにアカウントIDがリスト型で入っている
>> print followers_j
{'ids':[******,******,*****,*****]}
>>
>> print followers_j['ids']
[******,******,*****,*****]
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.24
⑦ページング処理
 レスポンスのkeyに「next_cursor」があり次のリクエストの際この値を指定する
 取得が完了したら、 レスポンスのstatus_code が200以外の値を返す
# ページング処理
while cursor != 0:
# パラメータ
params = {'screen_name':sid, 'cursor':cursor, 'count':5000}
# リクエスト
followers = api.get(url, params=params)
# json形式から変換
followers_j = followers.json()
# エラーの場合処理を終わらせる
if followers.status_code != 200:
break
# 次のカーソルを指定
cursor = followers_j['next_cursor']
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.25
⑧リクエスト制限による待機
 現状のリクエスト制限を確認する方法は2つある
① リクエスト制限確認用のエンドポイント
② レスポンス
※初回リクエストでは①を使い、それ以降は②を使うと効率的
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.26
⑧リクエスト制限による待機
 現在のリクエスト制限を確認する方法は2つある
① リクエスト制限確認用のエンドポイント
② レスポンス
import json
url = 'https://api.twitter.com/1.1/application/rate_limit_status.json'
rate = api.get(url)
rate_j = rate.json()
# 残りリクエスト数
remaining = rate_j['resources']['users']['/followers/ids']['remaining']
# 最大リクエスト数
limit = rate_j['resources']['users']['/followers/ids']['limit']
ここに確認したいエンドポイントを入力する
※確認方法: print rate_j['resources']
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.27
⑧リクエスト制限による待機
 現在のリクエスト制限を確認する方法は2つある
① リクエスト制限確認用のエンドポイント
② レスポンス
# 残りリクエスト数
remaining = int(followers.headers['x-rate-limit-remaining']) if 'x-
rate-limit-remaining' in followers.headers else 0
# 最大リクエスト数
limit = int(followers.headers['X-Rate-Limit-Limit']) if 'X-Rate-Limit-
Limit' in followers.headers else 0
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.28
⑧リクエスト制限による待機
 「remaining=0」の時に処理を待機させる
 15分でリクエスト制限が解除されるが念のため、1分多めに待機
import time
# リクエスト上限に達したら、待機
if remaining == 0:
# 待機(16分)
time.sleep(16*60)
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.29
(参考) 応用
 フォローしているユーザに関しても同様の処理で取得可能
 エンドポイントは、「https://api.twitter.com/1.1/friends/ids.json」
 フォロワー用に書いたスクリプトの「followers」を「friends」に置換するだけで取
得することができる
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.30
4.おわりに
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.31
まとめ
 アカウントのフォロー、フォロワーのリストを取得する方法は2つあり、利用目的に応
じて、使い分ける
 大量にフォロー、フォロワーを取得する場合、アカウントを変換する必要がある
 紹介したプログラムを利用することで、アカウントのフォロー、フォロワーのリストを取
得することができる
 また、アカウントが大量のフォロー、フォロワーがいたとしても、リクエスト制限内で待
機しながら取得することできる
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.32
今後の進め方
 取得したデータを用いて、ネットワーク分析を行う
 「python igraph」のパッケージを利用し、使い方、分析例を紹介する
igraphでの分析例
Data Analytics for Sustainability
©BrainPad Inc. 2015, All rights reserved.33
参考文献、参考リンク
 Twitter Developers
https://dev.twitter.com/overview/documentation
 Python で Twitter API にアクセス
http://qiita.com/yubais/items/dd143fe608ccad8e9f85
 スタバのTwitterデータをpythonで大量に取得し、データ分析を試みる その1
http://qiita.com/kenmatsu4/items/23768cbe32fe381d54a2
 Python で Twitter から情報収集 (Twitter API 編)
http://qiita.com/Salinger/items/020b670466a9835c94bb
 Pythonを用いてTwitterの検索を行う
http://qiita.com/mima_ita/items/ba59a18440790b12d97e
 python-twitterで100人以上のフォロイーを取得
http://pika-shi.hatenablog.com/entry/20111210/1323534823
 実験ぶろぐ(仮)試供品
http://needtec.exblog.jp/21581492/
Data Analytics for Sustainability

Más contenido relacionado

La actualidad más candente

Python入門からpython twitter利用のハンズオン
Python入門からpython twitter利用のハンズオンPython入門からpython twitter利用のハンズオン
Python入門からpython twitter利用のハンズオンYukitaka Uchikoshi
 
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoPelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoKei IWASAKI
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会虎の穴 開発室
 
Introduce for sphinx-users-jp
Introduce for sphinx-users-jpIntroduce for sphinx-users-jp
Introduce for sphinx-users-jpGo Yamada
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolsAtsushi Odagiri
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
Easy caching and logging package using annotation in Python
Easy caching and logging package using annotation in PythonEasy caching and logging package using annotation in Python
Easy caching and logging package using annotation in PythonYasunori Horikoshi
 
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようAtsushi Odagiri
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)Takayuki Shimizukawa
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02Atsushi Odagiri
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distributeAtsushi Odagiri
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPythonMasataka Miyoshi
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはkenhys
 
20140920 大分進化したメディアサービスで遊んでみた
20140920 大分進化したメディアサービスで遊んでみた20140920 大分進化したメディアサービスで遊んでみた
20140920 大分進化したメディアサービスで遊んでみたnormalian
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 

La actualidad más candente (20)

python.jpの使い方
python.jpの使い方python.jpの使い方
python.jpの使い方
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
Python入門からpython twitter利用のハンズオン
Python入門からpython twitter利用のハンズオンPython入門からpython twitter利用のハンズオン
Python入門からpython twitter利用のハンズオン
 
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoPelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 Tokyo
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
 
Introduce for sphinx-users-jp
Introduce for sphinx-users-jpIntroduce for sphinx-users-jp
Introduce for sphinx-users-jp
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
Easy caching and logging package using annotation in Python
Easy caching and logging package using annotation in PythonEasy caching and logging package using annotation in Python
Easy caching and logging package using annotation in Python
 
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distribute
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPython
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするには
 
20140920 大分進化したメディアサービスで遊んでみた
20140920 大分進化したメディアサービスで遊んでみた20140920 大分進化したメディアサービスで遊んでみた
20140920 大分進化したメディアサービスで遊んでみた
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 

Destacado

サイト/ブログから本文抽出する方法
サイト/ブログから本文抽出する方法サイト/ブログから本文抽出する方法
サイト/ブログから本文抽出する方法Takuro Sasaki
 
Webスクレイピング用の言語っぽいものを作ったよ
Webスクレイピング用の言語っぽいものを作ったよWebスクレイピング用の言語っぽいものを作ったよ
Webスクレイピング用の言語っぽいものを作ったよTakaichi Ito
 
GTC 2017 ディープラーニング最新情報
GTC 2017 ディープラーニング最新情報GTC 2017 ディープラーニング最新情報
GTC 2017 ディープラーニング最新情報NVIDIA Japan
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Hisao Soyama
 
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。tak9029
 
SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)sleepy_yoshi
 
Kaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solutionKaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solutionKazuki Onodera
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
NIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksNIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksEiichi Matsumoto
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)徹 上野山
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門hoxo_m
 

Destacado (11)

サイト/ブログから本文抽出する方法
サイト/ブログから本文抽出する方法サイト/ブログから本文抽出する方法
サイト/ブログから本文抽出する方法
 
Webスクレイピング用の言語っぽいものを作ったよ
Webスクレイピング用の言語っぽいものを作ったよWebスクレイピング用の言語っぽいものを作ったよ
Webスクレイピング用の言語っぽいものを作ったよ
 
GTC 2017 ディープラーニング最新情報
GTC 2017 ディープラーニング最新情報GTC 2017 ディープラーニング最新情報
GTC 2017 ディープラーニング最新情報
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
 
SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)SVM実践ガイド (A Practical Guide to Support Vector Classification)
SVM実践ガイド (A Practical Guide to Support Vector Classification)
 
Kaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solutionKaggle meetup #3 instacart 2nd place solution
Kaggle meetup #3 instacart 2nd place solution
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
NIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksNIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder Networks
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 

Similar a Python twitter data_150709

20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューションTakahiro Inoue
 
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Google Cloud Platform - Japan
 
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Takahiro Inoue
 
自社データのAI活用支援サービス
自社データのAI活用支援サービス自社データのAI活用支援サービス
自社データのAI活用支援サービスmunjapan
 
Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例oistudy
 
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みリクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みRecruit Technologies
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そうAtsushi Nakamura
 
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...Kazuya Sugimoto
 
ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏kintone papers
 
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓Insight Technology, Inc.
 
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現インフラジスティックス・ジャパン株式会社
 
CLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer NightCLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer NightCLOUDIAN KK
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIHajime Fujimoto
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介Kenji Hara
 
AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部
AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部
AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部Sumio Ebisawa
 
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 

Similar a Python twitter data_150709 (20)

20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション20140708 オンラインゲームソリューション
20140708 オンラインゲームソリューション
 
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
 
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
 
自社データのAI活用支援サービス
自社データのAI活用支援サービス自社データのAI活用支援サービス
自社データのAI活用支援サービス
 
Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例
 
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みリクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そう
 
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
 
ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏
 
CSS2020 Client Policies on keycloak
CSS2020 Client Policies on keycloak CSS2020 Client Policies on keycloak
CSS2020 Client Policies on keycloak
 
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
 
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
 
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
 
CLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer NightCLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer Night
 
Amazon DynamoDB Advanced Design Pattern
Amazon DynamoDB Advanced Design PatternAmazon DynamoDB Advanced Design Pattern
Amazon DynamoDB Advanced Design Pattern
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介
 
AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部
AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部
AdTruthが生み出すGoogle アナリティクス プレミアムの新しい活用方法 第3部
 
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 

Más de BrainPad Inc.

Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...BrainPad Inc.
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルトBrainPad Inc.
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介BrainPad Inc.
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 BrainPad Inc.
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術BrainPad Inc.
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事BrainPad Inc.
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシBrainPad Inc.
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-BrainPad Inc.
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料BrainPad Inc.
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIBrainPad Inc.
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)BrainPad Inc.
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善BrainPad Inc.
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発BrainPad Inc.
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例BrainPad Inc.
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年BrainPad Inc.
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発BrainPad Inc.
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?BrainPad Inc.
 

Más de BrainPad Inc. (20)

Oss LT会_20210203
Oss LT会_20210203Oss LT会_20210203
Oss LT会_20210203
 
Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
 

Python twitter data_150709

  • 2. ©BrainPad Inc. 2015, All rights reserved.1 目次 1. はじめに 2. TwitterAPIの使い方 3. データの取得 4. おわりに Data Analytics for Sustainability
  • 3. ©BrainPad Inc. 2015, All rights reserved.2 1.はじめに Data Analytics for Sustainability
  • 4. ©BrainPad Inc. 2015, All rights reserved.3 本資料の位置づけ  目的はPythonによるネットワーク分析を行うこと  ネットワーク分析を行う際、頻繁に用いられるSNSのデータを利用する  SNSデータの中で、「Twitter」データをAPIを用いて取得する  以下のフローで分析を進める 1. Twitterデータの取得 ← 本資料ではここが対象 2. igraphを用いたネットワーク分析 Data Analytics for Sustainability
  • 5. ©BrainPad Inc. 2015, All rights reserved.4 TwitterAPIとは  インターネットを経由してTwitterの機能を利用することができるTwitter社が提 供しているサービスのこと  Twitter DevelopersでDocumentationを公開している https://dev.twitter.com/overview/documentation ※2013年6月11日にTwitterAPI v1.1にバージョンが更新された Data Analytics for Sustainability
  • 6. ©BrainPad Inc. 2015, All rights reserved.5 収集するデータ  TwitterAPIから取得でき、分析によく用いられるデータは以下4つなどがある  また、データの種類によって、データ量・期間などの取得制限がある ⇒ ネットワーク分析をするため「フォロー、フォロワーリスト」のデータを取得する データの種類 取得制限 ユーザプロフィール - ユーザのタイムライン 最新3,200タイムライン ツイート検索 最新1週間 フォロー、フォロワーリスト - ※鍵付アカウントは取得できない Data Analytics for Sustainability
  • 7. ©BrainPad Inc. 2015, All rights reserved.6 Pythonライブラリ  Pythonには、以下のようなTwitterAPIのラッパーライブラリが多く存在する • Twitter • python-twitter • tweepy • twython  ライブラリは便利だが、以下のような問題点がある • APIの仕様変更の際、作成者の更新に依存する • 取得できない情報が存在する ⇒ 今回はライブラリを利用せず直接APIを呼び出す Data Analytics for Sustainability
  • 8. ©BrainPad Inc. 2015, All rights reserved.7 事前準備  TwitterAPIにアクセスする前に以下項目を登録する必要がある 1. Twitterアカウントの登録 2. アプリケーションの登録  登録を済ませると4つの鍵が発行され、これがAPIにアクセスする際必要となる • Consumer Key • Consumer Secret • Access Token • Access Token Secret ※こちらの登録方法はWEBにわかりやすい記事がいくつも存在するため割愛する Data Analytics for Sustainability
  • 9. ©BrainPad Inc. 2015, All rights reserved.8 2.TwitterAPIの使い方 Data Analytics for Sustainability
  • 10. ©BrainPad Inc. 2015, All rights reserved.9 対象となるアカウントを取得する  follower (フォロワー)を取得する際、対象アカウント識別情報が必要となる  アカウント識別情報 • screen name • user id image 名前 screen name アカウントページ class="account-summary account- summary-small js-nav“ data-nav="view_profile"><div class="content"><div class="account-group js-mini- current-user" data-user-id=“***" HTMLソース ※Web上に記載はされておらず、ソースから取得する必要がある Data Analytics for Sustainability
  • 11. ©BrainPad Inc. 2015, All rights reserved.10 followerを取得できるエンドポイント  followerを取得できるエンドポイントは2つある  エンドポイントによって取得時間、取得データの種類が異なる ※大量のフォロワーを取得する際は、「GET followers/ids」が良い エンドポイント 取得時間 取得データの種類 GET followers/ids あまり時間がかからない アカウントIDのみ GET followers/list 時間がかかる 豊富 Data Analytics for Sustainability
  • 12. ©BrainPad Inc. 2015, All rights reserved.11 APIのリクエスト制限  TwitterAPIには時間あたりのリクエスト制限がある  エンドポイントによってリクエスト制限は異なる  1リクエストあたり取得件数に大きな差がある エンドポイント 15分内リクエスト数 1リクエストあたり取得件数 GET followers/ids 15 5,000 GET followers/list 15 200 Data Analytics for Sustainability
  • 13. ©BrainPad Inc. 2015, All rights reserved.12 データの取得イメージ  エンドポイントによって取得できる情報が異なる  フォロワー関係からネットワーク分析するのに、アカウント識別情報を統一する必 要がある  「GET followers/list」は問題ないが、「GET followers/lds」はどちらか変換 しなくてはならない screen name GET followers/ids Twitter社 followers user id screen name GET followers/list Twitter社 followers screen name Data Analytics for Sustainability
  • 14. ©BrainPad Inc. 2015, All rights reserved.13 アカウント識別情報を変換する方法  アカウント識別情報を変換するには「users/lookup」を利用する  対象アカウントを変換する方法と、フォロワーを変換する方法がある  対象アカウントを変換する方がリクエスト制限にかかりにくい • GET users/lookup • 180 × 100 = 18,000 • GET followers/ids • 15 × 5,000 = 75,000 ※フォロワーを変換する場合、最大で75,000変換することになるが、変換できる最大は18,000 エンドポイント 15分内リクエスト数 1リクエストあたり取得件数 GET users/lookup 180 100 Data Analytics for Sustainability
  • 15. ©BrainPad Inc. 2015, All rights reserved.14 取得可能なユーザ情報  取得可能なユーザ情報として以下などがある key 名称 created_at 登録日 id ユーザID screen_name ユーザ名 description 自己紹介 statuses_count ツイート数 followers_count フォロワー数 friends_count フォロイー数 favourites_count お気に入り数 Data Analytics for Sustainability
  • 16. ©BrainPad Inc. 2015, All rights reserved.15 3.データの取得 Data Analytics for Sustainability
  • 17. ©BrainPad Inc. 2015, All rights reserved.16 利用するエンドポイント  フォロワーの取得 – GET followers/ids  アカウントの変換 – GET users/lookup ※対象アカウントを「screen name」から「user id」に変換する Data Analytics for Sustainability
  • 18. ©BrainPad Inc. 2015, All rights reserved.17 データ取得の流れ  データ取得の流れは以下の通り ① 日本語文字を扱う処理 ② OAuth認証 ③ リクエスト(アカウントの変換) ④ レスポンス内容取得 ⑤ リクエスト(フォロワー) ⑥ レスポンス内容取得 ⑦ ページング処理 ⑧ リクエスト制限による待機  (参考) 応用 Data Analytics for Sustainability
  • 19. ©BrainPad Inc. 2015, All rights reserved.18 ①日本語を扱う  日本語を扱う際に文字化けを防ぐため、以下の処理を行う #!/usr/bin/python # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') Data Analytics for Sustainability
  • 20. ©BrainPad Inc. 2015, All rights reserved.19 ②OAuth認証  OAuth認証する際、「requests_oauthlib」というライブラリを利用する  作成した鍵を利用してOAuth認証をする # インストール pip install requests_oauthlib # または easy_install requests_oauthlib # 読み込み from requests_oauthlib import OAuth1Session CONSUMER_KEY = '****************' CONSUMER_SECRET = '****************' ACCESS_TOKEN = '****************' ACCESS_SECRET = '****************' api = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET)
  • 21. ©BrainPad Inc. 2015, All rights reserved.20 ③リクエスト(アカウントの変換)  json形式でレスポンスされるので、「json」をインポートする  変換するscreen nameが複数の場合、カンマ区切りの文字列で利用する import json # screen nameのリスト scn_list = ['****'] # エンドポイント url = 'https://api.twitter.com/1.1/users/lookup.json' # カンマ区切りの文字列としてAPIで利用する screen_name = ','.join(map(str, id_list)) # パラメータ params = {'screen_name':screen_name} # リクエスト sid = api.get(url, params=params) # json形式から変換 sid_j = sid.json() Data Analytics for Sustainability
  • 22. ©BrainPad Inc. 2015, All rights reserved.21 ④レスポンス内容取得  リスト型の中に辞書型が入った形で返ってくる  辞書型にはユーザ情報が入っている >>> # screen nameの繰り返し >>> for sid_list in sid_j: ・・・ print sid_list ・・・ {'scree_name':'*****', 'id':*******, ・・・} >>> >>> for sid_list in sid_j: ・・・ print sid_list['id'] ******* Data Analytics for Sustainability
  • 23. ©BrainPad Inc. 2015, All rights reserved.22 ⑤リクエスト(フォロワー)  json形式でレスポンスされるので、「json」をインポートする  取得件数にあたる「count」は最大の5,000を指定 import json # エンドポイント url = 'https://api.twitter.com/1.1/followers/ids.json' # user id sid = '***********' # ページング処理の際の初期値 cursor = -1 # パラメータ params = {'screen_name':sid, 'cursor':cursor, 'count':5000} # リクエスト followers = api.get(url, params=params) # json形式から変換 followers_j = followers.json() Data Analytics for Sustainability
  • 24. ©BrainPad Inc. 2015, All rights reserved.23 ⑥レスポンス内容取得  辞書型で返ってくる  valueにアカウントIDがリスト型で入っている >> print followers_j {'ids':[******,******,*****,*****]} >> >> print followers_j['ids'] [******,******,*****,*****] Data Analytics for Sustainability
  • 25. ©BrainPad Inc. 2015, All rights reserved.24 ⑦ページング処理  レスポンスのkeyに「next_cursor」があり次のリクエストの際この値を指定する  取得が完了したら、 レスポンスのstatus_code が200以外の値を返す # ページング処理 while cursor != 0: # パラメータ params = {'screen_name':sid, 'cursor':cursor, 'count':5000} # リクエスト followers = api.get(url, params=params) # json形式から変換 followers_j = followers.json() # エラーの場合処理を終わらせる if followers.status_code != 200: break # 次のカーソルを指定 cursor = followers_j['next_cursor'] Data Analytics for Sustainability
  • 26. ©BrainPad Inc. 2015, All rights reserved.25 ⑧リクエスト制限による待機  現状のリクエスト制限を確認する方法は2つある ① リクエスト制限確認用のエンドポイント ② レスポンス ※初回リクエストでは①を使い、それ以降は②を使うと効率的 Data Analytics for Sustainability
  • 27. ©BrainPad Inc. 2015, All rights reserved.26 ⑧リクエスト制限による待機  現在のリクエスト制限を確認する方法は2つある ① リクエスト制限確認用のエンドポイント ② レスポンス import json url = 'https://api.twitter.com/1.1/application/rate_limit_status.json' rate = api.get(url) rate_j = rate.json() # 残りリクエスト数 remaining = rate_j['resources']['users']['/followers/ids']['remaining'] # 最大リクエスト数 limit = rate_j['resources']['users']['/followers/ids']['limit'] ここに確認したいエンドポイントを入力する ※確認方法: print rate_j['resources'] Data Analytics for Sustainability
  • 28. ©BrainPad Inc. 2015, All rights reserved.27 ⑧リクエスト制限による待機  現在のリクエスト制限を確認する方法は2つある ① リクエスト制限確認用のエンドポイント ② レスポンス # 残りリクエスト数 remaining = int(followers.headers['x-rate-limit-remaining']) if 'x- rate-limit-remaining' in followers.headers else 0 # 最大リクエスト数 limit = int(followers.headers['X-Rate-Limit-Limit']) if 'X-Rate-Limit- Limit' in followers.headers else 0 Data Analytics for Sustainability
  • 29. ©BrainPad Inc. 2015, All rights reserved.28 ⑧リクエスト制限による待機  「remaining=0」の時に処理を待機させる  15分でリクエスト制限が解除されるが念のため、1分多めに待機 import time # リクエスト上限に達したら、待機 if remaining == 0: # 待機(16分) time.sleep(16*60) Data Analytics for Sustainability
  • 30. ©BrainPad Inc. 2015, All rights reserved.29 (参考) 応用  フォローしているユーザに関しても同様の処理で取得可能  エンドポイントは、「https://api.twitter.com/1.1/friends/ids.json」  フォロワー用に書いたスクリプトの「followers」を「friends」に置換するだけで取 得することができる Data Analytics for Sustainability
  • 31. ©BrainPad Inc. 2015, All rights reserved.30 4.おわりに Data Analytics for Sustainability
  • 32. ©BrainPad Inc. 2015, All rights reserved.31 まとめ  アカウントのフォロー、フォロワーのリストを取得する方法は2つあり、利用目的に応 じて、使い分ける  大量にフォロー、フォロワーを取得する場合、アカウントを変換する必要がある  紹介したプログラムを利用することで、アカウントのフォロー、フォロワーのリストを取 得することができる  また、アカウントが大量のフォロー、フォロワーがいたとしても、リクエスト制限内で待 機しながら取得することできる Data Analytics for Sustainability
  • 33. ©BrainPad Inc. 2015, All rights reserved.32 今後の進め方  取得したデータを用いて、ネットワーク分析を行う  「python igraph」のパッケージを利用し、使い方、分析例を紹介する igraphでの分析例 Data Analytics for Sustainability
  • 34. ©BrainPad Inc. 2015, All rights reserved.33 参考文献、参考リンク  Twitter Developers https://dev.twitter.com/overview/documentation  Python で Twitter API にアクセス http://qiita.com/yubais/items/dd143fe608ccad8e9f85  スタバのTwitterデータをpythonで大量に取得し、データ分析を試みる その1 http://qiita.com/kenmatsu4/items/23768cbe32fe381d54a2  Python で Twitter から情報収集 (Twitter API 編) http://qiita.com/Salinger/items/020b670466a9835c94bb  Pythonを用いてTwitterの検索を行う http://qiita.com/mima_ita/items/ba59a18440790b12d97e  python-twitterで100人以上のフォロイーを取得 http://pika-shi.hatenablog.com/entry/20111210/1323534823  実験ぶろぐ(仮)試供品 http://needtec.exblog.jp/21581492/ Data Analytics for Sustainability