Ein kleines Python 3-Skript zum Herunterladen öffentlicher Tweets von Twitter-Konten in ein Format, das für KI-Textgenerierungstools geeignet ist (z. B. gpt-2-simple zur Feinabstimmung von GPT-2).
Sie können Beispiele für KI-generierte Tweets aus mit diesem Tool abgerufenen Datensätzen im Ordner /examples
anzeigen.
Klonen Sie zunächst dieses Repository auf Ihr System und installieren Sie Abhängigkeiten mit den folgenden Befehlen:
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
Frühere Versionen dieses Codes verwendeten Scraping-Bibliotheken zum Sammeln von Tweets. Seitdem hat Twitter das Scraping erschwert und gleichzeitig robustere Tweet-Sammlungs-APIs bereitgestellt. Als Reaktion darauf haben wir diesen Code so portiert, dass er nur mit der Twitter-API ausgeführt werden kann.
Um mit der Einrichtung fortzufahren, erstellen Sie eine Twitter-App, damit Sie Zugriff auf die Twitter-API erhalten. Sobald Sie eine App erstellt haben, generieren Sie Zugriffstokens und geben Sie diese in den unten gezeigten Abschnitt der Datei keys.py
ein.
keys = { 'consumer_key' : "" ,
'consumer_secret' : "" ,
'access_token' : "" ,
'access_token_secret' : "" }
Gehen Sie abschließend zur Seite „Entwicklungsumgebungen“ der Twitter-API, generieren Sie eine Entwicklungsumgebung für die Full Archive API und geben Sie den Namen der Umgebung in den label
Abschnitt der unten gezeigten Datei keys.py
ein.
label = ""
Das Skript wird über eine Befehlszeilenschnittstelle ausgeführt. Führen Sie nach cd
in das Verzeichnis, in dem das Skript in einem Terminal gespeichert ist, Folgendes aus:
python3 download_tweets.py < twitter_username > 100
Wenn Sie beispielsweise 100 Tweets (ohne Retweets/Antworten/Zitat-Tweets) vom Twitter-Benutzer @santiagodc herunterladen möchten, führen Sie Folgendes aus:
python3 download_tweets.py santiagodc 100
HINWEIS: Die kostenlose Stufe der Twittter-API hat ein Erfassungslimit von 5.000 Tweets pro Monat. Legen Sie daher ein Tweet-Limit fest, um zu vermeiden, dass Ihr Limit zu schnell erreicht wird
Das Skript kann auch Tweets von mehreren Benutzernamen gleichzeitig herunterladen. Erstellen Sie dazu zunächst eine Textdatei (.txt) mit der Liste der Benutzernamen. Führen Sie dann das Skript aus, das auf den Dateinamen verweist:
python3 download_tweets.py < twitter_usernames_file_name > 100
Die Tweets werden in eine einspaltige CSV-Datei mit dem Titel <usernames>_tweets.csv
heruntergeladen.
Die Parameter, die Sie an die Befehlszeilenschnittstelle übergeben können (positionell oder explizit), sind:
@
-Benutzer-Tags im Tweet-Text [Standard: Falsch]#
Hashtags im Tweet-Text [Standard: Falsch]Der Sentiment-Parameter fügt dem Tweet-Text eine Sentiment-Kategorie hinzu. Mithilfe dieser Informationen kann der Benutzer durch Ändern eines Parameters Text mit unterschiedlichen Gefühlen trainieren und generieren.
Das Ausgabeformat unter Verwendung des „einfachen“ Textformats ist das folgende:
[ Sentiment category ]
[ Tweet text for the tweet that was collected ]
Der Sentiment-Parameter akzeptiert eine ganze Zahl, die die Anzahl der zurückgegebenen Sentiment-Kategorien angibt. Die Stimmungskategorien für die verschiedenen möglichen Parameter sind die folgenden:
Der Code unterstützt das Sammeln von Tweets in einem Format zum Trainieren einer KI, die auf andere Tweets antworten kann. Das Ausgabeformat basiert auf dem Format, das zum Trainieren der Subreddit-Simulator-Reddit-Community verwendet wird.
Das Ausgabeformat ist das folgende:
**** 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 ]
Um Tweets mit diesem Antwortformat zu sammeln, führen Sie die folgende Anweisung aus:
python3 download_tweets.py < twitter_username > None True False False False 3 reply
Durch Angabe eines Datums lädt das Skript Tweets vom timeframe
bis zur Gegenwart herunter. Es lädt standardmäßig jeden Tweet eines bestimmten Benutzers (oder mehrerer Benutzer) herunter, beginnend mit dem 22. März 2006, dem Tag, an dem der erste Tweet überhaupt gesendet wurde. Der timeframe
ist präzise und ermöglicht es Ihnen, in dieser Reihenfolge ein gewünschtes Jahr, einen Monat, einen Tag, eine Stunde und eine Minute einzugeben, von denen Tweets heruntergeladen werden sollen. Das vom timeframe
akzeptierte Format sieht wie folgt aus YYYYMMDDHHMM
.
gpt-2-simple verfügt über einen Sonderfall für einspaltige CSVs, bei denen der Text für optimales Training und Generierung automatisch verarbeitet wird. (d. h. durch Hinzufügen <|startoftext|>
und <|endoftext|>
zu jedem Tweet, was eine unabhängige Erstellung von Tweets ermöglicht)
Sie können dieses Colaboratory-Notizbuch (vom Original-Notizbuch für diesen Anwendungsfall optimiert) verwenden, um das Modell anhand Ihrer heruntergeladenen Tweets zu trainieren und daraus riesige Mengen an Tweets zu generieren. Beachten Sie, dass das Modell ohne viele Daten leicht überpassen könnte. Möglicherweise möchten Sie mit weniger steps
trainieren (z. B. 500
).
Beim Generieren müssen Sie immer bestimmte Parameter zum Dekodieren der Tweets einbeziehen, z. B.:
gpt2 . generate ( sess ,
length = 200 ,
temperature = 0.7 ,
prefix = '<|startoftext|>' ,
truncate = '<|endoftext|>' ,
include_prefix = False
)
Santiago Delgado (@santiagodc) basierend auf download-tweets-ai-text-gen von @minimaxir
MIT
Dieses Repo steht in keiner Verbindung zu Twitter Inc.