Быстрый старт | Документация | Присоединяйтесь к Slack

Метка Sleuth-это система без кода с открытым исходным кодом для текстовых аннотаций и создания текстовых классификаторов. С этикеткой Sleuth, эксперты по доменам (например, врачи, адвокаты, психологи) могут быстро создавать пользовательские модели НЛП самостоятельно, без зависимости от экспертов НЛП.
Создание реальных моделей НЛП обычно требует комбинации двух знаний - глубоких знаний о целевой области, предоставленных экспертами домена, и знаний о машинном обучении, предоставляемых экспертами НЛП. Таким образом, эксперты доменов зависят от экспертов НЛП. Метка Sleuth приходит, чтобы устранить эту зависимость. Благодаря интуитивному UX он сопровождает экспертов домена в процессе маркировки данных и создания моделей NLP, которые адаптированы к их конкретным потребностям. По мере того, как эксперты по домену помечают примеры в системе, модели машинного обучения автоматически обучаются на заднем плане, делают прогнозы на новые примеры и предоставляют предложения для пользователей по примерам, которые они должны маркировать дальше.
Метка Sleuth - это система без кодов, никаких знаний в машинном обучении не требуется, и - это быстро получить модель - от определения задачи до рабочей модели всего за несколько часов!
Оглавление
Установка для конечных пользователей
Настройка среды разработки
Структура проекта
Используя систему
Настройка системы
Ссылка
Следуйте инструкциям на нашем сайте.
Система требует Python 3.8 или 3.9 (в настоящее время другие версии не поддерживаются и могут вызвать проблемы).
Клонировать репозиторий:
git clone [email protected]:label-sleuth/label-sleuth.git
CD к клонированному каталогу: cd label-sleuth
Установите зависимости проекта, используя conda (рекомендуется) или pip :
Установите Anaconda https://docs.anaconda.com/anaconda/install/index.html
Перезагрузите вашу консоль
Используйте следующие команды, чтобы создать новую среду Anaconda и установить требования:
# 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.txtПредполагая, что Python 3.8/3.9 уже установлен.
Установить PIP https://pip.pypa.io/en/stable/installation/
Перезагрузите вашу консоль
Установить требования:
pip install -r requirements.txt Запустите метку Sleath Server: запустите python -m label_sleuth.start_label_sleuth .
По умолчанию все файлы проекта записываются в <home_directory>/label-sleuth , чтобы изменить Add --output_path <your_output_path> .
Вы можете добавить --load_sample_corpus wiki_animals_2000_pages для загрузки образца корпуса в систему при запуске. Это получает коллекцию документов Википедии из репозитория данных.
По умолчанию хост будет localhost , чтобы выявить сервер только на хост -машине. Если вы хотите подвергнуть сервер внешней связи, добавьте --host <IP> Например, --host 0.0.0.0 чтобы прослушать все IPS.
Порт по умолчанию составляет 8000, чтобы изменить порт add --port <port_number> на команду.
Затем можно получить доступ к системе, просмотрев http: // localhost: 8000 (или http: // localhost: <port_number>)
Репозиторий состоит из бэкэнд -библиотеки, написанной на Python, и фронта, который использует React. Скомпилированную версию фронта можно найти под label_sleuth/build .
Смотрите наш веб -сайт для простого учебника, который иллюстрирует, как использовать систему с помощью образца набора данных страниц Википедии. Перед началом учебника убедитесь, что вы предварительно загрузите пример набора данных, работая:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages .
Настраиваемые параметры системы указаны в файле JSON. Файл конфигурации по умолчанию - label_sleuth/config.json.
Пользовательская конфигурация может быть применена путем передачи параметра --config_path в команду "start_label_sleuth", например, python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json>
В качестве альтернативы, можно переопределить конкретные параметры конфигурации при запуске, добавив их в команду Run, например, python -m label_sleuth.start_label_sleuth --changed_element_threshold 100
Настраиваемые параметры:
| Параметр | Описание |
|---|---|
first_model_positive_threshold | Количество элементов, которым должно быть назначено положительная метка для категории, чтобы вызвать обучение классификационной модели. См. Также: Документация по обучению. |
first_model_negative_threshold | Количество элементов, которым необходимо присвоить отрицательную метку для категории, чтобы запустить обучение классификационной модели. См. Также: Документация по обучению. |
changed_element_threshold | Количество изменений в метке пользователей для категории - относительно последней обученной модели - которые необходимы для запуска обучения новой модели. Изменение может быть присвоением метки (положительной или отрицательной) элементу или изменением существующей метки. Обратите внимание, что first_model_positive_threshold также должен быть выполнен для запуска обучения.См. Также: Документация по обучению. |
training_set_selection_strategy | Стратегия, которая будет использоваться от TreningsetSelectionsTrategy. TrainingsetSelectionsTrategy определяет, какие примеры будут отправлены на практике на модели классификации во время обучения - они не обязательно будут идентичны набору элементов, помеченных пользователем. Поддерживаемые в настоящее время реализации см. GET_TRAING_SET_SELECTOR (). См. Также: Документация по выбору учебного набора. |
model_policy | Политика, которая будет использоваться из модельнойполитики. Модельполитика определяет, какой тип классификационной модели будет использоваться, и когда (например, всегда / только после определенного количества итераций / и т. Д.). См. Также: документация по выбору модели. |
active_learning_strategy | Стратегия, которая будет использоваться в ActiveElearningCatalog. Модуль ActiveLearner реализует стратегию для рекомендации следующих элементов, которые будут помечены пользователем, стремясь повысить эффективность процесса аннотации. В настоящее время поддерживаемые реализации см. ActiveEarningCatalog. См. Также: Активная учебная документация. |
precision_evaluation_size | Размер выборки, который будет использоваться для оценки точности текущей модели. Для использования в будущих версиях системы, которая обеспечит встроенные возможности оценки. |
apply_labels_to_duplicate_texts | Указывает, как лечить элементы с одинаковыми текстами. Если true , назначение метки элементу также назначит ту же метку другим элементам, которые совместно используют тот же текст; Если false , метка будет назначена только конкретным элементу, помеченным пользователем. |
language | Определяет выбранное общеобразовательное язык. Это определяет некоторые языковые ресурсы, которые будут использоваться моделями и вспомогательными функциями (например, Stop Words). Список поддерживаемых языков можно найти на языках. Мы приветствуем вклад дополнительных языков. |
login_required | Указывает, потребует ли использование системы аутентификацию пользователя. Если true , файл конфигурации также должен включать параметр users . |
users | Только актуально, если login_required - это true . Определяет предварительно определенную информацию о входе в систему в следующем формате:«Пользователи»: [* Список имен пользователей статичен, и в настоящее время все пользователи имеют доступ ко всем рабочим пространствам в системе. |
Метка Sleuth - это модульная система. Мы приветствуем вклад дополнительных реализаций для различных модулей, стремясь поддержать более широкий спектр потребностей пользователей и использовать эффективные и инновационные алгоритмы машинного обучения.
Ниже приведены инструкции по внедрению новых моделей и стратегии активного обучения:
Это шаги для интеграции новой классификационной модели:
ModelAPIМодели машинного обучения интегрированы путем добавления новой реализации ModelAPI.
Основными функциями являются _train () , load_model () и sonfer () :
def _train ( self , model_id : str , train_data : Sequence [ Mapping ], model_params : Mapping ): def load_model ( self , model_path : str ):Возвращает объект, который содержит все компоненты, которые необходимы для выполнения вывода (например, сама обученная модель, язык, распознаваемый моделью, обученный векторизатор/токенизатор и т. Д.).
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model() , то есть объект, содержащий все компоненты, которые необходимы для выполнения выводаВозвращает список объектов прогнозирования - по одному для каждого элемента в items_to_infer - где прогнозирование. Label - это логическое и прогнозирование. Дополнительные выходы могут быть переданы, наследуя из класса базового прогнозирования и переоценивая метод GET_PREDICTIONS_CLASS ().
Добавьте недавно реализованный моделипи в ModelsCatalog
Добавьте одну или несколько политик, которые используют новую модель для ModelPolicies
Это шаги для интеграции нового подхода активного обучения:
ActiveLearnerАктивные учебные модули интегрированы путем добавления новой реализации API ActiveLearner. Функция для реализации 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 ]: Учитывая последовательности текстовых элементов и прогнозы модели для этих элементов, эта функция возвращает активное обучение для каждого элемента. Элементы с самыми высокими показателями будут рекомендованы для пользователя, чтобы пометить дальше.
ActiveLearningCatalog Эяль Шнарх, Алон Халфон, Ариэль Гера, Марина Данилевский, Яннис Катсис, Лешем Чошен, Мартин Сантиллан Купер, Дина Эпельбум, Чжэн Чжан, Дакуо Ван, Люси Йип, Лиат-Дор, Лена Данкин, Илья Шнайдерман, Ранит-Ахарон, Лена-Либин, Илья-Либман, Лена-Либин, Лена-Либин, Лена Лена, Лена, Лена ЛИБИН, Лена Лена, Лена Лена Левин Слезарев, Гвилим Ньютон, Шила Офек-Коифман, Ноам Слоним и Йоав Кац (EMNLP 2022). Метка Sleuth: от немеченого текста в классификатор через несколько часов.
Пожалуйста, цитируйте:
@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}
}