Un petit script Python 3 pour télécharger des Tweets publics à partir de comptes Twitter dans un format adapté aux outils de génération de texte d'IA (tels que gpt-2-simple pour affiner GPT-2).
Vous pouvez afficher des exemples de tweets générés par l'IA à partir d'ensembles de données récupérés avec cet outil dans le dossier /examples
.
Tout d'abord, clonez ce référentiel sur votre système et installez les dépendances avec les commandes suivantes :
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
Les versions précédentes de ce code utilisaient des bibliothèques de scraping pour collecter des tweets. Depuis lors, Twitter a rendu le scraping plus difficile tout en fournissant des API de collecte de tweets plus robustes. En réponse, nous avons porté ce code pour qu'il s'exécute uniquement avec l'API de Twitter.
Pour poursuivre la configuration, créez une application Twitter afin de pouvoir accéder à l'API Twitter. Une fois que vous avez créé une application, générez des jetons d'accès et saisissez-les dans la section du fichier keys.py
ci-dessous.
keys = { 'consumer_key' : "" ,
'consumer_secret' : "" ,
'access_token' : "" ,
'access_token_secret' : "" }
Enfin, accédez à la page des environnements de développement de l'API Twitter, générez un environnement de développement pour l'API Full Archive et saisissez le nom de l'environnement dans la section label
du fichier keys.py
présenté ci-dessous.
label = ""
Le script est exécuté via une interface de ligne de commande. Après cd
dans le répertoire où le script est stocké dans un terminal, exécutez :
python3 download_tweets.py < twitter_username > 100
Par exemple, si vous souhaitez télécharger 100 tweets (sans retweets/réponses/citations de tweets) de l'utilisateur Twitter @santiagodc, exécutez :
python3 download_tweets.py santiagodc 100
REMARQUE : Le niveau gratuit de l'API Twitter a une limite de collecte de 5 000 tweets par mois, alors définissez une limite de tweets pour éviter d'atteindre votre limite trop rapidement.
Le script peut également télécharger des tweets de plusieurs noms d'utilisateur à la fois. Pour ce faire, créez d'abord un fichier texte (.txt) avec la liste des noms d'utilisateurs. Ensuite, exécutez le script faisant référence au nom du fichier :
python3 download_tweets.py < twitter_usernames_file_name > 100
Les tweets seront téléchargés dans un fichier CSV à une seule colonne intitulé <usernames>_tweets.csv
.
Les paramètres que vous pouvez transmettre à l'interface de ligne de commande (positionnellement ou explicitement) sont :
@
dans le texte du tweet [par défaut : False]#
hashtags dans le texte du tweet [par défaut : False]Le paramètre sentiment ajoute une catégorie de sentiment au texte du tweet. Ces informations permettent à l'utilisateur de former et de générer du texte avec différents sentiments en modifiant un paramètre.
Le format de sortie utilisant le format texte « simple » est le suivant :
[ Sentiment category ]
[ Tweet text for the tweet that was collected ]
Le paramètre sentiment accepte un entier qui spécifie le nombre de catégories de sentiments renvoyées. Les catégories de sentiments pour les différents paramètres possibles sont les suivantes :
Le code prend en charge la collecte de tweets dans un format permettant de former une IA capable de répondre à d'autres tweets. Le format de sortie est basé sur le format utilisé pour former la communauté Subreddit Simulator Reddit.
Le format de sortie est le suivant :
**** 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 ]
Pour collecter des tweets avec ce format de réponse en exécutant l'instruction suivante :
python3 download_tweets.py < twitter_username > None True False False False 3 reply
En spécifiant une date, le script téléchargera les tweets depuis la timeframe
de valeur jusqu'au présent. Par défaut, il téléchargera chaque tweet d'un ou plusieurs utilisateurs donnés à partir du 22 mars 2006, jour où le premier tweet a été envoyé. Le paramètre timeframe
est précis, dans lequel il vous permet de saisir l'année, le mois, le jour, l'heure et la minute souhaités à partir desquels télécharger les tweets, dans cet ordre. Le format accepté par le paramètre timeframe
ressemble à YYYYMMDDHHMM
.
gpt-2-simple a un cas particulier pour les CSV à colonne unique, où il traitera automatiquement le texte pour une meilleure formation et génération. (c'est-à-dire en ajoutant <|startoftext|>
et <|endoftext|>
à chaque tweet, permettant une génération indépendante de tweets)
Vous pouvez utiliser ce notebook Colaboratory (optimisé à partir du notebook d'origine pour ce cas d'utilisation) pour entraîner le modèle sur vos tweets téléchargés et générer des quantités massives de Tweets à partir de celui-ci. Notez que sans beaucoup de données, le modèle pourrait facilement être surajusté ; vous souhaiterez peut-être vous entraîner sur moins steps
(par exemple 500
).
Lors de la génération, vous devrez toujours inclure certains paramètres pour décoder les tweets, par exemple :
gpt2 . generate ( sess ,
length = 200 ,
temperature = 0.7 ,
prefix = '<|startoftext|>' ,
truncate = '<|endoftext|>' ,
include_prefix = False
)
Santiago Delgado (@santiagodc) basé sur download-tweets-ai-text-gen par @minimaxir
MIT
Ce dépôt n'a aucune affiliation avec Twitter Inc.