Caroline Eppright | Estrategista de Conteúdo | 25 de março de 2021
O processamento de linguagem natural (NLP) é um ramo da inteligência artificial (IA) que permite aos computadores compreender, gerar e manipular a linguagem humana. O processamento de linguagem natural tem a capacidade de interrogar os dados com texto ou voz de linguagem natural. Isso também é chamado de "entrada de linguagem". A maioria dos consumidores provavelmente interagiu com a PNL sem perceber. Por exemplo, NLP é a tecnologia básica protegida por assistentes virtuais, como o Oracle Digital Assistant (ODA), Siri, Cortana ou Alexa. Quando fazemos perguntas sobre esses assistentes virtuais, o NLP é o que permite que eles não apenas entendam a solicitação do usuário, mas também respondam em linguagem natural. O NLP se aplica ao texto escrito e à fala e pode ser aplicado a todas as linguagens humanas. Outros exemplos de ferramentas alimentadas pelo NLP incluem pesquisa na web, filtragem de spam por email, tradução automática de texto ou fala, resumo de documentos, análise de sentimentos e verificação gramatical/ortográfica. Por exemplo, alguns programas de email podem sugerir automaticamente uma resposta apropriada a uma mensagem com base em seu conteúdo. Esses programas usam o NLP para ler, analisar e responder à sua mensagem.
Existem vários outros termos que são sinônimos aproximadamente com o NLP. A compreensão da linguagem natural (NLU) e a geração de linguagem natural (NLG) se referem ao uso de computadores para entender e produzir linguagem humana, respectivamente. NLG tem a capacidade de fornecer uma descrição verbal do que aconteceu. Isso também é chamado de “saída de linguagem”, pois resume informações significativas em texto usando um conceito conhecido como “gramática de gráficos”.
Na prática, o NLU é usado para indicar NLP. A compreensão por computadores da estrutura e significado de todas as línguas humanas, permitindo que desenvolvedores e usuários interajam com computadores usando frases naturais e comunicação. A linguística computacional (CL) é o campo científico que estuda aspectos computacionais da linguagem humana, enquanto a PNL é a disciplina de engenharia relacionada à construção de artefatos computacionais que compreendem, geram ou manipulam a linguagem humana.
A pesquisa sobre PNL começou logo após a invenção de computadores digitais na década de 1950, e a PNL baseia-se em linguística e IA. No entanto, os principais avanços dos últimos anos foram alimentados por machine learning, que é um ramo da IA que desenvolve sistemas que aprendem e generalizam a partir de dados. O aprendizado profundo é um tipo de machine learning que pode aprender padrões muito complexos a partir de grandes conjuntos de dados, o que significa que é ideal para aprender as complexidades da linguagem natural a partir de conjuntos de dados provenientes da web.
Automatize tarefas de rotina: Chatbots com a tecnologia NLP podem processar um grande número de tarefas de rotina que são tratadas por agentes humanos hoje, liberando os funcionários para trabalhar em tarefas mais desafiadoras e interessantes. Por exemplo, chatbots e Assistentes Digitais podem reconhecer uma grande variedade de solicitações de usuário, correspondê-las à entrada apropriada em um banco de dados corporativo e formular uma resposta apropriada ao usuário.
Melhore a pesquisa: O NLP pode melhorar a pesquisa por correspondência de palavras-chave para recuperação de documentos e perguntas frequentes ao desambiguar sentidos de palavras com base no contexto (por exemplo, "transportadora" significa algo diferente em contextos biomédicos e industriais), sinônimos correspondentes (por exemplo, recuperar documentos que mencionam "carro" dado uma pesquisa por "automóvel") e levar em conta a variação morfológica (que é importante para consultas que não sejam em inglês). Sistemas eficazes de pesquisa acadêmica com NLP podem melhorar drasticamente o acesso a pesquisas de ponta relevantes para médicos, advogados e outros especialistas.
Otimização do mecanismo de pesquisa: o NLP é uma ótima ferramenta para colocar seus negócios em destaque na pesquisa online, analisando pesquisas para otimizar seu conteúdo. Os mecanismos de pesquisa usam o NLP para classificar seus resultados - e saber como usar efetivamente essas técnicas facilita a classificação acima de seus concorrentes. Isso levará a uma maior visibilidade para o seu negócio.
Analise e organize grandes coleções de documentos: técnicas de NLP, como clusterização de documentos e modelagem de tópicos, simplificam a tarefa de entender a diversidade de conteúdo em grandes coleções de documentos, como relatórios corporativos, artigos de notícias ou documentos científicos. Essas técnicas são frequentemente usadas para fins de descoberta legal.
Análise de mídia social: O NLP pode revisar análises de clientes e comentários de mídia social para entender melhor os grandes volumes de informações. A análise de sentimentos identifica comentários positivos e negativos em um fluxo de comentários de mídia social, fornecendo uma medida direta do sentimento do cliente em tempo real. Isso pode levar a grandes compensações na linha, como aumento da satisfação e da receita do cliente.
Informações de mercado: Com o NLP trabalhando para analisar a linguagem dos clientes da sua empresa, você terá um controle melhor sobre o que eles desejam e também uma ideia melhor de como se comunicar com eles. A análise de sentimento orientada ao aspecto detecta o sentimento associado a aspectos ou produtos específicos nas mídias sociais (por exemplo, "o teclado é ótimo, mas a tela é muito escassa"), fornecendo informações diretamente acionáveis para design e marketing de produtos.
Moderação de conteúdo: Se sua empresa atrair grandes quantidades de comentários de usuários ou clientes, o NLP permite moderar o que está sendo dito para manter a qualidade e a civilidade, analisando não apenas as palavras, mas também o tom e a intenção dos comentários.
O NLP simplifica e automatiza uma ampla gama de processos de negócios, especialmente aqueles que envolvem grandes quantidades de texto não estruturado, como emails, pesquisas, conversas em mídia social e muito mais. Com o NLP, as empresas são mais capazes de analisar seus dados para ajudar a tomar as decisões certas. Veja alguns exemplos de aplicações práticas de NLP:
Modelos de machine learning para NLP: Mencionamos anteriormente que o NLP moderno depende muito de uma abordagem chamada IA para machine learning. O machine learning faz previsões ao generalizar exemplos em um conjunto de dados. Esse conjunto de dados é denominado dados de treinamento, e os algoritmos de machine learning treinam nesses dados de treinamento para produzir um modelo de machine learning que realize uma tarefa de destino.
Por exemplo, os dados de treinamento da análise de sentimento consistem em frases junto com seu sentimento (por exemplo, sentimento positivo, negativo ou neutro). Um algoritmo de machine-learning lê esse conjunto de dados e produz um modelo que usa sentenças como entrada e retorna seus sentimentos. Esse tipo de modelo, que usa frases ou documentos como entradas e retorna um rótulo para essa entrada, é chamado de modelo de classificação de documento. Os classificadores de documento também podem ser usados para classificar documentos pelos tópicos mencionados (por exemplo, como esportes, finanças, política etc.).
Outro tipo de modelo é usado para reconhecer e classificar entidades em documentos. Para cada palavra em um documento, o modelo prevê se essa palavra faz parte de uma menção de entidade e, em caso afirmativo, qual tipo de entidade está envolvida. Por exemplo, em “ações da XYZ Corp negociadas por US$ 28 ontem”, “XYZ Corp” é uma entidade da empresa, “US$ 28” é um valor em moeda e “ontem” é uma data. Os dados de treinamento para o reconhecimento de entidades são uma coleção de textos, onde cada palavra é rotulada com os tipos de entidades a que a palavra se refere. Esse tipo de modelo, que produz um rótulo para cada palavra na entrada, é chamado de modelo de rotulagem de sequência.
Modelos de sequência para sequência são uma adição muito recente à família de modelos usados em NLP. Um modelo de sequência para sequência (ou seq2seq) usa uma sentença ou documento inteiro como entrada (como em um classificador de documento), mas produz uma sentença ou outra sequência (por exemplo, um programa de computador) como saída. (Um classificador de documento produz somente um único símbolo como saída). Exemplos de aplicativos de modelos seq2seq incluem tradução automática, que, por exemplo, usa uma frase em inglês como entrada e retorna sua frase em francês como saída; resumo de documentos (em que a saída é um resumo da entrada); e análise semântica (em que a entrada é uma consulta ou solicitação em inglês, e a saída é um programa de computador que implementa essa solicitação).
Aprendizado profundo, modelos pré-treinados e aprendizado de transferência: Aprendizado profundo é o tipo mais amplamente utilizado de machine learning em NLP. Na década de 80, os pesquisadores desenvolveram redes neurais, nas quais um grande número de modelos primitivos de machine learning são combinados em uma única rede: por analogia com cérebros, os modelos simples de machine learning às vezes são chamados de "neurônios". Esses neurônios são organizados em camadas, e uma rede neural profunda é uma com muitas camadas. O aprendizado profundo é o machine learning usando modelos de rede neural profunda.
Devido à sua complexidade, geralmente, são necessários muitos dados para treinar uma rede neural profunda e o processamento que leva muito poder e tempo de computação. Modelos modernos de NLP de rede neural profunda são treinados a partir de uma ampla gama de fontes, como toda a Wikipedia e dados raspados a partir da web. Os dados de treinamento podem estar na ordem de 10 GB ou mais, e pode levar uma semana ou mais em um cluster de alto desempenho para treinar a rede neural profunda. (Os pesquisadores descobriram que treinar modelos ainda mais profundos de conjuntos de dados ainda maiores tem um desempenho ainda maior, então atualmente há uma corrida para treinar modelos cada vez maiores de conjuntos de dados cada vez maiores).
Os dados vorazes e os requisitos de computação das Deep Neural Networks parecem limitar severamente sua utilidade. No entanto, o aprendizado de transferência permite que uma rede neural profunda treinada seja mais treinada para alcançar uma nova tarefa com muito menos dados de treinamento e esforço de computação. O tipo mais simples de aprendizado de transferência é chamado de ajuste fino. Ele consiste simplesmente em treinar primeiro o modelo em um grande conjunto de dados genéricos (por exemplo, a Wikipedia) e, em treinamento adicional, ("ajustar") o modelo em um conjunto de dados muito menor específico da tarefa que é rotulado com a tarefa de destino real. Talvez surpreendentemente, os conjuntos de dados de ajuste fino podem ser extremamente pequenos, talvez contendo apenas centenas ou até mesmo dezenas de exemplos de treinamento, e o treinamento de ajuste fino só requer minutos em uma única CPU. O aprendizado de transferência facilita a implementação de modelos de aprendizado profundo em toda a empresa.
Agora há um ecossistema inteiro de provedores que oferecem modelos de aprendizado profundo pré-treinados que são treinados em diferentes combinações de idiomas, conjuntos de dados e tarefas de pré-treinamento. Esses modelos pré-treinados podem ser baixados e ajustados para uma ampla variedade de tarefas de destino diferentes.
Saiba como estabelecer um centro de excelência em IA (CoE) pode impulsionar seu sucesso com tecnologias de PNL. Nosso ebook fornece dicas para criar um CoE e usar efetivamente modelos avançados de machine learning.
Tokenização: A tokenização divide o texto bruto (por exemplo, uma frase ou um documento) em uma sequência de tokens, como palavras ou partes de subpalavras. A tokenização geralmente é a primeira etapa em um pipeline de processamento de NLP. Os tokens são sequências recorrentes de texto que são tratadas como unidades atômicas no processamento posterior. Elas podem ser palavras, unidades de subpalavras chamadas morfemas (por exemplo, prefixos como "un-" ou sufixos como "-ing" em inglês) ou até mesmo caracteres individuais.
Modelos de linguagem de palavras: Os modelos de saco de palavras tratam os documentos como coleções não ordenadas de tokens ou palavras (um saco é como um conjunto, exceto pelo fato de que ele rastreia o número de vezes que cada elemento aparece). Como eles ignoram completamente a ordem das palavras, os modelos do saco de palavras confundirão uma frase como "dog bites man" com "man bites dog". No entanto, os modelos de repositório de palavras geralmente são usados por motivos de eficiência em grandes tarefas de recuperação de informações, como mecanismos de pesquisa. Eles podem produzir resultados de última geração com documentos mais longos.
Interromper remoção de palavra: uma "palavra de parada" é um token ignorado no processamento posterior. Normalmente, são palavras curtas e frequentes, como "a", "o" ou "um". Modelos de "saco de palavras" e mecanismos de busca muitas vezes ignoram palavras de parada para reduzir o tempo de processamento e armazenamento dentro do banco de dados. As redes neurais profundas normalmente levam em conta a ordem das palavras (ou seja, não são modelos de palavras) e não param a remoção das palavras porque palavras de parada podem transmitir distinções sutis no significado (por exemplo, "o pacote foi perdido" e "um pacote é perdido" não significam a mesma coisa, mesmo que sejam os mesmos após a remoção da palavra de parada) .
Stemização e lematização: Os morfemas são os menores elementos que contêm significados da linguagem. Normalmente morfemas são menores que palavras. Por exemplo, "revisitado" consiste no prefixo "re-", no radical "visit" e no sufixo do passado "-ado". A stemização e a lematização mapeiam palavras para suas formas-tronco (por exemplo, "revisit" + PASSADO). Stemização e lematização são etapas cruciais em modelos de aprendizado pré-profundo, mas os modelos de aprendizado profundo geralmente aprendem essas regularidades com base em seus dados de treinamento, e assim não exigem etapas explícitas de stemização ou lematização.
Tags de parte de fala e de sintática: A marcação de parte de fala (PoS) é o processo de rotular cada palavra com sua parte de fala (por exemplo, substantivo, verbo, adjetivo etc.). Um analisador sintático identifica como as palavras são combinadas para formar frases, cláusulas e frases inteiras. A marcação PoS é uma tarefa de rotulagem de sequência, a análise sintática é um tipo estendido de tarefa de rotulagem de sequência e os Nntworks neurais profundos são a tecnologia de ponta para marcação PoS e análise sintática. Antes do aprendizado profundo, a marcação com PoS e a análise sintática foram etapas essenciais na compreensão de frases. No entanto, os modelos modernos de NLP de aprendizado profundo geralmente só se beneficiam marginalmente (se for o caso) de PoS ou de informações de sintaxe, de modo que nem a marcação PoS nem a análise sintática são amplamente usadas no NLP de aprendizado profundo.
As bibliotecas e kits de ferramentas NLP estão geralmente disponíveis em Python e, por essa razão, a maioria dos projetos NLP são desenvolvidos em Python. O ambiente de desenvolvimento interativo do Python facilita o desenvolvimento e o teste de novo código.
Para o processamento de grandes quantidades de dados, C++ e Java são muitas vezes preferidos porque podem suportar códigos mais eficientes.
Aqui estão exemplos de algumas bibliotecas NLP populares.
TensorFlow e PyTorch: Estes são os dois kits de ferramentas de aprendizado profundo mais populares. Eles estão disponíveis gratuitamente para fins comerciais e de pesquisa. Embora suportem várias linguagens, sua linguagem primária é Python. Eles vêm com grandes bibliotecas de componentes pré-construídos, portanto, mesmo modelos de NLP de aprendizado profundo muito sofisticados geralmente exigem apenas a conexão desses componentes. Eles também suportam infraestrutura de computação de alto desempenho, como clusters de máquinas com aceleradores de unidade de processador gráfico (GPU). Eles têm excelente documentação e tutoriais.
AllenNLP: Esta é uma biblioteca de componentes NLP de alto nível (por exemplo, chatbots simples) implementados em PyTorch e Python. A documentação é excelente.
HuggingFace: Esta empresa distribui centenas de diferentes modelos NLP de Aprendizado Profundo pré-treinados, bem como um kit de ferramentas de software plug-and-play em TensorFlow e PyTorch que permite aos desenvolvedores avaliar rapidamente o desempenho de diferentes modelos pré-treinados em suas tarefas específicas.
Spark NLP: O Spark NLP é uma biblioteca de processamento de texto de código aberto para NLP avançado para as linguagens de programação Python, Java e Scala. Seu objetivo é fornecer uma interface de programação de aplicativos (API) para pipelines de processamento de linguagem natural. Ele oferece modelos de rede neural pré-treinados, pipelines e incorporações, bem como suporte para treinamento de modelos personalizados.
SpaCy NLP: SpaCy é uma biblioteca gratuita de código-fonte aberto para NLP avançado em Python e foi projetada especificamente para ajudar a criar aplicativos que possam processar e entender grandes volumes de texto. O SpaCy é conhecido por ser altamente intuitivo e pode lidar com muitas das tarefas necessárias em projetos NLP comuns.
Em resumo, o processamento de linguagem natural é uma área emocionante de desenvolvimento de inteligência artificial que alimenta uma ampla gama de novos produtos, como mecanismos de pesquisa, chatbots, sistemas de recomendação e sistemas de fala para texto. À medida que as interfaces humanas com computadores continuam se afastando de botões, formulários e linguagens específicas de domínio, a demanda por crescimento no processamento de linguagem natural continuará a aumentar. Por esse motivo, a Oracle Cloud Infrastructure tem o compromisso de fornecer desempenho local com nossas configurações e ferramentas de computação otimizadas para o desempenho para NLP. A Oracle Cloud Infrastructure oferece uma matriz de configurações de GPU que você pode implementar em questão de minutos para começar a experimentar o NLP.