Klasifikasi teks Cina, berdasarkan Pytorch, dan tersedia di luar kotak.
Model Jaringan Saraf: TextCnn, Textrnn, FastText, Textrcnn, Bilstm_attention, DPCNN, Transformer
Model Pra-Terlatih: Bert, Ernie
Model Pendahuluan, Proses Aliran Data: Referensi
Data dimasukkan ke dalam model dalam satuan kata, dan kata-kata pra-terlatih menggunakan sogou word word+karakter 300d, klik di sini untuk mengunduh
| Model | memperkenalkan |
|---|---|
| Textcnn | Klasifikasi teks CNN klasik Kim 2014 |
| Textrnn | Bilstm |
| Textrnn_att | Bilstm+Perhatian |
| Textrcnn | BILSTM+Pooling |
| FastText | Bow+bigram+trigram, efeknya sangat bagus |
| Dpcnn | CNN piramida dalam |
| Transformator | Hasil yang buruk |
| Model | memperkenalkan | Komentar |
|---|---|---|
| Bert | Bert asli | |
| Ernie | Ernie | |
| Bert_cnn | Sebagai lapisan embedding, Bert terhubung ke CNN dari tiga kernel konvolusi. | Bert + CNN |
| Bert_rnn | Bert sebagai lapisan penyematan, akses ke LSTM | Bert + rnn |
| Bert_rcnn | Sebagai lapisan embedding, Bert disambung dengan output Bert melalui LSTM dan melewati lapisan pengumpulan maksimum. | Bert + rcnn |
| Bert_dpcnn | Sebagai lapisan embedding, Bert melewati lapisan embedding daerah yang mengandung tiga ekstraktor fitur konvolusi yang berbeda, yang dapat dianggap sebagai output embedding, dan kemudian melalui konvolusi panjang yang sama dari dua lapisan untuk memberikan mata sensorik yang lebih luas untuk ekstraksi fitur berikutnya (meningkatkan kekayaan residu), dan kemudian akan mengulangi 1/2. 1/2 pooling terus meningkatkan semantik posisi kata, dan fitur_maps diperbaiki. Pengenalan jaringan residual adalah untuk menyelesaikan masalah penghilangan gradien dan ledakan gradien selama proses pelatihan. | Bert + dpcnn |
Lihat:
Python 3.7
Pytorch 1.1
TQDM
Sklearn
Tensorboardx pytorch_pretrain_bert (Kode pra-pelatihan juga telah diunggah, dan perpustakaan ini tidak diperlukan)
Saya telah mengambil 200.000 judul berita dari ThucNews, diunggah ke GitHub, dengan panjang teks antara 20 dan 30. Ada 10 kategori secara total, dengan 20.000 item di setiap kategori. Data dimasukkan ke dalam model dengan kata -kata.
Kategori: Keuangan, Real Estat, Saham, Pendidikan, Sains dan Teknologi, Masyarakat, Urusan Saat Ini, Olahraga, Permainan, Hiburan.
Divisi Dataset:
| Dataset | Volume Data |
|---|---|
| Set pelatihan | 180.000 |
| Set verifikasi | 10.000 |
| Set tes | 10.000 |
python run.py --model TextCNN --word TrueMesin: Satu bagian dari 2080TI, waktu pelatihan: 30 menit.
| Model | ACC | Komentar |
|---|---|---|
| Textcnn | 91,22% | Klasifikasi teks CNN klasik Kim 2014 |
| Textrnn | 91,12% | Bilstm |
| Textrnn_att | 90,90% | Bilstm+Perhatian |
| Textrcnn | 91,54% | BILSTM+Pooling |
| FastText | 92,23% | Bow+bigram+trigram, efeknya sangat bagus |
| Dpcnn | 91,25% | CNN piramida dalam |
| Transformator | 89,91% | Hasil yang buruk |
| Bert | 94,83% | Bert sederhana |
| Ernie | 94,61% | Apa Bert Chinese Crushing yang Dijanjikan |
| Bert_cnn | 94,44% | Bert + CNN |
| Bert_rnn | 94,57% | Bert + rnn |
| Bert_rcnn | 94,51% | Bert + rcnn |
| Bert_dpcnn | 94,47% | Bert + dpcnn |
Efek Bert asli sangat bagus. Jika Anda menggunakan Bert sebagai lapisan embedding dan mengirimkannya ke model lain, efeknya akan dikurangi. Nanti, Anda akan mencoba membandingkan efek teks panjang.
Model Bert ditempatkan di direktori Bert_WARSTAN, dan model Ernie ditempatkan di direktori Ernie_pretrain. Setiap direktori memiliki tiga file:
Alamat unduhan model pra-terlatih:
Bert_chinese: model https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
Kosakata https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt
Dari sini
Alternatif: Alamat disk jaringan model: https://pan.baidu.com/s/1qsad5gwclq7xlgzl_4w3pw
Ernie_chinese: https://pan.baidu.com/s/1lepddn1-yqjmked_g9rlgw
Dari sini
Setelah dekompresi, masukkan ke dalam direktori yang sesuai seperti yang disebutkan di atas, dan konfirmasi nama file sudah benar.
# 训练并测试:
# TextCNN
python run.py --model TextCNN
# TextRNN
python run.py --model TextRNN
# TextRNN_Att
python run.py --model TextRNN_Att
# TextRCNN
python run.py --model TextRCNN
# FastText, embedding层是随机初始化的
python run.py --model FastText --embedding random
# DPCNN
python run.py --model DPCNN
# Transformer
python run.py --model Transformer
Unduh model pra-terlatih dan jalankan:
# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert
# bert + 其它
python pretrain_run.py --model bert_CNN
# ERNIE
python pretrain_run.py --model ERNIE
Model pra-terlatih:
python pretrain_predict.py
Model Jaringan Saraf:
python predict.py
Semua model ada di direktori model, dan definisi hiperparameter dan definisi model berada dalam file yang sama.
[1] Jaringan Saraf Konvolusional untuk Klasifikasi Kalimat
[2] Jaringan saraf berulang untuk klasifikasi teks dengan pembelajaran multi-tugas
[3] Jaringan memori jangka pendek berbasis dua arah berbasis perhatian untuk klasifikasi hubungan
[4] Jaringan saraf konvolusional berulang untuk klasifikasi teks
[5] Kantung trik untuk klasifikasi teks yang efisien
[6] Jaringan saraf konvolusional piramida dalam untuk kategorisasi teks
[7] Hanya perhatian yang Anda butuhkan
[8] Bert: Pra-pelatihan transformator dua arah yang dalam untuk pemahaman bahasa
[9] Ernie: Representasi yang Ditingkatkan Melalui Integrasi Pengetahuan
Proyek ini terus mengembangkan dan mengoptimalkan berdasarkan gudang berikut: