GPT-2 em português com Streamlit
Não é preciso retreinar o GPT-2
Descobri o GPT-2, a rede neural da OpenAI, que gera textos a partir de algumas palavras ou frases, quando eu estava escrevendo o artigo Máquinas que escrevem. Como exemplo, utilizei a versão do site Talk to Transformer que, em fevereiro de 2020, era ainda gratuito, e utilizei o Google Translator para traduzir as etapas do inglês para o português, de modo que o texto fosse com o máximo de máquinas.
Em seguida, li que o GPT-2 poderia ser treinado em português a partir de artigos como Train GPT-2 in your own language, de Arshabhi Kayal, e Ensinando português ao GPT-2, de Erick Fonseca, e aí cheguei ao gpt-2-simple.
Entretanto, apareceram muitas dificuldades em se colocar o GPT-2 treinado em português e, ao mesmo tempo, disponível na web. Até que descobri o Prototyping Machine Learning Models with Streamlit, de Mandy Gu, que utiliza o GPT-2 do Transformer, um precursor do GPT-3, com o Streamlit.
Duplo twist carpado
Foi preciso dar um duplo twist carpado: o texto em português deveria ser traduzido para o inglês e resultado, em inglês do GPT-2, novamente para o português. Para isso utilizei o googletrans, que funcionou perfeitamente.
“Alan Turing”
“Noel Rosa”
Até que parou de funcionar devido ao erro ‘NoneType’ object has no attribute ‘group’. Demorei vários dias para descobrir que o googletrans tinha sido substituído pelo google-trans-new. Voltou a funcionar até que parou de novo.
O problema era outro. Existem muitas versões do GPT-2, então o Streamlit deixou de aceitar a versão mais comum (“gpt-2”) e aceitar apenas o openai-gpt, que gera textos, digamos, menos surpreendentes, mas é estável.
A versão final está no GitHub e ficou assim:
Pré-requisitos:
streamlit==0.57.1
tensorflow==2.2.0
transformers==3.0.2
google-trans-new==1.1.9
O código:
E pode ser experimentada em
https://share.streamlit.io/luiscarloseiras/gpt-2pt/main/gpt-2.py
Se divirtam!
A versão é genérica
Para outras línguas, basta substituir os códigos das linhas 41 e 46, conforme tabela publicada no capítulo 7, página 17, do Googletrans Documentation.
Referência:
Daiane dos Santos, duplo twist carpado.