个人的NLP实践demo。部分代码参考了其他开源项目。
欢迎Star Fork以及PR。有问题发Issue。
假如项目对你有用的话,欢迎Star。(别光fork不给star哇 (´・ω・`) )
主要内容(具体见各个项目内部的README说明)
- 基于多种模型 (BiLSTM,Transformer) 的文本分类 go here
- 摘要生成 (Pointer Generator NetWork) go here
- 对话翻译 (Seq2Seq) go here
- GNN在文本分类的实践 go here
- *Transformer Mask Language Model预训练 go here
- GPT文本续写以及GPT做数学题 go here
- NLP炼丹技巧实践 对抗学习 (FGM) go here
- 非常简单且易部署的 Seq2Seq-Transformer. 包括了一些部署样例,如中文医疗QA和DeNoise预训练 欢迎尝试使用 go here
- Pytorch_Lighting实践 go here
- Pytorch实现 AMP 和 Fp16 训练 go here
- 便捷好用的带权矩阵可视化,可用于可视化Attenton矩阵 go here
- Diffusion models 在Fashion MNIST上的运用实现 go here
其他参考实践
- bert关系抽取:Ricardokevins/Bert-In-Relation-Extraction: 使用Bert完成实体之间关系抽取 (github.com)
- 文本语意匹配:Ricardokevins/Text_Matching: NLP2020中兴捧月句子相似度匹配 (github.com)
- Transfomer实现和其他部件:Ricardokevins/EasyTransformer: Quick start with strong baseline of Bert and Transformer without pretrain (github.com)
- 更新了Diffusion model的实验,参考使用了 tutorial 的代码。做了一些改变让他可以在本地实际运行。训练的模型以及推理的结果可以见Diffusion/Result2 文件夹.
- 感谢 @rattlesnakey的 Issue(详情于此). 我在pretrain项目里增加了新特性,把Mask-Token的注意力权重设置为0,避免Mask-Token之间做Self-attention,功能暂时没有经过验证,也没有验证对预训练效果的影响,您可以通过设置Transformer.py里的Self.pretrain为True开启这个功能,后续会在语料上测试。
- 重构了Transformer项目里的代码,更加易用且易部署
- 在Transformer项目里新增了DenoisePretrain的示例代码
- 实现了利用Seq2Seq Transformer完成中文医疗QA任务,在55W条中文医疗问答对上训练(见Transformer/MedQAdemo里的README.md)
- 实现了新的trainer和一些有用的工具
- 移除了之前transformer的实现(有一些不好修复的bug,比如对encoder的不依赖)
- 更新了带权矩阵的可视化工具,未来将支持更多的可视化工具
- 更新了python代码规范
- 新增了使用pytorch_lighting的实验,对Text_classification里的分类代码为例子,修改为使用LightningLite实现,具体见LightingMain.py。
- 移除了部分冗余代码
- 新增了Amp混合精度实验,实现与VAEGenerator,简单的在本地的MX150上测试,加速时间和显存占用显著改善(可见代码后注释)
- 基于Amp的要求,修改了model定义里的1e-9为inf
- 初次commit 添加句子分类模块,包含Transformer和BiLSTM以及BiLSTM+Attn模型
- 上传基本数据集,句子二分类作为Demo例子
- 加上和使用对抗学习思路
- 重新整理和更新了很多东西.... 略
- 修复了Text Classification的一些整理问题
- 增加了Text Classification对应的使用说明
- 增加了MLM预训练技术实践
- 修复了句子分类模型里,过分大且不必要的Word Embed(因为太懒,所以只修改了Transformer的)
- 在句子分类里增加了加载预训练的可选项
- 修复了一些BUG
- 增加了GNN在NLP中的应用
- 实现了GNN在文本分类上的使用
- 效果不好,暂时怀疑是数据处理的问题
- 增加了CHI+TFIDF传统机器学习算法在文本分类上的应用
- 实现和测试了算法性能
- 更新了README
- 重构了对话机器人模型于Seq2Seq文件夹
- 实现了BeamSearch解码方式
- 修复了PGN里的BeamSearch Bug
- 添加了GPT在文本续写和数学题问题的解决(偷了karpathy/minGPT: A minimal PyTorch re-implementation of the OpenAI GPT (Generative Pretrained Transformer) training (github.com)代码实现的很好,对理解GPT很有帮助,偷过来看看能不能用在好玩的东西
- 重构了Pointer Generator NetWork,之前的表现一直不好,打算干脆重构,一行一行的重新捋一遍,感觉会安心很多。施工ing。
- 修复了Pretrain里Mask Token未对齐,位置不一致问题
- 更新了BM25和TF-IDF算法,用于快速检索
- 在Transformer里增加了一个随机数字串恢复的Demo,对新手理解Transformer超友好,不需要外部数据,利用随机构造的数字串训练
- 新增实验TransfomerVAE,暂时有BUG,施工中
https://blog.csdn.net/chaojianmo/article/details/105143657
https://featurize.cn/notebooks/368cbc81-2b27-4036-98a1-d77589b1f0c4