Clasificación de texto chino, basada en Pytorch, y está disponible fuera de la caja.
Modelos de red neuronal: Textcnn, Textrnn, FastText, Textrcnn, bilstm_attention, DPCNN, Transformer
Modelo previamente capacitado: Bert, Ernie
Introducción del modelo, proceso de flujo de datos: referencia
Los datos se ingresan al modelo en unidades de palabras, y el vector de palabras previamente capacitado usa Sogou News Word+Caracter 300D, haga clic aquí para descargar
| Modelo | introducir |
|---|---|
| Textcnn | Clasificación de texto clásico de Kim 2014 CNN |
| Textrnn | Bilstm |
| Textrnn_att | Bilstm+atención |
| Textrcnn | Bilstm+agrupación |
| Contenedor | Bow+Bigram+Trigram, el efecto es sorprendentemente bueno |
| Dpcnn | Pirámide profunda CNN |
| Transformador | Malos resultados |
| Modelo | introducir | Observación |
|---|---|---|
| Bert | Bert original | |
| Ernie | Ernie | |
| bert_cnn | Como la capa de incrustación, Bert se conecta al CNN de tres núcleos de convolución. | Bert + CNN |
| bert_rnn | Bert como capa de incrustación, acceso a LSTM | Bert + RNN |
| bert_rcnn | Como la capa de incrustación, Bert se empalma con salida de Bert a través de LSTM y pasa a través de una capa de agrupación máxima. | bert + rcnn |
| bert_dpcnn | Como la capa de incrustación, Bert pasa a través de una capa de inclusión de la región que contiene tres extractores de características de convolución diferentes, que pueden considerarse como la incrustación de salida, y luego a través de la convolución de igual longitud de dos capas para proporcionar un ojo sensorial más amplio para la extracción de características posteriores (mejorando la riqueza de la embdia), y luego se repetirá repetidamente un bloque residual de residuo 1/2. La agrupación de 1/2 mejora continuamente la semántica de la posición de la palabra, y se soluciona los largometrajes. La introducción de la red residual es resolver los problemas de desaparición de gradiente y explosión de gradiente durante el proceso de capacitación. | bert + dpcnn |
referirse a:
Python 3.7
Pytorch 1.1
TQDM
sklearn
tensorboardx pytorch_preetrainse_bert (El código de pre-entrenamiento también se ha cargado y esta biblioteca no es necesaria)
He dibujado 200,000 títulos de noticias de Tucnews, cargado a GitHub, con longitudes de texto entre 20 y 30. Hay 10 categorías en total, con 20,000 elementos en cada categoría. Los datos se ingresan en el modelo en palabras.
Categoría: finanzas, bienes raíces, acciones, educación, ciencia y tecnología, sociedad, asuntos actuales, deportes, juegos, entretenimiento.
División de conjuntos de datos:
| Conjunto de datos | Volumen de datos |
|---|---|
| Set de entrenamiento | 180,000 |
| Verificación | 10,000 |
| Set de prueba | 10,000 |
python run.py --model TextCNN --word TrueMáquina: una pieza de 2080TI, Tiempo de entrenamiento: 30 minutos.
| Modelo | accidentista | Observación |
|---|---|---|
| Textcnn | 91.22% | Clasificación de texto clásico de Kim 2014 CNN |
| Textrnn | 91.12% | Bilstm |
| Textrnn_att | 90.90% | Bilstm+atención |
| Textrcnn | 91.54% | Bilstm+agrupación |
| Contenedor | 92.23% | Bow+Bigram+Trigram, el efecto es sorprendentemente bueno |
| Dpcnn | 91.25% | Pirámide profunda CNN |
| Transformador | 89.91% | Malos resultados |
| Bert | 94.83% | Bert simple |
| Ernie | 94.61% | ¿Cuál es el acogedor chino prometido 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 |
El efecto Bert original es muy bueno. Si usa Bert como una capa de incrustación y la envía a otros modelos, el efecto se reducirá. Más tarde, intentará comparar el efecto del texto largo.
El modelo Bert se coloca en el directorio Bert_Pallain, y el modelo Ernie se coloca en el directorio ERNIE_PRETRAIN. Cada directorio tiene tres archivos:
Dirección de descarga del modelo previamente capacitado:
bert_chinese: modelo https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
Vocabulary https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt
Desde aquí
Alternativa: la dirección de disco de red del modelo: https://pan.baidu.com/s/1qsad5gwclq7xlgzl_4w3pw
Ernie_chinesese: https://pan.baidu.com/s/1lepddn1-yqjmked_g9rlgw
Desde aquí
Después de la descompresión, colóquelo en el directorio correspondiente como se mencionó anteriormente, y confirme que el nombre del archivo es correcto.
# 训练并测试:
# 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
Descargue el modelo previamente capacitado y ejecute:
# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert
# bert + 其它
python pretrain_run.py --model bert_CNN
# ERNIE
python pretrain_run.py --model ERNIE
Modelo previamente capacitado:
python pretrain_predict.py
Modelo de red neuronal:
python predict.py
Todos los modelos están en el directorio de modelos, y la definición de hiperparameter y la definición del modelo están en el mismo archivo.
[1] Redes neuronales convolucionales para la clasificación de oraciones
[2] Red neuronal recurrente para la clasificación de texto con aprendizaje de tareas múltiples
[3] Redes de memoria a largo plazo a largo plazo basadas en la atención para la clasificación de relaciones
[4] Redes neuronales convolucionales recurrentes para la clasificación de texto
[5] Bolsa de trucos para una clasificación de texto eficiente
[6] Redes neuronales convolucionales piramidales profundas para la categorización de texto
[7] La atención es todo lo que necesitas
[8] Bert: pretruamiento de transformadores bidireccionales profundos para la comprensión del lenguaje
[9] Ernie: representación mejorada a través de la integración del conocimiento
Este proyecto continúa desarrollando y optimizando en base a los siguientes almacenes: