Desvendando o NLP — Parte 2: Saiba como os robôs conseguem entender os humanos

Letícia Souza
Dialograma
Published in
7 min readNov 25, 2020
Fonte: https://www.ebo.ai/workings-chatbot-machine-learning-nlp/

Esse texto foi escrito com o apoio de Fábio Rezende de Souza, mestre em Ciência da Computação e líder técnico da equipe de Inteligência Artificial e Processamento de Linguagem Natural da Mutant.

Quer ouvir o nosso texto em vez de ler? É só clicar no player abaixo!

Agora que já conversamos sobre o conceito de Processamento de Linguagem Natural e algumas das suas aplicações (ainda não leu? Corre aqui no primeiro artigo da série), vamos conhecer um pouco do funcionamento do NLP.

Como um robô consegue entender o que a gente fala?

Antes de entrarmos nesse ponto, é importante lembrarmos que a linguagem humana é complexa quando consideramos a sua estrutura, dinâmica, por estar em um processo constante de mudanças, e muito diversa, devido à quantidade de particularidades nas línguas existentes ao redor do mundo. Por esses fatores, aprender um idioma diferente pode ser um tanto desafiador, né? E para um robô, é ainda mais!

Isso porque não existe uma forma única de formar frases. A complexidade da língua é tamanha que palavras ou orações diferentes podem comunicar exatamente a mesma coisa, assim como uma mesma frase pode ter sentidos absolutamente opostos a depender do contexto em que é utilizada.

Essa natureza da linguagem humana é o que torna o Processamento de Linguagem Natural um verdadeiro desafio dentro da ciência da computação. Afinal, como ensinar a uma máquina as características infinitas da nossa linguagem?

É aqui que o NLU, ou Entendimento de Linguagem Natural (do inglês, Natural Language Understanding), entra em cena.

O NLU é um subtópico do NLP, responsável por fazer com que os robôs compreendam a linguagem humana. E hoje, a nossa conversa é sobre isso!

Estágio de Pré-Processamento

No NLU, a análise sintática (que apresenta a classificação dos elementos de uma frase) e a estrutura gramatical são peças chaves para que o robô entenda o significado das frases dentro de determinado contexto.

Em grande parte das aplicações, o primeiro passo é transformar o texto escrito ou falado em dados que possam ser analisados. Esse é o estágio de pré-processamento. E aqui são usadas algumas técnicas para deixar o texto mais organizado e os dados mais fáceis de serem manipulados, incluindo:

  • Segmentação textual, que é o processo de dividir um texto em partes menores. Essas partes menores, geralmente, são as frases ou orações.
  • Tokenização (em inglês, tokenization) ou segmentação de palavras, que consiste em dividir o texto em palavras. E cada uma dessas palavras é chamada de token.
  • Part-of-Speech Tagging, que consiste em classificar as palavras como substantivos, verbos, adjetivos, advérbios, pronomes etc.
  • Derivação (em inglês, stemming) e lematização (em inglês, lemmatization), que são processos diferentes usados para reduzir as palavras às suas formas mais básicas. A derivação retira o prefixo e/ou o sufixo das palavras, e em alguns casos, pode falhar e acabar alterando o sentido delas. Já a lematização é um processo mais sofisticado e complexo que envolve uma análise morfológica da palavra, e leva em consideração o contexto em que ela é usada na frase. Na lematização também há a retirada de prefixos e sufixos, incluindo as flexões de verbo, gênero, número e grau.
  • Remoção de palavras vazias (do inglês, stop word removal), que consiste em filtrar palavras que agregam pouca ou nenhuma informação à frase, como pronomes, preposições, artigos etc.

Aqui é importante mencionar que existem outras tarefas no pré-processamento, e que as aplicações de NLU não necessariamente farão uso de todas as técnicas mencionadas acima. Alguns algoritmos se propõem a entender automaticamente os padrões da língua, e portanto, não necessitam de todas estas etapas de pré-processamento.

Manipulação de Dados

Após o estágio de pré-processamento, os dados estão prontos e é hora de construir um algoritmo e treinar o NLU para que ele consiga interpretar a linguagem natural e fazer atividades específicas.

Para isso, há duas principais abordagens que podem ser usadas:

A abordagem baseada em regras (do inglês, rule-based approach), que é um sistema feito basicamente à mão, com regras que imitam as estruturas gramaticais dos idiomas.

Essas regras, criadas por especialistas em linguística ou engenheiros, usam algoritmos de Machine Learning tradicionais, como SVM e Árvore de Decisão.

