Un pequeño script de Python 3 para descargar tweets públicos de cuentas de Twitter en un formato adecuado para herramientas de generación de texto de IA (como gpt-2-simple para ajustar GPT-2).
Puede ver ejemplos de tweets generados por IA a partir de conjuntos de datos recuperados con esta herramienta en la carpeta /examples
.
Primero, clona este repositorio en tu sistema e instala las dependencias con los siguientes comandos:
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
Las versiones anteriores de este código utilizaban bibliotecas de scraping para recopilar tweets. Desde entonces, Twitter ha hecho que el scraping sea más difícil y al mismo tiempo ha proporcionado API de recopilación de tweets más sólidas. En respuesta, trasladamos este código para que se ejecute únicamente con la API de Twitter.
Para continuar con la configuración, cree una aplicación de Twitter para poder obtener acceso a la API de Twitter. Una vez que cree una aplicación, genere tokens de acceso e introdúzcalos en la sección del archivo keys.py
que se muestra a continuación.
keys = { 'consumer_key' : "" ,
'consumer_secret' : "" ,
'access_token' : "" ,
'access_token_secret' : "" }
Finalmente, vaya a la página de entornos de desarrollo de la API de Twitter, genere un entorno de desarrollo para la API de archivo completo e ingrese el nombre del entorno en la sección label
del archivo keys.py
que se muestra a continuación.
label = ""
El script se ejecuta a través de una interfaz de línea de comandos. Después de cd
al directorio donde está almacenado el script en una terminal, ejecute:
python3 download_tweets.py < twitter_username > 100
Por ejemplo, si desea descargar 100 tweets (sin retweets/respuestas/citas de tweets) del usuario de Twitter @santiagodc, ejecute:
python3 download_tweets.py santiagodc 100
NOTA: El nivel gratuito de la API de Twittter tiene un límite de recopilación de 5000 tweets por mes, así que establezca un límite de tweets para evitar alcanzar su límite demasiado rápido.
El script también puede descargar tweets de varios nombres de usuario al mismo tiempo. Para hacerlo, primero cree un archivo de texto (.txt) con la lista de nombres de usuario. Luego, ejecute el script que haga referencia al nombre del archivo:
python3 download_tweets.py < twitter_usernames_file_name > 100
Los tweets se descargarán en un CSV de una sola columna titulado <usernames>_tweets.csv
.
Los parámetros que puede pasar a la interfaz de línea de comando (de forma posicional o explícita) son:
@
de usuario en el texto del tweet [predeterminado: Falso]#
hashtags en el texto del tweet [predeterminado: Falso]El parámetro de sentimiento agrega una categoría de sentimiento al texto del tweet. Esta información permite al usuario entrenar y generar texto con diferentes sentimientos cambiando un parámetro.
El formato de salida utilizando el formato de texto 'simple' es el siguiente:
[ Sentiment category ]
[ Tweet text for the tweet that was collected ]
El parámetro de sentimiento acepta un número entero que especifica el número de categorías de sentimiento que se devuelven. Las categorías de sentimiento para los diferentes parámetros posibles son las siguientes:
El código admite la recopilación de tweets en un formato para entrenar una IA que pueda responder a otros tweets. El formato de salida se basa en el formato utilizado para capacitar a la comunidad Subreddit Simulator Reddit.
El formato de salida es el siguiente:
**** 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 ]
Para recopilar tweets con este formato de respuesta ejecutando la siguiente declaración:
python3 download_tweets.py < twitter_username > None True False False False 3 reply
Al especificar una fecha, el script descargará los tweets desde el timeframe
del valor hasta el presente. De forma predeterminada, descargará todos los tweets de un usuario (o usuarios) determinado a partir del día 22 de marzo de 2006, el día en que se envió el primer tweet. El parámetro timeframe
es preciso y le permite ingresar el año, mes, día, hora y minuto deseados para descargar tweets, en ese orden. El formato que acepta el parámetro timeframe
es YYYYMMDDHHMM
.
gpt-2-simple tiene un caso especial para CSV de una sola columna, donde procesará automáticamente el texto para una mejor capacitación y generación. (es decir, agregando <|startoftext|>
y <|endoftext|>
a cada tweet, lo que permite la generación independiente de tweets)
Puede utilizar este cuaderno de colaboración (optimizado del cuaderno original para este caso de uso) para entrenar el modelo en sus tweets descargados y generar cantidades masivas de tweets a partir de él. Tenga en cuenta que sin muchos datos, el modelo podría fácilmente sobreajustarse; es posible que desees entrenar con menos steps
(por ejemplo, 500
).
Al generar, siempre necesitarás incluir ciertos parámetros para decodificar los tweets, por ejemplo:
gpt2 . generate ( sess ,
length = 200 ,
temperature = 0.7 ,
prefix = '<|startoftext|>' ,
truncate = '<|endoftext|>' ,
include_prefix = False
)
Santiago Delgado (@santiagodc) basado en download-tweets-ai-text-gen de @minimaxir
MIT
Este repositorio no tiene afiliación con Twitter Inc.