Modifier

Partager via


Technologie de traitement du langage naturel

Azure AI services
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

Le traitement en langage naturel (NLP) a de nombreuses applications, telles que l’analyse des sentiments, la détection de rubriques, la détection de langue, l’extraction d’expressions clés et la catégorisation des documents.

Plus précisément, vous pouvez utiliser NLP pour :

  • Classifiez les documents, par exemple, en les étiquetant en tant que courrier indésirable ou sensible.
  • Effectuez un traitement ou des recherches ultérieurs avec des sorties NLP.
  • Résumez le texte en identifiant les entités dans le document.
  • Étiquetez des documents avec des mots clés, utilisant des entités identifiées.
  • Effectuez une recherche et une récupération basées sur le contenu via l’étiquetage.
  • Résumez les rubriques clés d’un document à l’aide d’entités identifiées.
  • Catégoriser les documents pour la navigation à l’aide de rubriques détectées.
  • Énumérer les documents qui se rapportent à un thème sélectionné.
  • Évaluez le sentiment de texte pour comprendre son ton positif ou négatif.

Grâce aux avancées technologiques, NLP peuvent non seulement être utilisées pour catégoriser et analyser des données textuelles, mais également pour améliorer les fonctions IA interprétables dans différents domaines. L’intégration de grands modèles de langage (LLM) améliore considérablement les fonctionnalités de NLP. Les llms comme GPT et BERT peuvent générer du texte de type humain, contextuel, ce qui les rend très efficaces pour les tâches de traitement de langage complexes. Ils complètent les techniques NLP existantes en gérant des tâches cognitives plus larges, qui améliorent les systèmes de conversation et l’engagement client, en particulier avec des modèles tels que Databricks Dolly 2.0.

Relation et différences entre les modèles de langage et les NLP

NLP est un domaine complet englobant diverses techniques de traitement du langage humain. En revanche, les modèles de langage sont un sous-ensemble spécifique dans NLP, en se concentrant sur l’apprentissage profond pour effectuer des tâches de langage de haut niveau. Bien que les modèles linguistiques améliorent NLP en fournissant des fonctionnalités avancées de génération de texte et de compréhension, ils ne sont pas synonymes de NLP. Au lieu de cela, ils servent d’outils puissants dans le domaine NLP plus large, ce qui permet un traitement de langage plus sophistiqué.

Note

Cet article se concentre sur NLP. La relation entre NLP et les modèles de langage montre que les modèles de langage améliorent les processus NLP grâce à des fonctionnalités supérieures de compréhension du langage et de génération.

Apache®, Apache Spark et le logo représentant une flamme sont soit des marques déposées, soit des marques commerciales d’Apache Software Foundation aux États-Unis et/ou dans d’autres pays. L’utilisation de ces marques n’implique aucune approbation de l’Apache Software Foundation.

Cas d’usage potentiels

Les scénarios métier qui peuvent tirer parti du NLP personnalisé sont les suivants :

  • Document Intelligence pour les documents manuscrits ou créés par des machines dans les secteurs de la finance, des soins de santé, de la vente au détail, de l'administration publique et autres.
  • Tâches NLP indépendantes du secteur pour le traitement du texte, telles que la reconnaissance d’entités nommées, la classification, le résumé et l’extraction de relations. Ces tâches automatisent le processus de récupération, d’identification et d’analyse des informations des documents, comme le texte et les données non structurées. Les modèles de stratification des risques, la classification d’ontologie et les résumés de ventes sont des exemples de ces tâches.
  • Récupération des informations et création de graphes de connaissances pour la recherche sémantique. Cette fonctionnalité permet de créer des graphiques de connaissances médicales qui sont utiles pour la découverte de médicaments et les essais cliniques.
  • Traduction de texte pour les systèmes d’IA conversationnelle dans les applications orientées client dans les secteurs de la distribution, de la finance, du tourisme et d’autres.
  • Sentiment et intelligence émotionnelle améliorée dans l’analytique, en particulier pour surveiller la perception de la marque et l’analytique des commentaires des clients.
  • Génération de rapports automatisée. Synthétisez et générez des rapports textuels complets à partir d’entrées de données structurées, ce qui aide les secteurs tels que la finance et la conformité, où une documentation approfondie est nécessaire.
  • Interfaces activées par la voix pour améliorer les interactions utilisateur dans les applications IoT et les appareils intelligents en intégrant NLP pour la reconnaissance vocale et les fonctionnalités de conversation naturelle.
  • Modèles linguistiques adaptatifs pour ajuster dynamiquement la sortie du langage en fonction de différents niveaux de compréhension d’audience, ce qui est essentiel pour les améliorations apportées au contenu éducatif et à l’accessibilité.
  • Analyse du texte de cybersécurité pour analyser les modèles de communication et l’utilisation de la langue en temps réel pour identifier les menaces de sécurité potentielles dans la communication numérique, ce qui améliore la détection des tentatives d’hameçonnage ou des fausses informations.

