Como as máquinas processam e entendem a linguagem humana.
Processamento de Linguagem Natural, do inglês Natural Language Processing (NPL), é um campo da Inteligência Artificial em que as máquinas possuem a capacidade de ler, entender e interpretar significados das linguagens humanas.
Nossas expressões sejam verbais ou escritas, carregam enormes quantidades de informação. O tom de voz, a seleção de palavras, a organização das frases, tudo adiciona algum tipo de informação que pode ser interpretada ter um valor extraído dela. Em teoria, é possível entender e até prever o comportamento humano usando essas informações.
Uma pessoa gera centenas ou milhares de palavras em um texto, cada sentença com sua complexidade correspondente. Para dimensionar e analisar várias centenas, milhares ou milhões de pessoas ou declarações em uma determinada região, a dificuldade aumenta.
Atualmente, não se trata mais de tentar interpretar um texto ou discurso com base em suas palavras-chave (a maneira mecânica antiquada), mas de entender o significado por trás dessas palavras (a maneira cognitiva). Dessa forma, é possível detectar figuras de linguagem como ironia, ou mesmo realizar análises de sentimentos.
Dados assim podem ser gerados a partir de e-mails, chats, pesquisas em buscadores, posts em redes sociais ou qualquer outra forma de interação. São considerados dados não-estruturados, que não se encaixam na estrutura tradicional de linhas e colunas dos bancos de dados relacionais e representam a grande maioria dos dados disponíveis no mundo real. Pode ser confuso e difícil de manipular. Porém, os avanços em disciplinas como machine learning trazem grandes possibilidades para a NPL, permitindo a obtenção de resultados significativos em áreas diversas como assistência médica, mídia, finanças e recursos humanos, entre outras.
Vamos mencionar alguns exemplos:
Reconhecimento e previsão de doenças com base em prontuários eletrônicos e na fala do próprio paciente. Essa capacidade está sendo explorada em condições de saúde que vão de doenças cardiovasculares a depressão e até esquizofrenia. Por exemplo, o Amazon Comprehend Medical é um serviço que usa a NPL para extrair condições de doenças, medicamentos e resultados de tratamento de anotações de pacientes, relatórios de ensaios clínicos e outros registros eletrônicos de saúde.
As organizações podem entender o que os clientes estão dizendo sobre um serviço ou produto, identificando e extraindo informações em fontes como mídia social. Essa análise de sentimentos pode fornecer muitas informações sobre as escolhas dos clientes e seus motivadores de decisão.
Empresas como Yahoo e Google filtram e classificam e-mails com a NPL, analisando o texto das mensagens que fluem através de seus servidores e interrompendo o spam antes mesmo de entrarem nas caixas de entrada.
A Alexa da Amazon e a Siri da Apple são exemplos de interfaces inteligentes orientadas por voz que usam a NPL para responder às solicitações vocais e fazem de tudo, como encontrar uma loja específica, informar a previsão do tempo, sugerir o melhor caminho para o escritório ou acender as luzes em casa.
A NPL é utilizada para rastrear notícias, relatórios e comentários sobre movimentações corporativas, como fusões, aquisições ou aporte de investimentos, se incorporando a um algoritmo de negociação para gerar lucros a operadores financeiros.
A NPL também é utilizada nas fases de busca e seleção do recrutamento de talentos, identificando as habilidades de possíveis contratados e também as perspectivas antes que elas se tornem ativas no mercado de trabalho.
Desenvolvido pela tecnologia IBM Watson NPL, o LegalMation desenvolveu uma plataforma para automatizar tarefas rotineiras de litígio e ajudar as equipes jurídicas a economizar tempo, reduzir custos e mudar o foco estratégico.
Os desafios da NPL
Um dos grandes desafios enfrentados atualmente para a utilização da NPL é a complexidade do seu processo de compreensão e manipulação de linguagem. Por isso é comum usar técnicas diferentes para lidar com diferentes problemas antes de vincular tudo. Linguagens de programação como Python ou R são altamente usadas para executar essas técnicas, mas é importante entender os conceitos anteriores às linhas de código:
Saco de Palavras
É um modelo bem comum que permite contar todas as palavras em um pedaço de texto. Basicamente, cria uma matriz de ocorrência para a sentença ou documento, desconsiderando a gramática e a ordem das palavras. Essas frequências ou ocorrências de palavras são usadas como recursos para o treinamento de um classificador.
Para dar um pequeno exemplo, vamos considerar a primeira frase da música “Across the Universe”, dos Beatles:
Words are flowing out like endless rain into a paper cup,
They slither while they pass, they slip away across the universe
Agora vamos contar as palavras:
Essa abordagem pode refletir várias desvantagens, como a ausência de significado e contexto semântico e os fatos que impedem as palavras (como “o” ou “a”) acrescentam ruído à análise e algumas palavras não são ponderadas de acordo (pesos do “universe” menores que a palavra “they”). Para resolver esse problema, uma abordagem é redimensionar a frequência das palavras pela frequência com que elas aparecem em todos os textos (não apenas na que estamos analisando), de modo que as pontuações para palavras frequentes como “the” também sejam frequentes em outros textos.
Essa abordagem de pontuação é chamada de “Term Frequency — Inverse Document Frequency” (TFIDF) ou “Frequência de Termos – Frequência Inversa de Documentos”, em tradução livre. Ela melhora o conjunto de palavras por pesos. Através do TFIDF, os termos frequentes no texto são “recompensados” (como a palavra “eles” em nosso exemplo), mas também são “punidos” se esses termos forem frequentes em outros textos que incluímos no algoritmo também. Pelo contrário, esse método destaca e “recompensa” termos únicos ou raros, considerando todos os textos. No entanto, essa abordagem ainda não tem contexto nem semântica.
Tokenização
É o processo de segmentar o texto em execução em frases e palavras. Em essência, é a tarefa de cortar um texto em pedaços chamados tokens e, ao mesmo tempo, jogar fora alguns caracteres, como pontuação. Seguindo o nosso exemplo, o resultado da tokenização seria:
Embora possa parecer básico nesse caso e também em idiomas como o inglês que separam as palavras por um espaço em branco (chamados de idiomas segmentados), nem todos os idiomas se comportam da mesma maneira, como a língua portuguesa que possui diversas conjugações verbais. Então apenas os espaços em branco não são suficientes para executar tokenizações apropriadas. A divisão em espaços em branco pode dividir o que deve ser considerado como um símbolo, como no caso de certos nomes (por exemplo, San Francisco ou Nova York) ou frases estrangeiras emprestadas (por exemplo, laissez faire).
A tokenização também pode remover a pontuação, facilitando o caminho para uma segmentação adequada de palavras, mas também provocando complicações. No caso de períodos que se seguem à abreviação (por exemplo, dr.), o período após a abreviação deve ser considerado como parte do mesmo token e não deve ser removido.
Remoção de Stop Words
Inclui a eliminação de artigos, pronomes e preposições em idiomas comuns, como “e”, “o”, “a” em português. Nesse processo, algumas palavras muito comuns que parecem fornecer pouco ou nenhum valor ao objetivo da NPL são filtradas e excluídas do texto a ser processado.
Essas “stop words” podem ser ignoradas com segurança, realizando uma pesquisa em uma lista predefinida de palavras-chave, liberando espaço no banco de dados e melhorando o tempo de processamento.
O problema é que a remoção delas pode apagar informações relevantes e modificar o contexto em uma determinada frase. Por exemplo, se estivermos realizando uma análise de sentimentos, podemos desviar nosso algoritmo se removermos uma stop word como “não”. Sob essas condições, é possível selecionar uma lista mínima dessas palavras e adicionar termos, dependendo do objetivo específico.
Lematização
Tem como objetivo reduzir uma palavra à sua forma base e agrupar diferentes formas da mesma palavra. Por exemplo, os verbos no tempo passado são alterados para presente (por exemplo, “foi” é alterado para “vai”) e os sinônimos são unificados (por exemplo, “melhor” é alterado para “bom”), padronizando palavras com significado semelhante à sua raiz.
A lematização resolve as palavras em sua forma de dicionário (conhecida como lema), para a qual requer dicionários detalhados nos quais o algoritmo pode pesquisar e vincular palavras aos lemas correspondentes.
Por exemplo, as palavras “correr”, “corre” e “correu” são todas formas da palavra “correr”, portanto “correr” é o lema de todas as palavras anteriores.
A lematização também leva em consideração o contexto da palavra para resolver outros problemas, como a desambiguação, o que significa que ela pode discriminar entre palavras idênticas que têm significados diferentes, dependendo do contexto específico. Pense em palavras como “morcego” (que pode corresponder ao animal ou ao clube de “banco”. Ao fornecer um parâmetro de parte do discurso para uma palavra (seja um substantivo, um verbo etc.), é possível definir um papel para essa palavra na frase e remover a desambiguação.
Modelagem de Tópicos
É como um método para descobrir estruturas ocultas em conjuntos de textos ou documentos. Em essência, agrupa textos para descobrir tópicos latentes com base em seu conteúdo, processando palavras individuais e atribuindo valores a eles com base em sua distribuição. Essa técnica é baseada nas suposições de que cada documento consiste em uma mistura de tópicos e que cada tópico consiste em um conjunto de palavras, o que significa que, identificando esses tópicos ocultos, é possível desbloquear o significado dos textos.
Do universo das técnicas de modelagem de tópicos, a Alocação Latente de Dirichlet (LDA, na sigla em inglês) é provavelmente a mais usada. Esse algoritmo relativamente novo (inventado há menos de 20 anos) funciona como um método de aprendizado não supervisionado que descobre diferentes tópicos subjacentes a uma coleção de documentos. Em métodos de aprendizado não supervisionado como este, não há variável de saída para orientar o processo de aprendizado e os dados são explorados por algoritmos para encontrar padrões. Para ser mais específico, o LDA encontra grupos de palavras relacionadas por:
Atribuindo cada palavra a um tópico aleatório, em que o usuário define o número de tópicos que deseja descobrir. Não são definidos os tópicos em si (se define apenas o número de tópicos) e o algoritmo mapeará todos os documentos para os tópicos de maneira que as palavras em cada documento sejam capturadas principalmente por esses tópicos imaginários.
O algoritmo percorre cada palavra iterativamente e reatribui a palavra a um tópico, levando em consideração a probabilidade de que a palavra pertença a um tópico e a probabilidade de que o documento seja gerado por um tópico. Essas probabilidades são calculadas várias vezes, até a convergência do algoritmo.
Ao contrário de outros algoritmos de armazenamento em cluster, como o K-means, que executa agrupamentos físicos (onde os tópicos são desarticulados), o LDA atribui cada documento a uma mistura de tópicos, o que significa que cada documento pode ser descrito por um ou mais tópicos (por exemplo, o Documento 1 é descrito por 70 % do tópico A, 20% do tópico B e 10% do tópico C) e refletem resultados mais realistas.
A modelagem de tópicos é extremamente útil para classificar textos, criar sistemas de recomendação (por exemplo, recomendar livros com base em suas leituras anteriores) ou até mesmo detectar tendências em publicações on-line.
E o futuro?
No momento, a NPL está lutando para detectar variáveis no significado da linguagem devido à falta de contexto, erros de ortografia ou diferenças de idioma e dialetos. Embora o futuro seja desafiador, a disciplina está se desenvolvendo em um ritmo muito rápido e provavelmente alcançará um nível de avanço que fará com que aplicativos complexos pareçam possíveis.
*Conteúdo produzido com base no texto da Towards Data Science.