Suivi des données non structurées pour LLM et NLP

Unstructured Data Tracking for LLM and NLP.

Un tutoriel sur l’utilisation des descripteurs de texte

Image de l'auteur.

Une fois que vous avez déployé une solution basée sur le traitement du langage naturel (NLP) ou l’apprentissage non supervisé (LLM), vous avez besoin d’un moyen de surveiller son fonctionnement. Mais comment surveiller des données non structurées pour donner un sens à la masse de textes ?

Il existe plusieurs approches, de la détection des dérives dans les données textuelles brutes et de l’incorporation des dérives à l’utilisation d’expressions régulières pour effectuer des vérifications basées sur des règles.

Dans ce tutoriel, nous nous plongerons dans une approche particulière : le suivi des descripteurs de texte interprétables qui aident à attribuer des propriétés spécifiques à chaque texte.

Tout d’abord, nous aborderons quelques notions théoriques :

  • Qu’est-ce qu’un descripteur de texte et quand les utiliser.
  • Exemples de descripteurs de texte.
  • Comment sélectionner des descripteurs personnalisés.

Ensuite, passons au code ! Vous travaillerez avec des données d’avis sur des produits de commerce électronique et suivrez les étapes suivantes :

  • Obtenir un aperçu des données textuelles.
  • Évaluer les dérives des données textuelles à l’aide de descripteurs standards.
  • Ajouter un descripteur de texte personnalisé à l’aide d’un modèle pré-entraîné externe.
  • Mettre en place des tests de pipeline pour surveiller les changements de données.

Nous utiliserons la bibliothèque Python open-source Evidently pour générer des descripteurs de texte et évaluer les changements dans les données.

Exemple de code : Si vous préférez aller directement au code, voici le notebook d’exemple.

Qu’est-ce qu’un descripteur de texte ?

Un descripteur de texte est une caractéristique ou une propriété qui décrit les objets dans le jeu de données textuelles. Par exemple, la longueur des textes ou le nombre de symboles qu’ils contiennent.

Vous disposez peut-être déjà de métadonnées utiles accompagnant vos textes, qui serviront de descripteurs. Par exemple, les avis des utilisateurs de commerce électronique peuvent être accompagnés de notes attribuées par les utilisateurs ou d’étiquettes de sujets.

Sinon, vous pouvez générer vos propres descripteurs ! Vous le faites en ajoutant des “fonctionnalités virtuelles” à vos données textuelles. Chacune aide à décrire ou à classer vos textes selon certains critères significatifs.

Image de l'auteur.

En créant ces descripteurs, vous inventez essentiellement votre propre “embedding” simple et vous associez chaque texte à plusieurs dimensions interprétables. Cela permet de donner un sens aux données autrement non structurées.

Vous pouvez ensuite utiliser ces descripteurs de texte :

  • Pour surveiller les modèles NLP en production. Vous pouvez suivre les propriétés de vos données dans le temps et détecter les changements. Par exemple, les descripteurs aident à détecter les pics de longueur des textes ou les dérives de sentiment.
  • Pour tester les modèles lors de mises à jour. Lorsque vous itérez sur les modèles, vous pouvez comparer les propriétés des jeux de données d’évaluation et les réponses du modèle. Par exemple, vous pouvez vérifier que les longueurs des réponses générées par le LLM restent similaires et qu’elles contiennent systématiquement les mots que vous vous attendez à voir.
  • Pour déboguer les dérives de données ou la dégradation des modèles. Si vous détectez une dérive de l’embedding ou si vous observez directement une baisse de qualité du modèle, vous pouvez utiliser des descripteurs de texte pour explorer d’où elle provient.

Exemples de descripteurs de texte

Voici quelques descripteurs de texte que nous considérons comme de bons choix par défaut :

Longueur du texte

Image de l'auteur. Visualisation de la métrique d'aperçu du texte à l'aide de la bibliothèque Python Evidently.