Apache Spark en tant que framework NLP personnalisé

Apache Spark est une infrastructure de traitement parallèle puissante qui améliore les performances des applications analytiques big data par le biais d’un traitement en mémoire. azure Synapse Analytics, Azure HDInsight et Azure Databricks continuent de fournir un accès robuste aux fonctionnalités de traitement de Spark, ce qui garantit l’exécution transparente des opérations de données à grande échelle.

Pour les charges de travail NLP personnalisées, Spark NLP reste un framework efficace capable de traiter de vastes volumes de texte. Cette bibliothèque open source fournit des fonctionnalités étendues par le biais de bibliothèques Python, Java et Scala, qui fournissent la sophistication trouvée dans les bibliothèques NLP importantes telles que spaCy et NLTK. Spark NLP inclut des fonctionnalités avancées telles que la vérification orthographique, l’analyse des sentiments et la classification des documents, garantissant constamment la précision et l’évolutivité de l’état de l’art.

Diagramme montrant des zones de fonctionnalités NLP, comme la reconnaissance d’entités. Différentes zones listent des annotateurs, des modèles et des langages pris en charge par NLP.

Les benchmarks publics récents mettent en évidence les performances de Spark NLP, montrant des améliorations significatives de la vitesse sur d’autres bibliothèques tout en conservant une précision comparable pour l’entraînement de modèles personnalisés. Notamment, l’intégration des modèles Llama-2 et OpenAI Whisper améliore les interfaces conversationnelles et la reconnaissance vocale multilingue, marquant ainsi des progrès significatifs dans les fonctionnalités de traitement optimisées.

De façon unique, Spark NLP utilise efficacement un cluster Spark distribué, fonctionnant comme une extension native de Spark ML qui fonctionne directement sur des trames de données. Cette intégration prend en charge les gains de performances améliorés sur les clusters, ce qui facilite la création de pipelines unifiés de NLP et de Machine Learning pour des tâches telles que la classification des documents et la prédiction des risques. L’introduction d’incorporations MPNet et d’une prise en charge étendue d’ONNX enrichit davantage ces fonctionnalités, ce qui permet un traitement précis et prenant en charge le contexte.

Au-delà des avantages en matière de performances, Spark NLP offre une précision de pointe sur un éventail croissant de tâches NLP. La bibliothèque est fournie avec des modèles d’apprentissage profond prédéfinis pour la reconnaissance d’entité nommée, la classification des documents, la détection des sentiments, etc. Sa conception riche en fonctionnalités inclut des modèles de langage préentraînés prenant en charge les mots, segments, phrases et incorporations de documents.

Avec des builds optimisées pour les processeurs, les GPU et les dernières puces Intel Xeon, l’infrastructure de Spark NLP est conçue pour la scalabilité, ce qui permet aux processus d’apprentissage et d’inférence d’utiliser pleinement les clusters Spark. Cela garantit une gestion efficace des tâches de NLP dans différents environnements et applications, en maintenant sa position à la pointe de l’innovation NLP.

Défis

  • Ressources de traitement : Traitement d’une collection de documents texte de forme libre nécessite une quantité importante de ressources de calcul, et le traitement est également gourmand en temps. Ce type de traitement implique souvent le déploiement de calcul GPU. Les avancées récentes, telles que les optimisations dans les architectures spark NLP comme Llama-2 qui prennent en charge la quantisation, permettent de rationaliser ces tâches intensives, ce qui rend l’allocation des ressources plus efficace.

  • problèmes de normalisation : Sans format de document standardisé, il peut être difficile d’obtenir des résultats cohérents quand vous utilisez le traitement de texte de forme libre pour extraire des faits spécifiques d’un document. Par exemple, l’extraction du numéro de facture et de la date de différentes factures pose des problèmes. L’intégration de modèles NLP adaptables comme M2M100 améliore la précision du traitement dans plusieurs langages et formats, ce qui facilite la cohérence des résultats.

  • la variété et la complexité des données :'adressage de la variété des structures de documents et des nuances linguistiques reste complexe. Les innovations telles que les incorporations MPNet offrent une compréhension contextuelle améliorée, offrant une gestion plus intuitive de divers formats textuels et améliorant la fiabilité globale du traitement des données.

Critères de sélection principaux

Dans Azure, les services Spark comme Azure Databricks, Microsoft Fabric et Azure HDInsight fournissent NLP fonctionnalités lorsqu’elles sont utilisées avec Spark NLP. Les services Azure AI sont une autre option pour NLP fonctionnalités. Pour décider du service à utiliser, posez-vous les questions suivantes :

  • Voulez-vous utiliser des modèles prédéfinis ou pré-entraînés ? Si oui, envisagez d’utiliser les API que les services Azure AI offrent ou téléchargez votre modèle de choix via Spark NLP, qui inclut désormais des modèles avancés comme Llama-2 et MPNet pour des fonctionnalités améliorées.

  • Devez-vous effectuer l’apprentissage de modèles personnalisés avec une grande quantité de données de texte ? Si oui, envisagez d’utiliser Azure Databricks, Microsoft Fabric ou Azure HDInsight avec Spark NLP. Ces plateformes fournissent la puissance de calcul et la flexibilité nécessaires pour une formation approfondie des modèles.

  • Avez-vous besoin de fonctionnalités NLP de bas niveau comme la création de jetons, la recherche de radical, la lemmatisation et TF/IDF (term frequency/inverse document frequency) ? Si oui, envisagez d’utiliser Azure Databricks, Microsoft Fabric ou Azure HDInsight avec Spark NLP. Vous pouvez également utiliser une bibliothèque de logiciels open source dans votre outil de traitement de votre choix.

  • Avez-vous besoin de fonctionnalités NLP simples, de haut niveau comme l’identification d’entité et d’intention, la détection de la rubrique, la vérification orthographique ou l’analyse des sentiments ? Si oui, envisagez d'utiliser les API offertes par les services Azure AI. Ou téléchargez votre modèle de choix via Spark NLP pour tirer parti des fonctions prédéfinies pour ces tâches.

Matrice des fonctionnalités

Les tableaux suivants récapitulent les principales différences entre les fonctionnalités des services NLP.

Fonctionnalités générales

Fonctionnalité Service Spark (Azure Databricks, Microsoft Fabric, Azure HDInsight) avec Spark NLP Azure AI services
Fournit des modèles préformés en tant que service Oui Oui
API REST Oui Oui
Programmabilité Python, Scala Pour connaître les langues prises en charge, consultez Ressources supplémentaires
Prend en charge le traitement des jeux de données Big Data et des grands documents Oui Non

Fonctionnalités NLP de bas niveau

Capacité des annotateurs

Fonctionnalité Service Spark (Azure Databricks, Microsoft Fabric, Azure HDInsight) avec Spark NLP Azure AI services
Détecteur de phrases Oui Non
Détecteur de phrases approfondi Oui Oui
Générateur de jetons Oui Oui
Générateur N-gram Oui Non
Segmentation des mots Oui Oui
Générateur de formes dérivées Oui Non
Générateur de lemmatisation Oui Non
Balisage morphosyntaxique Oui Non
Analyseur de dépendances Oui Non
Traduction Oui Non
Nettoyeur de mots vides Oui Non
Correction orthographique Oui Non
Normaliseur Oui Oui
Correspondance de texte Oui Non
TF/IDF Oui Non
Correspondance d’expression régulière Oui Incorporé dans Conversational Language Understanding (CLU)
Correspondance de date Oui Possible dans CLU via les modules de reconnaissance DateTime
Segmenteur Oui Non

Note

Microsoft Language Understanding (LUIS) sera mis hors service le 1er octobre 2025. Les applications LUIS existantes sont encouragées à migrer vers Conversational Language Understanding (CLU), une fonctionnalité d’Azure AI Services for Language, qui améliore les fonctionnalités de compréhension du langage et offre de nouvelles fonctionnalités.

Fonctionnalités NLP de haut niveau

