0 / 0
Retourner à la version anglaise de la documentation
Détection d'entités avec un modèle de transformateur personnalisé
Dernière mise à jour : 21 nov. 2024
Détection d'entités avec un modèle de transformateur personnalisé

Si vous ne disposez pas d'un ensemble fixe de termes ou si vous ne pouvez pas exprimer des entités que vous souhaitez détecter en tant qu'expressions régulières, vous pouvez créer un modèle de transformateur personnalisé. Le modèle est basé sur le modèle Slate IBM Foundation préentraîné.

Lorsque vous utilisez le modèle préentraîné, vous pouvez créer des modèles multilingues. Il n'est pas nécessaire d'avoir des modèles distincts pour chaque langue.

Vous avez besoin de suffisamment de données de formation pour atteindre une qualité élevée (2000-5000 par type d'entité). Si des GPU sont disponibles, utilisez-les pour l'entraînement.

Remarque :

Les modèles de transformateur d'entraînement consomment beaucoup d'UC et de mémoire. Les environnements prédéfinis ne sont pas assez grands pour effectuer l'entraînement. Créez un environnement de bloc-notes personnalisé avec une plus grande quantité d'UC et de mémoire, et utilisez-le pour exécuter votre bloc-notes. Si vous avez des GPU disponibles, il est fortement recommandé de les utiliser. Voir Création de votre propre modèle d'environnement.

Format des données d'entrée

Les données de formation sont représentées sous la forme d'un tableau contenant plusieurs objets JSON. Chaque objet JSON représente une instance d'entraînement et doit comporter une zone text et une zone mentions . La zone text représente le texte de la phrase d'apprentissage et mentions est un tableau d'objets JSON avec le texte, le type et l'emplacement de chaque mention:

[
  {
    "text": str,
    "mentions": [{
      "location": {
        "begin": int,
        "end": int
      },
      "text": str,
      "type": str
    },...]
  },...
]

Exemple :

[
    {
        "id": 38863234,
        "text": "I'm moving to Colorado in a couple months.",
        "mentions": [{
            "text": "Colorado",
            "type": "Location",
            "location": {
                "begin": 14,
                 "end": 22
                 }
            },
            {
                "text": "couple months",
                "type": "Duration",
                "location": {
                    "begin": 28,
                     "end": 41
                     }
            }]
    }
]

Entraînement de votre modèle

L'algorithme du transformateur utilise le modèle Slate préentraîné.

Pour une liste des modèles Slate disponibles, consultez ce tableau :

Liste des modèles Slate disponibles et leurs descriptions
Modèle Descriptif Disponible en version release Disponible en version d'exécution
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased Modèle générique et polyvalent 23.1, 24.1
pretrained-model_slate.125m.finance_many_transformer_en_cased Modèle pré-entraîné sur le contenu financier 24.1
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased Modèle pré-formé sur les contenus de cybersécurité 24.1
pretrained-model_slate.125m.biomedical_many_transformer_en_cased Modèle pré-entraîné sur le contenu biomédical 24.1

Pour obtenir les options disponibles pour la configuration de l'entraînement Transformer, entrez:

help(watson_nlp.workflows.entity_mentions.transformer.Transformer.train)

Exemple de code

import watson_nlp
from watson_nlp.toolkit.entity_mentions_utils.train_util import prepare_stream_of_train_records_from_JSON_collection

# load the syntax models for all languages to be supported
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_models = [syntax_model]

# load the pretrained Slate model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')

# prepare the train and dev data
# entity_train_data is a directory with one or more json files in the input format specified above
train_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')
dev_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')

# train a transformer workflow model
trained_workflow = watson_nlp.workflows.entity_mentions.transformer.Transformer.train(
    train_data_stream=train_data_stream,
    dev_data_stream=dev_data_stream,
    syntax_models=syntax_models,
    template_resource=pretrained_model_resource,
    num_train_epochs=3,
)

Application du modèle sur de nouvelles données

Appliquez le modèle de flux de travaux du transformateur entraîné sur les nouvelles données à l'aide de la méthode run() , comme vous le feriez sur tous les blocs pré-entraînés existants.

Exemple de code

trained_workflow.run('Bruce is at Times Square')

Stockage et chargement du modèle

Le modèle de transformateur personnalisé peut être stocké comme n'importe quel autre modèle, comme décrit dans Sauvegarde et chargement de modèles personnalisés, à l'aide de ibm_watson_studio_lib.

Pour charger le modèle de transformateur personnalisé, des étapes supplémentaires sont requises:

  1. Vérifiez que vous disposez d'un jeton d'accès sur la page Contrôle d'accès de l'onglet Gérer de votre projet. Seuls les administrateurs de projet peuvent créer des jetons d'accès. Le jeton d'accès peut disposer des droits d'accès Afficheur ou Editeur . Seuls les éditeurs peuvent injecter le jeton dans un bloc-notes.

  2. Ajoutez le jeton de projet au bloc-notes en cliquant sur Plus > Insérer un jeton de projet dans la barre d'actions du bloc-notes, puis exécutez la cellule.

    En exécutant la cellule de code masquée insérée, vous créez un objet wslib que vous pouvez utiliser pour les fonctions de la bibliothèque ibm-watson-studio-lib . Pour plus d'informations sur les fonctions ibm-watson-studio-lib disponibles, voir Utilisation d'ibm-watson-studio-lib pour Python.

  3. Téléchargez et extrayez le modèle dans votre environnement d'exécution local:

    import zipfile
    model_zip = 'trained_workflow_file'
    model_folder = 'trained_workflow_folder'
    wslib.download_file('trained_workflow', file_name=model_zip)
    
    with zipfile.ZipFile(model_zip, 'r') as zip_ref:
      zip_ref.extractall(model_folder)
    
  4. Chargez le modèle à partir du dossier extrait:

    trained_workflow = watson_nlp.load(model_folder)
    

Rubrique parent : Création de vos propres modèles

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus