เริ่มต้นอย่างรวดเร็ว | เอกสาร เข้าร่วม Slack

Label Sleuth เป็นระบบที่ไม่มีรหัสโอเพนซอร์สสำหรับคำอธิบายประกอบข้อความและการสร้างตัวแยกประเภทข้อความ ด้วย Label Sleuth ผู้เชี่ยวชาญด้านโดเมน (เช่นแพทย์นักกฎหมายนักจิตวิทยา) สามารถสร้างแบบจำลอง NLP ที่กำหนดเองได้อย่างรวดเร็วด้วยตัวเองโดยไม่ต้องพึ่งพาผู้เชี่ยวชาญ NLP
การสร้างแบบจำลอง NLP ในโลกแห่งความเป็นจริงมักจะต้องมีการรวมกันของความเชี่ยวชาญสองประการ - ความรู้เชิงลึกเกี่ยวกับโดเมนเป้าหมายซึ่งจัดทำโดยผู้เชี่ยวชาญโดเมนและความรู้การเรียนรู้ของเครื่องโดยผู้เชี่ยวชาญ NLP ดังนั้นผู้เชี่ยวชาญด้านโดเมนจึงขึ้นอยู่กับผู้เชี่ยวชาญของ NLP Label Sleuth มาเพื่อกำจัดการพึ่งพานี้ ด้วย UX ที่ใช้งานง่ายทำให้ผู้เชี่ยวชาญด้านโดเมนในกระบวนการติดฉลากข้อมูลและการสร้างโมเดล NLP ซึ่งปรับให้เหมาะกับความต้องการเฉพาะของพวกเขา ในขณะที่ผู้เชี่ยวชาญด้านโดเมนตัวอย่างฉลากภายในระบบโมเดลการเรียนรู้ของเครื่องได้รับการฝึกอบรมโดยอัตโนมัติในพื้นหลังทำการคาดการณ์ตัวอย่างใหม่และให้คำแนะนำสำหรับผู้ใช้ในตัวอย่างที่ควรติดฉลากต่อไป
Label Sleuth เป็นระบบที่ไม่มีรหัสไม่มีความรู้เกี่ยวกับการเรียนรู้ของเครื่องและ - มันรวดเร็วที่จะได้รับแบบจำลอง - จากนิยามงานไปจนถึงรูปแบบการทำงานในเวลาเพียงไม่กี่ชั่วโมง!
สารบัญ
การติดตั้งสำหรับผู้ใช้ปลายทาง
การตั้งค่าสภาพแวดล้อมการพัฒนา
โครงสร้างโครงการ
ใช้ระบบ
ปรับแต่งระบบ
อ้างอิง
ทำตามคำแนะนำในเว็บไซต์ของเรา
ระบบต้องการ Python 3.8 หรือ 3.9 (ปัจจุบันไม่รองรับเวอร์ชันอื่นและอาจทำให้เกิดปัญหา)
โคลนที่เก็บ:
git clone [email protected]:label-sleuth/label-sleuth.git
ซีดีไปยังไดเรกทอรีโคลน: 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 เริ่มต้นเซิร์ฟเวอร์ Sleuth Label: เรียกใช้ 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 เพื่อฟัง IPs ทั้งหมด
พอร์ตเริ่มต้นคือ 8000 เพื่อเปลี่ยนพอร์ตเพิ่ม --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>
อีกวิธีหนึ่งก็เป็นไปได้ที่จะแทนที่พารามิเตอร์การกำหนดค่าเฉพาะเมื่อเริ่มต้นโดยเพิ่มลงในคำสั่ง 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 | กลยุทธ์ที่จะใช้จาก TrainingSetSelectionSTRATEGY TrainingSetSelectionSTrategy กำหนดว่าตัวอย่างใดจะถูกส่งไปยังแบบจำลองการจำแนกประเภทในเวลาฝึกอบรม - สิ่งเหล่านี้ไม่จำเป็นต้องเหมือนกับชุดขององค์ประกอบที่ติดป้ายโดยผู้ใช้ สำหรับการใช้งานที่รองรับในปัจจุบันดู get_training_set_selector () ดูเพิ่มเติมที่: เอกสารการเลือกชุดการฝึกอบรม |
model_policy | นโยบายที่จะใช้จาก ModelPolicies แบบจำลองจะกำหนดประเภทของรูปแบบการจำแนกประเภทใดที่จะใช้และ เมื่อ (เช่นเสมอ / เสมอหลังจากจำนวนการวนซ้ำ / ฯลฯ ที่เฉพาะเจาะจง) ดูเพิ่มเติมที่: เอกสารการเลือกแบบจำลอง |
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 ระบุข้อมูลการเข้าสู่ระบบที่กำหนดไว้ล่วงหน้าในรูปแบบต่อไปนี้:"ผู้ใช้": [* รายการชื่อผู้ใช้เป็นแบบคงที่และปัจจุบันผู้ใช้ทุกคนสามารถเข้าถึงพื้นที่ทำงานทั้งหมดในระบบ |
Label Sleuth เป็นระบบแบบแยกส่วน เรายินดีต้อนรับการมีส่วนร่วมของการใช้งานเพิ่มเติมสำหรับโมดูลต่างๆโดยมีวัตถุประสงค์เพื่อสนับสนุนความต้องการของผู้ใช้ที่หลากหลายและเพื่อควบคุมอัลกอริทึมการเรียนรู้ของเครื่องจักรที่มีประสิทธิภาพและนวัตกรรม
ด้านล่างนี้เป็นคำแนะนำสำหรับการใช้แบบจำลองใหม่และกลยุทธ์การเรียนรู้ที่ใช้งานอยู่:
นี่คือขั้นตอนสำหรับการรวมรูปแบบการจำแนกประเภทใหม่:
ModelAPI ใหม่รูปแบบการเรียนรู้ของเครื่องถูกรวมเข้าด้วยกันโดยการเพิ่มการใช้งานใหม่ของ ModelAPI
ฟังก์ชั่นหลักคือ _train () , load_model () และ อนุมาน () :
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() คือวัตถุที่มีส่วนประกอบทั้งหมดที่จำเป็นในการทำการอนุมานส่งคืนรายการวัตถุการทำนาย - หนึ่งรายการสำหรับแต่ละรายการใน รายการ item_to_infer - ที่การทำนาย. label เป็นบูลีนและการทำนายความลับคือลอยอยู่ในช่วง [0-1] เอาต์พุตเพิ่มเติมสามารถส่งผ่านโดยการสืบทอดจากคลาสการทำนายฐานและแทนที่วิธี 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 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}
}