Classificação de texto chinesa, baseada em Pytorch, e está disponível fora da caixa.
Modelos de rede neural: textcnn, textrnn, FastText, textrcnn, bilstm_attion, dpcnn, transformador
Modelo pré-treinado: Bert, Ernie
Introdução ao modelo, processo de fluxo de dados: referência
Os dados são inseridos no modelo em unidades de palavras, e o vetor de palavras pré-treinado usa o SOGOU News Word+personagem 300D, clique aqui para baixar
| Modelo | introduzir |
|---|---|
| Textcnn | CLASSIFICAÇÃO CLÁSSICA DE TEXTO CLÁSSICA DA CLIM 2014 |
| Textrnn | Bilstm |
| Textrnn_att | Bilstm+atenção |
| Textrcnn | Bilstm+pooling |
| FastText | Bow+bigram+trigrama, o efeito é surpreendentemente bom |
| Dpcnn | Pirâmide profunda cnn |
| Transformador | Resultados ruins |
| Modelo | introduzir | Observação |
|---|---|---|
| Bert | Bert original | |
| Ernie | Ernie | |
| bert_cnn | Como a camada de incorporação, Bert se conecta à CNN de três grãos de convolução. | bert + cnn |
| bert_rnn | Bert como a camada de incorporação, acesso ao LSTM | bert + rnn |
| bert_rcnn | Como a camada de incorporação, o BERT é emendado com a saída BERT através do LSTM e passa por uma camada máxima de agrupamento. | bert + rcnn |
| bert_dpcnn | À medida que a camada de incorporação, Bert passa por uma camada de incorporação de região contendo três extratores de características de convolução diferentes, que podem ser considerados a incorporação de saída e, em seguida, através da convolução igual de duas camadas para fornecer um olho sensorial mais amplo para a extração de recursos subsequentes (melhorar a riqueza da embalagem) e, em seguida, passará repetidamente a 12, o pool de riqueza) e, em seguida, passará repetidamente a 12, o pool de riqueza) e, em seguida, passará repetidamente a 12, o riqueza de riquezas) e depois passará repetidamente a 12, o pool de riqueza. O pool de 1/2 melhora continuamente a semântica da posição da palavra, e o rache_maps é corrigido. A introdução da rede residual é resolver os problemas de desaparecimento de gradientes e explosão de gradiente durante o processo de treinamento. | bert + dpcnn |
Consulte:
Python 3.7
Pytorch 1.1
TQDM
Sklearn
Tensorboardx pytorch_pretriled_bert (O código de pré-treinamento também foi enviado e essa biblioteca não é necessária)
Eu desenhei 200.000 títulos de notícias da Thucnews, enviados para o GitHub, com comprimentos de texto entre 20 e 30 anos. Existem 10 categorias no total, com 20.000 itens em cada categoria. Os dados são inseridos no modelo em palavras.
Categoria: Finanças, imóveis, ações, educação, ciência e tecnologia, sociedade, assuntos atuais, esportes, jogos, entretenimento.
Divisão de conjunto de dados:
| Conjunto de dados | Volume de dados |
|---|---|
| Conjunto de treinamento | 180.000 |
| Conjunto de verificação | 10.000 |
| Conjunto de testes | 10.000 |
python run.py --model TextCNN --word TrueMáquina: Um pedaço de 2080ti, tempo de treinamento: 30 minutos.
| Modelo | acc | Observação |
|---|---|---|
| Textcnn | 91,22% | CLASSIFICAÇÃO CLÁSSICA DE TEXTO CLÁSSICA DA CLIM 2014 |
| Textrnn | 91,12% | Bilstm |
| Textrnn_att | 90,90% | Bilstm+atenção |
| Textrcnn | 91,54% | Bilstm+pooling |
| FastText | 92,23% | Bow+bigram+trigrama, o efeito é surpreendentemente bom |
| Dpcnn | 91,25% | Pirâmide profunda cnn |
| Transformador | 89,91% | Resultados ruins |
| Bert | 94,83% | Simples Bert |
| Ernie | 94,61% | Qual é o prometido chinês esmagador 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 |
O efeito original de Bert é muito bom. Se você usar o BERT como uma camada de incorporação e enviá -la para outros modelos, o efeito será reduzido. Mais tarde, você tentará comparar o efeito do texto longo.
O modelo BERT é colocado no diretório Bert_pretAin e o modelo Ernie é colocado no diretório Ernie_pretrain. Cada diretório tem três arquivos:
Endereço de download de modelo pré-treinado:
Bert_chinese: Model https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
Vocabulário https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt
Daqui
Alternativo: o endereço de disco de rede do modelo: https://pan.baidu.com/s/1qsad5gwclq7xlgzl_4w3pw
Ernie_chinese: https://pan.baidu.com/s/1lepddn1-djjmked_g9rlgw
Daqui
Após a descompressão, coloque -o no diretório correspondente, conforme mencionado acima, e confirme o nome do arquivo está correto.
# 训练并测试:
# 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
Baixe o modelo pré-treinado e execute:
# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert
# bert + 其它
python pretrain_run.py --model bert_CNN
# ERNIE
python pretrain_run.py --model ERNIE
Modelo pré-treinado:
python pretrain_predict.py
Modelo de rede neural:
python predict.py
Os modelos estão todos no diretório de modelos, e a definição do hyperparâmetro e a definição do modelo estão no mesmo arquivo.
[1] Redes neurais convolucionais para classificação de frases
[2] Rede neural recorrente para classificação de texto com aprendizado de várias tarefas
[3] Redes de memória bidirecional de longo prazo baseadas em atenção baseadas em atenção para classificação de relação
[4] Redes neurais convolucionais recorrentes para classificação de texto
[5] Saco de truques para classificação de texto eficiente
[6] Redes neurais convolucionais da pirâmide profunda para categorização de texto
[7] Atenção é tudo que você precisa
[8] Bert: pré-treinamento de transformadores bidirecionais profundos para entendimento de idiomas
[9] Ernie: representação aprimorada através da integração do conhecimento
Este projeto continua a desenvolver e otimizar com base nos seguintes armazéns: