Mulai Cepat | Dokumentasi | Bergabunglah dengan Slack

Label Sleuth adalah sistem no-kode open source untuk anotasi teks dan pengklasifikasi teks membangun. Dengan label sleuth, pakar domain (misalnya, dokter, pengacara, psikolog) dapat dengan cepat membuat model NLP khusus sendiri, tanpa ketergantungan pada para ahli NLP.
Membuat model NLP dunia nyata biasanya membutuhkan kombinasi dua keahlian - pengetahuan mendalam tentang domain target, yang disediakan oleh para ahli domain, dan pengetahuan pembelajaran mesin, yang disediakan oleh para ahli NLP. Dengan demikian, para ahli domain tergantung pada para ahli NLP. Label Sleuth datang untuk menghilangkan ketergantungan ini. Dengan UX intuitif, ia mengawal para ahli domain dalam proses memberi label data dan membangun model NLP yang disesuaikan dengan kebutuhan spesifik mereka. Sebagai contoh label ahli domain dalam sistem, model pembelajaran mesin sedang dilatih secara otomatis di latar belakang, membuat prediksi pada contoh baru, dan memberikan saran untuk pengguna pada contoh yang harus mereka beri label selanjutnya.
Label Sleuth adalah sistem tanpa kode, tidak ada pengetahuan dalam pembelajaran mesin, dan - cepat untuk mendapatkan model - dari definisi tugas hingga model kerja hanya dalam beberapa jam!
Daftar isi
Instalasi untuk pengguna akhir
Mendirikan lingkungan pengembangan
Struktur proyek
Menggunakan sistem
Menyesuaikan sistem
Referensi
Ikuti instruksi di situs web kami.
Sistem ini membutuhkan Python 3.8 atau 3.9 (versi lain saat ini tidak didukung dan dapat menyebabkan masalah).
Klon Repositori:
git clone [email protected]:label-sleuth/label-sleuth.git
CD ke Direktori Kloned: cd label-sleuth
Instal dependensi proyek menggunakan conda (disarankan) atau pip :
Instal anaconda https://docs.anaconda.com/anaconda/install/index.html
Mulai ulang konsol Anda
Gunakan perintah berikut untuk membuat lingkungan Anaconda baru dan memasang persyaratan:
# 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.txtDengan asumsi Python 3.8/3.9 sudah terpasang.
Instal Pip https://pip.pypa.io/en/stable/installation/
Mulai ulang konsol Anda
Instal Persyaratan:
pip install -r requirements.txt Mulai server label SLEUTH: Jalankan python -m label_sleuth.start_label_sleuth .
Secara default, semua file proyek ditulis ke <home_directory>/label-sleuth , untuk mengubah direktori add --output_path <your_output_path> .
Anda dapat menambahkan --load_sample_corpus wiki_animals_2000_pages untuk memuat corpus sampel ke dalam sistem saat startup. Ini mengambil kumpulan dokumen Wikipedia dari repositori catatan data.
Secara default, host akan menjadi localhost untuk mengekspos server hanya pada mesin host. Jika Anda ingin mengekspos server ke komunikasi eksternal, tambahkan --host <IP> misalnya, --host 0.0.0.0 untuk mendengarkan semua IP.
Port default adalah 8000, untuk mengubah port add --port <port_number> ke perintah.
Sistem kemudian dapat diakses dengan menjelajah ke http: // localhost: 8000 (atau http: // localhost: <port_number>)
Repositori terdiri dari perpustakaan backend, yang ditulis dalam Python, dan frontend yang menggunakan React. Versi yang dikompilasi dari frontend dapat ditemukan di bawah label_sleuth/build .
Lihat situs web kami untuk tutorial sederhana yang menggambarkan cara menggunakan sistem dengan set data sampel halaman Wikipedia. Sebelum memulai tutorial, pastikan Anda memuat dataset sampel dengan menjalankan:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages .
Parameter yang dapat dikonfigurasi dari sistem ditentukan dalam file JSON. File konfigurasi default adalah label_sleuth/config.json.
Konfigurasi khusus dapat diterapkan dengan meneruskan parameter --config_path ke perintah "start_label_sleuth", misalnya, python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json>
Atau, dimungkinkan untuk mengganti parameter konfigurasi spesifik saat startup dengan menambahkannya ke perintah run, misalnya, python -m label_sleuth.start_label_sleuth --changed_element_threshold 100
Parameter yang dapat dikonfigurasi:
| Parameter | Keterangan |
|---|---|
first_model_positive_threshold | Jumlah elemen yang harus diberi label positif untuk kategori untuk memicu pelatihan model klasifikasi. Lihat juga: Dokumentasi Doa Pelatihan. |
first_model_negative_threshold | Jumlah elemen yang harus diberi label negatif untuk kategori untuk memicu pelatihan model klasifikasi. Lihat juga: Dokumentasi Doa Pelatihan. |
changed_element_threshold | Jumlah perubahan label pengguna untuk kategori - relatif terhadap model terlatih terakhir - yang diperlukan untuk memicu pelatihan model baru. Perubahan dapat berupa penugasan label (positif atau negatif) ke elemen, atau mengubah label yang ada. Perhatikan bahwa first_model_positive_threshold juga harus dipenuhi agar pelatihan dipicu.Lihat juga: Dokumentasi Doa Pelatihan. |
training_set_selection_strategy | Strategi untuk digunakan dari TrainingsEtselectionStrategy. Strategi TrainingsEtselectionStrategy menentukan contoh mana yang akan dikirim dalam praktik ke model klasifikasi pada waktu pelatihan - ini tidak harus identik dengan serangkaian elemen yang diberi label oleh pengguna. Untuk implementasi yang saat ini didukung lihat get_training_set_selector (). Lihat juga: Dokumentasi Pemilihan Set Pelatihan. |
model_policy | Kebijakan yang akan digunakan dari ModelPolicies. ModelPolicy menentukan jenis model klasifikasi mana yang akan digunakan, dan ketika (misalnya selalu / hanya setelah jumlah iterasi tertentu / dll.). Lihat juga: Dokumentasi Pemilihan Model. |
active_learning_strategy | Strategi yang akan digunakan dari ActiveLearningCatalog. Modul ActiveLearner mengimplementasikan strategi untuk merekomendasikan elemen berikutnya untuk diberi label oleh pengguna, yang bertujuan untuk meningkatkan efisiensi proses anotasi. Untuk implementasi yang saat ini didukung, lihat ActiveLearningCatalog. Lihat juga: Dokumentasi Pembelajaran Aktif. |
precision_evaluation_size | Ukuran sampel yang akan digunakan untuk memperkirakan ketepatan model saat ini. Untuk digunakan dalam versi sistem yang akan datang, yang akan memberikan kemampuan evaluasi bawaan. |
apply_labels_to_duplicate_texts | Menentukan cara mengobati elemen dengan teks yang identik. Jika true , menetapkan label ke elemen juga akan menetapkan label yang sama ke elemen lain yang berbagi teks yang sama persis; Jika false , label hanya akan ditetapkan ke elemen spesifik yang diberi label oleh pengguna. |
language | Menentukan bahasa seluruh sistem yang dipilih. Ini menentukan beberapa sumber daya khusus bahasa yang akan digunakan oleh model dan fungsi penolong (misalnya, stop kata). Daftar bahasa yang didukung dapat ditemukan dalam bahasa. Kami menyambut kontribusi bahasa tambahan. |
login_required | Menentukan apakah menggunakan sistem atau tidak akan memerlukan otentikasi pengguna. Jika true , file konfigurasi juga harus menyertakan parameter users . |
users | Hanya relevan jika login_required true . Menentukan informasi login yang telah ditentukan sebelumnya dalam format berikut:"Pengguna": [* Daftar nama pengguna statis dan saat ini semua pengguna memiliki akses ke semua ruang kerja dalam sistem. |
Label Sleuth adalah sistem modular. Kami menyambut kontribusi implementasi tambahan untuk berbagai modul, yang bertujuan untuk mendukung berbagai kebutuhan pengguna dan memanfaatkan algoritma pembelajaran mesin yang efisien dan inovatif.
Di bawah ini adalah instruksi untuk mengimplementasikan model baru dan strategi pembelajaran aktif:
Ini adalah langkah -langkah untuk mengintegrasikan model klasifikasi baru:
ModelAPI baruModel pembelajaran mesin terintegrasi dengan menambahkan implementasi baru dari Modelapi.
Fungsi utama adalah _train () , load_model () dan infer () :
def _train ( self , model_id : str , train_data : Sequence [ Mapping ], model_params : Mapping ): def load_model ( self , model_path : str ):Mengembalikan objek yang berisi semua komponen yang diperlukan untuk melakukan inferensi (misalnya, model terlatih itu sendiri, bahasa yang diakui oleh model, vektorisasi/tokenizer terlatih dll.).
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model() , yaitu objek yang berisi semua komponen yang diperlukan untuk melakukan inferensiMengembalikan daftar objek prediksi - satu untuk setiap item di item_to_infer - di mana prediksi.label adalah boolean dan prediksi. Score adalah pelampung dalam kisaran [0-1]. Output tambahan dapat diteruskan dengan mewarisi dari kelas prediksi dasar dan mengesampingkan metode get_predictions_class ().
Tambahkan modelapi yang baru diimplementasikan ke ModelsCatalog
Tambahkan satu atau lebih kebijakan yang menggunakan model baru ke ModelPolicies
Ini adalah langkah -langkah untuk mengintegrasikan pendekatan pembelajaran aktif baru:
ActiveLearner baruModul pembelajaran aktif diintegrasikan dengan menambahkan implementasi baru API ActiveLearner. Fungsi untuk diterapkan adalah 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 ]: Diberikan urutan elemen teks dan prediksi model untuk elemen -elemen ini, fungsi ini mengembalikan skor pembelajaran aktif untuk setiap elemen. Elemen -elemen dengan skor tertinggi akan direkomendasikan bagi pengguna untuk memberi label berikutnya.
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 Li, Naftali Liberman, Philip Levin Slesarev, Gwilym Newton, Shila Ofek-Koifman, Noam Slonim dan Yoav Katz (EMNLP 2022). Label Sleuth: Dari teks yang tidak berlabel ke classifier dalam beberapa jam.
Tolong kutip:
@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}
}