Inicio rápido | Documentación | Únete a Slack

Label Sleuth es un sistema sin código de código abierto para la anotación de texto y la construcción de clasificadores de texto. Con Sleuth de etiquetas, los expertos en dominios (por ejemplo, los médicos, los abogados, los psicólogos) pueden crear rápidamente modelos NLP personalizados por sí mismos, sin dependencia de los expertos en PNL.
La creación de modelos de PNL del mundo real generalmente requiere una combinación de dos experiencia: conocimiento profundo del dominio objetivo, proporcionado por expertos en dominios, y conocimiento de aprendizaje automático, proporcionado por expertos en PNL. Por lo tanto, los expertos en dominios dependen de los expertos en PNL. El detective de la etiqueta viene para eliminar esta dependencia. Con un UX intuitivo, escolta a los expertos en dominios en el proceso de etiquetar los datos y la creación de modelos PNL que se adaptan a sus necesidades específicas. Como ejemplos de etiquetas de expertos en dominios dentro del sistema, los modelos de aprendizaje automático se están entrenando automáticamente en segundo plano, hacen predicciones en nuevos ejemplos y proporcionan sugerencias para los usuarios de los ejemplos que deben etiquetar a continuación.
El Sleuth de la etiqueta es un sistema sin código, no es necesario conocimiento en el aprendizaje automático y, es rápido obtener un modelo, desde la definición de tareas hasta un modelo de trabajo en solo unas pocas horas.
Tabla de contenido
Instalación para usuarios finales
Configurar un entorno de desarrollo
Estructura de proyectos
Usando el sistema
Personalización del sistema
Referencia
Siga las instrucciones en nuestro sitio web.
El sistema requiere Python 3.8 o 3.9 (otras versiones actualmente no son compatibles y pueden causar problemas).
Clon el repositorio:
git clone [email protected]:label-sleuth/label-sleuth.git
CD al directorio clonado: cd label-sleuth
Instale las dependencias del proyecto utilizando conda (recomendado) o pip :
Instale Anaconda https://docs.anaconda.com/anaconda/install/index.html
Reinicie su consola
Use los siguientes comandos para crear un nuevo entorno de Anaconda e instalar los requisitos:
# 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.txtSuponiendo que Python 3.8/3.9 ya está instalado.
Instale pip https://pip.pypa.io/en/stable/installation/
Reinicie su consola
Requisitos de instalación:
pip install -r requirements.txt Inicie el servidor de detectives de etiqueta: ejecute python -m label_sleuth.start_label_sleuth .
De manera predeterminada, todos los archivos del proyecto se escriben en <home_directory>/label-sleuth , para cambiar el directorio ADD --output_path <your_output_path> .
Puede agregar --load_sample_corpus wiki_animals_2000_pages para cargar un corpus de muestra en el sistema al inicio. Esto obtiene una colección de documentos de Wikipedia del repositorio de pruebas de datos.
Por defecto, el host será localhost para exponer el servidor solo en la máquina host. Si desea exponer el servidor a la comunicación externa, agregue --host <IP> por ejemplo, --host 0.0.0.0 para escuchar todos los IP.
El puerto predeterminado es 8000, para cambiar el puerto Agregar --port <port_number> al comando.
Luego se puede acceder al sistema navegando a http: // localhost: 8000 (o http: // localhost: <port_number>)
El repositorio consiste en una biblioteca de backend, escrita en Python, y un frontend que usa React. Una versión compilada del frontend se puede encontrar en label_sleuth/build .
Consulte nuestro sitio web para obtener un tutorial simple que ilustra cómo usar el sistema con un conjunto de datos de muestra de las páginas de Wikipedia. Antes de comenzar el tutorial, asegúrese de precargar el conjunto de datos de muestra ejecutando:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages .
Los parámetros configurables del sistema se especifican en un archivo JSON. El archivo de configuración predeterminado es etiqueta_sleuth/config.json.
Se puede aplicar una configuración personalizada pasando el parámetro --config_path al comando "start_label_sleuth", por ejemplo, python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json>
Alternativamente, es posible anular los parámetros de configuración específicos al inicio agregándolos al comando Ejecutar, por ejemplo, python -m label_sleuth.start_label_sleuth --changed_element_threshold 100
Parámetros configurables:
| Parámetro | Descripción |
|---|---|
first_model_positive_threshold | Número de elementos a los que se les debe asignar una etiqueta positiva para la categoría para activar el entrenamiento de un modelo de clasificación. Ver también: La documentación de invocación de capacitación. |
first_model_negative_threshold | Número de elementos a los que se les debe asignar una etiqueta negativa para la categoría para activar el entrenamiento de un modelo de clasificación. Ver también: La documentación de invocación de capacitación. |
changed_element_threshold | Número de cambios en las etiquetas de los usuarios para la categoría, en relación con el último modelo capacitado, que se requieren para activar la capacitación de un nuevo modelo. Un cambio puede ser una asignación de una etiqueta (positiva o negativa) a un elemento, o cambiar una etiqueta existente. Tenga en cuenta que first_model_positive_threshold también debe cumplirse para que el entrenamiento se active.Ver también: La documentación de invocación de capacitación. |
training_set_selection_strategy | Estrategia para ser utilizada a partir de capacitaciones de selectionstrategy. A EntreningSetLectionsTrategy determina qué ejemplos se enviarán en la práctica a los modelos de clasificación en el tiempo de capacitación; estos no serán necesariamente idénticos al conjunto de elementos etiquetados por el usuario. Para implementaciones compatibles actualmente, consulte get_training_set_selector (). Ver también: La documentación de selección del conjunto de capacitación. |
model_policy | Política que se utilizará a partir de modelas. Se utilizará ModelPolicy determina qué tipo de modelo de clasificación (s) se utilizarán y cuándo (por ejemplo, siempre / solo después de un número específico de iteraciones / etc.). Ver también: La documentación de selección del modelo. |
active_learning_strategy | Estrategia para ser utilizada de ActiveLearningCatalog. Un módulo ActiveLearner implementa la estrategia para recomendar los próximos elementos etiquetados por el usuario, con el objetivo de aumentar la eficiencia del proceso de anotación. Para implementaciones actualmente compatibles, consulte el ActiveLearningCatalog. Ver también: La documentación de aprendizaje activo. |
precision_evaluation_size | Tamaño de muestra que se utilizará para estimar la precisión del modelo actual. Para ser utilizado en futuras versiones del sistema, que proporcionarán capacidades de evaluación incorporadas. |
apply_labels_to_duplicate_texts | Especifica cómo tratar elementos con textos idénticos. Si es true , asignar una etiqueta a un elemento también asignará la misma etiqueta a otros elementos que comparten exactamente el mismo texto; Si false , la etiqueta solo se asignará al elemento específico etiquetado por el usuario. |
language | Especifica el lenguaje elegido en todo el sistema. Esto determina algunos recursos específicos del lenguaje que serán utilizados por modelos y funciones auxiliares (por ejemplo, palabras de detención). La lista de idiomas compatibles se puede encontrar en los idiomas. Agradecemos las contribuciones de idiomas adicionales. |
login_required | Especifica si el uso del sistema requerirá o no autenticación del usuario. Si es true , el archivo de configuración también debe incluir un parámetro users . |
users | Solo relevante si login_required es true . Especifica la información de inicio de sesión predefinida en el siguiente formato:"Usuarios": [* La lista de nombres de usuario es estática y actualmente todos los usuarios tienen acceso a todos los espacios de trabajo en el sistema. |
El detective de la etiqueta es un sistema modular. Agradecemos la contribución de implementaciones adicionales para los diversos módulos, con el objetivo de admitir una gama más amplia de necesidades de los usuarios y aprovechar los algoritmos de aprendizaje automático eficientes e innovadores.
A continuación hay instrucciones para implementar nuevos modelos y estrategias de aprendizaje activo:
Estos son los pasos para integrar un nuevo modelo de clasificación:
ModelAPILos modelos de aprendizaje automático se integran agregando una nueva implementación del ModelApi.
Las funciones principales son _train () , load_model () e infer () :
def _train ( self , model_id : str , train_data : Sequence [ Mapping ], model_params : Mapping ): def load_model ( self , model_path : str ):Devuelve un objeto que contiene todos los componentes necesarios para realizar inferencia (por ejemplo, el modelo capacitado en sí, el lenguaje reconocido por el modelo, un vectorizador/tokenizador capacitado, etc.).
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model() , es decir, un objeto que contiene todos los componentes que son necesarios para realizar una inferenciaDevuelve una lista de objetos de predicción, uno para cada elemento en items_to_infer , donde predicción.label es un booleano y predicción. Se pueden pasar salidas adicionales heredando de la clase de predicción base y anulando el método get_predictions_class ().
Agregue el modelapi recién implementado a ModelsCatalog
Agregue una o más políticas que usen el nuevo modelo para ModelPolicies
Estos son los pasos para integrar un nuevo enfoque de aprendizaje activo:
ActiveLearnerLos módulos de aprendizaje activo se integran agregando una nueva implementación de la API de Activelearner. La función para implementar es 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 ]: Dadas las secuencias de los elementos de texto y las predicciones del modelo para estos elementos, esta función devuelve una puntuación de aprendizaje activo para cada elemento. Se recomendarán los elementos con los puntajes más altos para que el usuario etiquete a continuación.
ActiveLearningCatalog 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, Naftali, Naftali, Tarnerman, Naftalmán, Tainterman, Tainterman, Shnayderman, Ranit Aharonov, Yunyao, Naftali, Naftalman, Tailtalman, Tarnerman, Tarnerman. Philip Levin Slesarev, Gwilym Newton, Shila Ofek-Koifman, Noam Slonim y Yoav Katz (EMNLP 2022). Sleuth de etiqueta: desde texto sin etiquetar hasta un clasificador en unas pocas horas.
Por favor cita:
@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}
}