Algumas vantagens dessa abordagem é que qualquer problema pode ser facilmente encontrado e corrigido, não há demanda por treinamento massivo e o sistema pode ser atualizado com novas funções e dados sem que haja mudanças significativas em sua parte central.

Em contrapartida, as regras devem ser incluídas à mão, precisam ser melhoradas o tempo todo, e nunca conseguem cobrir todas as possibilidades da língua, do vocabulário e das construções de frases. Por ser um sistema manual, a capacidade desse tipo de inteligência artificial é limitada, ou seja, a máquina só consegue fazer exatamente o que foi escrito para ela fazer. Além disso, o sistema pode ficar tão complexo a ponto de uma regra acabar contradizendo outra.

A segunda abordagem de treinamento de NLU são os algoritmos baseados em Deep Learning. Aqui, o robô recebe uma série de dados e exemplos, e por meio de análises estatísticas, acaba encontrando os padrões da língua. O Deep Learning é a abordagem de treinamento de NLU mais popular hoje em dia.

Por acontecer de maneira autodidata, o processo de aprendizado do NLU não pode ser inteiramente observado por pessoas. Com isso, é possível que o algoritmo aja de maneira imprevisível até mesmo para quem inseriu os dados de análise. Além disso, o Deep Learning representa seu conhecimento de forma extremamente complexa e ininteligível por humanos, de modo que existe uma dificuldade em corrigir erros de treinamento do NLU.

Por outro lado, algumas das maiores vantagens dessa abordagem são a capacidade de aprendizado sem que seja necessária a inclusão manual de regras, e o rápido desenvolvimento do sistema.

Aqui na Mutant, os nossos bots contam com uma ferramenta de NLP chamada Xavier, que foi criada em 2017 e usa Machine Learning para classificar intenções e reconhecer entidades.

Intenções e Entidades

Intenção é aquilo que a pessoa quis dizer para o robô — literalmente, a sua intenção ou objetivo ao se comunicar com a máquina.

A classificação de intenção auxilia o robô a entender o que o usuário precisa e, dessa forma, dar uma resposta apropriada. As intenções recebem um nome que, geralmente, é um verbo de ação, seguido de um substantivo.

Já a entidade é alguma palavra-chave que pode ser encontrada nessa frase e que caracteriza melhor a intenção. E eu digo “pode ser encontrada”, porque nem toda frase que tem uma intenção terá uma entidade.

E aqui é importante dizer que intenção e entidade variam de acordo com os assuntos tratados pelo robô.

Em um chat ou URA (aquele tal robô de call center), o fluxo da conversa e a formulação das perguntas também influenciam na definição das intenções e entidades do projeto. Por isso, é fundamental que seja feito um trabalho colaborativo entre o designer conversacional e o analista de NLP.

Pra entender um pouco mais de intenção e entidade, vem comigo nesse exemplo:

Se você liga para uma padaria e conversa com um robô, talvez você diga a seguinte frase:

“Eu quero encomendar uma torta.”

Nesse caso, a intenção é “fazer encomenda” e a entidade é “torta”.

Percebe como a palavra “torta” dá um detalhamento maior à sua intenção de fazer uma encomenda? Afinal, por se tratar de uma padaria, você poderia estar pedindo pães, bolos ou frios. Mas na sua frase, você já definiu que deseja encomendar torta!

Agora, vamos imaginar um outro cenário: você liga para uma loja que vende exclusivamente tortas, e fala para o robô a mesma coisa. Aqui, a classificação de intenção e entidade pode mudar:

“Eu quero encomendar uma torta.”

Nessa frase, a intenção ainda é “fazer encomenda”, mas a entidade não existe, já que nessa loja só é possível encomendar tortas, ou seja, você não está dando nenhuma informação extra para a sua intenção.

Porém, se você dissesse para essa mesma loja de tortas:

“Eu quero encomendar uma torta de amora.”

Então, a intenção é “fazer encomenda”, e a entidade é “amora”.

Pegou a ideia?

Considerações finais

O Processamento de Linguagem Natural é uma área muito vasta e complexa. Nesse artigo, a nossa proposta foi trazer apenas uma base de como uma máquina consegue compreender a linguagem humana.

Eu espero que você tenha me acompanhado até aqui e que esteja um pouco mais familiarizado com essa área de conhecimento!

A nossa segunda missão foi concluída com sucesso! Até a próxima!

Curtiu o texto? Quer trocar uma ideia sobre design conversacional? É só mandar um e-mail pra redacao.xd@mutant.com.br. Se ficou a fim de trabalhar com a gente, aí é só entrar aqui. E segue também o nosso Medium pra saber quando tem texto novo!

--

--