【Python初心者】iPad×Google Colabalatoryで手軽にtwitter分析

Python
ワタシ

今回はiPadを利用した“PythonでのTwitter分析”について理解を深めます。

iPadで手軽にPythonで遊べないものかと考えて調べてみるとGoogle Colabalatoryという存在が良さげだと色々なところで紹介されています。

ちなみに、このGoogle Colabはブラウザ上でプログラム出来るコーディング環境です。では、これはどう使えうるものなのか?

今回は、シンプルにTwitterでのテキスト分析をiPadを使ってGoogle Colab上で実践してみたいと思います。(‘◇’)ゞ

尚、Twitterのデータを利活用する際のポイントは下記にまとめています。

【Python入門】Twitterデータでテキストマイニング(APIの利用)

今回の論点整理

今回のアウトプット

今回iPadのみでGoogleColabalatoryを介してtwitter分析をします。

以下のようなアウトプットをiPad上でキーワードを指定してサクッと出力できるようにします。

ちなみに、上記は「iPad Python」で検索した結果になります。

やはり私のようにiPad Proを利用したり、Kindleでpythonの勉強を模索したり、iOSのアプリづくりをするべくswiftを使ったりなどの傾向が見えます。

上記は自由に単語も指定できるので、iPadのみで無料でマーケターごっこなどもできてしまいそうです。

では何をiPad上でどのようなことを留意すればよいのか。以下にまとめます。

抑えるべきポイント

上記を実現する手順について下記に備忘録的にまとめたいと思います。

抑えドコ!
  • iPad上でのPython環境について
  • Google colabの特徴と活用
  • ツイートデータの読み込み
  • テキストの形態素解析
  • ワードクラウド化

順に触れていきます。

”iPad×GoogleColab”活用ポイント

① iPadでのPython活用 (Juno)

さて、まず最初に何を実現したいかというとコレです。

iPad完結で分析・考察できる環境

これを創り上げたいと思います。ただ、デフォルトのアプリではできないため、これは当然別途アプリが必要です。

Pythonを書くアプリは色々ありますが、pandasや統計・計算用のライブラリを利用することを考えるとjunoというアプリが一つの有効な手段になります。

使い方は以前記載しています。

【Python入門】WindowsとiPadの両方でPythonの環境を構築する

ただ、1点問題があります。

それは何かというとアプリが有料であることと、登録がやや煩雑(AWS/AzureのJupyterLabなるものを登録してつなげる設定が必要)であることです。

そのため、もっとシンプルに手軽に使える環境がないかと思うわけです。

② Google Colabaratoryの活用 

そこで今回、お勧めしたいのが、このGoogle ColabaratoryといわれるGoogle大先生のクラウド上のソフトです。

これは何かというと、Googleさんが創った、オンライン上で機械学習を回すことが出来るソフトです。jupyter notebookとUIは似てます。

で、これ、何がすごいかというと

クラウド上の処理なのでマシーンスペックに依存しない

という点です。つまりiPadであってもできちゃうというわけです。しかもさらにポイントがでかいのが

Google driveにマウントできるが出来る

という点です。そのため、iPadを介したダウンロードアップロードで苦戦することが少ないのです。

そのため、こいつをうまく使いこなせば、iPadで学習環境を創るのは割と楽にできます。

これも概要はググると腐るほどでます。

■ご参考リンク(外部リンクに飛びます)

余談ですが、自分のとった写真などをアップしていたらまさにそれを材料にディープラーニングを利用した分類わけを実験するなども出来そうですね。

詳細は至るところで使い方が出ています。

■ご参考リンク(外部リンクに飛びます)

③ツイートデータの読み込み

では実際に、Google Colabでデータの読み込みと分析を試みます。

iPad上で「Google Colabolatory」で検索してログインして頂いたら特別な環境設定なく、早速コードがウェブ上で書くことが出来ます。

ここでpipでインストールをしたり関数を使ってAPIを参照したりなども問題なくできるわけですのでまずは下記のようなコードでまずはツイッターと連動します。

pip install tweepy

#インストール済みでなければ一番下の参照
import tweepy
import datetime
import pandas as pd

## 認証処理
consumer_key = "ご自身のID"
consumer_secret = "ご自身のID"
access_token_key = "ご自身のID"
access_token_secret = "ご自身のID"

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token_key, access_token_secret)
api = tweepy.API(auth)

尚、ツイッターの管理者の登録やAPIの設定については下記に記載しております。

【Python入門】Twitterデータでテキストマイニング(APIの利用)

これで認証ができたはずなので、その後に検索したい単語などを指定していきます。

#検索キーワードを設定する。
searchWord = ["iPad","Python"] #検索ワード複数

# twitter内を検索する
status_data = []
for status in api.search(q=searchWord, lang='ja', result_type='recent', count=1000): #qに検索したいワードを指定する。
    status_data.append([status.created_at,status.text, status.favorite_count,status.retweet_count])


columns_name = ["time","text","fav","RT"]        
df = pd.DataFrame(status_data, columns=columns_name)

print(len(df))

ちなみにTwitterの管理者の権限が無料版の場合は恐らく100個までしか検索が出来ないと思います。(上記len(df)はマックス100になります)

このデータを元に解析へと移ります。

④テキストの形態素解析

上記を踏まえてテキストマイニングへと移ります。

コードとしては以下のようにまずはまとめます。

str_df=df['text']                   # dataframeから指定列を抽出
dflst = str_df.astype(str).tolist() # 抽出したものをListに変換
dfstr = ' '.join(dflst)             # 空白文字で結合
print(dfstr)                    

