Schneller Start | Dokumentation | Machen Sie Slack bei

Etikett SLEUTH ist ein Open-Source-No-Code-System für Textanmerkungen und Erstellung von Textklassifern. Mit Label -SLEUTH können Domain -Experten (z. B. Ärzte, Anwälte, Psychologen) schnell benutzerdefinierte NLP -Modelle für sich selbst erstellen, ohne dass NLP -Experten abhängig sind.
Das Erstellen von NLP -Modellen mit realer Welt erfordert typischerweise eine Kombination aus zwei Fachwissen - tiefes Wissen über die Zieldomäne, die von Domänenexperten und Kenntnissen des maschinellen Lernens bereitgestellt wird, die von NLP -Experten bereitgestellt werden. Daher sind Domänenexperten auf NLP -Experten angewiesen. Etikett SLEUTH wird diese Abhängigkeit beseitigt. Mit einem intuitiven UX -EXX -Experten eskortiert Domänenexperten, um die Daten zu kennzeichnen und NLP -Modelle zu erstellen, die auf ihre spezifischen Anforderungen zugeschnitten sind. Da Domänenexperten Beispiele innerhalb des Systems kennzeichnen, werden maschinelle Lernmodelle automatisch im Hintergrund geschult, Vorhersagen zu neuen Beispielen machen und Vorschläge für die Benutzer zu den Beispielen geben, die sie als nächstes kennzeichnen sollten.
Label Sleuth ist ein No -Code -System, kein Wissen im maschinellen Lernen ist erforderlich, und es ist schnell, ein Modell zu erhalten - von der Aufgabendefinition bis zu einem Arbeitsmodell in nur wenigen Stunden!
Inhaltsverzeichnis
Installation für Endbenutzer
Einrichtung einer Entwicklungsumgebung
Projektstruktur
Verwenden des Systems
Anpassen des Systems
Referenz
Befolgen Sie die Anweisungen auf unserer Website.
Das System benötigt Python 3.8 oder 3.9 (andere Versionen werden derzeit nicht unterstützt und können Probleme verursachen).
Klonen Sie das Repository:
git clone [email protected]:label-sleuth/label-sleuth.git
CD zum geklonten Verzeichnis: cd label-sleuth
Installieren Sie die Projektabhängigkeiten mit conda (empfohlen) oder pip :
Installieren Sie Anaconda https://docs.anaconda.com/anaconda/install/index.html
Starten Sie Ihre Konsole neu
Verwenden Sie die folgenden Befehle, um eine neue Anaconda -Umgebung zu erstellen und die Anforderungen zu installieren:
# 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.txtAngenommen, Python 3.8/3.9 ist bereits installiert.
Installieren Sie PIP https://pip.pypa.io/en/stable/installation/
Starten Sie Ihre Konsole neu
Anforderungen installieren:
pip install -r requirements.txt Starten Sie den Label -Sleuth -Server: Führen Sie python -m label_sleuth.start_label_sleuth aus.
Standardmäßig werden alle Projektdateien in <home_directory>/label-sleuth geschrieben, um das Verzeichnis hinzuzufügen --output_path <your_output_path> .
Sie können addieren --load_sample_corpus wiki_animals_2000_pages um ein Beispielkorpus beim Start in das System zu laden. Dadurch wird eine Sammlung von Wikipedia-Dokumenten aus dem Data-Examples-Repository abgerufen.
Standardmäßig ist der Host localhost , um den Server nur auf dem Host -Computer aufzudecken. Wenn Sie den Server externer Kommunikation aussetzen möchten, fügen Sie hinzu --host <IP> --host 0.0.0.0 , um alle IPs anzuhören.
Der Standardport ist 8000, um den Port -Add -Add --port <port_number> in den Befehl zu ändern.
Auf das System kann dann zugegriffen werden, indem Sie auf http: // localhost: 8000 (oder http: // localhost: <Port_number>) durchsucht werden
Das Repository besteht aus einer in Python geschriebenen Backend -Bibliothek und einem Frontend, das React verwendet. Eine kompilierte Version des Frontend finden Sie unter label_sleuth/build .
Auf unserer Website finden Sie ein einfaches Tutorial, in dem Sie veranschaulichen, wie das System mit einem Beispiel -Datensatz mit Wikipedia -Seiten verwendet wird. Stellen Sie vor Beginn des Tutorials sicher, dass Sie den Beispieldatensatz vorladen, indem Sie ausgeführt werden:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages .
Die konfigurierbaren Parameter des Systems sind in einer JSON -Datei angegeben. Die Standardkonfigurationsdatei ist label_sleuth/config.json.
Eine benutzerdefinierte Konfiguration kann angewendet werden python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json> indem der Parameter --config_path an den Befehl "start_label_Sleut) übergeben wird, z.
Alternativ ist es möglich, bestimmte Konfigurationsparameter beim Start zu überschreiben, indem sie dem Befehl run, z python -m label_sleuth.start_label_sleuth --changed_element_threshold 100
Konfigurierbare Parameter:
| Parameter | Beschreibung |
|---|---|
first_model_positive_threshold | Anzahl der Elemente, denen ein positives Etikett für die Kategorie zugewiesen werden muss, um das Training eines Klassifizierungsmodells auszulösen. Siehe auch: Die Dokumentation des Trainingsaufrufs. |
first_model_negative_threshold | Anzahl der Elemente, denen ein negatives Etikett für die Kategorie zugewiesen werden muss, um das Training eines Klassifizierungsmodells auszulösen. Siehe auch: Die Dokumentation des Trainingsaufrufs. |
changed_element_threshold | Anzahl der Änderungen der Benutzerbezeichnungen für die Kategorie - relativ zum zuletzt geschulten Modell -, die erforderlich sind, um das Training eines neuen Modells auszulösen. Eine Änderung kann ein Etikett (positiv oder negativ) zu einem Element zugewiesen oder eine vorhandene Etikette geändert. Beachten Sie, dass first_model_positive_threshold ebenfalls für das ausgelöste Training erfüllt sein muss.Siehe auch: Die Dokumentation des Trainingsaufrufs. |
training_set_selection_strategy | Strategie, die von TrainingSetSelectionStrategy angewendet werden soll. Eine TrainingSetSelectionStrategy bestimmt, welche Beispiele in der Praxis zum Trainingszeit an die Klassifizierungsmodelle gesendet werden. Diese sind nicht unbedingt mit dem vom Benutzer gekennzeichneten Elemente identisch. Für aktuell unterstützte Implementierungen siehe get_training_set_selector (). Siehe auch: Die Auswahldokumentation für die Auswahl. |
model_policy | Richtlinien, die von ModelPolicies verwendet werden sollen. Ein Modellpolicy bestimmt, welche Art von Klassifizierungsmodell (en) verwendet werden und wann (z. B. immer / erst nach einer bestimmten Anzahl von Iterationen / usw.). Siehe auch: Die Modellauswahldokumentation. |
active_learning_strategy | Strategie, die von ActivelearningCatalog verwendet werden soll. Ein Activelearner -Modul implementiert die Strategie, um die nächsten Elemente zu empfehlen, die vom Benutzer gekennzeichnet werden sollen, um die Effizienz des Annotationsprozesses zu erhöhen. Für aktuell unterstützte Implementierungen siehe ActiveLearningCatalog. Siehe auch: Die aktive Lerndokumentation. |
precision_evaluation_size | Probengröße, die zur Schätzung der Präzision des aktuellen Modells verwendet werden soll. In zukünftigen Versionen des Systems verwendet werden, die integrierte Bewertungsfunktionen bieten. |
apply_labels_to_duplicate_texts | Gibt an, wie Elemente mit identischen Texten behandelt werden. Wenn true Zuweisen einer Beschriftung an ein Element zugewiesen wird, wird dieselben Elementen, die genau denselben Text teilen, dieselbe Beschriftung zugewiesen. Wenn false , wird das Etikett nur dem vom Benutzer gekennzeichneten spezifischen Element zugeordnet. |
language | Gibt die gewählte systemweite Sprache an. Dies bestimmt einige sprachspezifische Ressourcen, die von Modellen und Helferfunktionen verwendet werden (z. B. Stoppwörter). Die Liste der unterstützten Sprachen finden Sie in Sprachen. Wir begrüßen Beiträge zusätzlicher Sprachen. |
login_required | Gibt an, ob die Verwendung des Systems die Benutzerauthentifizierung benötigt oder nicht. Wenn true , muss die Konfigurationsdatei auch einen users enthalten. |
users | Nur relevant, wenn login_required true ist. Gibt die vordefinierten Anmeldeinformationen im folgenden Format an:"Benutzer": [* Die Liste der Benutzernamen ist statisch und derzeit haben alle Benutzer Zugriff auf alle Arbeitsbereiche im System. |
Etikett Sleuth ist ein modulares System. Wir begrüßen den Beitrag zusätzlicher Implementierungen für die verschiedenen Module, um ein breiteres Spektrum der Benutzeranforderungen zu unterstützen und effiziente und innovative Algorithmen für maschinelles Lernen zu nutzen.
Im Folgenden finden Sie Anweisungen zur Implementierung neuer Modelle und aktiver Lernstrategien:
Dies sind die Schritte zur Integration eines neuen Klassifizierungsmodells:
ModelAPIModelle für maschinelles Lernen werden durch Hinzufügen einer neuen Implementierung des ModelAPI integriert.
Die Hauptfunktionen sind _train () , load_model () und infer () :
def _train ( self , model_id : str , train_data : Sequence [ Mapping ], model_params : Mapping ): def load_model ( self , model_path : str ):Gibt ein Objekt zurück, das alle Komponenten enthält, die zur Durchführung von Inferenz erforderlich sind (z. B. das geschulte Modell selbst, die vom Modell erkannte Sprache, ein geschulter Vektorizer/Tokenizer usw.).
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model() , dh ein Objekt, das alle Komponenten enthält, die zur Durchführung von Inferenz erforderlich sindGibt eine Liste von Vorhersageobjekten zurück - eines für jedes Element in items_to_infer - wobei Prediction.label ein Boolescher und Vorhersage ist. Score ist ein Float im Bereich [0-1]. Zusätzliche Ausgänge können durch Erben der Basisvorhersageklasse übergeben und die Methode get_Predictions_class () überschreiben.
Fügen Sie das neu implementierte Modellapi zu ModelsCatalog hinzu
Fügen Sie eine oder mehrere Richtlinien hinzu, die das neue Modell zum ModelPolicies verwenden
Dies sind die Schritte zur Integration eines neuen aktiven Lernansatzes:
ActiveLearnerAktive Lernmodule werden durch Hinzufügen einer neuen Implementierung der ActiveRearner -API integriert. Die zu implementierende Funktion ist 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 ]: Angesichts der Sequenzen von Textelementen und den Modellvorhersagen für diese Elemente gibt diese Funktion für jedes Element eine aktive Lernbewertung zurück. Die Elemente mit den höchsten Punktzahlen werden empfohlen, damit der Benutzer als nächstes kennzeichnet.
ActiveLearningCatalog hinzu Eyal Shnarch, Alon Halfon, Ariel Gera, Marina Danilevsky, Yannis Katsis, Leshem Choshen, Martin Santillan Cooper, Dina Epelboim, Zheng Zhang, Dakuo Wang, Lucy Yip, Liat Ein-Dor, Lena Dankin, Ilya Shnayderman, Ranit Aharonov, Yunyao Li, Naftali Liberman, Philip Levin Slesarev, Gwilym Newton, Shila Ofek-Koifman, Noam Slonim und Yoav Katz (EMNLP 2022). Beschriftung SLEUTH: Vom unbezeichneten Text bis zu einem Klassifikator in wenigen Stunden.
Bitte zitieren:
@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}
}