La classification de texte est le processus d’attribution d’une catégorie ou d’une étiquette prédéfinie à des phrases, des paragraphes, des rapports textuels ou d’autres formes de texte non structuré. Le jeu d’outils Analyse de texte de la boîte d’outils GeoAI contient des outils qui utilisent des techniques de traitement du langage naturel pour l’entraînement de modèles de classification de texte ainsi que pour l’utilisation des modèles afin de classifier le texte.
L’outil Entraîner le modèle de classification de texte entraîne des modèles de traitement du langage naturel pour classifier le texte en fonction de classes ou de catégories connues fournies dans le cadre d’un jeu de données d’entraînement. Les modèles entraînés peuvent être utilisés avec l’outil Classer du texte à l’aide du Deep Learning pour classifier tout texte similaire dans ces catégories.
Applications possibles
Les applications possibles de cet outil sont les suivantes :
- Les adresses incomplètes peuvent être classifiées en fonction du pays dans lequel elles se trouvent. Ainsi, il est plus facile d’attribuer le localisateur approprié pour géocoder ces adresses plus précisément.
- Les tweets géolocalisés peuvent être classifiés selon qu’ils indiquent ou non un sentiment d’hésitation concernant la vaccination. Ainsi, il est plus facile d’identifier les zones où des campagnes de sensibilisation peuvent accroître la confiance de la population et son adhésion à la vaccination.
- Catégorisation du type de crime en fonction des rapports d’incident. Elle peut faciliter la compréhension des tendances en regroupant des crimes selon leur catégorie et contribuer à la planification des efforts de réhabilitation.
Les modèles de classification 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 classification de texte dans ArcGIS sont des réseaux neuronaux profonds constitués de deux composants :
- Encodeur : l’encodeur sert de backbone pour le modèle et transforme le texte en entrée en représentation d’entité sous forme de vecteurs de taille fixe. Le modèle utilise des encodeurs réputés tels que BERT, ALBERT et RoBERTa qui reposent sur l’architecture du module de transformation et qui sont pré-entraînés à l’aide d’énormes volumes de texte.
- Classificateur : un classificateur sert de tête pour le modèle et classifie les représentations d’entité dans plusieurs catégories. Souvent, il s’agit d’une simple couche linéaire dans le réseau neuronal.
Les modèles de classification dans ArcGIS prennent également en charge le modèle de backbone Mistral. Mistral est un grand modèle de langage basé sur une architecture de transformateur et qui s’exécute comme modèle avec décodeur uniquement. Les composants clés 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 classification de texte
L’outil Classer du texte à l’aide du Deep Learning peut être utilisé pour appliquer un modèle de classification de texte entraîné à un texte non structuré et catégoriser ce texte dans des types prédéterminés. Vous pouvez utiliser des modèles de classification 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 classification de texte.
L’entrée dans l’outil Classer du texte à l’aide du Deep Learning est une table ou une classe d’entités contenant le texte à classifier. 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 l’étiquette de classe ou de catégorie attribuée par le modèle au texte en entrée.
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 classification de texte
Vous pouvez utiliser l’outil Entraîner le modèle de classification de texte afin d’entraîner des modèles de traitement du langage naturel pour la classification 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 classes étiquetées. 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 de classe cible pour chaque texte en entrée dans la table.
Lors de l’entraînement d’un modèle de classification 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 classification de texte pré-entraîné comportant le même ensemble de classes cible que dans les échantillons d’entraînement, 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 BERT-, ALBERT- et RoBERTa 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é. Ces encodeurs possèdent une bonne compréhension de la langue et peuvent représenter le texte en entrée sous forme de vecteurs de longueur fixe qui servent d’entrées dans la tête de classification du modèle. Le paramètre Modèle Backbone prend également en charge le grand modèle de langage (LLM) Mistral. Mistral est un transformateur 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 et Illia Polosukhin. « Attention Is All You Need. » 6 décembre 2017. https://arxiv.org/abs/1706.03762.
Devlin, Jacob, Ming-Wei Chang, Kenton Lee et Kristina Toutanova. « BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. » 24 mai 2019. https://doi.org/10.48550/arxiv.1810.04805.
"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/.
Vous avez un commentaire à formuler concernant cette rubrique ?