Iniciar rápido | Documentação | Junte -se ao Slack

O Sleuth de etiqueta é um sistema sem código de código aberto para anotação de texto e classificadores de texto. Com o Sleuth, especialistas em domínio (por exemplo, médicos, advogados, psicólogos) podem criar rapidamente modelos de PNL personalizados por si mesmos, sem dependência de especialistas em PNL.
Criar modelos de PNL no mundo real geralmente requer uma combinação de dois conhecimentos - conhecimento profundo do domínio de destino, fornecido por especialistas em domínio e conhecimento de aprendizado de máquina, fornecido por especialistas em PNL. Assim, os especialistas em domínio dependem de especialistas em PNL. O Sleuth de etiqueta vem para eliminar essa dependência. Com um UX intuitivo, ele acompanha especialistas em domínio no processo de rotular os dados e criar modelos de PNL que são adaptados às suas necessidades específicas. À medida que os especialistas em domínio rotulam exemplos do sistema, os modelos de aprendizado de máquina estão sendo treinados automaticamente em segundo plano, fazem previsões em novos exemplos e fornecem sugestões para os usuários nos exemplos que eles devem rotular a seguir.
O Sleuth é um sistema sem código, nenhum conhecimento em aprendizado de máquina é necessário e - é rápido obter um modelo - da definição de tarefas até um modelo de trabalho em apenas algumas horas!
Índice
Instalação para usuários finais
Configurando um ambiente de desenvolvimento
Estrutura do projeto
Usando o sistema
Personalizando o sistema
Referência
Siga as instruções em nosso site.
O sistema requer Python 3.8 ou 3.9 (outras versões não são suportadas e podem causar problemas).
Clone o repositório:
git clone [email protected]:label-sleuth/label-sleuth.git
CD para o diretório clonado: cd label-sleuth
Instale as dependências do projeto usando conda (recomendado) ou pip :
Instale o anaconda https://docs.anaconda.com/anaconda/install/index.html
Reinicie seu console
Use os seguintes comandos para criar um novo ambiente da Anaconda e instalar os 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.txtSupondo que o Python 3.8/3.9 já esteja instalado.
Instale o Pip https://pip.pypa.io/en/stable/installation/
Reinicie seu console
Instalar requisitos:
pip install -r requirements.txt Inicie o servidor de brilho do rótulo: Execute python -m label_sleuth.start_label_sleuth .
Por padrão, todos os arquivos do projeto são gravados para <home_directory>/label-sleuth , para alterar o diretório Add --output_path <your_output_path> .
Você pode adicionar --load_sample_corpus wiki_animals_2000_pages para carregar um corpus de amostra no sistema na inicialização. Isso busca uma coleção de documentos da Wikipedia do repositório de amostras de dados.
Por padrão, o host será localhost para expor o servidor apenas na máquina host. Se você deseja expor o servidor à comunicação externa, adicione --host <IP> Por exemplo, --host 0.0.0.0 para ouvir todos os IPs.
A porta padrão é 8000, para alterar a porta Adicionar --port <port_number> para o comando.
O sistema pode então ser acessado navegando para http: // localhost: 8000 (ou http: // localhost: <sot_number>)
O repositório consiste em uma biblioteca de back -end, escrita em Python, e um front -end que usa o React. Uma versão compilada do front -end pode ser encontrada em label_sleuth/build .
Consulte nosso site para obter um tutorial simples que ilustra como usar o sistema com um conjunto de dados de amostra de páginas da Wikipedia. Antes de iniciar o tutorial, certifique-se de pré-carregar o conjunto de dados de amostra em execução:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages .
Os parâmetros configuráveis do sistema são especificados em um arquivo json. O arquivo de configuração padrão é LABEL_SLEUTH/config.json.
Uma configuração personalizada pode ser aplicada passando o parâmetro --config_path para o comando "start_label_sleuth", por exemplo, python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json>
Como alternativa, é possível substituir parâmetros de configuração específicos na startup, adicionando -os ao comando de execução, por exemplo, python -m label_sleuth.start_label_sleuth --changed_element_threshold 100
Parâmetros configuráveis:
| Parâmetro | Descrição |
|---|---|
first_model_positive_threshold | Número de elementos que devem receber um rótulo positivo para a categoria para acionar o treinamento de um modelo de classificação. Veja também: a documentação de invocação de treinamento. |
first_model_negative_threshold | Número de elementos que devem receber um rótulo negativo para a categoria para acionar o treinamento de um modelo de classificação. Veja também: a documentação de invocação de treinamento. |
changed_element_threshold | Número de alterações nos rótulos dos usuários para a categoria - em relação ao último modelo treinado - necessários para acionar o treinamento de um novo modelo. Uma alteração pode ser uma atribuição de um rótulo (positivo ou negativo) a um elemento ou alterando um rótulo existente. Observe que o first_model_positive_threshold também deve ser atendido para que o treinamento seja acionado.Veja também: a documentação de invocação de treinamento. |
training_set_selection_strategy | Estratégia a ser usada na Setra de TrainsetSelections. Uma estratégia de treinamento de treinamento determina quais exemplos serão enviados na prática para os modelos de classificação no tempo de treinamento - eles não serão necessariamente idênticos ao conjunto de elementos rotulados pelo usuário. Para implementações atualmente suportadas, consulte get_traning_set_selector (). Veja também: a documentação de seleção do conjunto de treinamento. |
model_policy | Política a ser usada em Modelpolicies. Um ModelPolicy determina qual tipo de modelo (s) de classificação (s) será usado e quando (por exemplo, sempre / somente após um número específico de iterações / etc.). Veja também: a documentação de seleção de modelos. |
active_learning_strategy | Estratégia a ser usada no ActiveLearningCatalog. Um módulo ActiveLearner implementa a estratégia para recomendar os próximos elementos a serem rotulados pelo usuário, com o objetivo de aumentar a eficiência do processo de anotação. Para implementações atualmente suportadas, consulte o ActiveLearningCatalog. Veja também: a documentação de aprendizado ativo. |
precision_evaluation_size | Tamanho da amostra a ser usado para estimar a precisão do modelo atual. Para ser usado em versões futuras do sistema, que fornecerão recursos de avaliação internos. |
apply_labels_to_duplicate_texts | Especifica como tratar elementos com textos idênticos. Se true , atribuir um rótulo a um elemento também atribuirá o mesmo rótulo a outros elementos que compartilham exatamente o mesmo texto; Se false , o rótulo será atribuído apenas ao elemento específico rotulado pelo usuário. |
language | Especifica a linguagem escolhida em todo o sistema. Isso determina alguns recursos específicos da linguagem que serão usados por modelos e funções auxiliares (por exemplo, palavras de parada). A lista de idiomas suportados pode ser encontrada em idiomas. Congratulamo -nos com contribuições de idiomas adicionais. |
login_required | Especifica se o uso do sistema exigirá ou não autenticação do usuário. Se true , o arquivo de configuração também deve incluir um parâmetro users . |
users | Somente relevante se login_required for true . Especifica as informações de login predefinidas no seguinte formato:"Usuários":[* A lista de nomes de usuário é estática e atualmente todos os usuários têm acesso a todos os espaços de trabalho do sistema. |
O Sleuth de etiqueta é um sistema modular. Congratulamo -nos com a contribuição de implementações adicionais para os vários módulos, com o objetivo de suportar uma gama mais ampla de necessidades do usuário e aproveitar algoritmos de aprendizado de máquina eficientes e inovadores.
Abaixo estão as instruções para implementar novos modelos e estratégias de aprendizado ativo:
Estas são as etapas para integrar um novo modelo de classificação:
ModelAPIOs modelos de aprendizado de máquina são integrados adicionando uma nova implementação do ModelAPI.
As principais funções são _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 ):Retorna um objeto que contém todos os componentes necessários para realizar inferência (por exemplo, o próprio modelo treinado, o idioma reconhecido pelo modelo, um vetorizador/tokenizador treinado etc.).
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model() , ou seja, um objeto que contém todos os componentes necessários para executar a inferênciaRetorna uma lista de objetos de previsão - um para cada item em itens_to_infer - onde a previsão. Saídas adicionais podem ser passadas herdando a classe de previsão de base e substituindo o método get_predictions_class ().
Adicione o recém -implementado ModelApi ao ModelsCatalog
Adicione uma ou mais políticas que usam o novo modelo para ModelPolicies
Estas são as etapas para integrar uma nova abordagem de aprendizado ativo:
ActiveLearnerOs módulos de aprendizado ativo são integrados adicionando uma nova implementação da API ActiveLearner. A função a ser implementada é 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 as seqüências de elementos de texto e as previsões do modelo para esses elementos, essa função retorna uma pontuação de aprendizado ativa para cada elemento. Os elementos com as pontuações mais altas serão recomendadas para o usuário rotular a seguir.
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 Shnaymanman, Levin Slesarev, Gwilym Newton, Shila Osek-Koifman, Noam Slonim e Yoav Katz (EMNLP 2022). Rótulo Sleuth: Do texto não marcado a um classificador em poucas horas.
Cite:
@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}
}