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.
Especificamente, você pode usar a PNL para:
- Classifique documentos. Por exemplo, você pode rotular documentos como confidenciais ou spam.
- Faça processamentos ou pesquisas subsequentes. Você pode usar a saída de PNL para esses fins.
- Resuma o texto identificando as entidades que estão presentes no documento.
- Marque documentos com palavras-chave. Para as palavras-chave, a PNL pode usar entidades identificadas.
- Faça pesquisa e recuperação baseadas em conteúdo. A marcação torna essa funcionalidade possível.
- Resuma os tópicos importantes de um documento. A PNL pode combinar entidades identificadas em tópicos.
- Categorize documentos para navegação. Para isso, a PNL usa tópicos detetados.
- Enumerar documentos relacionados com base em um tópico selecionado. Para isso, a PNL usa tópicos detetados.
- Marcar texto para sentimento. Usando essa funcionalidade, você pode avaliar o tom positivo ou negativo de um documento.
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.
Potenciais casos de utilização
Os cenários de negócios que podem se beneficiar da PNL personalizada incluem:
- Inteligência Documental para documentos manuscritos ou criados por máquina em finanças, saúde, varejo, governo e outros setores.
- Tarefas de PNL agnósticas do setor para processamento de texto, como reconhecimento de entidade de nome (NER), classificação, sumarização e extração de relação. Essas tarefas automatizam o processo de recuperação, identificação e análise de informações de documentos, como texto e dados não estruturados. Exemplos dessas tarefas incluem modelos de estratificação de risco, classificação ontológica e resumos de varejo.
- Recuperação de informação e criação de gráficos de conhecimento para pesquisa semântica. Esta funcionalidade torna possível criar gráficos de conhecimento médico que apoiam a descoberta de medicamentos e ensaios clínicos.
- Tradução de texto para sistemas de IA conversacional em aplicativos voltados para o cliente em varejo, finanças, viagens e outros setores.
Apache Spark como uma estrutura de PNL personalizada
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. 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, o Spark NLP serve como uma estrutura eficiente para processar uma grande quantidade de texto. Esta biblioteca de NLP de código aberto fornece bibliotecas Python, Java e Scala que oferecem a funcionalidade completa de bibliotecas NLP tradicionais, 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.
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 do Spark NLP lê regularmente os últimos artigos acadêmicos relevantes e implementa modelos de última geração. Nos últimos dois a três anos, os modelos com melhor desempenho utilizaram deep learning. A biblioteca vem com modelos de aprendizagem profunda pré-construídos para reconhecimento de entidades nomeadas, classificação de documentos, deteção de sentimentos e emoções e deteção de frases. A biblioteca também inclui dezenas de modelos de linguagem pré-treinados que incluem suporte para incorporações de palavras, pedaços, frases e documentos.
A biblioteca tem compilações otimizadas para CPUs, GPUs e os mais recentes chips Intel Xeon. Você pode dimensionar os processos de treinamento e inferência para aproveitar os clusters do Spark. Esses processos podem ser executados em produção em todas as plataformas de análise populares.
Desafios
- O processamento de uma coleção de documentos de texto de forma livre requer uma quantidade significativa de recursos computacionais. O processamento também é demorado. Esses processos geralmente envolvem a implantação de computação de GPU.
- Sem um formato de documento padronizado, pode ser difícil obter resultados consistentemente precisos quando você usa o processamento de texto de forma livre para extrair fatos específicos de um documento. Por exemplo, pense em uma representação de texto de uma fatura — pode ser difícil criar um processo que extraia corretamente o número da fatura e a data em que as faturas são de vários fornecedores.
Principais critérios de seleção
No Azure, os serviços do Spark, como o Azure Databricks, o Azure Synapse Analytics e o Azure HDInsight, fornecem funcionalidade de NLP quando você os usa com o Spark NLP. Os serviços de IA do Azure são outra opção para a funcionalidade de PNL. Para decidir qual serviço usar, considere estas perguntas:
Pretende utilizar modelos pré-construídos ou pré-treinados? Se sim, considere usar as APIs que os serviços de IA do Azure oferecem. Ou transfira o seu modelo preferido através do Spark NLP.
Você precisa treinar modelos personalizados em relação a um grande corpus de dados de texto? Se sim, considere usar o Azure Databricks, o Azure Synapse Analytics ou o Azure HDInsight com o Spark NLP.
Você precisa de recursos de PNL de baixo nível, como tokenização, derivação, lemmatização e frequência de termo/frequência de documento inversa (TF/IDF)? Se sim, considere usar o Azure Databricks, o Azure Synapse Analytics ou o Azure HDInsight com o Spark NLP. Ou use uma biblioteca de software de código aberto na ferramenta de processamento de sua escolha.
Você precisa de recursos simples e de alto nível de PNL, como identificação de entidade e intenção, deteção de tópicos, verificação ortográfica ou análise de sentimento? Se sim, considere usar as APIs que os serviços de IA do Azure oferecem. Ou transfira o seu modelo preferido através do Spark NLP.
Matriz de capacidades
As tabelas a seguir resumem as principais diferenças nos recursos dos serviços de PNL.
Capacidades gerais
Funcionalidade | Serviço Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) com Spark NLP | Serviços de IA do Azure |
---|---|---|
Fornece modelos pré-treinados como um serviço | Sim | Sim |
API REST | Sim | Sim |
Programabilidade | Python, Scala | Para idiomas suportados, consulte Recursos adicionais |
Suporta o processamento de grandes conjuntos de dados e documentos grandes | Sim | No |
Recursos de PNL de baixo nível
Capacidade dos anotadores | Serviço Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) com Spark NLP | Serviços de IA do Azure |
---|---|---|
Detetor de frases | Sim | No |
Detetor de frases profundas | Sim | Sim |
Tokenizador | Sim | Sim |
Gerador de N-gramas | Sim | No |
Segmentação de palavras | Sim | Sim |
Stemmer | Sim | No |
Lemmatizador | Sim | No |
Identificação de classe gramatical | Sim | No |
Analisador de dependência | Sim | No |
Tradução | Sim | No |
Limpador de palavras paradas | Sim | No |
Correção ortográfica | Sim | No |
Normalizador | Sim | Sim |
Correspondente de texto | Sim | No |
TF/IDF | Sim | No |
Correspondente de expressão regular | Sim | Incorporado no Serviço de Compreensão de Idiomas (LUIS). Não suportado no Conversational Language Understanding (CLU), que está substituindo o LUIS. |
Correspondente de data | Sim | Possível em LUIS e CLU através de reconhecedores DateTime |
Fragmento | Sim | No |
Recursos de PNL de alto nível
Funcionalidade | Serviço Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) com Spark NLP | Serviços de IA do Azure |
---|---|---|
Verificação ortográfica | Sim | No |
Resumo | Sim | Sim |
Perguntas e respostas | Sim | Sim |
Deteção de sentimentos | Sim | Sim |
Deteção de emoções | Sim | Apoia a mineração de opinião |
Classificação de tokens | Sim | Sim, através de modelos personalizados |
Classificação de textos | Sim | Sim, através de modelos personalizados |
Representação de texto | Sim | No |
NER | Sim | Sim — a análise de texto fornece um conjunto de NER, e os modelos personalizados estão em reconhecimento de entidade |
Reconhecimento de entidades | Sim | Sim, através de modelos personalizados |
Deteção de idioma | Sim | Sim |
Suporta idiomas além do inglês | Sim, suporta mais de 200 idiomas | Sim, suporta mais de 97 idiomas |
Configurar o Spark NLP no Azure
Para instalar o Spark NLP, use o código a seguir, mas substitua <version>
pelo número da versão mais recente. Para obter mais informações, consulte a documentação do Spark NLP.
# Install Spark NLP from PyPI.
pip install spark-nlp==<version>
# Install Spark NLP from Anacodna or Conda.
conda install -c johnsnowlabs spark-nlp
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.nlp:spark-nlp_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using sbt assembly.
spark-shell --jars spark-nlp-assembly-3 <version>.jar
Desenvolver pipelines de PNL
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 ML. Mas o Spark NLP aplica técnicas de PNL.
Os principais componentes de um pipeline de PNL do Spark são:
DocumentAssembler: um transformador que prepara dados alterando-os para um formato que o Spark NLP pode processar. Este estágio é o ponto de entrada para cada pipeline de PNL do Spark. O DocumentAssembler pode ler uma
String
coluna ou umArray[String]
arquivo . Você pode usarsetCleanupMode
para pré-processar o texto. Por padrão, esse modo está desativado.SentenceDetector: Um anotador que deteta limites de frases usando a abordagem que é dada. Este anotador pode retornar cada frase extraída em um
Array
arquivo . Ele também pode retornar cada frase em uma linha diferente, se você definirexplodeSentences
como true.Tokenizador: um anotador que separa o texto bruto em tokens, ou unidades como palavras, números e símbolos, e retorna os tokens em uma
TokenizedSentence
estrutura. Esta classe não é ajustada. Se você ajustar um tokenizador, o internoRuleFactory
usará a configuração de entrada para configurar regras de tokenização. O tokenizador usa padrões abertos para identificar tokens. Se as configurações padrão não atenderem às suas necessidades, você poderá adicionar regras para personalizar o Tokenizer.Normalizador: um anotador que limpa tokens. O normalizador requer hastes. O Normalizer usa expressões regulares e um dicionário para transformar texto e remover caracteres sujos.
WordEmbeddings: Anotadores de pesquisa que mapeiam tokens para vetores. Você pode usar
setStoragePath
para especificar um dicionário de pesquisa de token personalizado para incorporações. Cada linha do seu dicionário precisa conter um token e sua representação vetorial, separados por espaços. Se um token não for encontrado no dicionário, o resultado será um vetor zero da mesma dimensão.
O Spark NLP usa pipelines Spark MLlib, que o MLflow suporta nativamente. O MLflow é uma plataforma de código aberto para o ciclo de vida do aprendizado de máquina. Os seus componentes incluem:
- MLflow Tracking: registra experimentos e fornece uma maneira de consultar resultados.
- Projetos MLflow: Possibilita a execução de código de ciência de dados em qualquer plataforma.
- MLflow Models: Implanta modelos em diversos ambientes.
- Registro de modelo: gerencia modelos que você armazena em um repositório central.
O MLflow está integrado no Azure Databricks. Você pode instalar o MLflow em qualquer outro ambiente baseado no Spark para rastrear e gerenciar seus experimentos. Você também pode usar o MLflow Model Registry para disponibilizar modelos para fins de produção.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Moritz Steller - Brasil | Arquiteto de Soluções Cloud Sênior
- Zoiner Tejada - Brasil | CEO e Arquiteto
Próximos passos
Documentação do Spark NLP:
Componentes do Azure:
Saiba mais sobre os recursos:
Recursos relacionados
- Processamento de linguagem natural personalizada em grande escala no Azure
- Escolha uma tecnologia de serviços de IA do Microsoft Azure
- Compare os produtos e tecnologias de aprendizado de máquina da Microsoft
- MLflow e Azure Machine Learning
- Enriquecimento da IA com processamento de imagem e linguagem natural na Pesquisa Cognitiva do Azure
- Analise feeds de notícias com análises quase em tempo real usando processamento de imagem e linguagem natural