Pytorch를 기반으로 한 중국어 텍스트 분류는 상자 밖에서 제공됩니다.
신경망 모델 : TextCnn, Textrnn, FastText, Textrcnn, Bilstm_attention, DPCNN, 변압기
미리 훈련 된 모델 : Bert, Ernie
모델 소개, 데이터 흐름 프로세스 : 참조
데이터는 단어 단위로 모델에 입력되며 미리 훈련 된 Word 벡터는 Sogou News Word+Character 300D를 사용합니다. 다운로드하려면 여기를 클릭하십시오.
| 모델 | 소개하다 |
|---|---|
| TextCnn | Kim 2014 클래식 CNN 텍스트 분류 |
| Textrnn | bilstm |
| Textrnn_att | bilstm+주의 |
| Textrcnn | BILSTM+풀링 |
| FastText | Bow+Bigram+Trigram, 그 효과는 놀랍게도 좋습니다 |
| DPCNN | 깊은 피라미드 CNN |
| 변신 로봇 | 불량한 결과 |
| 모델 | 소개하다 | 주목 |
|---|---|---|
| 버트 | 오리지널 버트 | |
| 어니 | 어니 | |
| bert_cnn | 임베딩 층으로서 Bert는 3 개의 컨볼 루션 커널의 CNN에 연결합니다. | 버트 + CNN |
| bert_rnn | 임베딩 층으로서 BERT, LSTM에 대한 액세스 | 버트 + rnn |
| Bert_rcnn | 임베딩 층으로서, Bert는 LSTM을 통한 Bert 출력으로 스 플라이싱하고 최대 풀링 층을 통과합니다. | 버트 + rcnn |
| bert_dpcnn | 임베딩 층으로서, BERT는 출력 임베딩으로 간주 될 수있는 3 개의 상이한 컨볼 루션 기능 추출기를 함유 한 영역 임베딩 층을 통과시킨 다음 두 층의 동일한 길이 컨볼 루션을 통해 후속 특징 추출 (배양의 풍부함을 개선)에 더 넓은 감각적 눈을 제공 한 다음 반복적으로 1/2 풀링 블록을 통과시킨다. 1/2 풀링은 단어 위치의 의미를 지속적으로 향상시키고 feature_maps가 고정됩니다. 잔류 네트워크의 도입은 훈련 과정에서 그라디언트 실종 및 그라디언트 폭발 문제를 해결하는 것입니다. | 버트 + dpcnn |
참조 :
파이썬 3.7
Pytorch 1.1
TQDM
스카리
Tensorboardx pytorch_pretraind_bert (사전 훈련 코드도 업로드 되었으며이 라이브러리가 필요하지 않습니다)
Thucnews에서 20 만 개의 뉴스 타이틀을 Github에 업로드했으며 텍스트 길이는 20에서 30 사이입니다. 총 10 개의 카테고리가 있으며 각 범주에는 20,000 개의 항목이 있습니다. 데이터는 단어로 모델에 입력됩니다.
카테고리 : 금융, 부동산, 주식, 교육, 과학 기술, 사회, 시사, 스포츠, 게임, 엔터테인먼트.
데이터 세트 부서 :
| 데이터 세트 | 데이터 볼륨 |
|---|---|
| 훈련 세트 | 180,000 |
| 확인 세트 | 10,000 |
| 테스트 세트 | 10,000 |
python run.py --model TextCNN --word True기계 : 2080TI의 한 조각, 훈련 시간 : 30 분.
| 모델 | acc | 주목 |
|---|---|---|
| TextCnn | 91.22% | Kim 2014 클래식 CNN 텍스트 분류 |
| Textrnn | 91.12% | bilstm |
| Textrnn_att | 90.90% | bilstm+주의 |
| Textrcnn | 91.54% | BILSTM+풀링 |
| FastText | 92.23% | Bow+Bigram+Trigram, 그 효과는 놀랍게도 좋습니다 |
| DPCNN | 91.25% | 깊은 피라미드 CNN |
| 변신 로봇 | 89.91% | 불량한 결과 |
| 버트 | 94.83% | 간단한 버트 |
| 어니 | 94.61% | 약속 된 중국 분쇄 버트는 무엇입니까? |
| bert_cnn | 94.44% | 버트 + CNN |
| bert_rnn | 94.57% | 버트 + rnn |
| Bert_rcnn | 94.51% | 버트 + rcnn |
| bert_dpcnn | 94.47% | 버트 + dpcnn |
원래 버트 효과는 매우 좋습니다. Bert를 임베딩 레이어로 사용하여 다른 모델로 보내면 효과가 줄어 듭니다. 나중에 긴 텍스트의 효과를 비교하려고합니다.
Bert 모델은 Bert_pretain 디렉토리에 배치되며 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] 문장 분류를위한 Convolutional Neural Networks
[2] 멀티 태스킹 학습을 통한 텍스트 분류를위한 반복 신경 네트워크
[3] 관계 분류를위한주의 기반 양방향 장기 단기 메모리 네트워크
[4] 텍스트 분류를위한 반복 컨볼 루션 신경 네트워크
[5] 효율적인 텍스트 분류를위한 트릭 백
[6] 텍스트 분류를위한 깊은 피라미드 컨볼 루션 신경 네트워크
[7]주의가 필요한 전부입니다
[8] Bert : 언어 이해를위한 깊은 양방향 변압기의 사전 훈련
[9] Ernie : 지식 통합을 통한 향상된 표현
이 프로젝트는 다음과 같은 창고를 기반으로 계속 개발하고 최적화합니다.