빠른 시작 | 문서 | 슬랙에 가입하십시오

Label Sleuth는 텍스트 주석 및 구축 텍스트 분류기를위한 오픈 소스 노 코드 시스템입니다. 라벨 Sleuth를 통해 도메인 전문가 (예 : 의사, 변호사, 심리학자)는 NLP 전문가에게 의존하지 않고 스스로 맞춤형 NLP 모델을 빠르게 만들 수 있습니다.
실제 NLP 모델을 작성하려면 일반적으로 도메인 전문가가 제공하는 대상 도메인에 대한 깊은 지식과 NLP 전문가가 제공하는 기계 학습 지식의 두 가지 전문 지식이 필요합니다. 따라서 도메인 전문가는 NLP 전문가에게 의존합니다. 레이블 Sleuth는 이러한 종속성을 제거하기 위해 온다. 직관적 인 UX를 사용하면 데이터에 라벨을 붙이고 특정 요구에 맞게 조정 된 NLP 모델을 구축하는 과정에서 도메인 전문가를 호위합니다. 시스템 내에서 도메인 전문가 라벨 예제로서 기계 학습 모델은 백그라운드에서 자동으로 교육을 받고 새로운 예제를 예측하며 다음에 레이블을 지정 해야하는 예제에 대한 사용자에게 제안을 제공합니다.
Label 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.txtPython 3.8/3.9가 이미 설치되었다고 가정합니다.
PIP https://pip.pypa.io/en/stable/installation/ 설치
콘솔을 다시 시작하십시오
요구 사항 설치 :
pip install -r requirements.txt label sleuth 서버 : run python -m label_sleuth.start_label_sleuth 시작하십시오.
기본적으로 모든 프로젝트 파일은 <home_directory>/label-sleuth 로 기록되며 디렉토리를 변경하여 --output_path <your_output_path> 변경하십시오.
--load_sample_corpus wiki_animals_2000_pages 추가하여 시작시 샘플 코퍼스를 시스템에로드 할 수 있습니다. 이것은 데이터 예방 저장소에서 Wikipedia 문서 모음을 가져옵니다.
기본적으로 호스트는 localhost 되어 서버를 호스트 시스템에만 노출시킵니다. 서버를 외부 통신에 노출하려면 --host <IP> 추가하여 --host 0.0.0.0 추가하여 모든 IP를 들으십시오.
기본 포트는 8000이며 포트 add를 변경하여 --port <port_number> 명령으로 변경합니다.
그런 다음 http : // localhost : 8000 (또는 http : // localhost : <port_number>)으로 브라우징하여 시스템에 액세스 할 수 있습니다.
이 저장소는 Python으로 작성된 백엔드 라이브러리 및 React를 사용하는 프론트 엔드로 구성됩니다. 편집 된 프론트 엔드 버전은 label_sleuth/build 에서 찾을 수 있습니다.
Wikipedia 페이지의 샘플 데이터 세트와 함께 시스템을 사용하는 방법을 보여주는 간단한 튜토리얼은 웹 사이트를 참조하십시오. 자습서를 시작하기 전에 실행하여 샘플 데이터 세트를 미리로드하십시오.
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> 에 전달하여 사용자 정의 구성을 적용 할 수 있습니다.
또는 시작시 특정 구성 매개 변수를 실행 명령에 추가하여 특정 구성 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 | TrainingsetSectionStrategy에서 사용하는 전략. TrainingsEsSectionStrategy는 교육 시간에 분류 모델로 실제로 보낼 예정인 예제를 결정합니다. 이는 반드시 사용자가 표시 한 요소 세트와 동일하지는 않습니다. 현재 지원되는 구현은 get_training_set_selector ()를 참조하십시오. 또한 교육 세트 선택 문서를 참조하십시오 . |
model_policy | ModelPolicies에서 사용하는 정책. ModelPolicy는 어떤 유형의 분류 모델 (들)이 사용될 것인지, 그리고 언제 항상 / 특정 수의 반복 후에 만)를 결정합니다. 또한 모델 선택 문서를 참조하십시오 . |
active_learning_strategy | ActivelearningCatalog에서 사용하는 전략. Activelearner 모듈은 주석 프로세스의 효율성을 높이기 위해 사용자가 다음 요소를 표시하도록 권장하는 전략을 구현합니다. 현재 지원되는 구현은 ActivelearningCatalog를 참조하십시오. 또한 활성 학습 문서를 참조하십시오 . |
precision_evaluation_size | 현재 모델의 정밀도를 추정하는 데 사용되는 샘플 크기. 향후 버전의 시스템에서 사용되며, 이는 내장 평가 기능을 제공 할 것입니다. |
apply_labels_to_duplicate_texts | 요소를 동일한 텍스트로 처리하는 방법을 지정합니다. true 인 경우 요소에 레이블을 할당하면 동일한 텍스트를 공유하는 다른 요소에 동일한 레이블을 할당합니다. false 경우 레이블은 사용자가 레이블이 지정된 특정 요소에만 할당됩니다. |
language | 선택한 시스템 전체 언어를 지정합니다. 이것은 모델과 도우미 기능 (예 : 단어 중지)에서 사용될 언어 별 리소스를 결정합니다. 지원되는 언어 목록은 언어로 찾을 수 있습니다. 우리는 추가 언어의 기여를 환영합니다. |
login_required | 시스템 사용에 사용자 인증이 필요한지 여부를 지정합니다. true 인 경우 구성 파일에 users 매개 변수도 포함되어야합니다. |
users | login_required 인 경우에만 관련이 true . 사전 정의 된 로그인 정보를 다음 형식으로 지정합니다."사용자": [* 사용자 이름 목록은 정적이며 현재 모든 사용자는 시스템의 모든 작업 공간에 액세스하고 있습니다. |
레이블 Sleuth는 모듈 식 시스템입니다. 우리는 광범위한 사용자 요구를 지원하고 효율적이고 혁신적인 기계 학습 알고리즘을 활용하기 위해 다양한 모듈에 대한 추가 구현의 기여를 환영합니다.
다음은 새로운 모델과 활발한 학습 전략을 구현하기위한 지침입니다.
새로운 분류 모델을 통합하기위한 단계입니다.
ModelAPI 구현하십시오기계 학습 모델은 Modelapi의 새로운 구현을 추가하여 통합됩니다.
주요 함수는 _train () , load_model () 및 leller () 입니다.
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 의 각 항목마다 하나씩 예측. 기본 예측 클래스에서 상속하고 get_predictions_class () 메소드를 재정의하여 추가 출력을 전달할 수 있습니다.
새로 구현 된 Modelapi를 ModelsCatalog 에 추가하십시오
새로운 모델을 사용하는 하나 이상의 정책을 ModelPolicies 에 추가
새로운 능동 학습 접근 방식을 통합하기위한 단계입니다.
ActiveLearner 구현하십시오활성 학습 모듈은 Activelearner API의 새로운 구현을 추가하여 통합됩니다. 구현할 함수는 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 에 추가하십시오 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 Philip Levin Slesarev, Gwilym Newton, Shila ofek-Koifman, Noam Slonim 및 Yoav Katz (Emnlp 2022). LABEL 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}
}