Need help with NLP_pytorch_project?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

shawroad
247 Stars 39 Forks 184 Commits 8 Opened issues

Description

Embedding, NMT, Text_Classification, Text_Generation, NER etc.

Services available

!
?

Need anything else?

Contributors list

No Data

目录

Chatbot

1. Bert_chatbot: 类似于UniLM的方式

  • python train.py   # 训练代码
  • python infernece.py   # 模型的推理

2. seq2seq_luong: 编码器为两层gru网络,解码器为一层gru网络,在编码器和解码器中间,加入了luong注意力。

  • python train.py   # 训练代码
  • python inference.py   # 模型的推理

3. transformer_chatbot: 标准的transformer模型

  • python train.py   # 训练代码
  • python chat.py   # 可以进行聊天 训练数据采用的是青云对话语料

Distillation

1. DynaBert: 华为的工作,主要是采用剪枝的方式对bert的某些结构进行裁剪。

  • python trainteachermodel.py   # 训练老师模型
  • python traintailormodel.py   # 对老师模型剪枝

2. rnndistillbert: 用一层lstm网络去蒸馏bert模型,只加入了软标签损失。

  • python train_bert.py   # 训练老师模型 bert
  • python train_distill.py   # 蒸馏 用lstm学习bert的输出

3. threelayerself-attentiontodistill_bert: 看名字大概都知道啥意思了,就是写了三层transformer的encoder,然后去蒸馏bert模型

  • python train_bert.py   # 训练老师模型bert
  • python train_distill.py   # 蒸馏

4. tinybert: 华为的工作,tinybert的蒸馏方式是除了加入软标签损失,还加入了中间层的均方误差损失

  • python train.py   # 训练老师模型 bert
  • python traindistillv2.py   # 蒸馏

Embedding

1. skipgram-word2vec: 使用skipgram的方式得到词向量

  • python 001-skipgram-word2vec.py

2. bert: 直接训练bert, 从头训练, 也可以使用此代码进行再训练

  • python 002-bert.py

3. albert: 直接训练albert,从头训练, 也可以使用此代码进行再训练

  • python 003-albert.py

4. NPLM: 传统方法

  • python 004-NPLM.py

NER

1. BertCRFNer: bert模型加条件随机场进行序列标注任务

  • python runnercrf.py   # 模型的训练
  • python inference.py   # 模型的推理

2. BertSoftmaxNer: 直接使用bert模型进行序列标注

  • python train.py   # 模型的训练
  • python inference.py   # 模型的推理

3. BiLSTMCRFNer: 使用双向的lstm网络和crf进行序列标注任务

  • python train.py   # 模型的训练

NMT

1. GRU_attention: 编码器和解码器都是gru网络,中间加入一个普通的注意力机制(直接的加权和)

  • python train.py   # 模型的训练

2. Transformers_NMT: 标准的transformer结构做机器翻译

  • python train.py   # 模型的训练

Pretrain_Model

1. bert-pretrain: bert模型的再训练,首先通过gettraindata.py进行数据预处理,包含15%的词进行mask等操作,然后在进行训练。

  • python gettraindata.py   # 数据预处理
  • python run_pretrain.py   # 再训练

2. wobert-pretrain: wobert的预训练模型由苏神给出,这里的再训练可以加入自己构建的词表,然后修改了bert的分词方式。

  • python processpretraindata.py   # 数据预处理
  • python run_pretrain.py   # 再训练

Reading_comprehension

1. BERT_MRC: 使用bert去做机器阅读理解任务。这里长预料采用直接阶段的方式。

  • python train.py   # 模型训练

2. BiDAF: 双向注意力流机制的机器阅读理解模型

  • python data_process.py   # 首先对数据预处理
  • python train_bidaf.py   # 模型的训练

3. DocQA: 传统的模型

  • python data_process.py   # 首先对数据预处理
  • python train_DocQA.py   # 模型的训练

4. Match_LSTM: 传统的模型,单纯的rnn结构。

  • python data_process.py   # 首先对数据预处理
  • python trainMatchLstm.py   # 模型的训练

5. QANet: 也是一个比较传统的模型,但是这个模型是第一个抛弃rnn结构的mrc模型,这个模型也是第一个将self-attention机制引入到mrc任务中的。

  • python data_process.py   # 数据预处理
  • python train.py   # 模型的训练

6. RNet: 传统的模型

  • python data_process.py   # 数据预处理
  • python train_RNet.py   # 模型的训练

7. Recurrence-hotpot-baseline: 首次产生用rnn结构处理多跳推理的问题,在hotpotqa数据集中,除了包含答案的预测,还有支撑事实的预测,以及相关段落的预测。

  • python data_process.py   # 数据预处理
  • python train.py   # 模型的训练