Un excellent point de départ est de regarder les statistiques simples sur le texte. Par exemple, vous pouvez examiner la longueur des textes mesurée en mots, en symboles ou en phrases. Vous pouvez évaluer la longueur moyenne et minimale-maximale et examiner les distributions.

Vous pouvez fixer des attentes en fonction de votre cas d’utilisation. Par exemple, les avis sur les produits ont tendance à comporter entre 5 et 100 mots. Si ils sont plus courts ou plus longs, cela peut signaler un changement de contexte. S’il y a une augmentation des avis de longueur fixe, cela peut signaler une attaque de spam. Si vous savez que les avis négatifs sont souvent plus longs, vous pouvez suivre la part des avis dépassant une certaine longueur.

Il existe également des vérifications rapides de la cohérence : si vous exécutez un chatbot, vous pouvez vous attendre à des réponses non nulles ou à ce qu’il y ait une longueur minimale pour la sortie significative.

Mots hors vocabulaire

Image par Auteur. La part moyenne des mots hors vocabulaire dans l'ensemble de données de référence exemple est de 5,378%.

Évaluer la part de mots en dehors du vocabulaire défini est une bonne mesure “grossière” de la qualité des données. Vos utilisateurs ont-ils commencé à rédiger des critiques dans une nouvelle langue ? Les utilisateurs parlent-ils à votre chatbot en Python, et non en anglais ? Les utilisateurs remplissent-ils les réponses avec “ggg” au lieu de mots réels ?

C’est une mesure pratique unique pour détecter toutes sortes de changements. Une fois que vous avez identifié un changement, vous pouvez ensuite effectuer un débogage plus approfondi.

Vous pouvez vous faire une idée de la part de mots hors vocabulaire en fonction des exemples de données de production “bonnes” accumulées au fil du temps. Par exemple, si vous examinez le corpus des critiques de produits précédentes, vous pouvez vous attendre à ce que la part de mots hors vocabulaire soit inférieure à 10 % et surveiller si cette valeur dépasse ce seuil.

Caractères non alphabétiques

Lié, mais avec une différence : ce descripteur comptabilisera toutes sortes de symboles spéciaux qui ne sont ni des lettres ni des chiffres, y compris les virgules, les parenthèses, les hashtags, etc.

Parfois, vous vous attendez à une part équitable de symboles spéciaux : vos textes peuvent contenir du code ou être structurés sous forme de JSON. Parfois, vous vous attendez uniquement à des signes de ponctuation dans le texte lisible par l’homme.

Détecter un changement dans les caractères non alphabétiques peut révéler des problèmes de qualité des données, tels que des codes HTML qui fuient dans les textes des critiques, des attaques de spam, des cas d’utilisation inattendus, etc.

Sentiment

Le sentiment du texte est un autre indicateur. Il est utile dans divers scénarios : des conversations avec des chatbots aux avis des utilisateurs et à la rédaction de textes marketing. Vous pouvez généralement définir une attente concernant le sentiment des textes avec lesquels vous travaillez.

Même si le sentiment “ne s’applique pas”, cela peut se traduire par l’attente d’un ton principalement neutre. L’apparition potentielle d’un ton négatif ou positif mérite d’être suivi et étudié. Cela peut indiquer des scénarios d’utilisation inattendus : l’utilisateur utilise-t-il votre conseiller hypothécaire virtuel comme canal de plainte ?

Vous pouvez également vous attendre à un certain équilibre : par exemple, il y a toujours une part de conversations ou d’avis avec un ton négatif, mais vous vous attendez à ce qu’elle ne dépasse pas un certain seuil ou que la distribution générale du sentiment des avis reste stable.

Mots déclencheurs

Image par Auteur. Les avis mentionnent systématiquement les robes : aucun changement de distribution n'est détecté.

Vous pouvez également vérifier si les textes contiennent des mots d’une liste spécifique ou de listes et traiter cela comme une caractéristique binaire.

