Classification de texte chinois, basée sur Pytorch, et est disponible à l'origine de la boîte.
Modèles de réseau neuronal: TextCnn, Textrnn, FastText, Textrcnn, Bilstm_attention, DPCNN, Transformer
Modèle pré-formé: Bert, Ernie
Introduction du modèle, processus de flux de données: référence
Les données sont entrées dans le modèle en unités de mots, et le vecteur de mot pré-formé utilise Sogou News Word + Character 300D, cliquez ici pour télécharger
| Modèle | introduire |
|---|---|
| Textcnn | Classification de texte CNN classique de Kim 2014 |
| Textrnn | Bilstm |
| Textrnn_att | Bilstm + attention |
| Textrcnn | Bilstm + pool |
| Texte rapide | Bow + Bigram + Trigram, l'effet est étonnamment bon |
| Dpcnn | Pyramide profonde CNN |
| Transformateur | Mauvais résultats |
| Modèle | introduire | Remarque |
|---|---|---|
| bert | Bert d'origine | |
| Ernie | Ernie | |
| bert_cnn | En tant que couche d'incorporation, Bert se connecte au CNN de trois noyaux de convolution. | Bert + CNN |
| bert_rnn | Bert comme couche d'intégration, accès à LSTM | Bert + RNN |
| bert_rcnn | En tant que couche d'incorporation, Bert est épissé avec une sortie Bert via LSTM et passe par une couche de pool maximale. | bert + rcnn |
| bert_dpcnn | En tant que couche d'incorporation, Bert passe par une couche d'intégration de région contenant trois extracteurs de caractéristiques de convolution différents, qui peuvent être considérés comme l'intégration de sortie, puis par la convolution de la longueur égale de deux couches pour fournir un œil sensoriel plus large pour l'extraction de fonctionnalité suivante (améliorant la richesse de l'expansion), puis il passera à plusieurs reprises un bloc de mise en commun du 1/2. La mise en commun de 1/2 améliore en continu la sémantique de la position du mot, et le caractéristique_maps est fixe. L'introduction du réseau résiduel est de résoudre les problèmes de disparition de gradient et d'explosion de gradient pendant le processus de formation. | bert + dpcnn |
se référer à:
Python 3.7
pytorch 1.1
tqdm
sklearn
Tensorboardx pytorch_pretrain_bert (Le code pré-formation a également été téléchargé, et cette bibliothèque n'est pas nécessaire)
J'ai tiré 200 000 titres d'actualités de Thucnews, téléchargés sur GitHub, avec des longueurs de texte comprises entre 20 et 30. Il y a 10 catégories au total, avec 20 000 éléments dans chaque catégorie. Les données sont entrées dans le modèle en mots.
Catégorie: Finance, immobilier, stocks, éducation, science et technologie, société, affaires courantes, sports, jeux, divertissement.
Division de l'ensemble de données:
| Ensemble de données | Volume de données |
|---|---|
| Ensemble de formation | 180 000 |
| Ensemble de vérification | 10 000 |
| Test de test | 10 000 |
python run.py --model TextCNN --word TrueMachine: un morceau de 2080ti, temps de formation: 30 minutes.
| Modèle | accrocheur | Remarque |
|---|---|---|
| Textcnn | 91,22% | Classification de texte CNN classique de Kim 2014 |
| Textrnn | 91,12% | Bilstm |
| Textrnn_att | 90,90% | Bilstm + attention |
| Textrcnn | 91,54% | Bilstm + pool |
| Texte rapide | 92,23% | Bow + Bigram + Trigram, l'effet est étonnamment bon |
| Dpcnn | 91,25% | Pyramide profonde CNN |
| Transformateur | 89,91% | Mauvais résultats |
| bert | 94,83% | Simple bert |
| Ernie | 94,61% | Quel est le chinois promis qui écrase 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 |
L'effet Bert d'origine est très bon. Si vous utilisez Bert comme couche d'incorporation et l'envoyez à d'autres modèles, l'effet sera réduit. Plus tard, vous essairez de comparer l'effet du texte long.
Le modèle BERT est placé dans le répertoire Bert_pretain, et le modèle Ernie est placé dans le répertoire ERNIE_PRETRAIN. Chaque répertoire a trois fichiers:
Adresse de téléchargement du modèle pré-formé:
Bert_chinese: modèle https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
Vocabulaire https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt
De là
Alternate: l'adresse du disque réseau du modèle: https://pan.baidu.com/s/1qsad5gwclq7xlgzl_4w3pw
Ernie_Chinese: https://pan.baidu.com/s/1lepddn1-yqjmked_g9rlgw
De là
Après décompression, mettez-le dans le répertoire correspondant comme mentionné ci-dessus et confirmez que le nom du fichier est correct.
# 训练并测试:
# 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
Téléchargez le modèle pré-formé et exécutez:
# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert
# bert + 其它
python pretrain_run.py --model bert_CNN
# ERNIE
python pretrain_run.py --model ERNIE
Modèle pré-formé:
python pretrain_predict.py
Modèle de réseau neuronal:
python predict.py
Les modèles sont tous dans le répertoire des modèles, et la définition de l'hyperparamètre et la définition du modèle sont dans le même fichier.
[1] Réseaux de neurones convolutionnels pour la classification des phrases
[2] Réseau neuronal récurrent pour la classification du texte avec apprentissage multi-tâches
[3] Réseaux de mémoire bidirectionnels à court terme basés sur l'attention pour la classification des relations
[4] Réseaux de neurones convolutionnels récurrents pour la classification du texte
[5] Sac d'astuces pour une classification de texte efficace
[6] Pyramide profond Réseaux de neurones convolutionnels pour la catégorisation de texte
[7] L'attention est tout ce dont vous avez besoin
[8] Bert: pré-formation des transformateurs bidirectionnels profonds pour la compréhension du langage
[9] Ernie: représentation améliorée par l'intégration des connaissances
Ce projet continue de se développer et d'optimiser en fonction des entrepôts suivants: