Fonctionnement de l’outil Transformation de texte

La transformation de texte est le processus de traduction ou de conversion d’une séquence de texte dans une autre séquence de longueur identique ou différente. Elle est obtenue à l’aide de modèles séquence-à-séquence (ou Seq2seq) dans le cadre du traitement du langage naturel. Le jeu d’outils Analyse de texte de la boîte d’outils GeoAI contient des outils qui permettent d’entraîner des modèles de transformation de texte et d’utiliser les modèles pour transformer un texte.

L’outil Entraîner le modèle de transformation de texte entraîne des modèles de traitement du langage naturel pour des tâches séquence-à-séquence. Les modèles entraînés peuvent être utilisés avec l’outil Transformer du texte à l’aide du Deep Learning pour transformer, traduire ou résumer du texte de la même manière.

Applications possibles

Les applications possibles de cet outil sont les suivantes :

  • Les noms de rue mal orthographiés et dont la forme n’est pas standard peuvent être corrigés et standardisés. Ainsi, la précision est accrue lors du géocodage de ces adresses.
  • Un texte en langue étrangère peut être traduit pour que vous puissiez mieux le comprendre (dans les limites de la traduction automatique) ou le traiter.
  • Les descriptions légales des frontières de parcelle (telles que les bornes et limites) peuvent être transformées en fichiers de cheminement et être traitées automatiquement pour déduire la géométrie des parcelles.
Organigramme du modèle de transformation de texte
Un modèle de transformation de texte pour la standardisation des adresses peut corriger les fautes d’orthographe et standardiser les noms de rue.

Les modèles de transformation de texte dans ArcGIS s’appuient sur l’architecture du transformeur proposée par Vaswani et al. dans l’article précurseur intitulé “Attention is All you Need”. Ainsi, les modèles sont plus précis et parallélisables et nécessitent moins de données étiquetées pour l’entraînement.

En interne, les modèles de transformation de texte dans ArcGIS sont des modèles de type encodeur-décodeur. Les couches d’attention de l’encodeur reçoivent tous les mots du texte en entrée alors que les couches d’attention du décodeur ne peuvent accéder aux mots qu’avant leur traitement. Ensuite, le décodeur convertit les représentations d’entité codées afin de produire une séquence de jetons en sortie. BART et T5 sont des modèles de type encodeur-décodeur réputés.

L’encodeur et le décodeur sont décrits comme suit :

  • Encodeur : l’encodeur transforme le texte en entrée en représentation numérique sous forme de vecteurs d’entité de longueur fixe. Cette représentation numérique conserve la signification sémantique du texte en entrée.
  • Décodeur : le décodeur prend les vecteurs d’entité codés fournis par l’encodeur et les combine à la séquence en entrée afin de produire une séquence de jetons en sortie.
Composants du modèle de transformation de texte

Les modèles de transformation de texte prennent également en charge le modèle de backbone Mistral. Mistral est un grand modèle de langage basé sur une architecture de transformeur et qui s’exécute comme modèle avec décodeur uniquement. Les principaux composants de l’architecture de Mistral sont notamment les suivants :

  • Attention par fenêtre coulissante (SWA) : gère avec efficacité les longs textes en les traitant sous forme de petits segments superposés, ce qui réduit le coût de calcul et l’utilisation de la mémoire tout en préservant le contexte important.
  • Attention de requête groupée (GQA) : améliore l’efficacité en agrégeant des requêtes similaires, ce qui réduit la quantité de calculs d’attention et accélère le traitement.
  • Tokenisation BPE (Byte-Pair Encoding) Byte-fallback : convertit du texte en jetons pour le modèle à traiter.
Remarque :

Les modèles de traitement du langage naturel peuvent être des outils efficaces dans le cadre de l’automatisation de l’analyse de grands volumes de texte non structuré. Comme pour les autres types de modèles, assurez-vous qu’ils sont appliqués aux tâches pertinentes avec le niveau approprié de supervision humaine et de transparence concernant le type de modèle et les jeux de données d’entraînement utilisés pour entraîner le modèle.

Utiliser des modèles de transformation de texte

Vous pouvez utiliser l’outil Transformer du texte à l’aide du Deep Learning pour appliquer un modèle de transformation de texte entraîné à un texte non structuré et le traduire dans une autre langue ou le convertir dans un autre format. Vous pouvez utiliser des modèles de transformation de texte pré-entraînés fournis par ArcGIS Living Atlas of the World ou entraîner des modèles personnalisés à l’aide de l’outil Entraîner le modèle de transformation de texte.

L’entrée dans l’outil Transformer du texte à l’aide du Deep Learning est une table ou une classe d’entités contenant le texte à transformer. Le modèle en entrée peut être un fichier JSON de définition de modèle Esri (.emd) ou un paquetage de modèle de Deep Learning (.dlpk). Le modèle contient le chemin d’accès au fichier de modèle de Deep Learning (contenant les pondérations du modèle) et d’autres paramètres de modèle. Certains modèles peuvent présenter des arguments de modèle supplémentaires. L’outil crée dans la table en entrée un champ contenant le texte transformé.

L’outil peut s’exécuter sur des UC mais un GPU est recommandé pour le traitement car le Deep Learning sollicite d’importantes ressources de calcul. Pour exécuter cet outil sur un GPU, définissez le paramètre d’environnement Type de processeur sur GPU. Si vous avez plusieurs processeurs, spécifiez plutôt le paramètre d’environnement ID de GPU.

Entraîner des modèles de transformation de texte

Vous pouvez utiliser l’outil Entraîner le modèle de transformation de texte afin d’entraîner des modèles de traitement du langage naturel pour la transformation de texte. Cet outil utilise une approche Machine Learning et entraîne le modèle en lui fournissant des échantillons d’entraînement composés de paires de texte en entrée et de sortie transformée cible. Avec le modèle de backbone Mistral, il utilise l’apprentissage en contexte, ce qui guide la compréhension et les réponses du modèle via des invites en entrée et en fournissant au modèle des exemples spécifiques qui l’aide à inférer la sortie souhaitée. L’entraînement de modèles de traitement du langage naturel est une tâche qui consomme beaucoup de ressources de calcul et un GPU est donc recommandé.

Les données d’entraînement sont fournies sous forme de table en entrée contenant un champ de texte qui sert de variable prédictive et un champ d’étiquette qui contient l’étiquette cible pour chaque texte en entrée dans la table.

Lors de l’entraînement d’un modèle de transformation de texte, vous pouvez entraîner le modèle à partir de zéro, optimiser un modèle entraîné ou utiliser l’apprentissage en contexte (ICL). En général, les modèles de langue qui utilisent l’architecture du transformeur sont considérés comme des apprenants utilisant le Few-Shot Learning (entraînement avec peu de données).

Toutefois, si vous avez accès à un modèle de transformation de texte pré-entraîné qui effectue une tâche similaire, vous pouvez l’optimiser à l’aide des nouvelles données d’entraînement. L’optimisation d’un modèle existant est souvent plus rapide que l’entraînement d’un nouveau modèle. De plus, ce processus requiert moins d’échantillons d’entraînement. Lorsque vous optimisez un modèle pré-entraîné, veillez à conserver le modèle de backbone qui a été utilisé dans le modèle pré-entraîné.

Le modèle pré-entraîné peut être un fichier de définition de modèle Esri ou un fichier de paquetage de Deep Learning. Le modèle en sortie est également enregistré dans ces formats dans le dossier des modèles en sortie spécifié.

L’entraînement de modèles de Deep Learning est un processus itératif dans lequel les données d’entraînement en entrée sont transmises plusieurs fois par le biais du réseau neuronal. Chaque phase d’entrainement transmettant l’intégralité des données d’entraînement est appelée époque. Le paramètre Nombre maximal d’époques spécifie le nombre maximal de fois que les données d’entraînement sont vues par le modèle lors de son entraînement. Sa valeur dépend du modèle que vous entraînez, de la complexité de la tâche et du nombre d’échantillons d’entraînement. Si vous disposez de nombreux échantillons d’entraînement, vous pouvez utiliser une valeur faible. En général, il est judicieux de procéder à l’entraînement pour davantage d’époques de façon répétée, tant que la perte de validation continue de baisser.

Le paramètre Backbone du modèle spécifie le réseau neuronal préconfiguré qui sert d’encodeur pour le modèle et qui extrait les représentations d’entité du texte en entrée. Ce modèle prend en charge les encodeurs reposant sur T5 qui s’appuient sur l’architecture du transformeur et qui sont pré-entraînés à l’aide de grands volumes de texte en mode semi-supervisé et possèdent une bonne compréhension de la langue. Le paramètre Modèle Backbone prend également en charge le grand modèle de langage (LLM) Mistral. Mistral est un transformeur avec décodeur uniquement qui utilise la technique Attention par fenêtre coulissante (SWA, Sliding Window Attention) pour traiter les longs textes avec efficacité, Attention de requête groupée (GQA, Grouped Query Attention) pour rationaliser les calculs et la tokenisation BPE (Byte-Pair Encoding) Byte-fallback pour gérer différentes entrées de texte.

L’entraînement du modèle a lieu par lots et le paramètre Taille de lot spécifie le nombre d’échantillons d’entraînement qui sont traités pour l’entraînement en une fois. Il est possible d’augmenter la taille de lot pour améliorer les performances de l’outil. Il convient toutefois de noter que le volume de mémoire utilisée est proportionnel à la taille de lot. Si un message d’erreur s’affiche pour mémoire insuffisante lors de l’entraînement du modèle, utilisez une taille de lot plus petite.

Le paramètre Vitesse d’apprentissage est l’un des hyperparamètres les plus importants. Il s’agit de la vitesse à laquelle les pondérations du modèle sont ajustées au cours de l’entraînement. Si vous spécifiez une vitesse d’apprentissage faible, le modèle s’améliore lentement et son entraînement peut prendre du temps, ce qui peut mener à une perte de temps et à un gaspillage des ressources. Une vitesse d’apprentissage élevée peut être contre-productive et le modèle peut ne pas être entraîné correctement. Avec des vitesses d’apprentissage élevées, il est possible que les pondérations du modèle soient ajustées radicalement, ce qui peut provoquer des résultats erronés. Il est souvent plus judicieux de ne pas spécifier de valeur pour le paramètre Vitesse d’apprentissage car l’outil utilise un outil automatisé de recherche de la vitesse d’apprentissage, conformément à l’article de Leslie N. Smith intitulé "Cyclical Learning Rates for Training Neural Networks".

L’outil utilise une partie des données d’entraînement (10 pour cent par défaut) comme jeu de validation. Le paramètre Pourcentage de validation vous permet d’ajuster la quantité de données d’entraînement à utiliser pour la validation. Pour le modèle Mistral, au moins 50 pour cent des données doivent être réservées à la validation, car Mistral requiert un ensemble d’entraînement plus restreint et s’appuie sur un ensemble de validation plus vaste pour évaluer les performances du modèle.

Par défaut, l’outil utilise une technique d’arrêt prématuré qui provoque l’arrêt de l’entraînement du modèle lorsque le modèle ne s’améliore plus au cours d’époques d’entraînement successives. Vous pouvez désactiver ce comportement en désélectionnant le paramètre Arrêter lorsque le modèle ne s’améliore plus.

Vous pouvez également spécifier si les couches backbone dans le modèle pré-entraîné sont figées afin que les pondérations et les biais conservent leur conception d’origine. Par défaut, les couches du modèle de backbone ne sont pas figées et les pondérations et biais de la valeur du paramètre Backbone du modèle peuvent être altérés pour s’ajuster aux échantillons d’entraînement. Le temps de traitement est plus long, mais les résultats obtenus sont généralement meilleurs.

Souvent, les données de texte contiennent du bruit sous la forme de balises HTML et d’URL. Vous pouvez utiliser les paramètres Supprimer les balises HTML et Supprimer les URL pour prétraiter le texte et retirer les balises avant le traitement.

Bibliographie

Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. « Attention Is All You Need. » 6 décembre 2017. https://arxiv.org/abs/1706.03762.

Raffel, Colin. et al. "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer." 20 juillet 2020. https://doi.org/10.48550/arxiv.1910.10683.

"Encoder models." https://huggingface.co/course/chapter1/5?fw=pt.

Brown, Tom B. et al. "Language Models are Few-Shot Learners." 22 juillet 2020. https://doi.org/10.48550/arxiv.2005.14165.

Smith, Leslie N. « Cyclical Learning Rates for Training Neural Networks. » 4 avril 2017. https://doi.org/10.48550/arxiv.1506.01186.

« Mistral. » https://docs.mistral.ai/getting-started/open_weight_models/.