txt = dfstr

その後にjanomeをインストールして形態素解析(品詞分解)をしていきます。

pip install janome

# Janomeで形態素分析 python解析器janomeをインポート - 1
from janome.tokenizer import Tokenizer

# 形態素解析用オブジェクトの生成 - 2
text = Tokenizer()

# txtから読み込んだデータを形態素解析 - 4
lines = txt.split("\r\n")
for i in lines:
    print(i)
    print("\n")
    text_c = text.tokenize(i)
    for j in text_c:
      print(j)

print("\n")

# テキストを一行ごとに処理 - 5
word_dic = {}
lines_1 = txt.split("\r\n")
print(lines_1)
print("\n")
for line in lines_1:
    malist = text.tokenize(line)
    for w in malist:
	    word = w.surface
	    ps = w.part_of_speech # 品詞 - 6
	    if ps.find("名詞") < 0: continue # 名詞だけをカウント - 7
	    if not word in word_dic:
		    word_dic[word] = 0
	    word_dic[word] += 1

これで下準備は完了です。

ちなみにテキストマイニングの仕組・考え方については以下にまとめております。

【統計基礎】自然言語処理、テキストマイニング、word2vecとは

⑤ワードクラウド化

後は今回利用するwordcloudに流し込んでアウトプットします。コードは以下の通りです。

from wordcloud import WordCloud

text = ' '.join(word_dic)

# 除外したい単語 早稲田の意味不明なやつを消すので色々登録
stop_text = ["https","python","iPad"]

#日本語のパスの指定 (インストールしないとエラーになる部分です。後述します)
fpath = '/usr/share/fonts/truetype/fonts-japanese-gothic.ttf'

wordcloud = WordCloud(
    background_color="white",#背景を白に
    stopwords = stop_text,
    font_path=fpath,
    width = 800,height=600).generate(text)

#pngで保存する
wordcloud.to_file("./textmining.png")

そして、ここが一番苦戦したところなのですが、このまま解析をすすめると以下のような豆腐だらけのアウトプットになります。

何がおきているかというと文字化けです。つまり、日本語のフォントを指定しないといけません。散々ググッた結果以下をいれこめばiPad上でもいけます。

!apt-get -y install fonts-ipafont-gothic

これで指定フォルダにゴシックのフォントが保存されて、日本語を扱う加工の下準備ができました。これが出来ればめでたく日本語アウトプットができます。

気にならなければコピペでいけるはずです。気になるようであれば、個々の関数の意味を調べてみてください。

押さえておきたいポイントは除外したい単語(stop word)の指定のみです。出力したくない意味をなさない単語はここで指定して消しましょう。

上記が完了すればめでたくそれっぽい画像が出力されます。

ちなみにブラウザ上で出力するにはこのコードを入れるとできます。

from IPython.display import Image, display_png
display_png(Image('./textmining.png'))

まとめ 

上記を活用する際に、理解しておくべきポイントは以下5点です。

今回の抑えドコ
  • iPad上でのPython環境について
    ▷junoも良いがiPadではGoogle Colabolatoryがオススメ!
  • Google colabのiPad利用・特徴
    ▷pipなどや外部APIの利用なども問題なく使える!
  • データの読み込み
    ▷ツイッターの管理者登録をして自身のアカウントからAPIを通す!
  • テキストの形態素解析
    ▷日本語設定に注意!基本はコピペで出来る!
  • ワードクラウド化・出力(ストップワードも)
    ▷ストップワードで調整して出力しまくる!

上記で自分はiPad Pro(初期)で問題なく出来ています。しかも一度通せれば、単語を変えて出力するのもすぐに出来ます。

しかもiPadで完結するため、移動中の電車や出先やカフェなどでもサクッとできるのが素晴らしいです。

既にiPadをもっていてPythonを学び始めた!という人はオープンデータを使うことで達成感やワクワク感を手軽に感じられるのでオススメします。

ご精読頂きありがとうございました。
m(_ _)m

その他、Python初心者のお勉強のお供

上記の内容と併せて実務で活かすという視点では下記の参考図書も合わせて確認すると理解が深まります(-_-)

created by Rinker
¥2,138 (2021/02/26 16:24:32時点 Amazon調べ-詳細)

その他、Python初心者が抑えたいポイント集

Python(主にデータ分析・自動化)に関しては下記のポイントを抑えると実務力につながっていきますので合わせてご参照下さい(‘ω’)ノ

ーPythonのインストール、データ読み込み、各種分析を試すー

【Python入門】WindowsとiPad両方でプログラミング環境を整える

【Python入門】エクセルファイルの読み込み方法

【Python入門】エクセルの”ピボットテーブル”をプログラムする

【Python入門】データ分析の”ビジュアル化”で抑えるべきライブラリとは

【Python入門】回帰分析や分類問題が使えるsklearnの使い方

【Python入門】顧客データを読み込みクラスタリング・ペルソナ分析

【Python入門】画像データを元にディープラーニングで自動判別(CNN等)

【Python入門】WEB上のデータを抽出してテキストマイニング(スクレイピング)

【Python入門】Twitterデータでテキストマイニング(APIの利用)

【Python入門】機械に自動でモデル選定させる(AutoML活用)

【Python入門】iPad×Kaggleで手軽な学習環境を創る

【Python入門】iPad×Google Colabalatoryで手軽にtwitter分析

ーPythonを使ってExcelを扱う “openpyxl”の活用ー

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる①

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる②

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる③

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる④

【Python初心者】Python×効率化 社内のexcel作業の自動化を試みる⑤