Fonctionnalité Service Spark (Azure Databricks, Microsoft Fabric, Azure HDInsight) avec Spark NLP Azure AI services
Vérification orthographique Oui Non
Résumé Oui Oui
Réponses aux questions Oui Oui
Détection de sentiments Oui Oui
Détection d’émotions Oui Prend en charge l’exploration des opinions
Classification de jetons Oui Oui, via des modèles personnalisés
Classification de texte Oui Oui, via des modèles personnalisés
Représentation de texte Oui Non
NER Oui Oui : l’analytique de texte fournit un ensemble de NER et les modèles personnalisés sont dans la reconnaissance d’entités
Reconnaissance d’entités Oui Oui, via des modèles personnalisés
Détection de la langue Oui Oui
Prend en charge des langues en plus de l’anglais Oui, prend en charge plus de 200 langues Oui, prend en charge plus de 97 langues

Configurer Spark NLP dans Azure

Pour installer Spark NLP, utilisez le code suivant, mais remplacez <version> par le numéro de la version la plus récente. Pour plus d’informations, consultez la documentation de 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

Développer des pipelines NLP

Pour l’ordre d’exécution d’un pipeline NLP, Spark NLP suit le même concept de développement que les modèles de Machine Learning Spark ML traditionnels, appliquant des techniques de NLP spécialisées.

Diagramme montrant les étapes du pipeline NLP, telles que l’assemblage de documents, la détection de phrases, la tokenisation, la normalisation et l’incorporation de mots.

Les principaux composants d’un pipeline Spark NLP sont les suivants :

  • DocumentAssembler: transformateur qui prépare les données en les convertissant dans un format que Spark NLP peut traiter. Cette étape est le point d’entrée de chaque pipeline Spark NLP. DocumentAssembler lit une colonne String ou un Array[String], avec des options permettant de prétraiter le texte à l’aide de setCleanupMode, qui est désactivé par défaut.

  • PhraseDetector: annotateur qui identifie les limites de phrases à l’aide d’approches prédéfinies. Il peut retourner chaque phrase détectée dans un Array, ou dans des lignes distinctes lorsque explodeSentences a la valeur true.

  • Tokenizer: annotateur qui divise le texte brut en jetons discrets (mots, nombres et symboles) en les mettant en TokenizedSentence. Le tokenizer n’est pas adapté et utilise la configuration d’entrée dans le RuleFactory pour créer des règles de jeton. Les règles personnalisées peuvent être ajoutées lorsque les valeurs par défaut sont insuffisantes.

  • normaliseur: annotateur chargé d’affiner les jetons. Le normaliseur applique des expressions régulières et des transformations de dictionnaire pour nettoyer le texte et supprimer des caractères superflus.

  • WordEmbeddings: annotateurs de recherche qui mappent des jetons à des vecteurs, facilitant le traitement sémantique. Vous pouvez spécifier un dictionnaire d’incorporation personnalisé à l’aide de setStoragePath, où chaque ligne contient un jeton et son vecteur, séparés par des espaces. Les jetons non résolus sont par défaut de zéro vecteurs.

Spark NLP tire parti des pipelines Spark MLlib, avec une prise en charge native de MLflow, une plateforme open source qui gère le cycle de vie du Machine Learning. Les composants clés de MLflow sont les suivants :

  • de suivi MLflow : enregistre les exécutions expérimentales et fournit des fonctionnalités d’interrogation robustes pour l’analyse des résultats.

  • projets MLflow: permet l’exécution du code de science des données sur diverses plateformes, améliorant ainsi la portabilité et la reproductibilité.

  • modèles MLflow: prend en charge le déploiement de modèles polyvalents dans différents environnements via une infrastructure cohérente.

  • Registre de modèles: fournit une gestion complète des modèles, stockant les versions de manière centralisée pour simplifier l’accès et le déploiement, ce qui facilite la préparation de la production.

MLflow est intégré à des plateformes telles qu’Azure Databricks, mais peut également être installée dans d’autres environnements Spark pour gérer et suivre vos expériences. Cette intégration permet l’utilisation du registre de modèles MLflow pour rendre les modèles disponibles à des fins de production, ce qui simplifie le processus de déploiement et la gestion de la gouvernance des modèles.

En utilisant MLflow avec Spark NLP, vous pouvez garantir une gestion et un déploiement efficaces des pipelines NLP, en répondant aux exigences modernes pour l’extensibilité et l’intégration tout en prenant en charge des techniques avancées telles que les incorporations de mots et les adaptations de modèles de langage volumineux.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteurs principaux :

Étapes suivantes