Seu guia para processamento de linguagem natural (PNL)

person writing on white paper
dmendes40 Avatar

Tudo o que expressamos (seja verbalmente ou por escrito) carrega grandes quantidades de informação. O tema que escolhemos, nosso tom, nossa seleção de palavras, tudo agrega algum tipo de informação que pode ser interpretada e extraída de valor. Em teoria, podemos entender e até prever o comportamento humano usando essa informação.

Mas há um problema: uma pessoa pode gerar centenas ou milhares de palavras em uma declaração, cada frase com sua correspondente complexidade. Se você deseja dimensionar e analisar várias centenas, milhares ou milhões de pessoas ou declarações em uma determinada geografia, a situação é incontrolável.

Dados gerados a partir de conversas, declarações ou mesmo tweets são exemplos de dados não estruturados. Os dados não estruturados não se encaixam perfeitamente na estrutura tradicional de linhas e colunas dos bancos de dados relacionais e representam a grande maioria dos dados disponíveis no mundo real. 

É confuso e difícil de manipular. No entanto, graças aos avanços em disciplinas como aprendizado de máquina, uma grande revolução está ocorrendo em relação a esse tópico. Hoje em dia não se trata mais de tentar interpretar um texto ou fala com base em suas palavras-chave (a velha forma mecânica), mas sim de entender o significado por trás dessas palavras (a forma cognitiva). Dessa forma é possível detectar figuras de linguagem como a ironia, ou mesmo realizar análises de sentimentos.

Processamento de linguagem naturalou PNL é um campo da Inteligência Artificial que dá às máquinas a capacidade de ler, entender e derivar significado das linguagens humanas.

É uma disciplina que se concentra na interação entre ciência de dados e linguagem humana e está sendo ampliada para vários setores. Hoje a PNL está crescendo graças às grandes melhorias no acesso aos dados e ao aumento do poder computacional, que permitem aos praticantes alcançar resultados significativos em áreas como saúde, mídia, finanças e recursos humanos, entre outras.

Casos de uso da PNL

Em termos simples, o NLP representa o manuseio automático da linguagem humana natural, como fala ou texto, e embora o conceito em si seja fascinante, o valor real por trás dessa tecnologia vem dos casos de uso.

A PNL pode ajudá-lo com muitas tarefas e os campos de aplicação parecem aumentar diariamente. Vamos citar alguns exemplos:

  • A PNL permite o reconhecimento e a previsão de doenças com base em registros eletrônicos de saúde e na própria fala do paciente. Essa capacidade está sendo explorada em condições de saúde que vão desde doenças cardiovasculares até depressão e até esquizofrenia. Por exemplo, o Amazon Comprehend Medical é um serviço que usa NLP para extrair condições de doenças , medicamentos e resultados de tratamentos de anotações de pacientes, relatórios de ensaios clínicos e outros registros eletrônicos de saúde.
  • As organizações podem determinar o que os clientes estão dizendo sobre um serviço ou produto identificando e extraindo informações em fontes como mídias sociais. Essa análise de sentimento pode fornecer muitas informações sobre as escolhas dos clientes e seus motivadores de decisão.
  • Um inventor da IBM desenvolveu um assistente cognitivo que funciona como um mecanismo de busca personalizado, aprendendo tudo sobre você e lembrando um nome, uma música ou qualquer coisa que você não consegue lembrar no momento em que precisa.
  • Empresas como Yahoo e Google filtram e classificam seus e-mails com NLP, analisando o texto em e-mails que fluem por seus servidores e interrompendo o spam antes mesmo de entrarem em sua caixa de entrada.
  • Para ajudar a identificar notícias falsas , o NLP Group no MIT desenvolveu um novo sistema para determinar se uma fonte é precisa ou politicamente tendenciosa, detectando se uma fonte de notícias pode ser confiável ou não.
  • A Alexa da Amazon e a Siri da Apple são exemplos de interfaces inteligentes acionadas por voz que usam NLP para responder a comandos vocais e fazer tudo como encontrar uma loja específica, informar a previsão do tempo, sugerir a melhor rota para o escritório ou acender as luzes em casa.
  • Ter uma visão do que está acontecendo e do que as pessoas estão falando pode ser muito valioso para os operadores financeiros . O NLP está sendo usado para rastrear notícias, relatórios, comentários sobre possíveis fusões entre empresas, tudo pode ser incorporado a um algoritmo de negociação para gerar lucros maciços. Lembre-se: compre o boato, venda a notícia.
  • A PNL também está sendo usada nas fases de busca e seleção de recrutamento de talentos , identificando as habilidades de potenciais contratados e também identificando prospects antes que eles se tornem ativos no mercado de trabalho.
  • Com tecnologia IBM Watson NLP, a LegalMation desenvolveu uma plataforma para automatizar tarefas de litígio de rotina e ajudar as equipes jurídicas a economizar tempo, reduzir custos e mudar o foco estratégico.

A PNL está crescendo particularmente no setor de saúde . Essa tecnologia está melhorando a prestação de cuidados, o diagnóstico de doenças e reduzindo os custos, enquanto as organizações de saúde estão adotando cada vez mais registros eletrônicos de saúde. O fato de que a documentação clínica pode ser melhorada significa que os pacientes podem ser mais bem compreendidos e beneficiados por melhores cuidados de saúde. O objetivo deve ser otimizar sua experiência, e várias organizações já estão trabalhando nisso.

Empresas como Winterlight Labs estão fazendo grandes melhorias no tratamento da doença de Alzheimer, monitorando o comprometimento cognitivo por meio da fala e também podem apoiar ensaios clínicos e estudos para uma ampla gama de distúrbios do sistema nervoso central. Seguindo uma abordagem semelhante, a Universidade de Stanford desenvolveu o Woebot , um chatbot terapeuta com o objetivo de ajudar pessoas com ansiedade e outros transtornos.

Mas há sérias controvérsias em torno do assunto. Há alguns anos, a Microsoft demonstrou que, analisando grandes amostras de consultas em mecanismos de pesquisa, era possível identificar usuários da Internet que sofriam de câncer pancreático antes mesmo de receberem o diagnóstico da doença. Como os usuários reagiriam a tal diagnóstico? E o que aconteceria se você fosse testado como um falso positivo? (o que significa que você pode ser diagnosticado com a doença mesmo que não a tenha). Isso lembra o caso do Google Flu Trends, que em 2009 foi anunciado como capaz de prever a gripe, mas depois desapareceu devido à sua baixa precisão e incapacidade de atender às taxas projetadas.

A PNL pode ser a chave para um suporte clínico eficaz no futuro, mas ainda existem muitos desafios a enfrentar a curto prazo.

PNL básica para impressionar seus amigos não PNL

As principais desvantagens que enfrentamos atualmente com a PNL estão relacionadas ao fato de que a linguagem é muito complicada. O processo de compreensão e manipulação da linguagem é extremamente complexo e, por isso, é comum o uso de diferentes técnicas para lidar com diferentes desafios antes de unir tudo. Linguagens de programação como Python ou R são muito usadas para executar essas técnicas, mas antes de mergulhar nas linhas de código (que serão o tópico de outro artigo), é importante entender os conceitos abaixo delas. Vamos resumir e explicar alguns dos algoritmos mais usados ​​em PNL ao definir o vocabulário dos termos:

saco de palavras

É um modelo comumente usado que permite contar todas as palavras em um texto. Basicamente ele cria uma matriz de ocorrências para a frase 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 treinar um classificador.

Para trazer um pequeno exemplo peguei a primeira frase da música “Across the Universe” dos Beatles:

As palavras estão fluindo como chuva sem fim em um copo de papel,

Eles deslizam enquanto passam, eles deslizam pelo universo

Agora vamos contar as palavras:

Essa abordagem pode refletir várias desvantagens, como a ausência de significado semântico e contexto, e os fatos que interrompem as palavras (como “o” ou “a”) adicionam ruído à análise e algumas palavras não são ponderadas de acordo (o “universo” pesa menos do que a palavra “eles”).

Para resolver esse problema, uma abordagem é redimensionar a frequência das palavras pela frequência com que aparecem em todos os textos (não apenas no que estamos analisando), de modo que as pontuações para palavras frequentes como “o”, que também são frequentes em outros textos , ser penalizado. Essa abordagem de pontuação é chamada de “Frequência de termo — Frequência de documento inverso” (TFIDF) e melhora o conjunto de palavras por pesos. Por meio do TFIDF, 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. Ao contrário, esse método destaca e “recompensa” termos únicos ou raros considerando todos os textos. No entanto, esta abordagem ainda não tem contexto nem semântica.

Tokenização

É o processo de segmentar o texto corrido em frases e palavras. Em essência, é a tarefa de cortar um texto em pedaços chamados tokens e, ao mesmo tempo, descartar certos caracteres, como a pontuação. Seguindo nosso exemplo, o resultado da tokenização seria:

Bem simples, certo? Bem, embora possa parecer bastante básico neste 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 forma e, se você pensar bem, os espaços em branco por si só não são suficientes até mesmo para o inglês realizar tokenizações adequadas. A divisão em espaços em branco pode quebrar o que deveria ser considerado como um token, 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 de palavras adequada, mas também desencadeando possíveis complicações. No caso de pontos que seguem a abreviação (por exemplo, dr.), o ponto seguinte a essa abreviação deve ser considerado como parte do mesmo token e não ser removido.

O processo de tokenização pode ser particularmente problemático ao lidar com domínios de texto biomédico que contêm muitos hífens, parênteses e outros sinais de pontuação.

Para obter detalhes mais profundos sobre tokenização, você pode encontrar uma ótima explicação neste artigo .

Remoção de palavras de parada

Inclui livrar-se de artigos, pronomes e preposições de linguagem comum, como “and”, “the” ou “to” em inglês. Nesse processo, algumas palavras muito comuns que parecem fornecer pouco ou nenhum valor ao objetivo do PNL são filtradas e excluídas do texto a ser processado, removendo termos comuns e frequentes que não são informativos sobre o texto correspondente.

As palavras de parada 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.

Não existe uma lista universal de palavras de parada . Estes podem ser pré-selecionados ou construídos de raiz. Uma abordagem possível é começar adotando palavras de parada pré-definidas e adicionar palavras à lista posteriormente. No entanto, parece que a tendência geral nos últimos tempos tem sido ir do uso de grandes listas de palavras de parada padrão para o uso de nenhuma lista.

O problema é que a remoção de palavras de parada pode apagar informações relevantes e modificar o contexto em uma determinada frase. Por exemplo, se estivermos realizando uma análise de sentimento, podemos desviar nosso algoritmo se removermos uma palavra de parada como “não”. Nessas condições, você pode selecionar uma lista mínima de palavras de parada e adicionar termos adicionais, dependendo do seu objetivo específico.

Derivação

Refere-se ao processo de fatiar o final ou o início das palavras com a intenção de retirar os afixos (acréscimos lexicais à raiz da palavra).

Os afixos anexados no início da palavra são chamados de prefixos (por exemplo, “astro” na palavra “astrobiologia”) e os anexados no final da palavra são chamados de sufixos (por exemplo, “ful” na palavra “útil”) .

O problema é que os afixos podem criar ou expandir novas formas da mesma palavra (chamados afixos flexionais ) ou até mesmo criar novas palavras (chamados afixos derivacionais ). Em inglês, os prefixos são sempre derivacionais (o afixo cria uma nova palavra como no exemplo do prefixo “eco” na palavra “ecossistema”), mas os sufixos podem ser derivacionais (o afixo cria uma nova palavra como no exemplo do sufixo “ist” na palavra “guitarist”) ou flexional (o afixo cria uma nova forma de palavra como no exemplo do sufixo “er” na palavra “faster”).

Ok, então como podemos saber a diferença e cortar a parte certa?

Uma abordagem possível é considerar uma lista de afixos e regras comuns (as linguagens Python e R têm diferentes bibliotecas contendo afixos e métodos) e executar a derivação com base nelas, mas é claro que essa abordagem apresenta limitações. Como os lematizadores usam abordagens algorítmicas, o resultado do processo de lematização pode não ser uma palavra real ou até mesmo alterar o significado da palavra (e da frase). Para compensar esse efeito, você pode editar esses métodos predefinidos adicionando ou removendo afixos e regras, mas deve considerar que pode estar melhorando o desempenho em uma área enquanto produz uma degradação em outra. Sempre olhe para a imagem inteira e teste o desempenho do seu modelo.

Então, se a derivação tem sérias limitações, por que a usamos? Em primeiro lugar, pode ser usado para corrigir erros de ortografia dos tokens. Stemmers são simples de usar e executados muito rápido (eles executam operações simples em uma string), e se velocidade e desempenho são importantes no modelo de PNL, então stemming é certamente o caminho a seguir. Lembre-se, nós o usamos com o objetivo de melhorar nosso desempenho, não como um exercício de gramática.

Lematização

Tem o objetivo de reduzir uma palavra à sua forma base e agrupar diferentes formas de uma mesma palavra. Por exemplo, verbos no pretérito são alterados para o presente (ex. “went” é alterado para “go”) e sinônimos são unificados (ex. “best” é alterado para “good”), padronizando palavras com significado semelhante à sua raiz. Embora pareça intimamente relacionada ao processo de stemming, a lematização usa uma abordagem diferente para alcançar as formas de raiz das palavras.

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 seus lemas correspondentes.

Por exemplo, as palavras “ running”, “runs” e “ran” são todas formas da palavra “ run” , então “ run” é 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 desambiguação , o que significa que 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 taco de metal/madeira usado no beisebol) ou “banco” (que corresponde à instituição financeira ou ao terreno ao lado de um corpo d’água). Ao fornecer um parâmetro de parte do discurso para uma palavra (seja um substantivo, um verbo e assim por diante), é possível definir uma função para essa palavra na frase e remover a desambiguação.

Como você já deve ter imaginado, a lematização é uma tarefa que consome muito mais recursos do que a execução de um processo de derivação. Ao mesmo tempo, uma vez que requer mais conhecimento sobre a estrutura da linguagem do que uma abordagem de stemming, exige mais poder computacional do que configurar ou adaptar um algoritmo de stemming.

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-lhes valores com base em sua distribuição. Esta técnica baseia-se nos pressupostos de que cada documento consiste numa mistura de tópicos e que cada tópico consiste num conjunto de palavras, o que significa que se conseguirmos identificar estes tópicos ocultos podemos desvendar o significado dos nossos textos.

Do universo das técnicas de modelagem de tópicos, a Alocação de Dirichlet Latente (LDA) é provavelmente a mais utilizada. 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 supervisionados como este, não há variável de saída para guiar 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:

  1. Atribuindo cada palavra a um tópico aleatório, onde o usuário define o número de tópicos que deseja descobrir. Você não define os tópicos em si (você define apenas o número de tópicos) e o algoritmo mapeará todos os documentos para os tópicos de forma que as palavras em cada documento sejam capturadas principalmente por esses tópicos imaginários.
  2. 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 agrupamento como K-means que realizam agrupamento rígido (onde os tópicos são separados), 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, construir sistemas de recomendação (por exemplo, para recomendar livros com base em suas leituras anteriores) ou até mesmo detectar tendências em publicações online.

Como o futuro aparenta?

No momento, a PNL está lutando para detectar nuances no significado da linguagem, seja por falta de contexto, erros ortográficos ou diferenças dialetais.

Em março de 2016, a Microsoft lançou o Tay , um chatbot de Inteligência Artificial (IA) lançado no Twitter como um experimento de PNL. A ideia era que, quanto mais usuários conversassem com Tay, mais inteligente ele ficaria. Bom, o resultado foi que após 16 horas Tay teve que ser removido devido aos seus comentários racistas e abusivos:

A Microsoft aprendeu com sua própria experiência e alguns meses depois lançou o Zo , seu chatbot de segunda geração em inglês que não será pego cometendo os mesmos erros de seu antecessor. Zo usa uma combinação de abordagens inovadoras para reconhecer e gerar conversa, e outras empresas estão explorando com bots que podem lembrar detalhes específicos de uma conversa individual.

Embora o futuro pareça extremamente desafiador e cheio de ameaças para a PNL, a disciplina está se desenvolvendo em um ritmo muito rápido (provavelmente como nunca antes) e é provável que alcancemos um nível de avanço nos próximos anos que tornará possíveis aplicações complexas.

Tagged in :

dmendes40 Avatar

Leave a Reply

Your email address will not be published. Required fields are marked *

FOTAWP

Check out our new font generator and level up your social bios. Need more? Head over to Glyphy for all the fancy fonts and cool symbols you could ever imagine.