Twitter アカウントから公開ツイートを AI テキスト生成ツール (GPT-2 を微調整するための gpt-2-simple など) に適した形式でダウンロードするための小さな Python 3 スクリプト。
このツールで取得したデータセットから AI が生成したツイートの例は、 /examples
フォルダーで表示できます。
まず、このリポジトリのクローンをシステムに作成し、次のコマンドを使用して依存関係をインストールします。
git clone https://github.com/sdelgadoc/download-tweets-ai-text-gen-plus.git
cd download-tweets-ai-text-gen-plus
pip3 install -r requirements.txt
このコードの以前のバージョンでは、スクレイピング ライブラリを使用してツイートを収集していました。それ以来、Twitter はより堅牢なツイート収集 API を提供しながら、スクレイピングをより困難にしました。それに応じて、このコードを Twitter の API でのみ実行できるように移植しました。
セットアップを続行するには、Twitter API にアクセスできるように Twitter アプリを作成します。アプリを作成したら、アクセス トークンを生成し、以下に示すkeys.py
ファイルのセクションにそれらを入力します。
keys = { 'consumer_key' : "" ,
'consumer_secret' : "" ,
'access_token' : "" ,
'access_token_secret' : "" }
最後に、Twitter API の開発環境ページに移動し、フル アーカイブ API の開発環境を生成し、以下に示すkeys.py
ファイルのlabel
セクションに環境の名前を入力します。
label = ""
スクリプトはコマンド ライン インターフェイス経由で実行されます。ターミナルでスクリプトが保存されているディレクトリにcd
した後、次のコマンドを実行します。
python3 download_tweets.py < twitter_username > 100
たとえば、Twitter ユーザー @santiagodc から 100 件のツイート (リツイート/返信/引用ツイートを除く) をダウンロードする場合は、次を実行します。
python3 download_tweets.py santiagodc 100
注: Twitter API の無料枠には、1 か月あたり 5,000 ツイートのコレクション制限があるため、すぐに制限に達しないようにツイート制限を設定してください。
このスクリプトでは、複数のユーザー名のツイートを一度にダウンロードすることもできます。これを行うには、まずユーザー名のリストを含むテキスト ファイル (.txt) を作成します。次に、ファイル名を参照するスクリプトを実行します。
python3 download_tweets.py < twitter_usernames_file_name > 100
ツイートは、 <usernames>_tweets.csv
という名前の 1 列の CSV にダウンロードされます。
コマンド ライン インターフェイスに (位置的または明示的に) 渡すことができるパラメーターは次のとおりです。
@
ユーザータグを削除します [デフォルト: False]#
のハッシュタグを削除します [デフォルト: False]センチメント パラメーターは、ツイート テキストにセンチメント カテゴリを追加します。この情報により、ユーザーはパラメーターを変更することで、さまざまな感情を含むテキストをトレーニングおよび生成できます。
「単純」テキスト形式を使用した出力形式は次のとおりです。
[ Sentiment category ]
[ Tweet text for the tweet that was collected ]
センチメント パラメーターは、返されるセンチメント カテゴリの数を指定する整数を受け入れます。考えられるさまざまなパラメーターのセンチメント カテゴリは次のとおりです。
このコードは、他のツイートに返信できる AI をトレーニングするための形式でツイートを収集することをサポートしています。出力形式は、Subreddit Simulator Reddit コミュニティのトレーニングに使用される形式に基づいています。
出力形式は次のとおりです。
**** ARGUMENTS
ORIGINAL or REPLY: Whether the tweet is an original tweet or a reply
SENTIMENT: If the sentiment parameter is used, text describing the tweet text's sentiment
**** PARENT
[ Tweet text for the topmost tweet in a reply thread ]
**** IN_REPLY_TO
[ Tweet text for the tweet that is being responded to ]
**** TWEET
[ Tweet text for the tweet that was collected ]
この返信形式でツイートを収集するには、次のステートメントを実行します。
python3 download_tweets.py < twitter_username > None True False False False 3 reply
日付を指定すると、スクリプトはその値のtimeframe
から現在までのツイートをダウンロードします。デフォルトでは、最初のツイートが送信された日である 2006 年 3 月 22 日以降、特定のユーザー (または複数のユーザー) からのすべてのツイートがダウンロードされます。 timeframe
パラメータは正確で、希望する年、月、日、時、分を指定して、その順序でツイートをダウンロードできます。 timeframe
パラメーターが受け入れる形式は、 YYYYMMDDHHMM
のようになります。
gpt-2-simple には、単一列 CSV 用の特別なケースがあり、最適なトレーニングと生成のためにテキストが自動的に処理されます。 (つまり、 <|startoftext|>
と<|endoftext|>
を各ツイートに追加して、ツイートを独立して生成できるようにします)
この Colaboratory ノートブック (このユースケース用に元のノートブックから最適化されたもの) を使用して、ダウンロードしたツイートでモデルをトレーニングし、そこから大量のツイートを生成できます。大量のデータがないと、モデルは簡単に過剰適合する可能性があることに注意してください。より少ないsteps
(例: 500
) でトレーニングすることもできます。
生成するときは、ツイートをデコードするために常に特定のパラメーターを含める必要があります。例:
gpt2 . generate ( sess ,
length = 200 ,
temperature = 0.7 ,
prefix = '<|startoftext|>' ,
truncate = '<|endoftext|>' ,
include_prefix = False
)
サンティアゴ デルガド (@santiagodc) @minimaxir による download-tweets-ai-text-gen に基づく
マサチューセッツ工科大学
このリポジトリは Twitter Inc. とは関係がありません。