Chinesische Textklassifizierung, basierend auf Pytorch, ist außerhalb des Box erhältlich.
Modelle für neuronale Netzwerke: Textcnn, Textrnn, Fasttext, Textrcnn, Bilstm_attention, DPCNN, Transformator
Vorausgebildeter Modell: Bert, Ernie
Modelleinführung, Datenflussprozess: Referenz
Die Daten werden in Wörterneinheiten in das Modell eingegeben, und der vorgebildete Wortvektor verwendet SOGOU News Word+Charakter 300D, um hier herunterzuladen
| Modell | einführen |
|---|---|
| Textcnn | Kim 2014 klassische CNN -Textklassifizierung |
| Textrnn | Bilstm |
| Textrnn_att | Bilstm+Aufmerksamkeit |
| Textrcnn | Bilstm+Pooling |
| FastText | Bogen+Bigram+Trigramm, der Effekt ist überraschend gut |
| Dpcnn | Deep Pyramid CNN |
| Transformator | Schlechte Ergebnisse |
| Modell | einführen | Bemerkung |
|---|---|---|
| Bert | Original Bert | |
| Ernie | Ernie | |
| BERT_CNN | Als Einbettungsschicht verbindet Bert mit dem CNN von drei Faltungskernern. | Bert + CNN |
| BERT_RNN | Bert als Einbettungsschicht, Zugang zu LSTM | Bert + Rnn |
| BERT_RCNN | Als Einbettungsschicht wird Bert mit Bert -Ausgang durch LSTM gespleißt und durchläuft eine maximale Pooling -Schicht. | Bert + rcnn |
| BERT_DPCNN | Als Einbettungsschicht fließt Bert durch eine Region, die die Einbettungsschicht mit drei verschiedenen Faltungsmerkmalen enthält, die als Ausgangsbettung angesehen werden können, und dann durch die gleiche Länge von zwei Schichten, um ein breiteres sensorisches Auge für den nachfolgenden Merkmalextraktion (Verbesserung des Einbdungsreichtums) zu liefern, und dann wird es wiederholt einen 1/2 -Pooling -Blocking vergeben. Das 1/2 Pooling verbessert kontinuierlich die Semantik der Wortposition, und das Feature_Maps wird behoben. Die Einführung des Restnetzes besteht darin, die Probleme des Gradientenverschwindens und der Gradientenexplosion während des Trainingsprozesses zu lösen. | Bert + DPCNN |
Siehe:
Python 3.7
Pytorch 1.1
tqdm
Sklearn
Tensorboardx Pytorch_Pretrained_bert (Der Code vor dem Training wurde ebenfalls hochgeladen, und diese Bibliothek ist nicht benötigt.)
Ich habe 200.000 Nachrichtenentitel von Thucnews gezogen, die auf GitHub hochgeladen wurden, mit Textlängen zwischen 20 und 30. Insgesamt gibt es 10 Kategorien mit 20.000 Elementen in jeder Kategorie. Daten werden in Wörtern in das Modell eingegeben.
Kategorie: Finanzen, Immobilien, Aktien, Bildung, Wissenschaft und Technologie, Gesellschaft, aktuelle Angelegenheiten, Sport, Spiele, Unterhaltung.
Datensatzabteilung:
| Datensatz | Datenvolumen |
|---|---|
| Trainingset | 180.000 |
| Überprüfungssatz | 10.000 |
| Testset | 10.000 |
python run.py --model TextCNN --word TrueMaschine: Ein Stück 2080ti, Trainingszeit: 30 Minuten.
| Modell | Acc | Bemerkung |
|---|---|---|
| Textcnn | 91,22% | Kim 2014 klassische CNN -Textklassifizierung |
| Textrnn | 91,12% | Bilstm |
| Textrnn_att | 90,90% | Bilstm+Aufmerksamkeit |
| Textrcnn | 91,54% | Bilstm+Pooling |
| FastText | 92,23% | Bogen+Bigram+Trigramm, der Effekt ist überraschend gut |
| Dpcnn | 91,25% | Deep Pyramid CNN |
| Transformator | 89,91% | Schlechte Ergebnisse |
| Bert | 94,83% | Einfacher Bert |
| Ernie | 94,61% | Was ist der versprochene chinesische zerquetschende Bert? |
| BERT_CNN | 94,44% | Bert + CNN |
| BERT_RNN | 94,57% | Bert + Rnn |
| BERT_RCNN | 94,51% | Bert + rcnn |
| BERT_DPCNN | 94,47% | Bert + DPCNN |
Der ursprüngliche Bert -Effekt ist sehr gut. Wenn Sie Bert als Einbettungsschicht verwenden und an andere Modelle senden, wird der Effekt reduziert. Später werden Sie versuchen, den Effekt eines langen Textes zu vergleichen.
Das Bert -Modell wird im BERT_REPRETOR -Verzeichnis platziert, und das Ernie -Modell befindet sich in das Ernie_Pretrain -Verzeichnis. Jedes Verzeichnis hat drei Dateien:
Vorausgebildete Modell-Download-Adresse:
Bert_chinese: Modell https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
Vokabular https://s3.amazonaws.com/models.huggingface.co/bert-base-chinese-vocab.txt
Von hier
Alternative: Die Netzwerkdiskadung des Modells: https://pan.baidu.com/s/1qsad5gwclq7xlgzl_4w3pw
Ernie_Chinese: https://pan.baidu.com/s/1lepddn1-yqjmked_g9rlgw
Von hier
Stellen Sie es nach Dekompression in das entsprechende Verzeichnis wie oben erwähnt und bestätigen Sie, dass der Dateiname korrekt ist.
# 训练并测试:
# 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
Laden Sie das vorgebildete Modell herunter und rennen Sie:
# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert
# bert + 其它
python pretrain_run.py --model bert_CNN
# ERNIE
python pretrain_run.py --model ERNIE
Vorausgebildeter Modell:
python pretrain_predict.py
Modell des neuronalen Netzwerks:
python predict.py
Die Modelle befinden sich alle im Modelsverzeichnis, und die Hyperparameter -Definition und die Modelldefinition befinden sich in derselben Datei.
[1] Faltungsnetzwerke für die Satzklassifizierung
[2] Wiederkehrendes neuronales Netzwerk für die Textklassifizierung mit Multi-Task-Lernen
[3] Aufmerksamkeitsbasierte bidirektionale, lange Kurzzeitgedächtnisnetzwerke für die Beziehungsklassifizierung
[4] Wiederkehrende Faltungsnetzwerke für die Textklassifizierung
[5] Trickbeutel für eine effiziente Textklassifizierung
[6] Deep Pyramid Faltungsnetze für die Kategorisierung der Textkategorisierung
[7] Aufmerksamkeit ist alles, was Sie brauchen
[8] Bert: Vorausbildung von tiefen bidirektionalen Transformatoren für das Sprachverständnis
[9] Ernie: Verbesserte Darstellung durch Wissensintegration
Dieses Projekt entwickelt und optimiert basierend auf den folgenden Lagern: