Machine Learning, Recuperação da Informação

Seu guia para processamento de linguagem natural (NLP)

Versão original em inglês (Todos os direitos reservados ao autor)

Tudo o que expressamos (verbalmente ou por escrito) carrega grandes quantidades de informação. O tópico que escolhemos, nosso tom, nossa seleção de palavras, tudo adiciona algum tipo de informação que pode ser interpretada e valor extraído dela. 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 sentença com sua complexidade correspondente. Se você quiser dimensionar e analisar várias centenas, milhares ou milhões de pessoas ou declarações em uma dada geografia, a situação é incontrolável.

Dados gerados a partir de conversas, declarações ou até tweets são exemplos de dados não estruturados. Os dados não estruturados não se encaixam perfeitamente na tradicional estrutura 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á acontecendo em relação a este tópico. Hoje em dia, não se trata mais de tentar interpretar um texto ou fala com base em suas palavras-chave (o antigo modo mecânico), mas sim em entender o significado por trás dessas palavras (o modo cognitivo). Desta forma, é possível detectar figuras de linguagem como ironia, ou mesmo realizar análises de sentimentos.

O Processamento de Linguagem Natural ou do inglês NLP – Natural Language Processing é um campo de Inteligência Artificial que dá às máquinas a capacidade de ler, entender e extrair significado das linguagens humanas.

É uma disciplina que se concentra na interação entre a ciência de dados e a linguagem humana e está se expandindo para muitas indústrias. Hoje a NLP está crescendo graças às enormes melhorias no acesso aos dados e ao aumento do poder computacional, que permitem que os profissionais obtenham resultados significativos em áreas como saúde, mídia, finanças e recursos humanos, entre outros.

Casos de uso da NLP

Em termos simples, a 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 NLP pode ajudá-lo com muitas tarefas e os campos de aplicação parecem aumentar diariamente. Vamos mencionar alguns exemplos:
  • A NLP permite o reconhecimento e previsão de doenças com base em registros eletrônicos de saúde e fala do próprio 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 a NLP 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 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 sentimentos pode fornecer muitas informações sobre as escolhas dos clientes e seus direcionadores de decisão.
  • Um inventor da IBM desenvolveu um assistente cognitivo que funciona como um mecanismo de pesquisa personalizado, aprendendo tudo sobre você e, em seguida, lembrando de um nome, uma música ou qualquer coisa que você não consegue lembrar no momento em que precisa.
  • Empresas como o Yahoo e o Google filtram e classificam seus e-mails com a NLP, analisando o texto em e-mails que passam por seus servidores e interrompem o spam antes que eles entrem na sua caixa de entrada.
  • Para ajudar a identificar notícias falsas , o Grupo de NLP do 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.
  • Alexa, da Amazon, e Siri, da Apple, são exemplos de interfaces inteligentes de voz que usam a NLP para responder a avisos 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 . A NLP está sendo usada 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 grandes lucros. Lembre-se: compre o rumor, venda a notícia.
  • A NLP 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 as perspectivas antes que elas se tornem ativas no mercado de trabalho.
  • Com base na tecnologia IBM Watson NLP, a LegalMation desenvolveu uma plataforma para automatizar as tarefas de litígio de rotina e ajudar as equipes jurídicas a economizar tempo, reduzir custos e mudar o foco estratégico.

A NLP está particularmente em expansão no setor de saúde . Essa tecnologia está melhorando o atendimento, o diagnóstico de doenças e diminuindo os custos, enquanto as organizações de saúde estão passando por uma crescente adoção de 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 através de melhores cuidados de saúde. O objetivo deve ser otimizar sua experiência, e várias organizações já estão trabalhando nisso.


Número de publicações contendo a frase “processamento de linguagem natural” no PubMed no período de 1978 a 2018. A partir de 2018, PubMed compreendeu mais de 29 milhões de citações para literatura biomédica

Empresas como a Winterlight Labs estão fazendo enormes melhorias no tratamento da doença de Alzheimer, monitorando o comprometimento cognitivo através 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 Stanford University desenvolveu o Woebot , um terapeuta de chatbot com o objetivo de ajudar pessoas com ansiedade e outras desordens.

Mas séria controvérsia é em torno do assunto. Um par de anos atrás, a Microsoft demonstrou que analisando grandes amostras de consultas de mecanismos de pesquisa, eles poderiam identificar usuários da Internet que estavam sofrendo de câncer no pâncreas mesmo antes 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 falso positivo? (o que significa que você pode ser diagnosticado com a doença, mesmo que você não a tenha). Isso lembra o caso do Google Tendências da Gripe, que em 2009 foi anunciado como sendo capaz de prever a gripe, mas depois desapareceu devido à sua baixa precisão e incapacidade de cumprir suas taxas projetadas.

A NLP pode ser a chave para um suporte clínico eficaz no futuro, mas ainda há muitos desafios a serem enfrentados no curto prazo.

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

As principais desvantagens que enfrentamos hoje em dia com a NLP estão relacionadas ao fato de que a linguagem é muito complicada. O processo de compreender e manipular a linguagem é extremamente complexo e, por esse motivo, é comum usar técnicas diferentes para lidar com diferentes desafios antes de unir tudo. Linguagens de programação como Python ou R são altamente usadas para executar essas técnicas, mas antes de mergulhar em linhas de código (que será o tópico de um artigo diferente), é importante entender os conceitos abaixo delas. Vamos resumir e explicar alguns dos algoritmos mais usados ​​na NLP ao definir o vocabulário dos termos:

Saco de Palavras (bag-of-words – BoW)
—————————————————————–

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

Para dar um breve exemplo, tirei a primeira frase da música “Across the Universe” dos Beatles:

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

Eles escorregam enquanto passam, escapam pelo universo

Agora vamos contar as palavras:

Esta abordagem pode refletir várias desvantagens como a ausência de significado e contexto semântico, 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 (pesos “universais” menores que a palavra “eles”).

Para resolver este problema, uma abordagem é redimensionar a frequência das palavras pela frequência com que aparecem em todos os textos (não apenas aquele que estamos analisando), de modo que as pontuações para palavras frequentes como “o”, que também são freqüentes em outros textos. , seja penalizado. Essa abordagem de pontuação é chamada de “Frequência de Termo – Freqüência de Documento Inversa” (TFIDF) e melhora o volume de palavras por meio de 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. Pelo contrário, este 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 em execução em sentenças e palavras. Em essência, é a tarefa de cortar um texto em pedaços chamados de tokens e, ao mesmo tempo, jogar fora alguns caracteres, como 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 linguagens como o inglês que separam palavras por um espaço em branco (chamadas linguagens segmentadas) nem todas as linguagens se comportam da mesma forma, e se você pensar sobre isso, espaços em branco não são suficientes até mesmo para o inglês para executar tokenizações adequadas. A divisão em espaços em branco pode dividir o que deve ser considerado como um token, como no caso de certos nomes (por exemplo, São 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 provocando possíveis complicações. No caso de períodos que sigam abreviação (por exemplo, dr.), O período após 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 quando se trata de domínios de texto biomédico que contêm muitos hífens, parênteses e outros sinais de pontuação.

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

Remoção de palavras de “parada” (Stop Words)
—————————————————————————–

Inclui livrar-se de artigos de linguagem comum, pronomes e preposições como “and“, “the” ou “to” em inglês. Nesse processo, algumas palavras muito comuns que parecem fornecer pouco ou nenhum valor ao objetivo da NLP são filtradas e excluídas do texto a ser processado, removendo assim os 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 há lista universal de palavras de parada . Estes podem ser pré-selecionados ou construídos a partir do zero. Uma abordagem potencial é começar adotando palavras de parada pré-definidas e adicionar palavras à lista mais tarde. No entanto, parece que a tendência geral, ao longo do tempo passado, foi ir do uso de grandes listas de palavras-padrão para o uso de nenhuma lista.

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

Stemming
—————-

Refere-se ao processo de fatiar o fim ou o início das palavras com a intenção de remover os afixos (adições lexicais à raiz da palavra).

Os afixos que são anexados no início da palavra são chamados de prefixos (por exemplo, “astro” na palavra “astrobiologia”) e os anexos 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 (chamadas afixos derivativos ). Em inglês, os prefixos são sempre derivados (o afixo cria uma nova palavra como no exemplo do prefixo “eco” na palavra “ecossistema”), mas os sufixos podem ser derivados (o afixo cria uma nova palavra como no exemplo do sufixo “ist” na palavra “guitarrista”) ou flexional (o afixo cria uma nova forma de palavra como no exemplo do sufixo “er” na palavra “mais rápido”).

Ok, então como podemos dizer a diferença e cortar o bit certo?

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 o stemming com base nelas, mas é claro que essa abordagem apresenta limitações. Como os stemmers usam abordagens algorítmicas, o resultado do processo stemming pode não ser uma palavra real ou mesmo alterar o significado da palavra (e sentença). 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 toda a imagem e teste o desempenho do seu modelo.

Então, se o contágio tem sérias limitações, por que usamos isso? Primeiro de tudo, pode ser usado para corrigir erros de ortografia dos tokensStemmers são simples de usar e rodam muito rápido (eles executam operações simples em uma string), e se a velocidade e o desempenho são importantes no modelo de NLP, então o stemming é certamente o caminho a percorrer. 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 básica e agrupar diferentes formas da mesma palavra. Por exemplo, os verbos no passado são alterados para presentes (por exemplo, “passou” é alterado para “ir”) e os sinônimos são unificados (por exemplo, “melhor” é alterado para “bom”), padronizando palavras com significado semelhante à raiz. Embora pareça estreitamente relacionada com o processo de stemming, a lematização usa uma abordagem diferente para alcançar as formas de raiz das palavras.

A lematização resolve palavras para sua forma de dicionário (conhecida como lema ) para a qual ela requer dicionários detalhados nos quais o algoritmo pode examinar e vincular palavras aos seus respectivos lemas.

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 a desambiguação , o que significa que ela pode discriminar entre palavras idênticas que têm diferentes significados dependendo do contexto específico. Pense em palavras como “morcego” (que pode corresponder ao animal ou ao metal / madeira clube usado no beisebol) ou “banco” (correspondente à instituição financeira ou à terra ao lado de um corpo de água). Ao fornecer um parâmetro de parte da fala a uma palavra (seja um substantivo, um verbo e assim por diante), é possível definir um papel para essa palavra na sentença e remover a desambiguação.

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

Modelagem de Tópicos (Topic Modeling)
—————————————————————–

É como um método para descobrir estruturas ocultas em conjuntos de textos ou documentos. Essencialmente, agrupa textos para descobrir tópicos latentes com base em seus conteúdos, processando palavras individuais e atribuindo-lhes valores 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, se pudermos identificar esses tópicos ocultos, poderemos desvendar o significado de nossos textos.

A partir do universo das técnicas de modelagem tópica, a Latitude Dirichlet Allocation (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 passa por cada palavra de forma iterativa 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 clustering como K-means que realizam clusters complexos (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, Document 1 é descrito por % 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 baseados em suas leituras anteriores) ou até mesmo detectar tendências em publicações online.

Como o futuro aparenta?

No momento, a NLP está lutando para detectar nuances no significado da linguagem, seja devido à falta de contexto, erros de ortografia ou diferenças dialetais.

Em março de 2016, a Microsoft lançou o Tay , um chatbot de Inteligência Artificial (AI) lançado no Twitter como um experimento de NLP. A ideia era que quanto mais usuários conversassem com Tay, mais espertos ficariam. Bem, o resultado foi que depois de 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 que seu antecessor. Zo usa uma combinação de abordagens inovadoras para reconhecer e gerar conversas, 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 NLP, a disciplina está se desenvolvendo em um ritmo muito rápido (provavelmente como nunca antes) e é provável que cheguemos a um nível de avanço nos próximos anos que tornará possíveis aplicações complexas.

Vejam também:

All you need to know about text preprocessing for NLP and Machine Learning

Linguistics In NLP: Why So Complex?

The Data Science Behind Natural Language Processing

Traduzido por Google
{ Alex Souza }

2 comentários sobre “Seu guia para processamento de linguagem natural (NLP)

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s