EnsekiTT Blog

EnsekiTTが書くブログです。

他人のツイートに度し難いとか言ってたけど自分のツイートも度し難かった話

つまりなにしたの?

Twitterには過去の自分のツイート全部ダウンロードする機能があるので、今後何か遊ぶときのためにダウンロードしてPandasでDataframeにしておいた。

f:id:ensekitt:20171025205752j:plain

Twitterから過去のツイートをダウンロードする

PCのブラウザからTwitterの設定を開くと、下の方にダウンロードのリクエストがある。リクエストしてから数時間でメールが届く。
f:id:ensekitt:20171025202509p:plain
*1

Twitterを登録しているメールに
「ツイート履歴をご確認ください」
ってメールが来るのでそのメールのリンクを踏むとダウンロードが始まる。

ファイル

  • css
  • data
  • img
  • js
  • lib
  • index.html
  • README.txt
  • tweets.csv

こんなのが入っていて、
index.htmlを開くと、過去ツイートが全部オフラインで見られる。
リツイートとかも含まれるし、右欄にツイートの履歴が見られる。
f:id:ensekitt:20171025205736j:plain
*2
ただ、今回使うのはtweets.csvだけ。

Pandasからtweets.csvを読み込む

PandasはPythonでデータ処理をするならぜひとも入れたいパッケージ。
DataFrameは慣れるまでけっこう大変だけど慣れると今までNumpyとか文字列処理とかで頑張っていたことがよしなに行われて戻れなくなる。んひーぱんだずさいこう。
でも機能が多すぎてイマイチ使いこなせてない感じがする。

pip install pandas
import pandas as pd
tweets_csv = pd.read_csv('ensekitt/tweets.csv')

残念ながらこれだけ。

データの最初だけちょっと見てみる

tweets_csv.head()

Jupyter Notebookで実行するとかなり見やすい感じにまとまって出てくる。
f:id:ensekitt:20171025203611p:plain

独り言だけ取り出してみる

monologue = tweets_csv[
    pd.isnull(tweets_csv.in_reply_to_status_id) 
    & pd.isnull(tweets_csv.in_reply_to_user_id)
    & pd.isnull(tweets_csv.retweeted_status_id)]

DataFrame[条件]
pd.isnull()というのはNaNとかだった時にTrueを返す。&で繋げば全部見たした時みたいになる。
リプライのIDとリツイートのIDがNaNだったら独り言でしょってことで、これで
monologueのなかに独り言だけ格納される。

特定の単語が含まれるツイートの数を数えてみる

oppai = monologue[['おっぱい' in text for text in monologue.text.values]]
oppai.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 133 entries, 346 to 95412
Data columns (total 10 columns):
tweet_id                      133 non-null int64
in_reply_to_status_id         0 non-null float64
in_reply_to_user_id           0 non-null float64
timestamp                     133 non-null object
source                        133 non-null object
text                          133 non-null object
retweeted_status_id           0 non-null float64
retweeted_status_user_id      0 non-null float64
retweeted_status_timestamp    0 non-null object
expanded_urls                 9 non-null object
dtypes: float64(4), int64(1), object(5)
memory usage: 16.4+ KB

独り言で133回でした。病気かな?
f:id:ensekitt:20171025205828p:plain

なんでこんな記事になったのか

JUMAN++の実行を待ってたらJUMAN++ v2だいたいできたよ!改善したしめっちゃ早くなるよ!ってツイートが流れてきて
萎えたのでJUMAN++の実行を止めてそんなに重くないデータセットの準備だけした。

*1:これはリクエスト後の状態

*2:既に度し難さがにじみ出ている