入門ソーシャルデータ①環境構築とTwitterAPI
こんばんは。先週末から風邪でダウンしている太鼓眼鏡です。
今日あたりからようやく調子が戻り始めたので、久しぶりにプログラミングをいじってました。
さて先々週辺りからいつもの友達とひたすら進めているのがこちら。
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
- 作者: クジラ飛行机
- 出版社/メーカー: ソシム
- 発売日: 2016/12/06
- メディア: 単行本
- この商品を含むブログ (3件) を見る
この本のスクレイピングの技術を使って、 こないだの記事をpython版で作り変えたりしてました。 taikomegane.hatenablog.jp
ただそちらは規約的にかなりグレー(というかアウト)なので、アップするのはやめにしています。
機械学習の方の最終目標は「チャットボットを作るようになること」 ちょっと処理的に理解できない箇所が増えてきているので、気長に頑張ろうと思います。
一方で、もう一つ買ったっきり進めてない本があったので今日はそちらの進捗報告。
入門 ソーシャルデータ 第2版 ―ソーシャルウェブのデータマイニング
- 作者: Matthew A. Russell,佐藤敏紀,瀬戸口光宏,原川浩一,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/06/21
- メディア: 大型本
- この商品を含むブログ (2件) を見る
まずこの本だとvagrantfileが用意されてるので、それでいろいろ上手くいくはずが、 エラーを吐きまくるのでこちらは諦めました。
そこで、前述の本を参考にdockerで環境構築をしたので方法を簡単に紹介。
#dockerでminiconda3のコンテナをプルリクエスト docker pull continuumio/miniconda3 #一応動作確認 docker run -i -t continuumio/miniconda3 /bin/bash python3 -c "print(3*5) exit #コンテナの一覧を出してCONTAINER IDを確認 docker ps -a #コンテナをコミット docker commit "CONTAINER ID" 適当な名前 #自分の環境をマウントしてコンテナを起動 docker run -it -v 自分の環境:自分の環境 \ -e LANG=ja_JP.UTF-8 \ -e PYTHONIOENCODING=utf_8 \ -p 8080:8080 適当な名前 /bin/bash
これでpython3が入った環境が出来上がり この後ソーシャルデータ入門のTwitterAPIを使うための準備をしていきます。
#pipをインストール apt-get update apt-get install -y python3-pip #twitterをインストール pip3 install twitter
で、これでいけると思ったら見つからないとエラーを吐いたので別の方法を探す。 同じエラーで悩んでいる人を発見。解決方法をぱくる。
#まずtwitterをアンインストール pip3 uninstall twitter #その後インストールしなおし wget https://pypi.python.org/packages/source/t/twitter/twitter-1.12.1.tar.gz tar -xzf twitter*.tar.gz python3 setup.py build python3 setup.py install
これで上手くインストール出来ている。 ひとまずここまでで、TwitterAPIを使うための環境構築が終了。
この後TwitterAPIを入手する。
import twitter CONSUMER_KEY = '' CONSUMER_SECRET = '' OAUTH_TOKEN = '' OAUTH_TOKEN_SECRET = '' auth = twitter.oauth.OAuth(OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET) twitter_api = twitter.Twitter(auth=auth) print(twitter_api)
このファイルをさっきの環境で、
python3 oauth.py
とやって上手いこと返ってきたら、成功。
一応続きとして、世界とアメリカのトレンドを検索してみる。
import twitter CONSUMER_KEY = '' CONSUMER_SECRET = '' OAUTH_TOKEN = '' OAUTH_TOKEN_SECRET = '' auth = twitter.oauth.OAuth(OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET) twitter_api = twitter.Twitter(auth=auth) WORLD_WOE_ID = 1 US_WOE_ID = 23424977 worId_trends = twitter_api.trends.place(_id=WORLD_WOE_ID) us_trends = twitter_api.trends.place(_id=US_WOE_ID) print(worId_trends) print("") print(us_trends)
このコード、動いたのだけど結果はすごいことに、、、
[{'trends': [{'name': '#USAin4words', 'url': 'http://twitter.com/search?q=%23USAin4words', 'promoted_content': None, 'query': '%23USAin4words', 'tweet_volume': 14411}, {'name': '#WednesdayWisdom', 'url': 'http://twitter.com/search?q=%23WednesdayWisdom', 'promoted_content': None, 'query': '%23WednesdayWisdom', 'tweet_volume': 47481}, {'name': '#PhilJackson', 'url': 'http://twitter.com/search?q=%23PhilJackson', 'promoted_content': None, 'query': '%23PhilJackson', 'tweet_volume': None}, {'name': '#LifeWouldBeDifferentIf', 'url': 'http://twitter.com/search?q=%23LifeWouldBeD ifferentIf', 'promoted_content': None, 'query': '%23LifeWouldBeDifferentIf', 'tweet_volume': None}, {'name': 'Michael Bond', 'url': 'http://twit ter.com/search?q=%22Michael+Bond%22', 'promoted_content': None, 'query': '%22Michael+Bond%22', 'tweet_volume': 14472}, {'name': '#WhenWeRunTwitt er', 'url': 'http://twitter.com/search?q=%23WhenWeRunTwitter', 'promoted_content': None, 'query': '%23WhenWeRunTwitter', 'tweet_volume': None}, {'name': "Trump Is China's Chump", 'url': 'http://twitter.com/search?q=%22Trump+Is+China%27s+Chump%22', 'promoted_content': None, 'query': '%22T rump+Is+China%27s+Chump%22', 'tweet_volume': None}, {'name': 'Amtrak', 'url': 'http://twitter.com/search?q=Amtrak', 'promoted_content': None, 'q uery': 'Amtrak', 'tweet_volume': None}, {'name': 'Zach Orr', 'url': 'http://twitter.com/search?q=%22Zach+Orr%22', 'promoted_content': None,
これがめちゃくちゃ続きます。このあと綺麗にする方法も学ぶらしいので期待。
ひとまずここまでやってみてわかったのが、
- この本python2で書かれているから、文法が異なることが多い
- コードをそのまま書いただけじゃ動かないことが多い。都度修正が必要
まあエラーを一つずつ潰すのも勉強だと思って頑張ります。 ではまた。