Um pequeno script Python 3 para baixar tweets públicos de contas do Twitter em um formato adequado para ferramentas de geração de texto de IA (como gpt-2-simple para ajuste fino do GPT-2).
Você pode ver exemplos de tweets gerados por IA a partir de conjuntos de dados recuperados com esta ferramenta na pasta /examples
.
Primeiro, clone este repositório em seu sistema e instale as dependências com os seguintes 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
Versões anteriores deste código usavam bibliotecas de raspagem para coletar tweets. Desde então, o Twitter tornou a coleta mais difícil, ao mesmo tempo que fornece APIs de coleta de tweets mais robustas. Em resposta, portamos esse código para ser executado apenas com a API do Twitter.
Para continuar a configuração, crie um aplicativo do Twitter para obter acesso à API do Twitter. Depois de criar um aplicativo, gere tokens de acesso e insira-os na seção do arquivo keys.py
mostrado abaixo.
keys = { 'consumer_key' : "" ,
'consumer_secret' : "" ,
'access_token' : "" ,
'access_token_secret' : "" }
Por fim, vá para a página de ambientes Dev da API do Twitter, gere um ambiente Dev para a API Full Archive e insira o nome do ambiente na seção label
do arquivo keys.py
mostrado abaixo.
label = ""
O script é executado por meio de uma interface de linha de comando. Depois de cd
no diretório onde o script está armazenado em um terminal, execute:
python3 download_tweets.py < twitter_username > 100
por exemplo, se você deseja baixar 100 tweets (sem retuítes/respostas/tweets com citações) do usuário do Twitter @santiagodc, execute:
python3 download_tweets.py santiagodc 100
NOTA: O nível gratuito da API do Twitter tem um limite de coleta de 5.000 tweets por mês, portanto, defina um limite de tweets para evitar atingir seu limite muito rapidamente
O script também pode baixar tweets de vários nomes de usuário ao mesmo tempo. Para isso, primeiro crie um arquivo de texto (.txt) com a lista de nomes de usuários. Em seguida, execute o script referenciando o nome do arquivo:
python3 download_tweets.py < twitter_usernames_file_name > 100
Os tweets serão baixados em um CSV de coluna única intitulado <usernames>_tweets.csv
.
Os parâmetros que você pode passar para a interface da linha de comando (posicional ou explicitamente) são:
@
user do texto do tweet [padrão: False]#
hashtags do texto do tweet [padrão: Falso]O parâmetro sentiment adiciona uma categoria de sentimento ao texto do tweet. Essas informações permitem ao usuário treinar e gerar textos com diferentes sentimentos alterando um parâmetro.
O formato de saída usando o formato de texto 'simples' é o seguinte:
[ Sentiment category ]
[ Tweet text for the tweet that was collected ]
O parâmetro sentiment aceita um número inteiro que especifica o número de categorias de sentimento retornadas. As categorias de sentimento para os diferentes parâmetros possíveis são as seguintes:
O código suporta a coleta de tweets em um formato para treinar uma IA que pode responder a outros tweets. O formato de saída é baseado no formato usado para treinar a comunidade Reddit do Subreddit Simulator.
O formato de saída é o seguinte:
**** 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 coletar tweets com este formato de resposta executando a seguinte instrução:
python3 download_tweets.py < twitter_username > None True False False False 3 reply
Ao especificar uma data, o script baixará os tweets do timeframe
de valor até o presente. Por padrão, ele baixará todos os tweets de um determinado usuário (ou usuários) a partir do dia 22 de março de 2006, o dia em que o primeiro tweet foi enviado. O parâmetro timeframe
é preciso, no qual permite definir o ano, mês, dia, hora e minuto desejados para baixar os tweets, nessa ordem. O formato que o parâmetro timeframe
aceita é semelhante a YYYYMMDDHHMM
.
gpt-2-simple possui um caso especial para CSVs de coluna única, onde processará automaticamente o texto para melhor treinamento e geração. (ou seja, adicionando <|startoftext|>
e <|endoftext|>
a cada tweet, permitindo a geração independente de tweets)
Você pode usar este notebook colaborativo (otimizado a partir do notebook original para este caso de uso) para treinar o modelo em seus tweets baixados e gerar grandes quantidades de tweets a partir dele. Observe que sem muitos dados, o modelo pode facilmente se ajustar demais; você pode querer treinar menos steps
(por exemplo, 500
).
Ao gerar, você sempre precisará incluir determinados parâmetros para decodificar os tweets, por exemplo:
gpt2 . generate ( sess ,
length = 200 ,
temperature = 0.7 ,
prefix = '<|startoftext|>' ,
truncate = '<|endoftext|>' ,
include_prefix = False
)
Santiago Delgado (@santiagodc) baseado em download-tweets-ai-text-gen de @minimaxir
MIT
Este repositório não tem afiliação com o Twitter Inc.