Editar

Share via


Processamento de linguagem natural (NLP) personalizado em grande escala

Azure Computer Vision
Azure Data Lake Storage
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

Ideias de soluções

Este artigo é uma ideia de solução. Se você quiser que expandamos o conteúdo com mais informações, como possíveis casos de uso, serviços alternativos, considerações de implementação ou orientação de preços, informe-nos fornecendo feedback do GitHub.

Implemente uma solução personalizada de processamento de linguagem natural (NLP) no Azure. Use o Spark NLP para tarefas como deteção e análise de tópicos e sentimentos.

Apache®, Apache Spark e o logotipo flame são marcas registradas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou em outros países. Nenhum endosso da Apache Software Foundation está implícito no uso dessas marcas.

Arquitetura

Diagrama que mostra o fluxo de dados através de um pipeline N L P. As etapas incluem ingerir, armazenar, processar e servir.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

  1. Os Hubs de Eventos do Azure, o Azure Data Factory ou ambos os serviços recebem documentos ou dados de texto não estruturados.
  2. Os Hubs de Eventos e o Data Factory armazenam os dados em formato de arquivo no Armazenamento do Azure Data Lake. Recomendamos que você configure uma estrutura de diretórios que esteja em conformidade com os requisitos de negócios.
  3. A API de Visão Computacional do Azure usa seu recurso de reconhecimento ótico de caracteres (OCR) para consumir os dados. Em seguida, a API grava os dados na camada bronze. Esta plataforma de consumo utiliza uma arquitetura lakehouse.
  4. Na camada de bronze, vários recursos do Spark NLP pré-processam o texto. Os exemplos incluem dividir, corrigir ortografia, limpar e compreender a gramática. Recomendamos executar a classificação do documento na camada bronze e, em seguida, escrever os resultados na camada prata.
  5. Na camada prata, os recursos avançados de PNL do Spark executam tarefas de análise de documentos, como reconhecimento de entidade nomeada, resumo e recuperação de informações. Em algumas arquiteturas, o resultado é escrito na camada de ouro.
  6. Na camada dourada, o Spark NLP executa várias análises visuais linguísticas nos dados de texto. Essas análises fornecem informações sobre as dependências de linguagem e ajudam na visualização de rótulos NER.
  7. Os usuários consultam os dados de texto da camada dourada como um quadro de dados e exibem os resultados no Power BI ou em aplicativos Web.

Durante as etapas de processamento, o Azure Databricks, o Azure Synapse Analytics e o Azure HDInsight são usados com o Spark NLP para fornecer a funcionalidade de NLP.

Componentes

  • O Armazenamento Data Lake é um sistema de arquivos compatível com Hadoop que tem um namespace hierárquico integrado e a enorme escala e economia do Armazenamento de Blobs do Azure.
  • O Azure Synapse Analytics é um serviço de análise para armazéns de dados e sistemas de big data.
  • O Azure Databricks é um serviço de análise para big data que é fácil de usar, facilita a colaboração e é baseado no Apache Spark. O Azure Databricks foi projetado para ciência e engenharia de dados.
  • Os Hubs de Eventos ingerem fluxos de dados gerados por aplicativos cliente. Os Hubs de Eventos armazenam os dados de streaming e preservam a sequência de eventos recebidos. Os consumidores podem se conectar a pontos de extremidade de hub para recuperar mensagens para processamento. Os Hubs de Eventos integram-se com o Armazenamento Data Lake, como mostra esta solução.
  • O Azure HDInsight é um serviço de análise gerenciado, de espectro completo e de código aberto na nuvem para empresas. Você pode usar estruturas de código aberto com o Azure HDInsight, como Hadoop, Apache Spark, Apache Hive, LLAP, Apache Kafka, Apache Storm e R.
  • O Data Factory move automaticamente os dados entre contas de armazenamento de diferentes níveis de segurança para garantir a separação de tarefas.
  • O Computer Vision usa APIs de reconhecimento de texto para reconhecer texto em imagens e extrair essas informações. A API de leitura usa os modelos de reconhecimento mais recentes e é otimizada para documentos grandes e com muito texto e imagens barulhentas. A API OCR não é otimizada para documentos grandes, mas suporta mais idiomas do que a API de leitura. Esta solução usa OCR para produzir dados no formato hOCR .

Detalhes do cenário

O processamento de linguagem natural (PNL) tem muitos usos: análise de sentimento, deteção de tópicos, deteção de linguagem, extração de frases-chave e categorização de documentos.

O Apache Spark é uma estrutura de processamento paralelo que suporta processamento na memória para aumentar o desempenho de aplicativos analíticos de big data, como NLP. O Azure Synapse Analytics, o Azure HDInsight e o Azure Databricks oferecem acesso ao Spark e tiram partido do seu poder de processamento.

Para cargas de trabalho de PNL personalizadas, a biblioteca de código aberto Spark NLP serve como uma estrutura eficiente para processar uma grande quantidade de texto. Este artigo apresenta uma solução para PNL personalizada em grande escala no Azure. A solução usa recursos de PNL do Spark para processar e analisar texto. Para obter mais informações sobre o Spark NLP, consulte Spark NLP functionality and pipelines, mais adiante neste artigo.

Potenciais casos de utilização

  • Classificação de documentos: o Spark NLP oferece várias opções para classificação de texto:

    • Pré-processamento de texto no Spark NLP e algoritmos de aprendizado de máquina baseados no Spark ML
    • Pré-processamento de texto e incorporação de palavras no Spark NLP e algoritmos de aprendizado de máquina, como GloVe, BERT e ELMo
    • Pré-processamento de texto e incorporação de frases em algoritmos e modelos de PNL de faísca e aprendizado de máquina, como o Universal Sentence Encoder
    • Pré-processamento e classificação de texto no Spark NLP que usa o anotador ClassifierDL e é baseado no TensorFlow
  • Extração de entidade de nome (NER): No Spark NLP, com algumas linhas de código, você pode treinar um modelo NER que usa BERT e obter precisão de última geração. O NER é uma subtarefa da extração de informação. O NER localiza entidades nomeadas em texto não estruturado e as classifica em categorias predefinidas, como nomes de pessoas, organizações, locais, códigos médicos, expressões de tempo, quantidades, valores monetários e porcentagens. O Spark NLP usa um modelo NER de última geração com BERT. O modelo é inspirado em um antigo modelo NER, bidirecional LSTM-CNN. Esse modelo anterior usa uma nova arquitetura de rede neural que deteta automaticamente recursos de nível de palavra e de caractere. Para isso, o modelo usa uma arquitetura híbrida bidirecional LSTM e CNN, eliminando a necessidade da maioria das engenharias de recursos.

  • Deteção de sentimento e emoção: O Spark NLP pode detetar automaticamente aspetos positivos, negativos e neutros da linguagem.

  • Parte da fala (POS): Esta funcionalidade atribui um rótulo gramatical a cada token no texto de entrada.

  • Deteção de sentenças (SD): O SD é baseado em um modelo de rede neural de uso geral para deteção de limites de sentenças que identifica frases dentro do texto. Muitas tarefas de PNL tomam uma frase como uma unidade de entrada. Exemplos dessas tarefas incluem marcação POS, análise de dependência, reconhecimento de entidade nomeada e tradução automática.

Funcionalidade e pipelines de PNL do Spark

O Spark NLP fornece bibliotecas Python, Java e Scala que oferecem a funcionalidade completa das bibliotecas tradicionais de PNL, como spaCy, NLTK, Stanford CoreNLP e Open NLP. O Spark NLP também oferece funcionalidades como verificação ortográfica, análise de sentimento e classificação de documentos. O Spark NLP melhora os esforços anteriores fornecendo precisão, velocidade e escalabilidade de última geração.

O Spark NLP é de longe a biblioteca de NLP de código aberto mais rápida. Benchmarks públicos recentes mostram o Spark NLP como 38 e 80 vezes mais rápido do que o spaCy, com precisão comparável para treinar modelos personalizados. O Spark NLP é a única biblioteca de código aberto que pode usar um cluster distribuído do Spark. O Spark NLP é uma extensão nativa do Spark ML que opera diretamente em quadros de dados. Como resultado, as acelerações em um cluster resultam em outra ordem de magnitude de ganho de desempenho. Como cada pipeline de NLP do Spark é um pipeline do Spark ML, o Spark NLP é adequado para criar pipelines unificados de NLP e aprendizado de máquina, como classificação de documentos, previsão de risco e pipelines de recomendação.

Além do excelente desempenho, o Spark NLP também oferece precisão de última geração para um número crescente de tarefas de PNL. A equipe da Spark NLP lê regularmente os últimos artigos acadêmicos relevantes e produz os modelos mais precisos.

Para a ordem de execução de um pipeline de PNL, o Spark NLP segue o mesmo conceito de desenvolvimento dos modelos tradicionais de aprendizado de máquina do Spark. Mas o Spark NLP aplica técnicas de PNL. O diagrama a seguir mostra os componentes principais de um pipeline de PNL do Spark.

Diagrama que mostra os estágios do pipeline N L P, como montagem de documentos, deteção de frases, tokenização, normalização e incorporação de palavras.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

Próximos passos