A mecânica do texto

Não poucas vezes sou confrontado com pessoas que me questionam da necessidade de utilização de uma plataforma de advanced analytics para resolver temas como interpretação de texto ou risco de crédito. A pergunta tem o seu quê de racional porque, na verdade, os algoritmos de aprendizagem mecânica não evoluíram assim tanto do ponto de vista conceptual. Sim, conseguimos construir redes neuronais mais eficientes ou florestas de árvores de decisão, mas nada que seja substancialmente diferente do ponto de vista matemático ou que obedeça a uma metodologia única e rara. Daí a existência centenas de bibliotecas prontas a serem usadas nos mais diferentes ambientes, nas mais diversificadas linguagens, respeitando as mais recentes modas.

Mas se o problema fosse um mero problema de código, já não estávamos a falar nisto há muito tempo porque já estaria resolvido. Como todos os problemas relacionados com advanced analytics sobre os quais ainda nos debruçamos nos dias de hoje, há muito mais para lá do código com o qual nos preocuparmos.

Pessoalmente, gosto de dividir um problema de analytics em três: a pergunta, a física e o valor. A pergunta é o que queremos que a máquina aprenda para nos dizer, a física é o conjunto de mecanismos que produzem os dados que estamos a recolher e o valor é o proveito vamos ter com aquilo que conseguimos retirar.

O código/algoritmo não faz sequer parte das nossas preocupações por uma razão muito simples: porque não pode fazer. Os desafios que os três fatores que enumerei trazem suficiente “sarna para nos coçarmos” para andarmos preocupados com coisas que já estão mais que desenvolvidas.

Usar este espaço para falar nos três fatores seria excessivo e tecnicamente muito espesso. No entanto, vamos tentar focar no problema do texto, que é um problema de física complicada, e com ele esperar que consigamos transmitir a necessidade de termos à mão uma panóplia alargada e flexível de ferramentas com que contar.

Há já algumas décadas que o problema matemático da aprendizagem de texto, ou seja, do entendimento das palavras enquanto símbolos de algo, é estudado. Até antes de sequer de pensarmos em fazê-lo através de processos computacionais. E a maneira que uso para explicar a dificuldade de fazer uma máquina entender o significado de uma palavra, é recorrendo ao exemplo do dado. O dado é das mais simplórias experiências em termos de probabilidade, mais simples só a da moeda ao ar. Para calcular a probabilidade de sair uma das faces do dado é simplesmente lançar o dado uma quantidade de vezes suficientemente grande para atribuir, à frequência de saída das faces do dado, a probabilidade de elas saírem. Até aqui, tudo normal. Agora vamos imaginar que cada vez que o dado é lançado tem um número crescente de lados. Da primeira vez tem 6 lados, da segunda 8, da terceira 13, etc. Obviamente, nesta situação não conseguimos retirar qualquer medida da probabilidade. Mas aprendizagem é só sobre medir probabilidades, não há outra forma de uma máquina aprender.

O que é que isto tem a ver com o texto? Interpretar texto tem algumas semelhanças com o lançamento dos dados porque o número de resultados possíveis está sempre a crescer. Primeiro, porque a utilização de palavras cresce. Embora usemos preferencialmente algumas palavras, o vocabulário está sempre a crescer. Segundo, porque as palavras têm grande correlação entre si e significados diferentes quando usadas em combinação umas com as outras, o que significa que com as mesmas palavras os símbolos (combinações de mais que uma palavra) também estão sempre a crescer. Ora, se combinarmos isto com aquilo que foi dito da experiência do dado, a conclusão seria que nunca conseguiríamos interpretar qualquer forma de texto com o auxílio de uma máquina, isto é, falando em termos matemáticos, não conseguimos aprender recorrendo a métodos que derivam da lei dos grandes números. E estes são os únicos que conseguimos ter no estado atual do conhecimento humano.

E é aqui que a utilização de uma plataforma integrada se torna fundamental. Neste e na esmagadora dos projetos de analytics com que hoje somos confrontados. O entendimento rápido das distribuições dos dados que nos chegam, juntamente com aquilo que sabemos da forma como eles foram produzidos, é fundamental para chegarmos a conclusões sobre a forma como os devemos interpretar. Será razoavelmente óbvio nesta fase que se aquilo que nos está a chegar é, por exemplo, a transcrição de uma conversa de café onde as palavras são usadas livremente, a nossa tarefa estará longe de ser simples. Mas, normalmente, a pergunta que deu origem ao processo, como o valor que se pretende tirar dali, não está relacionado com saber manter uma conversa de café. O que acontece usualmente é que o texto que nos chega é produzido num determinado contexto. Ou escrito numa apólice de seguro ou num e-mail de reclamação ou, ainda, ditado para preencher um formulário. E isto ajuda de sobremaneira. Lembremo-nos que o nosso problema era que os símbolos que eram produzidos estão sempre a crescer, mas, se estivermos limitados a um determinado contexto, esse crescimento é limitado. Matematicamente, aquilo que estamos a fazer é condicionar a probabilidade a um determinado contexto.

Então para além de ter uma ferramenta que organize os vários símbolos (palavras e conjuntos de palavras em sequencia) e nos dê a sua frequência para entender a sua distribuição, precisamos ainda de usa-la para podemos limitar os contextos. Isto tudo para podermos decidir que algoritmo vamos usar e como o vamos usar, se para todo o contexto ou um para cada um dos contextos que vamos isolar; tudo isto dependendo da pergunta que fizemos (para que é que queremos interpretar este texto) e do valor que vamos tirar no fim (não podemos fazer isto de outra maneira?).

Nesta fase acho que está de alguma forma estabelecida a importância de ter uma plataforma comum onde fazer tudo isto. Os algoritmos em si podemos fazer correr vários ao mesmo tempo para ajustar ao nível do detalhe. E repare-se que ainda nem saímos do tema do texto. Se pensarmos que o texto vai servir para alguma coisa, a importância da plataforma integrada começa a escalar de forma imparável. Por exemplo, o texto de relatórios médicos que têm que ser transformados em ocorrências importantes para o cálculo atuarial de um seguro de saúde ou a transcrição de uma conversa com o contact center para disparar alertas de qualidade ou de propensão.

Estes exemplos são excelentes e demonstram a importância de uma plataforma de analytics para a resolução de um problema concreto naquilo que são os três fatores fundamentais, a pergunta, a física e o valor. O código é importante, sim, mas está feito. 

João Pires da Cruz
Partner at Closer | VP @ DSPA Data Science Portuguese Association

Deixar uma resposta