8. albert_mrc: 使用albert预训练模型去做mrc任务

  • python train_update.py   # 训练模型
  • python inference.py   # 单条数据的推理
  • python inference_all.py   # 所有数据的推理

9. electra_bert: 使用electra预训练模型去做mrc任务

  • python run_cail.py   # 训练模型
  • python evaluate.py   # 模型的评估

10. mrc_baseline: 如果做mrc任务,建议首先看这个代码,这里面包含了mrc注意的各种细节,如长文本的处理(滑动窗口), 答案的排序,对抗训练等等。

  • python train.py   # 训练模型

11. roberta_mrc: 使用roberta预训练模型去做mrc任务

  • python train.py   # 训练模型

12. transformer+rnn+attention: 这个项目是做生成式的阅读理解,直接采用的是seq2seq的方式,编码器采用的是transformer的encoder, 解码器采用的gru的结构,中间还加入了一层普通的注意力机制。

  • python train.py   # 模型的训练
  • python inference.py   # 模型的推理

13. transformer_reading: 这个项目也是做生成式阅读理解,采用的是标准的transformer结构。

  • python train.py   # 模型的训练
  • python inference.py   # 模型的推理

Slot_Filling

1. JointBert: 涉及到意图分类和槽分类。直接用bert对输入进行编码,用“CLS”向量进行意图分类。用每个token的最终编码向量进行槽分类。

  • python train.py   # 对模型的训练

Text_Classification

1. DPCNN: 深层的卷积网络+残差的连接使得此模型比以往的CNN结构都好,并且复杂度也不高。

  • python getdatato_examples.py   # 预处理数据
  • python examplestofeatures.py   # 将对应的example转为feature
  • python train.py   # 模型的训练

2. FastBert: 采用一种自蒸馏的方式加快模型的推理。主要应用在分类任务上。

  • sh train_stage0.sh   # 训练老师模型 bert
  • sh train_stage1.sh   # 自蒸馏
  • sh infer_sigle.sh   # 自适应的推理单条样本

3. FastText: 由facebook提出,是一种高效的文本分类模型。

  • python step1getdatatoexamples.py   # 获取数据
  • python step2examplesto_features.py   # 将文本数据转为id序列
  • python train.py   # 模型训练

4. XLNet: 1)通过最大化所有可能的因式分解顺序的对数似然,学习双向语境信息;2)用自回归本身的特点克服 BERT 的缺点。此外,XLNet 还融合了当前最优自回归模型 Transformer-XL 的思路。

  • python train.py   # 模型训练

5. alllayerout_concat: 从名字上就可以看出,本项目是将文本经过bert-style模型进行编码,然后将每层的cls向量拿出来,进行一个注意力计算,然后进行分类。

  • python train.py   # 模型训练
  • Python inference.py   # 模型推理

6. bert+bceloss+average_checkpoint: 该项目将分类任务的损失函数改成了BCELoss,另外,加入的权重平均(将多个checkpoint进行平均)

  • python run_classify.py   # 模型训练
  • python runaveragecheckpoints.py   # 权重平均

7. capsuletextclassification: GRU+Capsule进行文本分类

  • python train.py   # 模型训练

8. longformer_classification: 使用预训练模型longformer进行文本分类。对于长文本的分类,可以试试这个模型。

  • python train.py   # 模型训练

9. multilabelclassify_bert: 使用bert模型进行多标签分类。里面包含三个模型: bert(model.py)、bert后两层池化(model2.py)、bert+TextCNN(model3.py)。

  • python train.py   # 模型训练
  • python inference.py   # 模型预测

10. roberta_classification: 使用roberta预训练模型进行文本分类。

  • python train.py   # 模型训练

11. transformerxl: 直接使用transformerxl进行文本分类,对于长文本分类,可以试试此模型。

  • python train.py   # 模型训练

12. wobert+focal_loss: wobert预训练模型有苏神提供,在分类任务中加入了focal loss解决类别不平衡的问题。

  • python run_classify.py   # 模型训练

13. TextCNN: 对文本进行不同尺度的卷积,然后拼接进行文本分类。

  • python 001-TextCNN.py   # 模型训练

14. BILSTM+Attention: 双向的LSTM网络加普通的注意力进行文本分类。

  • python 002-BILSTM+Attention.py   # 模型训练

Text_Clustering

1. LDA聚类

  • python trainLDAcluster.py   # 聚类

2. DBSCAN

  • python traindbscancluster.py   # 聚类

3. Kmeans

  • python trainkmeanscluster.py   # 聚类

Text_Corrector

