Ce référentiel contient une collection de recettes pour Prodigy, notre outil d'annotation scriptable pour le texte, les images et autres données. Pour utiliser ce dépôt, vous aurez besoin d'une licence pour Prodigy – voir cette page pour plus de détails. Pour les questions et les rapports de bogues, veuillez utiliser le forum de support Prodigy. Si vous avez trouvé une erreur ou un bug, n'hésitez pas à soumettre une pull request.
Remarque importante : les recettes de ce référentiel ne sont pas identiques à 100 % aux recettes intégrées livrées avec Prodigy. Ils ont été modifiés pour inclure des commentaires et plus d'informations, et certains d'entre eux ont été simplifiés pour permettre de suivre plus facilement ce qui se passe et de les utiliser comme base pour une recette personnalisée.
Une fois Prodigy installé, vous devriez pouvoir exécuter la commande prodigy
depuis votre terminal, soit directement, soit via python -m
:
python -m prodigy
La commande prodigy
répertorie les recettes intégrées. Pour utiliser un script de recette personnalisé, transmettez simplement le chemin d'accès au fichier à l'aide de l'argument -F
:
python -m prodigy ner.teach your_dataset en_core_web_sm ./data.jsonl --label PERSON -F prodigy-recipes/ner/ner_teach.py
Vous pouvez également utiliser l'indicateur --help
pour un aperçu des arguments disponibles d'une recette, par exemple prodigy ner.teach -F ner_teach_.py --help
.
Vous pouvez modifier le code dans le script de recette pour personnaliser le comportement de Prodigy.
prefer_uncertain()
par prefer_high_scores()
.example
dictés, étant donné une séquence de tuples (score, example)
.update()
pour inclure une journalisation supplémentaire ou des fonctionnalités supplémentaires. Recette | Description |
---|---|
ner.teach | Collectez les meilleures données de formation possibles pour un modèle de reconnaissance d'entité nommée avec le modèle dans la boucle. Sur la base de vos annotations, Prodigy décidera quelles questions poser ensuite. |
ner.match | Suggérez des phrases qui correspondent à un fichier de modèles donné et indiquez s'il s'agit d'exemples de l'entité qui vous intéresse. Le fichier de modèles peut inclure des chaînes exactes ou des modèles de jetons à utiliser avec Matcher de spaCy. |
ner.manual | Marquez les étendues manuellement par jeton. Ne nécessite qu'un tokenizer et aucun outil de reconnaissance d'entité, et n'effectue aucun apprentissage actif. Vous pouvez éventuellement pré-sélectionner les étendues en fonction de modèles. |
ner.fuzzy_manual | Comme ner.manual mais utilisez FuzzyMatcher de la bibliothèque spaczz pour pré-souligner les candidats. |
ner.manual.bert | Utilisez le tokenizer BERT Word Piece pour une annotation NER manuelle efficace pour les modèles de transformateur. |
ner.correct | Créez des données de référence en corrigeant manuellement les prédictions d'un modèle. Cette recette s'appelait autrefois ner.make_gold . |
ner.silver-to-gold | Prenez un ensemble de données « argent » existant avec des annotations binaires d'acceptation/rejet, fusionnez les annotations pour trouver la meilleure analyse possible compte tenu des contraintes définies dans les annotations, et modifiez-le manuellement pour créer un ensemble de données « or » parfait et complet. |
ner.eval_ab | Évaluez deux modèles NER en comparant leurs prédictions et en créant un ensemble d'évaluation à partir du flux. |
ner_fuzzy_manual | Marquez les étendues manuellement par jeton avec les suggestions de spaczz fuzzy matcher pré-mis en surbrillance. |
Recette | Description |
---|---|
textcat.manual | Annotez manuellement les catégories qui s'appliquent à un texte. Prend en charge les tâches d'annotation avec des étiquettes simples et multiples. Plusieurs étiquettes peuvent éventuellement être marquées comme exclusives. |
textcat.correct | Corrigez manuellement les prédictions du modèle textcat. Les prédictions supérieures au seuil d'acceptation seront automatiquement présélectionnées (0,5 par défaut). Prodigy déduira si les catégories doivent s'exclure mutuellement en fonction de la configuration des composants. |
textcat.teach | Collectez les meilleures données de formation possibles pour un modèle de classification de texte avec le modèle dans la boucle. Sur la base de vos annotations, Prodigy décidera quelles questions poser ensuite. |
textcat.custom-model | Utilisez la classification de texte basée sur l'apprentissage actif avec un modèle personnalisé. Pour démontrer comment cela fonctionne, cette recette de démonstration utilise un modèle factice simple qui « prédit » des scores aléatoires. Mais vous pouvez l'échanger contre n'importe quel modèle de votre choix, par exemple une implémentation de modèle de classification de texte utilisant PyTorch, TensorFlow ou scikit-learn. |
Recette | Description |
---|---|
terms.teach | Amorcez une liste de terminologie avec des vecteurs de mots et des termes germes. Prodigy suggérera des termes similaires basés sur les vecteurs de mots et mettra à jour le vecteur cible en conséquence. |
Recette | Description |
---|---|
image.manual | Annotez manuellement les images en dessinant des cadres de délimitation rectangulaires ou des formes de polygone sur l'image. |
image-caption | Annotez les images avec des légendes, pré-remplissez les légendes avec le modèle de sous-titrage d'image implémenté dans PyTorch et effectuez une analyse des erreurs. |
image.frozenmodel | Modélisez l'annotation manuelle en boucle à l'aide de l'API de détection d'objets de Tensorflow. |
image.servingmodel | Modélisez l'annotation manuelle en boucle à l'aide de l'API de détection d'objets de Tensorflow. Cela utilise Tensorflow Serving |
image.trainmodel | Modélisez en boucle l'annotation manuelle et la formation à l'aide de l'API de détection d'objets de Tensorflow. |
Recette | Description |
---|---|
mark | Cliquez sur des exemples pré-préparés, sans modèle dans la boucle. |
choice | Annotez les données avec des options à choix multiples. Les exemples annotés auront une propriété supplémentaire "accept": [] mappée sur le(s) ID de la ou des options sélectionnées. |
question_answering | Annotez les paires question/réponse avec une interface HTML personnalisée. |
Recette | Auteur | Description |
---|---|---|
phrases.teach | @kabirkhan | Fait désormais partie de sense2vec . |
phrases.to-patterns | @kabirkhan | Fait désormais partie de sense2vec . |
records.link | @kabirkhan | Liez des enregistrements sur plusieurs ensembles de données à l'aide de la bibliothèque dedupe . |
Ces recettes ont fait leur apparition dans l'un de nos tutoriels.
Recette | Description |
---|---|
span-and-textcat | Faites les annotations spancat et textcat en même temps. Idéal pour les chatbots ! |
terms.from-ner | Générez des termes à partir des annotations NER précédentes. |
audio-with-transcript | Gère à la fois l’annotation audio manuelle et la transcription. |
progress | Démo d'un rappel update qui suit la vitesse d'annotation. |
Pour faciliter encore plus le démarrage, nous avons également inclus quelques example-datasets
, à la fois des données brutes et des données contenant des annotations créées avec Prodigy. Pour des exemples de modèles de correspondance basés sur des jetons à utiliser avec des recettes telles que ner.teach
ou ner.match
, consultez le répertoire example-patterns
.