min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Python3 twitterからKEYWORD関連のツイートを大量に取得する(fastTextに機械学習させるための教師データを取得する)

面白そうな記事を見つけた。

tech.wonderpla.net

 

facebook謹製の「fastText」機械学習により文章の類似度を判定しテキストを分類できるらしい。

 

大量のデータをtwitterから取ってきてfastTextに学習させると、次回からはこちら(人間)が与えた文章を(学習に従って)分類してくれる、という代物のようだ。

 

<流れ>

twitterでKEYWORD関連のデータを大量に取得する

例)

 KEYWORD:ポッキーの日  取得したデータ:__label__9_POKKI.txt

 KEYWORD:静岡      取得したデータ:__label__10_SHIZUOKA.txt

 KEYWORD:…                         取得したデータ:__label__…

 

② そのデータ(教師データという)を使って生徒(=fastText=人工知能)に機械学習させる

 → 学習結果が model.bin ファイルに出力される。

 

③ 学習して賢くなった生徒(fastText)に文章を与えると、学習結果(model.bin)を使って適切なカテゴリに分類してくれる

 

 

 

 

記事のとおりやってみる。今回は①を行う。

 

$ vim my3_01_tweet_get.py

f:id:min117:20181112005246p:plain

f:id:min117:20181112004915p:plain

 

実行してみる。

$ python3 my4_01_tweet_get.py

f:id:min117:20181112005455p:plain

KEYWORDに該当するツイートは72件しかなかったようだ。

 

結果はファイル名「__label__9.txt」に出力される(上記ソースの21行目)ので、最初の20件だけ見てみる。

 

$ cat __label__9.txt | head -n 20

f:id:min117:20181112005712p:plainうまく取得できている。

 

1回に取得できるツイートの量は100件と(twitter社のAPIで)決まっているので、100件を超えて取得するには何度かこれを繰り返せばよい。

 

10秒の間隔を置いて、5回繰り返してみる。

$ for i in $(seq 1 5); do echo "$i"; python3 my4_01_tweet_get.py; sleep 10; done

f:id:min117:20181112010332p:plain

 

結果ファイルの行数を確認する。

$ cat __label__9.txt | wc

f:id:min117:20181112010514p:plain

472行ある。しっかりと取得できたようだ。

 

取得したツイートを覗いてみる。今度はファイルの末尾から tailで見てみる。cat -n して行番号も表示する。

$ cat -n __label__9.txt | tail -n 20

f:id:min117:20181112010825p:plain

バッチリ書き込まれている。

これでKEYWORDに沿ったツイートを取得できることがわかった。

 

あとは、ソース内のKEYWORD(20行目)と保存ファイル名(21行目)を変えれば、キーワードごとに大量のツイートサンプルを取得できる。

 

次回はそれを(教師データとして)使ってfastTextに機械学習させる。