1. bertforcorrection: 只是简单的尝试,在对应的语料上进行了再训练,输入一个有错别字的句子,然后对每个token的编码向量进行分类。

  • python runpretrainbert.py   # 再训练
  • bert_corrector.py   # 纠错

Text_Generation

1. GPT2_SummaryGen: 使用GPT2进行摘要的生成

  • python train.py   # 模型训练
  • python inferface.py   # 模型推理

2. GPT2_TitleGen: 文章标题的生成

  • python train.py   # 模型训练
  • python inference.py   # 模型推理

3. Simple-GPT2: 自己实现的GPT2模型

  • python train.py   # 模型训练
  • python inference.py   # 模型推理

Text_Ranking

1. BM25: 计算query与所有待排序文本的BM25值,然后根据这个值进行排序。

  • python main.py   # 排序

2. DCBertRanking: 双塔+交互。首先对query和context分别进行编码,此处的权重不共享,然后将query和context的编码混合,再通过几层交互的transformer-encoder。

  • python train.py   # 模型训练
  • python inference.py   # 模型推理

3. DPR_Ranking:Facebook的文本排序模型

  • python train.py   # 模型训练

4. MT_Ranking: 用bert-style模型进行编码,然后用cls进行分类,按正样本的得分排序

  • python train.py   # 模型训练
  • python inference.py   # 模型推理

5. ReRank: 含模型蒸馏

  • python train.py   # 模型训练
  • python train_distill.py   # 模型蒸馏

Text_Similarity

1. ABCNN: 首先对两个句子进行词嵌入,然后进行池化,得到两个句子的向量,接着计算两个向量的差值,最后对这个差值向量进行不同尺度的卷积,然后进行分类。

  • python train.py   # 模型训练

2. BiMPM: 该模型分为四部分: 词嵌入、上下文编码(bilstm)、四种Matching、Aggregation Layer。

  • python train.py   # 模型训练

3. DecomposableAttention:这篇论文的核心就是alignment,即词与词的对应关系,文中的alignment用在了两个地方,一个attend部分,是用来计算两个句子之间的attention关系,另一个是compare部分,对两个句子之间的词进行比较,每次的处理都是以词为单位的,最后用前馈神经网络去做预测。很明显可以看到,这篇文章提到的模型并没有使用到词在句子中的时序关系,更多的是强调两句话的词之间的对应关系(alignment)

  • python train.py   # 模型训练

4. ESIM: 短文本匹配利器。ESIM 牛逼在它的 inter-sentence attention,就是代码中的 softalignattention,这一步中让要比较的两句话产生了交互。以前类似 Siamese 网络的结构,往往中间都没有交互,只是在最后一层求个余弦距离或者其他距离。

  • python train.py   # 模型训练

5. RE2: RE2 这个名称来源于该网络三个重要部分的合体:Residual vectors;Embedding vectors;Encoded vectors。

  • python train.py   # 模型训练

6. SiaGRU: 双塔结构,对两个sentence分别用GRU编码,然后计算两个句子编码向量的差值,最后用这个差值向量进行分类。

  • python train.py   # 模型训练

7. SimCSE: 对比学习,技巧:不同的样本不同的Dropout

  • python train.py   # 模型训练

8. BM25: 直接计算两个文本的BM25值,代表其相似程度。

  • python BM25.py

9. TFIDF: 直接计算两个文本的TFIDF值,代表其相似程度。

  • python TF_IDF.py

10. NEZHA_Coattention: 采用的是双塔结构,将两个句子分别输入到NEZHA模型中,然后将输入做差,再与原来的表示拼接,接着送到一个全连接网络中进行分类。还有一个模型,就是得到两个句子的表示后,我们自己实现了一层transformer-encoder,进行表示信息的融合,最后再进行分类。

  • python train.py

11. Bert_Whitening: 方法由苏剑林提出,无需训练,直接将每个句子的bert输出统一到标准正交基的下

  • python runbertwhitening.py # 直接对数据集进行验证 计算斯皮尔曼系数

data_augmentation

1. eda: 使用nlpcda工具包进行数据增广。如: 等价实体替换、随机同义词替换、随机删除字符、位置交换、同音词替换。

  • python 001-run_eda.py

2. 回译-百度: 使用百度翻译进行文本的回译。

  • python 002-runcontrslatedata_aug.py

3. 回译-google: 使用google翻译进行文本的回译。

  • python 003-googletransdata_aug.py

relation_extraction

1. lstmcnninformation_extract: lstm+cnn

  • python train.py   # 模型训练
  • python inference.py   # 模型推理

2. relation_classification: 关系分类, bilstm+普通注意力

  • python data_helper.py   # 数据预处理
  • python train.py   # 模型训练

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.