C’est une façon puissante de coder plusieurs attentes concernant vos textes. Vous avez besoin d’un certain effort pour créer des listes manuellement, mais vous pouvez concevoir de nombreuses vérifications pratiques de cette manière. Par exemple, vous pouvez créer des listes de mots déclencheurs comme :

  • Mentions de produits ou de marques.
  • Mentions de concurrents.
  • Mentions de lieux, de villes, d’endroits, etc.
  • Mentions de mots représentant des sujets particuliers.

Vous pouvez créer (et étendre en continu) des listes de ce type spécifiques à votre cas d’utilisation.

Par exemple, si un chatbot conseiller aide à choisir entre les produits proposés par l’entreprise, vous pouvez vous attendre à ce que la plupart des réponses contiennent les noms d’un des produits de la liste.

Correspondances RegExp

L’inclusion de mots spécifiques de la liste est un exemple de modèle que vous pouvez formuler comme une expression régulière. Vous pouvez en trouver d’autres : vous attendez-vous à ce que vos textes commencent par “bonjour” et se terminent par “merci” ? Inclure des adresses e-mail ? Contenir des éléments nommés connus ?

Si vous vous attendez à ce que les entrées ou les sorties du modèle correspondent à un format spécifique, vous pouvez utiliser une correspondance d’expression régulière comme autre descripteur.

Descripteurs personnalisés

Vous pouvez pousser cette idée encore plus loin. Par exemple :

  • Évaluer d’autres propriétés de texte : toxicité, subjectivité, formalité du ton, score de lisibilité, etc. Vous pouvez souvent trouver des modèles pré-entraînés ouverts pour faire l’affaire.
  • Compter des composants spécifiques : e-mails, URL, emojis, dates et parties du discours. Vous pouvez utiliser des modèles externes ou même de simples expressions régulières.
  • Obtenir des statistiques détaillées : vous pouvez suivre des statistiques textuelles très détaillées si elles sont significatives pour votre cas d’utilisation, par exemple, suivre les longueurs moyennes des mots, s’ils sont en majuscules ou en minuscules, le ratio de mots uniques, etc.
  • Surveiller les informations d’identification personnelles : par exemple, lorsque vous ne vous attendez pas à ce qu’elles apparaissent dans les conversations de chatbot.
  • Utiliser la reconnaissance d’entités nommées : pour extraire des entités spécifiques et les traiter comme des tags.
  • Utiliser la modélisation de sujets pour construire un système de surveillance des sujets. Il s’agit de l’approche la plus laborieuse mais puissante lorsqu’elle est bien réalisée. Elle est utile lorsque vous vous attendez à ce que les textes restent principalement sur le sujet et que vous disposez du corpus d’exemples précédents pour entraîner le modèle. Vous pouvez utiliser le regroupement de sujets non supervisé et créer un modèle pour assigner de nouveaux textes à des clusters connus. Vous pouvez ensuite traiter les classes assignées comme des descripteurs pour surveiller les changements dans la distribution des sujets dans les nouvelles données.
Image by Author. Example of a summary drift report for multiple descriptors.

Voici quelques points à garder à l’esprit lors de la conception de descripteurs de surveillance :

  • Il est préférable de rester concentré et d’essayer de trouver un petit nombre d’indicateurs de qualité appropriés qui correspondent au cas d’utilisation plutôt que de surveiller toutes les dimensions possibles. Pensez aux descripteurs comme des fonctionnalités du modèle. Vous voulez en trouver quelques-unes solides plutôt que de générer beaucoup de fonctionnalités faibles ou inutiles. Beaucoup d’entre elles sont susceptibles d’être corrélées : langue et part de mots hors vocabulaire, longueur en phrases et en symboles, etc. Choisissez vos préférées !
  • Utilisez l’analyse exploratoire des données pour évaluer les propriétés du texte dans les données existantes (par exemple, les journaux des conversations précédentes) afin de tester vos hypothèses avant de les ajouter à la surveillance du modèle.
  • Tirez des leçons des échecs du modèle. Chaque fois que vous rencontrez un problème de qualité du modèle de production que vous vous attendez à voir réapparaître (par exemple, des textes dans une langue étrangère), réfléchissez à la façon de développer un cas de test ou un descripteur à ajouter pour le détecter à l’avenir.
  • Soyez attentif au coût de calcul. Utiliser des modèles externes pour noter vos textes selon chaque dimension possible est tentant, mais cela a un coût. Prenez cela en compte lors de la manipulation de jeux de données plus volumineux : chaque classifieur externe est un modèle supplémentaire à exécuter. Vous pouvez souvent vous en sortir avec moins de vérifications ou des vérifications plus simples.

Tutoriel étape par étape

Pour illustrer l’idée, parcourons le scénario suivant : vous construisez un modèle de classification pour évaluer les avis que les utilisateurs laissent sur un site web de commerce électronique et les étiqueter par sujet. Une fois qu’il est en production, vous souhaitez détecter les changements dans les données et l’environnement du modèle, mais vous n’avez pas les vraies étiquettes. Vous devez exécuter un processus d’étiquetage séparé pour les obtenir.

Comment pouvez-vous suivre les changements sans les étiquettes ?

Prenons un ensemble de données d’exemple et passons par les étapes suivantes :

Exemple de code : rendez-vous dans le notebook d’exemple pour suivre toutes les étapes.

💻 1. Installer Evidently

Tout d’abord, installez Evidently. Utilisez le gestionnaire de packages Python pour l’installer dans votre environnement. Si vous travaillez dans Colab, exécutez !pip install. Dans le notebook Jupyter, vous devez également installer nbextension. Consultez les instructions pour votre environnement.

Vous devrez également importer quelques autres bibliothèques comme pandas et des composants spécifiques d’Evidently. Suivez les instructions du notebook.

🔡 2. Préparer les données

Une fois que tout est prêt, regardons les données ! Vous travaillerez avec un ensemble de données ouvertes d’avis sur le commerce électronique.

Voici à quoi ressemble l’ensemble de données :

Image de l'auteur.

Nous nous concentrerons sur la colonne “Review_Text” à des fins de démonstration. En production, nous voulons surveiller les changements dans les textes des critiques.

Vous devrez spécifier la colonne qui contient les textes en utilisant la cartographie des colonnes :

column_mapping = ColumnMapping(   numerical_features=['Age', 'Positive_Feedback_Count'],   categorical_features=['Division_Name', 'Department_Name', 'Class_Name'],   text_features=['Review_Text', 'Title'])

Vous devez également diviser les données en deux : référence et courante. Imaginez que les données “référence” sont les données d’une période passée représentative (par exemple, le mois précédent) et que les données “courantes” sont les données de production actuelles (par exemple, ce mois-ci). Ce sont les deux ensembles de données que vous comparerez à l’aide des descripteurs.

Note : il est important d’établir une référence historique appropriée. Choisissez la période qui reflète vos attentes quant à l’aspect futur des données.

Nous avons sélectionné 5000 exemples pour chaque échantillon. Pour pimenter les choses, nous avons introduit un décalage artificiel en sélectionnant les critiques négatives pour notre ensemble de données actuel.

reviews_ref = reviews[reviews.Rating > 3].sample(n=5000, replace=True, ignore_index=True, random_state=42)reviews_cur = reviews[reviews.Rating < 3].sample(n=5000, replace=True, ignore_index=True, random_state=42)

📊 3. Analyse exploratoire des données

Pour mieux comprendre les données, vous pouvez générer un rapport visuel à l’aide d’Evidently. Il existe un préréglage Aperçu du texte préconstruit qui permet de comparer rapidement deux ensembles de données textuelles. Il combine divers contrôles descriptifs et évalue la dérive globale des données (dans ce cas, en utilisant une méthode de détection de dérive basée sur un modèle).

Ce rapport comprend également quelques descripteurs standard et vous permet d’ajouter des descripteurs à l’aide de listes de mots déclencheurs. Nous examinerons les descripteurs suivants dans le cadre du rapport :

  • Longueur des textes
  • Part de mots hors vocabulaire (OOV)
  • Part de symboles autres que des lettres
  • Le sentiment des critiques
  • Les critiques incluant les mots “robe” ou “tenue”
  • Les critiques incluant les mots “chemisier” ou “chemise”

Consultez la documentation d’Evidently sur les descripteurs pour plus de détails.

Voici le code dont vous avez besoin pour exécuter ce rapport. Vous pouvez attribuer des noms personnalisés à chaque descripteur.

text_overview_report = Report(metrics=[   TextOverviewPreset(column_name="Review_Text", descriptors={     "Textes des critiques - % OOV" : OOV(),     "Textes des critiques - % Non Lettres" : NonLetterCharacterPercentage(),     "Textes des critiques - Longueur des symboles" : TextLength(),     "Textes des critiques - Nombre de phrases" : SentenceCount(),     "Textes des critiques - Nombre de mots" : WordCount(),     "Textes des critiques - Sentiment" : Sentiment(),     "Critiques sur les robes" : TriggerWordsPresence(words_list=['robe', 'tenue']),     "Critiques sur les chemisiers" : TriggerWordsPresence(words_list=['chemisier', 'chemise']),   }) ]) text_overview_report.run(reference_data=reviews_ref, current_data=reviews_cur, column_mapping=column_mapping) text_overview_report

Exécuter un rapport de ce type permet d’explorer les motifs et de façonner vos attentes concernant des propriétés particulières, telles que la distribution de la longueur des textes.

La distribution du descripteur “sentiment” expose rapidement le tour de passe-passe que nous avons fait lors de la division des données. Nous avons placé les critiques avec un classement supérieur à 3 dans les données “référence” et des critiques plus négatives dans les ensembles de données “courantes”. Les résultats sont visibles :

Image de l'auteur.

Le rapport par défaut est très complet et permet d’examiner de nombreuses propriétés textuelles en une fois. Vous pouvez même explorer les corrélations entre les descripteurs et d’autres colonnes de l’ensemble de données !

Vous pouvez l’utiliser pendant la phase exploratoire, mais ce n’est probablement pas quelque chose que vous auriez besoin de consulter tout le temps.

Heureusement, il est facile de personnaliser.

Apparemment des préréglages et des métriques. Evidently propose des préréglages de rapport qui génèrent rapidement les rapports prêts à l’emploi. Cependant, il existe de nombreuses métriques individuelles parmi lesquelles choisir ! Vous pouvez les combiner pour créer un rapport personnalisé. Parcourez les préréglages et les métriques pour comprendre ce qui est disponible.

📈 4. Surveiller la dérive des descripteurs

Disons que, sur la base de l’analyse exploratoire et de votre compréhension du problème commercial, vous décidez de suivre seulement un petit nombre de propriétés :

Vous souhaitez être alerté lorsqu’il y a un changement statistique : les distributions de ces propriétés diffèrent de la période de référence. Pour le détecter, vous pouvez utiliser les méthodes de détection de dérive implémentées dans Evidently. Par exemple, pour les caractéristiques numériques telles que “sentiment”, il surveillera par défaut le décalage en utilisant la distance de Wasserstein. Vous pouvez également choisir une méthode différente.

Voici comment vous pouvez créer un rapport de dérive simple pour suivre les changements dans les trois descripteurs.

descriptors_report = Report(metrics=[   ColumnDriftMetric(WordCount().for_column("Review_Text")),   ColumnDriftMetric(Sentiment().for_column("Review_Text")),   ColumnDriftMetric(TriggerWordsPresence(words_list=['robe', 'robe']).for_column("Review_Text")), ]) descriptors_report.run(reference_data=reviews_ref, current_data=reviews_cur, column_mapping=column_mapping) descriptors_report

Une fois que vous avez exécuté le rapport, vous obtiendrez des visualisations combinées pour tous les descripteurs choisis. En voici un :

Image de l'auteur.

La ligne vert foncé représente le sentiment moyen dans l’ensemble de données de référence. La zone verte couvre un écart-type à partir de la moyenne. Vous pouvez remarquer que la distribution actuelle (en rouge) est visiblement plus négative.

Note : Dans ce scénario, il est également logique de surveiller la dérive de la sortie : en suivant les changements dans les classes prédites. Vous pouvez utiliser des méthodes de détection de dérive des données catégorielles, comme la divergence JS. Nous n’abordons pas cela dans le tutoriel, car nous nous concentrons uniquement sur les entrées et ne générons pas de prédictions. En pratique, la dérive des prédictions est souvent le premier signal auquel réagir.

😍 5. Ajouter un descripteur “émotion”

Disons que vous avez décidé de suivre une autre propriété significative : l’émotion exprimée dans la critique. Le sentiment global est une chose, mais cela permet également de distinguer les critiques “tristes” et “en colère”, par exemple.

Ajoutons ce descripteur personnalisé ! Vous pouvez trouver un modèle open-source externe approprié pour évaluer votre ensemble de données. Ensuite, vous travaillerez avec cette propriété en tant que colonne supplémentaire.

Nous utiliserons le modèle Distilbert de Huggingface, qui classe le texte en cinq émotions.

Vous pouvez envisager d’utiliser tout autre modèle pour votre cas d’utilisation, comme la reconnaissance des entités nommées, la détection de la langue, la détection de la toxicité, etc.

Vous devez installer transformers pour pouvoir exécuter le modèle. Consultez les instructions pour plus de détails. Ensuite, appliquez-le à l’ensemble de données de critiques :

from transformers import pipeline classifier = pipeline("text-classification", model='bhadresh-savani/distilbert-base-uncased-emotion', top_k=1) prediction = classifier("J'adore utiliser Evidently ! C'est facile à utiliser") print(prediction)

Note : cette étape évaluera l’ensemble de données à l’aide du modèle externe. Cela prendra un certain temps à exécuter, en fonction de votre environnement. Pour comprendre le principe sans attendre, reportez-vous à la section “Exemple simple” dans le bloc-notes d’exemple.

Après avoir ajouté la nouvelle colonne “émotion” à l’ensemble de données, vous devez le refléter dans la correspondance des colonnes. Vous devez spécifier qu’il s’agit d’une nouvelle variable catégorielle dans l’ensemble de données.

column_mapping = ColumnMapping(   numerical_features=['Age', 'Positive_Feedback_Count'],   categorical_features=['Division_Name', 'Department_Name', 'Class_Name', 'émotion'],   text_features=['Review_Text', 'Title'] )

Maintenant, vous pouvez ajouter la surveillance de la dérive de la distribution de “émotion” au rapport.

descriptors_report = Report(metrics=[   ColumnDriftMetric(WordCount().for_column("Review_Text")),   ColumnDriftMetric(Sentiment().for_column("Review_Text")),   ColumnDriftMetric(TriggerWordsPresence(words_list=['robe', 'robe']).for_column("Review_Text")),   ColumnDriftMetric('émotion'), ]) descriptors_report.run(reference_data=reviews_ref, current_data=reviews_cur, column_mapping=column_mapping) descriptors_report

Voici ce que vous obtenez!

Image par l'auteur.

Vous pouvez constater une augmentation significative des avis “tristes” et une diminution des avis “joyeux”.

Est-ce utile de suivre cela dans le temps? Vous pouvez continuer à exécuter cette vérification en évaluant les nouvelles données au fur et à mesure.

🏗️ 6. Exécutez les tests de pipeline

