由于目前这个仓库项目过多,不易维护。因此,后续将各种任务独立开来,分别建立仓库,做很多对比实验,方便使用者挑选模型。有需要的,可以跳转指定仓库,链接如下:
- Chatbot
- Distillation
- Embedding
- NER
- NMT
- Pretrain_Model
- Reading_comprehension
- 1. BERT_MRC: 使用bert去做机器阅读理解任务。这里长预料采用直接阶段的方式。
- 2. BiDAF: 双向注意力流机制的机器阅读理解模型
- 3. DocQA: 传统的模型
- 4. Match_LSTM: 传统的模型,单纯的rnn结构。
- 5. QANet: 也是一个比较传统的模型,但是这个模型是第一个抛弃rnn结构的mrc模型,这个模型也是第一个将self-attention机制引入到mrc任务中的。
- 6. RNet: 传统的模型
- 7. Recurrence-hotpot-baseline: 首次产生用rnn结构处理多跳推理的问题,在hotpotqa数据集中,除了包含答案的预测,还有支撑事实的预测,以及相关段落的预测。
- 8. albert_mrc: 使用albert预训练模型去做mrc任务
- 9. electra_bert: 使用electra预训练模型去做mrc任务
- 10. mrc_baseline: 如果做mrc任务,建议首先看这个代码,这里面包含了mrc注意的各种细节,如长文本的处理(滑动窗口), 答案的排序,对抗训练等等。
- 11. roberta_mrc: 使用roberta预训练模型去做mrc任务
- 12. transformer+rnn+attention: 这个项目是做生成式的阅读理解,直接采用的是seq2seq的方式,编码器采用的是transformer的encoder, 解码器采用的gru的结构,中间还加入了一层普通的注意力机制。
- 13. transformer_reading: 这个项目也是做生成式阅读理解,采用的是标准的transformer结构。
- Slot_Filling
- Text_Classification
- 1. DPCNN: 深层的卷积网络+残差的连接使得此模型比以往的CNN结构都好,并且复杂度也不高。
- 2. FastBert: 采用一种自蒸馏的方式加快模型的推理。主要应用在分类任务上。
- 3. FastText: 由facebook提出,是一种高效的文本分类模型。
- 4. XLNet: 1)通过最大化所有可能的因式分解顺序的对数似然,学习双向语境信息;2)用自回归本身的特点克服 BERT 的缺点。此外,XLNet 还融合了当前最优自回归模型 Transformer-XL 的思路。
- 5. all_layer_out_concat: 从名字上就可以看出,本项目是将文本经过bert-style模型进行编码,然后将每层的cls向量拿出来,进行一个注意力计算,然后进行分类。
- 6. bert+bceloss+average_checkpoint: 该项目将分类任务的损失函数改成了BCELoss,另外,加入的权重平均(将多个checkpoint进行平均)
- 7. capsule_text_classification: GRU+Capsule进行文本分类
- 8. longformer_classification: 使用预训练模型longformer进行文本分类。对于长文本的分类,可以试试这个模型。
- 9. multi_label_classify_bert: 使用bert模型进行多标签分类。里面包含三个模型: bert(model.py)、bert后两层池化(model2.py)、bert+TextCNN(model3.py)。
- 10. roberta_classification: 使用roberta预训练模型进行文本分类。
- 11. transformer_xl: 直接使用transformer_xl进行文本分类,对于长文本分类,可以试试此模型。
- 12. wobert+focal_loss: wobert预训练模型有苏神提供,在分类任务中加入了focal loss解决类别不平衡的问题。
- 13. TextCNN: 对文本进行不同尺度的卷积,然后拼接进行文本分类。
- 14. BILSTM+Attention: 双向的LSTM网络加普通的注意力进行文本分类。
- Text_Clustering
- Text_Corrector
- Text_Generation
- Text_Ranking
- Text_Similarity
- 1. ABCNN: 首先对两个句子进行词嵌入,然后进行池化,得到两个句子的向量,接着计算两个向量的差值,最后对这个差值向量进行不同尺度的卷积,然后进行分类。
- 2. BiMPM: 该模型分为四部分: 词嵌入、上下文编码(bilstm)、四种Matching、Aggregation Layer。
- 3. DecomposableAttention:这篇论文的核心就是alignment,即词与词的对应关系,文中的alignment用在了两个地方,一个attend部分,是用来计算两个句子之间的attention关系,另一个是compare部分,对两个句子之间的词进行比较,每次的处理都是以词为单位的,最后用前馈神经网络去做预测。很明显可以看到,这篇文章提到的模型并没有使用到词在句子中的时序关系,更多的是强调两句话的词之间的对应关系(alignment)
- 4. ESIM: 短文本匹配利器。ESIM 牛逼在它的 inter-sentence attention,就是代码中的 soft_align_attention,这一步中让要比较的两句话产生了交互。以前类似 Siamese 网络的结构,往往中间都没有交互,只是在最后一层求个余弦距离或者其他距离。
- 5. RE2: RE2 这个名称来源于该网络三个重要部分的合体:Residual vectors;Embedding vectors;Encoded vectors。
- 6. SiaGRU: 双塔结构,对两个sentence分别用GRU编码,然后计算两个句子编码向量的差值,最后用这个差值向量进行分类。
- 7. SimCSE: 对比学习,技巧:不同的样本不同的Dropout
- 8. BM25: 直接计算两个文本的BM25值,代表其相似程度。
- 9. TF_IDF: 直接计算两个文本的TF_IDF值,代表其相似程度。
- 10. NEZHA_Coattention: 采用的是双塔结构,将两个句子分别输入到NEZHA模型中,然后将输入做差,再与原来的表示拼接,接着送到一个全连接网络中进行分类。还有一个模型,就是得到两个句子的表示后,我们自己实现了一层transformer-encoder,进行表示信息的融合,最后再进行分类。
- 11. Bert_Whitening: 方法由苏剑林提出,无需训练,直接将每个句子的bert输出统一到标准正交基的下
- data_augmentation
- relation_extraction
- python train.py # 训练代码
- python infernece.py # 模型的推理
- python train.py # 训练代码
- python inference.py # 模型的推理
- python train.py # 训练代码
- python chat.py # 可以进行聊天 训练数据采用的是青云对话语料
- python train_teacher_model.py # 训练老师模型
- python train_tailor_model.py # 对老师模型剪枝
- python train_bert.py # 训练老师模型 bert
- python train_distill.py # 蒸馏 用lstm学习bert的输出
- python train_bert.py # 训练老师模型bert
- python train_distill.py # 蒸馏
- python train.py # 训练老师模型 bert
- python train_distill_v2.py # 蒸馏
- python 001-skipgram-word2vec.py
- python 002-bert.py
- python 003-albert.py
- python 004-NPLM.py
- python run_ner_crf.py # 模型的训练
- python inference.py # 模型的推理
- python train.py # 模型的训练
- python inference.py # 模型的推理
- python train.py # 模型的训练
- python train.py # 模型的训练
- python train.py # 模型的训练
- python get_train_data.py # 数据预处理
- python run_pretrain.py # 再训练
- python process_pretrain_data.py # 数据预处理
- python run_pretrain.py # 再训练
- python train.py # 模型训练
- python data_process.py # 首先对数据预处理
- python train_bidaf.py # 模型的训练
- python data_process.py # 首先对数据预处理
- python train_DocQA.py # 模型的训练
- python data_process.py # 首先对数据预处理
- python train_Match_Lstm.py # 模型的训练
- python data_process.py # 数据预处理
- python train.py # 模型的训练
- python data_process.py # 数据预处理
- python train_RNet.py # 模型的训练
- python data_process.py # 数据预处理
- python train.py # 模型的训练
- python train_update.py # 训练模型
- python inference.py # 单条数据的推理
- python inference_all.py # 所有数据的推理
- python run_cail.py # 训练模型
- python evaluate.py # 模型的评估
- python train.py # 训练模型
- python train.py # 训练模型
12. transformer+rnn+attention: 这个项目是做生成式的阅读理解,直接采用的是seq2seq的方式,编码器采用的是transformer的encoder, 解码器采用的gru的结构,中间还加入了一层普通的注意力机制。
- python train.py # 模型的训练
- python inference.py # 模型的推理
- python train.py # 模型的训练
- python inference.py # 模型的推理
- python train.py # 对模型的训练
- python get_data_to_examples.py # 预处理数据
- python examples_to_features.py # 将对应的example转为feature
- python train.py # 模型的训练
- sh train_stage0.sh # 训练老师模型 bert
- sh train_stage1.sh # 自蒸馏
- sh infer_sigle.sh # 自适应的推理单条样本
- python step1_get_data_to_examples.py # 获取数据
- python step2_examples_to_features.py # 将文本数据转为id序列
- python train.py # 模型训练
4. XLNet: 1)通过最大化所有可能的因式分解顺序的对数似然,学习双向语境信息;2)用自回归本身的特点克服 BERT 的缺点。此外,XLNet 还融合了当前最优自回归模型 Transformer-XL 的思路。
- python train.py # 模型训练
- python train.py # 模型训练
- Python inference.py # 模型推理
- python run_classify.py # 模型训练
- python run_average_checkpoints.py # 权重平均
- python train.py # 模型训练
- python train.py # 模型训练
9. multi_label_classify_bert: 使用bert模型进行多标签分类。里面包含三个模型: bert(model.py)、bert后两层池化(model2.py)、bert+TextCNN(model3.py)。
- python train.py # 模型训练
- python inference.py # 模型预测
- python train.py # 模型训练
- python train.py # 模型训练
- python run_classify.py # 模型训练
- python 001-TextCNN.py # 模型训练
- python 002-BILSTM+Attention.py # 模型训练
- python train_LDA_cluster.py # 聚类
- python train_dbscan_cluster.py # 聚类
- python train_kmeans_cluster.py # 聚类
- python run_pretrain_bert.py # 再训练
- bert_corrector.py # 纠错
- python train.py # 模型训练
- python inferface.py # 模型推理
- python train.py # 模型训练
- python inference.py # 模型推理
- python train.py # 模型训练
- python inference.py # 模型推理
- python main.py # 排序
2. DC_Bert_Ranking: 双塔+交互。首先对query和context分别进行编码,此处的权重不共享,然后将query和context的编码混合,再通过几层交互的transformer-encoder。
- python train.py # 模型训练
- python inference.py # 模型推理
- python train.py # 模型训练
- python train.py # 模型训练
- python inference.py # 模型推理
- python train.py # 模型训练
- python train_distill.py # 模型蒸馏
- python train.py # 模型训练
- python train.py # 模型训练
3. DecomposableAttention:这篇论文的核心就是alignment,即词与词的对应关系,文中的alignment用在了两个地方,一个attend部分,是用来计算两个句子之间的attention关系,另一个是compare部分,对两个句子之间的词进行比较,每次的处理都是以词为单位的,最后用前馈神经网络去做预测。很明显可以看到,这篇文章提到的模型并没有使用到词在句子中的时序关系,更多的是强调两句话的词之间的对应关系(alignment)
- python train.py # 模型训练
4. ESIM: 短文本匹配利器。ESIM 牛逼在它的 inter-sentence attention,就是代码中的 soft_align_attention,这一步中让要比较的两句话产生了交互。以前类似 Siamese 网络的结构,往往中间都没有交互,只是在最后一层求个余弦距离或者其他距离。
- python train.py # 模型训练
- python train.py # 模型训练
- python train.py # 模型训练
- python train.py # 模型训练
- python BM25.py
- python TF_IDF.py
10. NEZHA_Coattention: 采用的是双塔结构,将两个句子分别输入到NEZHA模型中,然后将输入做差,再与原来的表示拼接,接着送到一个全连接网络中进行分类。还有一个模型,就是得到两个句子的表示后,我们自己实现了一层transformer-encoder,进行表示信息的融合,最后再进行分类。
- python train.py
- python run_bert_whitening.py # 直接对数据集进行验证 计算斯皮尔曼系数
- python 001-run_eda.py
- python 002-run_contrslate_data_aug.py
- python 003-google_trans_data_aug.py
- python train.py # 模型训练
- python inference.py # 模型推理
- python data_helper.py # 数据预处理
- python train.py # 模型训练