Китайская текстовая классификация, основанная на Pytorch и доступна из коробки.
Модели нейронной сети: TextCnn, Textrnn, FastText, Textrcnn, Bilstm_Attention, DPCNN, Transformer
Предварительно обученная модель: Берт, Эрни
Введение модели, процесс потока данных: ссылка
Данные вводятся в модель в единицах слов, а предварительно обученный вектор слов использует Sogou News Word+символ 300D, нажмите здесь, чтобы загрузить
| Модель | представлять |
|---|---|
| TextCnn | Классификация текста CNN Ким 2014 Классика CNN |
| Textrnn | Bilstm |
| Textrnn_att | Bilstm+внимание |
| Textrcnn | Bilstm+объединение |
| Фасттекст | лук+биграм+триграмма, эффект на удивление хорош |
| Dpcnn | Глубокая пирамида CNN |
| Трансформатор | Плохие результаты |
| Модель | представлять | Примечание |
|---|---|---|
| Берт | Оригинальный Берт | |
| ЭРНИ | ЭРНИ | |
| bert_cnn | В качестве встроенного слоя Берт подключается к CNN трех ядра свертки. | Берт + CNN |
| bert_rnn | Берт как встроенный слой, доступ к LSTM | Берт + Рнн |
| bert_rcnn | В качестве слоя встраивания BERT сплайсируется с выходом BERT через LSTM и проходит через максимальный слой пулы. | Bert + rcnn |
| bert_dpcnn | В качестве слоя встраивания BERT проходит через слой, встраивающий область, содержащий три различных экстрактора объектов свертки, которые можно рассматривать как выходной встраивание, а затем через равную длину свернуты двух слоев, чтобы обеспечить более широкий сенсорный взгляд на последующую извлечение признаков (улучшение богатства вышивки), а затем он будет многократно передавать 1/2 бассейн. 1/2 пула непрерывно улучшает семантику позиции слова, и feature_maps является фиксированным. Внедрение остаточной сети состоит в том, чтобы решить проблемы исчезновения градиента и взрыва градиента во время учебного процесса. | Bert + dpcnn |
См.
Python 3.7
Pytorch 1.1
TQDM
Sklearn
Tensorboardx pytorch_pretriand_bert (Код предварительного обучения также был загружен, и эта библиотека не нужна)
Я набрал 200 000 новостных названий из Thucnews, загруженного в GitHub, с длиной текста от 20 до 30 лет. Всего в каждой категории состоит 10 категорий с 20 000 предметов. Данные введены в модель словами.
Категория: финансы, недвижимость, акции, образование, наука и техника, общество, текущие дела, спорт, игры, развлечения.
Отдел наборов данных:
| Набор данных | Объем данных |
|---|---|
| Учебный набор | 180 000 |
| Проверка набора | 10000 |
| Тестовый набор | 10000 |
python run.py --model TextCNN --word TrueМашина: один кусок 2080TI, время обучения: 30 минут.
| Модель | акк | Примечание |
|---|---|---|
| TextCnn | 91,22% | Классификация текста CNN Ким 2014 Классика CNN |
| Textrnn | 91,12% | Bilstm |
| Textrnn_att | 90,90% | Bilstm+внимание |
| Textrcnn | 91,54% | Bilstm+объединение |
| Фасттекст | 92,23% | лук+биграм+триграмма, эффект на удивление хорош |
| Dpcnn | 91,25% | Глубокая пирамида CNN |
| Трансформатор | 89,91% | Плохие результаты |
| Берт | 94,83% | Простой Берт |
| ЭРНИ | 94,61% | Что такое обещанный китайский сокрушительный берт |
| bert_cnn | 94,44% | Берт + CNN |
| bert_rnn | 94,57% | Берт + Рнн |
| bert_rcnn | 94,51% | Bert + rcnn |
| bert_dpcnn | 94,47% | Bert + dpcnn |
Оригинальный эффект BERT очень хороший. Если вы используете BERT в качестве слоя встраивания и отправите его в другие модели, эффект будет уменьшен. Позже вы попытаетесь сравнить эффект длинного текста.
Модель BERT размещается в каталоге BERT_PRETATE, а модель Ernie помещена в каталог ERNIE_PRETRAIN. Каждый каталог имеет три файла:
Предварительно обученный адрес загрузки модели:
bert_chinese: модель https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
Словарь https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt
Отсюда
Альтернативная: адрес сетевого диска модели: https://pan.baidu.com/s/1qsad5gwclq7xlgzl_4w3pw
Ernie_chinese: https://pan.baidu.com/s/1lepddn1-yqjmked_g9rlgw
Отсюда
После декомпрессии поместите его в соответствующий каталог, как указано выше, и подтвердите, что имя файла верно.
# 训练并测试:
# 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
Загрузите предварительно обученную модель и запустите:
# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert
# bert + 其它
python pretrain_run.py --model bert_CNN
# ERNIE
python pretrain_run.py --model ERNIE
Предварительно обученная модель:
python pretrain_predict.py
Модель нейронной сети:
python predict.py
Все модели находятся в каталоге моделей, а определение гиперпараметра и определение модели находятся в одном файле.
[1] Развитые нейронные сети для классификации предложений
[2] повторяющаяся нейронная сеть для классификации текста с многозадачным обучением
[3] Основанные на внимание двунаправленные длинные кратковременные сети памяти для классификации отношений
[4] повторяющиеся сверточные нейронные сети для классификации текста
[5] мешок уловок для эффективной классификации текста
[6] Глубокая пирамида сверточная нейронная сети для категоризации текста
[7] Внимание - это все, что вам нужно
[8] Берт: предварительное обучение глубоких двунаправленных трансформаторов для понимания языка
[9] Эрни: улучшенное представление посредством интеграции знаний
Этот проект продолжает разрабатывать и оптимизировать на основе следующих складов: