• Nenhum resultado encontrado

O primeiro protótipo de geração de texto

4. Implementação

4.1 O primeiro protótipo de geração de texto

Sendo que a parte que mais dificuldades me iria levantar, devido a um menor domínio da área, seria a programação do modelo de geração de texto, resolvi começar por aí o trabalho de implementação.

Sabia que teria invariavelmente de recorrer à programação de raiz de um modelo adaptado à ferramenta que pretendia criar, acima de tudo pela sua componente de uso em tempo real. As primeiras pesquisas que fiz apontavam para o recurso à programação em Python, bastante usada na NLG e com bastantes livrarias já pré-construídas, mas encontrava-me mais familiarizado com Java,

nomeadamente através do Processing22, o que permitiria facilmente um eventual recurso ao p5.js23 e a

possíveis aplicações online futuras.

Cheguei assim à RiTa Library24, uma biblioteca para o estudo e geração criativa de texto. Várias

razões definiram desde cedo o recurso à RiTa como preferencial, não só a nível técnico por correr nativamente em Processing e ser de fácil aplicação ao modelo que pretendia desenhar contendo mesmo uma ferramenta de geração e aplicação de n-grams (cadeias de Markov), como a nível

22 Processing é um software para escrita de código em java que integra a componente de compilação, com

a particularidade de ser desenhado para funcionar a 60 frames por segundo, o que o torna ideal para programação criativa e visual.

23 Uma adaptação em JavaScript do Processing.

24 O RiTa é um conjunto de ferramentas em Java e JavaScript para análise e geração de texto, focadas na

língua inglesa, que permitem a automação de várias tarefas de construção e desconstrução heurística de textos. É open source e encontra-se disponível em rednoise.org/rita.

ideológico e conceptual. Como se pode ler no manifesto dos autores25, a RiTa pretende providenciar ferramentas simples mas potentes e de fácil aplicação, de forma a providenciar uma manipulação heurística do texto, mantendo-se desta forma longe do machine learning e de aproximações tecnologicamente mais avançadas ou otimizadas a favor de uma aproximação criativa, estética e heurística, o que vem precisamente ao encontro das premissas conceptuais que procuro explorar.

Assim, comecei a desenhar os primeiros exemplos de mistura de texto através de aplicação de cadeias de Markov, recurso disponível na RiTa. O primeiro protótipo base consistia no seguinte: uma implementação em Processing de um programa que analisava dois ficheiros (*.txt) externos, criava as tabelas de probabilidade das cadeias de Markov entre ambos (recorrendo ao objecto RiMarkov da

RiTa) de onde poderíamos gerar uma quantidade pré-definida de texto. Este primeiro protótipo26 foi

importante para conseguir estudar o funcionamento da RiTa e de como poderia retirar o máximo de conteúdos recurso a modelos mais complexos de geração de texto.

Com esta implementação, comecei a experimentar conteúdos diferentes nos dois repositórios, que neste caso eram os dois ficheiros de texto, nos quais podia de forma muito rápida e direta controlar o conteúdo que era alimentado ao sistema através do próprio sistema operativo e do copy- paste no próprio texto contido em cada um. Esta componente interessou-me bastante pois estes dois ficheiros de texto funcionavam como uma espécie de páginas em branco onde eu poderia, à semelhança do exemplo dado por Burroughs (ver 2.3) copiar, cortar e colar excertos ou textos completos para serem combinados entre si e assim obter um nível superficial de controlo das temáticas gerais. Experimentei vários textos fonte, desde Os Lusíadas (1572) de Luís de Camões, a notícias retiradas diretamente da internet, passando por textos filosóficos e obras de ficção científica, e deste modo consegui perceber que o sistema funcionava conforme pretendia. Misturando notícias de desastres com texto político obtinham-se textos de política desastrosa. Misturando filosofia política com ficção científica, obtinha-se ficção especulativa, e por aí em diante. Um dos exemplos que melhor funcionou foi a mistura entre textos sobre o horror e a literatura de horror de H.P. Lovecraft e o próprio Sociedade do Espectáculo de Guy Debord já mencionado. Alguns dos exemplos aleatórios que saíram desta aplicação:

- The House of revolution, the vivid and terrible, the British antiquary of proletarian movement is all the world into formless animality.

- The Spectacle is a shuddering housemaid, the House of theoritical visions embodied reflects the general manifestation.

25 Disponível em https://github.com/dhowe/RiTa/wiki/Frequently-Asked-Questions consultado a 8 de

- Capitalist production and the change, with occasional weird tales as is devoted to a fabulous. Because they reserved themselves as Marx was a leper died. This millenarian utopia of the most cases Dunsany’s lands as one may not

-The Dybbuk, and generalized separation is dying without title, with it’s illusion. This is exclusively dominated by arms around the earliest of the social base.

Estes exemplos foram retirados diretamente do modelo que construí e eram apresentados graficamente da seguinte forma:

Fig. 3 Primeiro protótipo de geração de texto

Com esta implementação descobri uma das primeiras características inerentes a este sistema que resolvi adotar e explorar criativamente: as imperfeições na formatação e na gramática do texto resultante. Foi nesta característica que percebi que estaria boa parte da componente da serendipidade do texto resultante, bem como boa parte da componente da subjetividade deixada a cargo do leitor, dependendo de como cada um juntaria as frases que estavam legíveis no texto mas que estavam também de certa forma complexificados visualmente através da pontuação e da quebra errática do texto. Surgiu assim uma vontade de explorar também esta componente quase glitch e deixar que isto se tornasse numa espécie de jargão do próprio sistema. Este jargão funcionava a favor de duas formas, não só conferia uma nova camada interpretativa ao leitor/espectador, permitindo a cada um juntar as peças desconexas do texto de forma mais natural a si próprio, coisa que o cérebro humano faz naturalmente, como servia ao objetivo crítico da tecnologia em si, evidenciando as suas falhas. Assim, passando para o contexto de uso real, o espectador estaria a ouvir uma performance musical e a ser deparado com texto interpretativo, o que aumentaria a resposta emocional e o engajamento com a

performance como um todo. Esta componente vem ainda a evidenciar a força inerente ao texto escrito e à leitura, já que quando lemos algo, assumimos a priori que alguém o escreveu (e não que foi combinado semi-aleatoriamente por um algoritmo) e que esse alguém tinha algum objetivo ou sentido na sua escrita. Ou seja, deparando-se com texto o espectador sente-se ele próprio responsável pelo decifrar de algum tipo de mensagem, independentemente deste ser escrito com ou sem intenção consciente ou humana.

Esta componente de “legibilidade gramatical” do texto é conferida pelo grau da cadeia de Markov que é aplicado aquando da sua geração, ou seja, do n-gram da cadeia de Markov. Esta componente é uma das variáveis que podemos controlar no objecto RiMarkov do RiTA e surgiu assim como uma das primeiras características provenientes da experimentação prática que vieram a ser introduzidas no desenho final.

Ainda durante estes testes encontrei uma das primeiras restrições técnicas: o tempo que o programa demorava a criar a tabela de probabilidades dependia diretamente da quantidade de texto, ou seja, textos muitos grandes demoravam bastante tempo a serem mapeados probabilistacamente. Isto significava que, na prática, a geração da tabela de probabilidades ia ser uma restrição à resposta em tempo real do modelo e que iria ter de ser incorporada de alguma forma que fosse invisível para o espectador ou de alguma forma que não fosse percetível durante a performance.

Documentos relacionados