Démarrage rapide | Documentation | Rejoindre Slack

Label Sleuth est un système open source sans code pour l'annotation de texte et la construction de classifers de texte. Avec le Sleuth de Label, les experts du domaine (par exemple, médecins, avocats, psychologues) peuvent rapidement créer des modèles NLP personnalisés par eux-mêmes, sans dépendance aux experts PNL.
La création de modèles NLP du monde réel nécessite généralement une combinaison de deux expertise - une connaissance approfondie du domaine cible, fournie par des experts du domaine, et des connaissances d'apprentissage automatique, fournies par les experts de la PNL. Ainsi, les experts du domaine dépendent des experts PNL. Label Sleuth vient éliminer cette dépendance. Avec un UX intuitif, il escorte des experts du domaine dans le processus d'étiquetage des données et de création de modèles NLP qui sont adaptés à leurs besoins spécifiques. Alors que les experts du domaine étiquettent les exemples dans le système, les modèles d'apprentissage automatique sont automatiquement formés à l'arrière-plan, font des prédictions sur de nouveaux exemples et fournissent des suggestions aux utilisateurs sur les exemples qu'ils devraient étiqueter ensuite.
Label Sleuth est un système sans code, aucune connaissance de l'apprentissage automatique est nécessaire et - il est rapide d'obtenir un modèle - de la définition de la tâche à un modèle de travail en quelques heures seulement!
Table des matières
Installation pour les utilisateurs finaux
Mettre en place un environnement de développement
Structure du projet
En utilisant le système
Personnalisation du système
Référence
Suivez les instructions sur notre site Web.
Le système nécessite Python 3.8 ou 3.9 (les autres versions ne sont actuellement pas prises en charge et peuvent causer des problèmes).
Clone le référentiel:
git clone [email protected]:label-sleuth/label-sleuth.git
CD au répertoire cloné: cd label-sleuth
Installez les dépendances du projet à l'aide de conda (recommandé) ou pip :
Installez Anaconda https://docs.anaconda.com/anaconda/install/index.html
Redémarrez votre console
Utilisez les commandes suivantes pour créer un nouvel environnement Anaconda et installer les exigences:
# Create and activate a virtual environment:
conda create --yes -n label-sleuth python=3.9
conda activate label-sleuth
# Install requirements
pip install -r requirements.txtEn supposant que Python 3.8 / 3.9 est déjà installé.
Installez PIP https://pip.pypa.io/en/stable/installation/
Redémarrez votre console
Installation des exigences:
pip install -r requirements.txt Démarrez le Sleuth Server: Exécutez python -m label_sleuth.start_label_sleuth .
Par défaut, tous les fichiers de projet sont écrits sur <home_directory>/label-sleuth , pour modifier le répertoire add --output_path <your_output_path> .
Vous pouvez ajouter --load_sample_corpus wiki_animals_2000_pages pour charger un exemple de corpus dans le système au démarrage. Cela récupère une collection de documents Wikipedia à partir du référentiel d'exemples de données.
Par défaut, l'hôte sera localhost pour exposer le serveur uniquement sur la machine hôte. Si vous souhaitez exposer le serveur à une communication externe, ajoutez --host <IP> par exemple, --host 0.0.0.0 pour écouter tous les IP.
Le port par défaut est 8000, pour modifier le port add --port <port_number> dans la commande.
Le système est alors accessible en parcourant http: // localhost: 8000 (ou http: // localhost: <port_number>)
Le référentiel se compose d'une bibliothèque backend, écrite en python, et un frontage qui utilise React. Une version compilée du frontend peut être trouvée sous label_sleuth/build .
Voir notre site Web pour un tutoriel simple qui illustre comment utiliser le système avec un exemple de données de pages Wikipedia. Avant de démarrer le tutoriel, assurez-vous de précharger l'échantillon de données en exécutant:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages .
Les paramètres configurables du système sont spécifiés dans un fichier JSON. Le fichier de configuration par défaut est label_sleuth / config.json.
Une configuration personnalisée peut être appliquée en passant le paramètre --config_path à la commande "start_label_sleuth", par exemple, python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json>
Alternativement, il est possible de remplacer les paramètres de configuration spécifiques au démarrage en les ajoutant à la commande RUN, par exemple, python -m label_sleuth.start_label_sleuth --changed_element_threshold 100
Paramètres configurables:
| Paramètre | Description |
|---|---|
first_model_positive_threshold | Nombre d'éléments qui doivent se voir attribuer une étiquette positive pour la catégorie afin de déclencher la formation d'un modèle de classification. Voir aussi: La documentation d'invocation de la formation. |
first_model_negative_threshold | Nombre d'éléments qui doivent se voir attribuer une étiquette négative pour la catégorie afin de déclencher la formation d'un modèle de classification. Voir aussi: La documentation d'invocation de la formation. |
changed_element_threshold | Nombre de changements dans les étiquettes d'utilisateurs pour la catégorie - par rapport au dernier modèle formé - qui sont nécessaires pour déclencher la formation d'un nouveau modèle. Un changement peut être une affectation d'une étiquette (positive ou négative) à un élément ou modifier une étiquette existante. Notez que first_model_positive_threshold doit également être respecté pour que la formation soit déclenchée.Voir aussi: La documentation d'invocation de la formation. |
training_set_selection_strategy | Stratégie à utiliser à partir de TrainingSetSelectionstrategy. Un TrainingSetSelectionstrategy détermine quels exemples seront envoyés en pratique aux modèles de classification au moment de la formation - ceux-ci ne seront pas nécessairement identiques à l'ensemble d'éléments étiquetés par l'utilisateur. Pour les implémentations actuellement prises en charge, voir get_training_set_selector (). Voir aussi: La documentation de sélection des ensembles de formation. |
model_policy | Politique à utiliser à partir de modèles de modèles. UnePolicy Model détermine quel type de modèle de classification sera utilisé, et quand (par exemple toujours / seulement après un nombre spécifique d'itérations / etc.). Voir aussi: La documentation de sélection du modèle. |
active_learning_strategy | Stratégie à utiliser à partir de ActiveLearningCatalog. Un module ActiveLearner met en œuvre la stratégie de recommandation des éléments suivants à étiqueter par l'utilisateur, visant à augmenter l'efficacité du processus d'annotation. Pour les implémentations actuellement prises en charge, consultez l'ActiveLearningCatalog. Voir aussi: La documentation d'apprentissage actif. |
precision_evaluation_size | Taille de l'échantillon à utiliser pour estimer la précision du modèle actuel. À utiliser dans les futures versions du système, qui fournira des capacités d'évaluation intégrées. |
apply_labels_to_duplicate_texts | Spécifie comment traiter les éléments avec des textes identiques. Si true , l'attribution d'une étiquette à un élément attribue également la même étiquette à d'autres éléments qui partagent exactement le même texte; Si false , l'étiquette ne sera attribuée qu'à l'élément spécifique intitulé par l'utilisateur. |
language | Spécifie la langue choisie à l'échelle du système. Cela détermine certaines ressources spécifiques à la langue qui seront utilisées par les modèles et les fonctions d'assistance (par exemple, les mots d'arrêt). La liste des langues prises en charge se trouve dans les langues. Nous accueillons les contributions de langues supplémentaires. |
login_required | Spécifie si l'utilisation du système nécessitera ou non l'authentification des utilisateurs. Si true , le fichier de configuration doit également inclure un paramètre users . |
users | Seulement pertinent si login_required est true . Spécifie les informations de connexion prédéfinies dans le format suivant:"utilisateurs": [* La liste des noms d'utilisateur est statique et tous les utilisateurs ont actuellement accès à tous les espaces de travail du système. |
Label Sleuth est un système modulaire. Nous nous félicitons de la contribution des implémentations supplémentaires pour les différents modules, visant à prendre en charge un plus large éventail de besoins des utilisateurs et à exploiter des algorithmes d'apprentissage automatique efficaces et innovants.
Vous trouverez ci-dessous des instructions pour la mise en œuvre de nouveaux modèles et des stratégies d'apprentissage actives:
Ce sont les étapes pour intégrer un nouveau modèle de classification:
ModelAPILes modèles d'apprentissage automatique sont intégrés en ajoutant une nouvelle implémentation du ModelAPI.
Les fonctions principales sont _train () , load_model () et inférieur () :
def _train ( self , model_id : str , train_data : Sequence [ Mapping ], model_params : Mapping ): def load_model ( self , model_path : str ):Renvoie un objet qui contient tous les composants nécessaires pour effectuer l'inférence (par exemple, le modèle formé lui-même, le langage reconnu par le modèle, un vectoriseur / tokenzer formé, etc.).
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model() , c'est-à-dire un objet contenant tous les composants nécessaires pour effectuer l'inférenceRenvoie une liste d'objets de prédiction - un pour chaque élément dans items_to_infer - où Prediction.Label est un booléen et la prédiction.score est un flotteur dans la gamme [0-1]. Des sorties supplémentaires peuvent être transmises en héritant de la classe de prédiction de base et en remplacement de la méthode get_predictions_class ().
Ajouter le ModelAPI nouvellement implémenté à ModelsCatalog
Ajoutez une ou plusieurs stratégies qui utilisent le nouveau modèle pour ModelPolicies
Ce sont les étapes pour intégrer une nouvelle approche d'apprentissage actif:
ActiveLearnerLes modules d'apprentissage actifs sont intégrés en ajoutant une nouvelle implémentation de l'API ActiveLearner. La fonction à implémenter est get_per_element_score :
def get_per_element_score ( self , candidate_text_elements : Sequence [ TextElement ],
candidate_text_element_predictions : Sequence [ Prediction ], workspace_id : str ,
dataset_name : str , category_name : str ) -> Sequence [ float ]: Étant donné les séquences d'éléments de texte et les prédictions du modèle pour ces éléments, cette fonction renvoie un score d'apprentissage actif pour chaque élément. Les éléments avec les scores les plus élevés seront recommandés pour que l'utilisateur puisse étiqueter ensuite.
ActiveLearningCatalog Eyal Shnarch, Alon Halfon, Ariel Gera, Marina Danilevsky, Yannis Katsis, Leshem Choshen, Martin Santillan Cooper, Dina Epelboim, Zheng Zhang, Dakuo Wang, Lucy Yip Levin Slesarev, Gwilym Newton, Shila Ofek-Koifman, Noam Slonim et Yoav Katz (EMNLP 2022). Étiqueter Sleuth: du texte non marqué à un classificateur en quelques heures.
Veuillez citer:
@inproceedings{shnarch2022labelsleuth,
title={{L}abel {S}leuth: From Unlabeled Text to a Classifier in a Few Hours},
author={Shnarch, Eyal and Halfon, Alon and Gera, Ariel and Danilevsky, Marina and Katsis, Yannis and Choshen, Leshem and Cooper, Martin Santillan and Epelboim, Dina and Zhang, Zheng and Wang, Dakuo and Yip, Lucy and Ein-Dor, Liat and Dankin, Lena and Shnayderman, Ilya and Aharonov, Ranit and Li, Yunyao and Liberman, Naftali and Slesarev, Philip Levin and Newton, Gwilym and Ofek-Koifman, Shila and Slonim, Noam and Katz, Yoav},
booktitle={Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing ({EMNLP}): System Demonstrations},
month={dec},
year={2022},
address={Abu Dhabi, UAE},
publisher={Association for Computational Linguistics},
url={https://aclanthology.org/2022.emnlp-demos.16},
pages={159--168}
}