Twitter のリプライたくさん欲しいですよね?
今更ですが.
背景
科学技術の進歩に伴い自然言語処理技術が発達してきました.
データと計算環境があれば会話や要約や感情分類等の様々なモデルを作れることはご存知だと思います.
また,TwitterのようなマイクロブログサービスやSNSでは大量のデータが日々生成されています.
そこでこんなことを思う人が出てきたのではないでしょうか?
- 「Twitterのリプライでチャットボットを作りたい!」
- 「ツイートから位置情報を特定したい!」
- 「あのアカウントを監視したい。」
その中でも今回は「Twitterのリプライでチャットボットを作りたい!」
そんな人のために,TwitterのStreamingAPIを用いたリプライ(テキストのみ)収集方法を紹介します.
動作環境
- Python 3.6+ (pyenv)
- Twitter StreamingAPI
流れ (tl;dr)
- Twitter API tokens を入手
git clone git@github.com:liseos-x140/twitter_scraper.git
cd twitter_scraper/
cp config.yml.default config.yml
-
config.yml
に 1.で入手した自分の tokens をそれぞれ記入. pip install -r requirements.txt
python twitter.py
corpus/corpus/ja_YYYYMMDD_HHMMSS.txtに保存されていきます.
また,半永久的に動くのでscreen
コマンド等を用いたバックグラウンドでの実行をお勧めします.
Twitter API tokens
今回はStreamingAPIを使ってリプライ収集をしていきます.
StreamingAPIが近いうちにそのまま使えなくなるらしい?と聞いて記事をまとめたなんてことはないです多分.
まず,Twitter公式のdeveloperページから規約を確認し,tokensを入手してください.
https://apps.twitter.com
https://developer.twitter.com/content/developer-twitter/en.html
入手方法は割愛します.
初期設定
ソースコードの入手
ソースコードは自分のgithubに置いてあるのでまずcloneしてください.
git clone git@github.com:liseos-x140/twitter_scraper.git
このソースコードは,Marsam-Ma-zz/twitter_scraperを日本語リプライ収集用に独自改良したものです.
API tokens を設定
まずcloneしたレポジトリに移動して,configファイルをコピーもしくはリネームします.
cd twitter_scraper/
cp config.yml.default config.yml
config.ymlの中身を自分のtokensに置き換えます.
twitter:
consumer_key: YOUR_CONSUMER_KEY
consumer_secret: YOUR_CONSUMER_SECRET
access_token: YOUR_ACCESS_TOKEN
access_token_secret: YOUR_ACCESS_SECRET
必要ライブラリのインストール
pip install -r requirements.txt
実行
環境によってはtwitter.py
のshebangを設定し直してください.
(プログラムの解説は時間のあるときに追記するかも)
python twitter.py
注意していただきたいのが,
このスクリプトは問題が発生する限り半永久的に収集しますのでご注意ください.
このため,screen
コマンドなどを用いてバックグラウンドでの実行がお勧めです.
Filter
stream.filterを用いて監視を行います.track
に指定した文字列により,指定の検索ワードでストリーミングが行えます.
デフォルトでは,
track=['私','あなた','俺','ー','する','です','ます','けど','何','@', '#', '#', '。', ',', '!','?','…', '.', '!','?', ',', ':', ':', '』', ')', ')', '...']
という適当な文字列を指定しているので,自分でフィルターを改良したほうがいいと思割れます.詳しくは公式ガイドを参照ください.
出力
corpus/corpus/ja_YYYYMMDD_HHMMSS.txtに保存されていきます.
Line number | Sentences |
---|---|
1 | 誕生日おめでとう! |
2 | ありがとう! |
3 | おはようー |
4 | おは! |
それぞれ Line number(1,2),(3,4) がそれぞれ独立した会話のペアになっており,奇数行が発言,偶数行がそれに対する返信となっています. |
最後に
簡単にTwitterのリプライを収集する方法をまとめてみました.
(クソリプしか収集できない愚痴はTwitterユーザーに言ってください.)
コードを改良すれば,リプライのテキストと同時に画像を収集できると思います.
また,改良元のレポジトリでは中国語や英語のリプライを収集できるようになっています.近々,対話システム系のチャレンジがあるのでその練習とかに使ってみるのはいかがでしょうか?
DSTC7 Dialog System Technology Challenges
初投稿ともあり拙い文章となっていて申し訳ありませんでしたが,
閲覧,ありがとうございました.