Pour effectuer une analyse régulière de vos entrées de données, il est logique de regrouper les évaluations sous forme de tests. Vous obtenez un résultat clair “réussite” ou “échec” dans ce scénario. Vous n’avez probablement pas besoin de regarder les graphiques si tous les tests réussissent. Vous êtes seulement intéressé lorsque les choses changent!

Évidemment, il existe une interface alternative appelée Test Suite qui fonctionne de cette manière.

Voici comment vous créez une Test Suite pour vérifier la distribution statistique dans les mêmes quatre descripteurs:

descriptors_test_suite = TestSuite(tests=[   TestColumnDrift(column_name = 'emotion'),   TestColumnDrift(column_name = WordCount().for_column("Review_Text")),   TestColumnDrift(column_name = Sentiment().for_column("Review_Text")),   TestColumnDrift(column_name = TriggerWordsPresence(words_list=['dress', 'gown']).for_column("Review_Text")), ]) descriptors_test_suite.run(reference_data=reviews_ref, current_data=reviews_cur, column_mapping=column_mapping) descriptors_test_suite

Note: nous utilisons les valeurs par défaut, mais vous pouvez également définir des méthodes et des conditions de dérive personnalisées.

Voici le résultat. La sortie est soigneusement structurée afin que vous puissiez voir quels descripteurs ont dérivé.

Image par l'auteur.

Détecter une dérive de distribution statistique est l’un des moyens de surveiller les changements dans la propriété du texte. Il en existe d’autres! Parfois, il est pratique d’exécuter des attentes basées sur des règles sur les valeurs minimales, maximales ou moyennes du descripteur.

Disons que vous voulez vérifier que tous les textes d’avis contiennent plus de deux mots. Si au moins un avis contient moins de deux mots, vous voulez que le test échoue et affiche le nombre de textes courts dans la réponse.

Voici comment vous faites cela! Vous pouvez choisir un TestNumberOfOutRangeValues(). Cette fois, vous devez définir une limite personnalisée: le côté “gauche” de la plage attendue est de deux mots. Vous devez également définir une condition de test: eq=0. Cela signifie que vous vous attendez à ce que le nombre d’objets en dehors de cette plage soit de 0. S’il est plus élevé, vous voulez que le test échoue.

descriptors_test_suite = TestSuite(tests=[   TestNumberOfOutRangeValues(column_name = WordCount().for_column("Review_Text"), left=2, eq=0), ]) descriptors_test_suite.run(reference_data=reviews_ref, current_data=reviews_cur, column_mapping=column_mapping) descriptors_test_suite

Voici le résultat. Vous pouvez également voir les détails du test qui montrent l’attente définie.

Image par l'auteur.

Vous pouvez suivre ce principe pour concevoir d’autres vérifications.

Soutenez Evidently

Vous avez apprécié le tutoriel? Donnez une étoile à Evidently sur GitHub pour contribuer! Cela nous aide à continuer à créer des outils et du contenu gratuits et open-source pour la communauté. ⭐️ Star sur GitHub ⟶

Pour résumer

Les descripteurs de texte permettent de mapper des données textuelles sur des dimensions interprétables que vous pouvez exprimer comme attribut numérique ou catégoriel. Ils aident à décrire, évaluer et surveiller des données non structurées.

Dans ce tutoriel, vous avez appris comment surveiller des données textuelles à l’aide de descripteurs.

Vous pouvez utiliser cette approche pour surveiller le comportement des modèles alimentés par le traitement du langage naturel (NLP) et l’apprentissage machine à grande échelle (LLM). Vous pouvez personnaliser et combiner vos descripteurs avec d’autres méthodes, telles que la surveillance de la dérive d’embedding.

Y a-t-il d’autres descripteurs que vous considérez universellement utiles ? Faites-le nous savoir ! Rejoignez notre communauté Discord pour partager vos réflexions.

Publié à l’origine sur https://www.evidentlyai.com le 27 juin 2023. Merci à Olga Filippova d’avoir co-écrit l’article.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more