Processamento de linguagem natural com deep learning

Neste texto, apresento como algoritmos de inteligência artificial lidam com textos e também faço uma aplicação simples de como um chatbot pode ser turbinado.

Adriano Moala
Porto
4 min readJul 2, 2020

--

Photo by Priscilla Du Preez on Unsplash

Algoritmos de Inteligência artificial fazem contas de forma rápida e otimizada para extrair padrões e fazer comparações. Por exemplo, a cidade de São Paulo é representada pelo ponto (-23.5506, -46.6338) de latitude e longitude e o Rio de Janeiro por (-22.9058, -43.1745). Confira no Google Maps! Com essas informações podemos calcular a distância entre elas. Ou ainda, saber que a cidade de Natal está mais próxima do Rio de Janeiro. Essa manipulação numérica já está no nosso dia a dia, mas qual seria a distância entre as palavras “carro” e “casa”? Ou ainda, qual a relação entre “eu vendi meu carro” e “eu vendi minha casa”?

Para responder a essas perguntas, foram desenvolvidos modelos que transformam textos em representações numéricas (word embedding). Esses algoritmos são treinados para extrair padrões de grandes bases de dados, como a Wikipedia. Por exemplo, o modelo desenvolvido pelo Facebook conta com 592 mil termos em português.

Photo by Bruno Wolff on Unsplash

Podemos voltar no exemplo anterior e pensar o seguinte: seria possível representar as cidades do Rio de Janeiro e de São Paulo por apenas um valor, latitude ou longitude? Isso deixaria várias cidades na mesma posição, deixando a localização incorreta, o que levaria a uma distância também incorreta. Podemos representar a informação com 3 posições? Sim, bastaria colocar a altitude das cidades.

Transportando para nosso problema original com texto, podemos concluir que, quanto mais elementos nesse vetor, mais informações ele pode carregar em relação ao nosso extenso vocabulário. Ao mesmo tempo, uma quantidade muito grande pode não agregar tanto e, por otimização ficamos com menos. Os pesquisadores concluíram que 300 elementos trazem uma boa representação das palavras. Você já pode imaginar uma planilha com cada palavra em uma linha e 300 colunas para representá-la.

Vamos a um exemplo com o modelo real. Usando a palavra “navio” como referência, os dez termos mais próximos são listados seguir, sendo “navios” o mais próximo, seguido de “cargueiro” e “barco”. No mesmo contexto geralmente são encontrados também “afundado” e “naufragado”. Como estão ordenados pela distância, isso quer dizer que o modelo coloca “navio” mais próximo de “barco” do que “submarino”. Faz sentido!

Agora, vamos utilizar um conjunto maior de palavras e obter a representação vetorial. Vetorial? Nossas 300 colunas ou dimensões! Como são 300 colunas fica impossível compará-las visualmente, então podemos aplicar outro algoritmo de machine learning para reduzir as 300 dimensões para apenas duas dimensões, o que nos leva à próxima figura.

Próprio Autor

A proximidade dos pontos indica a semelhança dos termos, por exemplo, “deputado”, “prefeito” e “governador” estão em um grupo similar. Depois aparecem as cores: “azul”, “verde” e “amarelo”. Na parte inferior, aparecem juntos os termos “colheita”, “milho” e “soja”. Os meios de transporte também aparecem em um grupo com “caminhão”, “carro”, “moto”,trator” e “navio”. Os ambientes “mar” e “oceano” também ficam juntos, e ainda perto do termo “navio”. Da mesma forma: “trator” e “colheita”. Em seguida um grupo de animais e por último o grupo de leitura com “revista”, “jornal” e “livro”.

Mas, uma análise de texto é mais do que palavras, o que nos interessa é saber a relação entre sentenças. Agora, ao invés da palavra, toda a sentença terá sua representação vetorial com 300 elementos. Para vermos com isso fica, podemos pensar em um cliente fazendo pedidos por um chat. A aplicação dessa inteligência artificial nos leva ao seguinte quadro com as distâncias entre frases. Note que até o erro de grafia na pergunta “Em quantas vezes posso parcelas?” ainda a mantém no grupo.

Próprio Autor

Como os pedidos formam grupos, podemos ter essa interação por meio de um Chatbot sem a necessidade de programar todas as perguntas que um cliente pode fazer (até com erro de grafia), bastariam algumas frases como âncoras e as respectivas ações desejadas. Assim, uma nova sentença seria comparada com a âncora mais próxima para escolher a ação. Isso seria um chatbot com inteligência artificial, bem diferente dos muitos existentes em que são programadas todas as variantes de uma pergunta. Basta uma pergunta não cadastrada que a resposta será: “não entendi sua solicitação”.

Considerações Finais

Esse é um exemplo interessante da necessidade de grandes volumes de dados para extrair relações, sem necessidade de explicitar tudo o que a máquina deve fazer. Claro que isso é um modelo matemático, então foram estabelecidas algumas regras importantes para indicar quais relações a máquina deve procurar. Por exemplo, analise a vizinhança de uma palavra.

Também vimos como podemos aplicar esses modelos para trazer comodidade aos usuários de um serviço. Mas, pessoas serão importantes para resolver problemas mais complexos ao mesmo tempo em que esses algoritmos geram velocidade na resolução de problemas simples.

Agradecimentos

Revisão: Emerson Aguiar, Comunicação Institucional Porto Seguro

--

--