Kode sumber yang digunakan untuk klasifikasi teks hanya menggunakan nama label: pendekatan pelatihan mandiri model bahasa , yang diterbitkan dalam EMNLP 2020.
Setidaknya satu GPU diperlukan untuk menjalankan kode.
Sebelum berjalan, Anda harus terlebih dahulu menginstal paket yang diperlukan dengan mengetik perintah berikut:
$ pip3 install -r requirements.txt
Juga, Anda perlu mengunduh Stopwords di perpustakaan NLTK:
import nltk
nltk.download('stopwords')
Python 3.6 atau di atas sangat disarankan; Menggunakan versi Python yang lebih lama dapat menyebabkan masalah ketidakcocokan paket.
Kami menyediakan empat skrip get_data.sh untuk mengunduh kumpulan data yang digunakan dalam makalah di bawah datasets dan empat skrip pelatihan bash agnews.sh , dbpedia.sh , imdb.sh dan amazon.sh untuk menjalankan model pada empat dataset.
Catatan: Model kami tidak menggunakan label pelatihan; Kami menyediakan pelatihan/tes yang ditetapkan label kebenaran tanah hanya untuk kelengkapan dan evaluasi.
Script Bash pelatihan menganggap Anda memiliki dua GPU 10GB. Jika Anda memiliki jumlah GPU yang berbeda, atau GPU dengan ukuran memori yang berbeda, lihat bagian selanjutnya untuk cara mengubah argumen baris perintah berikut dengan tepat (sambil menjaga argumen lain tidak berubah): train_batch_size , accum_steps , eval_batch_size dan gpus .
Makna argumen baris perintah akan ditampilkan saat mengetik
python src/train.py -h
Argumen berikut secara langsung mempengaruhi kinerja model dan perlu diatur dengan hati -hati:
train_batch_size , accum_steps , gpus : ketiga argumen ini harus disatukan. Anda perlu memastikan bahwa ukuran batch pelatihan yang efektif , dihitung sebagai train_batch_size * accum_steps * gpus , adalah sekitar 128 . Misalnya, jika Anda memiliki 4 GPU, maka Anda dapat mengatur train_batch_size = 32, accum_steps = 1, gpus = 4 ; Jika Anda memiliki 1 GPU, maka Anda dapat mengatur train_batch_size = 32, accum_steps = 4, gpus = 1 . Jika GPU Anda memiliki ukuran memori yang berbeda, Anda mungkin perlu mengubah train_batch_size sambil menyesuaikan accum_steps dan gpus secara bersamaan untuk menjaga ukuran batch pelatihan yang efektif sekitar 128 .eval_batch_size : Argumen ini hanya mempengaruhi kecepatan algoritma; Gunakan ukuran batch evaluasi besar seperti yang dapat dipegang oleh GPU Anda.max_len : Argumen ini mengontrol panjang maksimum dokumen yang dimasukkan ke dalam model (dokumen yang lebih panjang akan dipotong). Idealnya, max_len harus diatur ke panjang dokumen terpanjang ( max_len tidak bisa lebih besar dari 512 di bawah arsitektur Bert), tetapi menggunakan max_len yang lebih besar juga mengkonsumsi lebih banyak memori GPU, menghasilkan ukuran batch yang lebih kecil dan waktu pelatihan yang lebih lama. Oleh karena itu, Anda dapat memperdagangkan akurasi model untuk pelatihan yang lebih cepat dengan mengurangi max_len .mcp_epochs , self_train_epochs : Mereka mengontrol berapa banyak zaman untuk melatih model pada tugas prediksi kategori bertopeng dan tugas pelatihan mandiri. Mengatur mcp_epochs = 3, self_train_epochs = 1 akan menjadi titik awal yang baik untuk sebagian besar set data, tetapi Anda dapat meningkatkannya jika dataset Anda kecil (kurang dari 100,000 dokumen).Argumen lain dapat disimpan sebagai nilai default mereka.
Untuk menjalankan kode pada dataset baru, Anda perlu
your_dataset di bawah datasets .train.txt (satu dokumen per baris) di bawah your_dataset untuk melatih model klasifikasi (tidak diperlukan label dokumen).label_names.txt di bawah your_dataset (setiap baris berisi nama label dari satu kategori; jika beberapa kata digunakan sebagai nama label kategori, letakkan di baris yang sama dan pisahkan dengan karakter whitespace).test.txt (satu dokumen per baris) dengan label kebenaran ground test_labels.txt (setiap baris berisi integer yang menunjukkan indeks kategori dokumen yang sesuai, indeks dimulai dari 0 dan urutan harus konsisten dengan urutan kategori di label_names.txt ). Jika corpus uji disediakan, kode akan menulis hasil klasifikasi ke out.txt di bawah your_dataset setelah pelatihan selesai. Jika label kebenaran ground dari corpus uji disediakan, akurasi uji akan ditampilkan selama pelatihan mandiri, yang berguna untuk penyetelan hiperparameter dan memetik model ceri menggunakan set uji kecil.final_model.pt di bawah your_dataset .Catatan: Kode ini akan cache data menengah dan memodelkan pos pemeriksaan sebagai file .pt di bawah direktori dataset Anda untuk pelatihan lanjutan. Jika Anda mengubah corpus pelatihan atau nama label dan menjalankan kembali kode, Anda harus terlebih dahulu menghapus semua file .PT untuk mencegah kode memuat hasil lama.
Anda selalu dapat merujuk pada contoh set data saat menyiapkan kumpulan data Anda sendiri.
Harap kutip makalah berikut jika Anda menemukan kode bermanfaat untuk penelitian Anda.
@inproceedings{meng2020text,
title={Text Classification Using Label Names Only: A Language Model Self-Training Approach},
author={Meng, Yu and Zhang, Yunyi and Huang, Jiaxin and Xiong, Chenyan and Ji, Heng and Zhang, Chao and Han, Jiawei},
booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing},
year={2020},
}