兼容 Tensorflow1.x/2.x 的高层封装 (Transformer/GPT-2/BERT/ALBERT/UniLM/XLNet/ELECTRA 等),使用简单的代码完成语言模型/文本分类/文本生成/命名实体识别/机器阅读理解/机器翻译/序列标注/知识蒸馏任务。适用于 NLP 从业者。
### 特性
- 高效调用:三行代码完成训练及推理
- 高效运行:一行代码设置多进程/多 GPU 并行
- 品类丰富:支持 40+ 模型类
- 高分保证:提供对比学习、对抗式训练等多项训练技巧
- 可供部署:导出模型 PB 文件,供线上部署
### 安装
``` bash
git clone https://github.com/geyingli/unif
cd unif
python3 setup.py install --user
```
若需卸载,通过 `pip3 uninstall uf` 即可。
### 快速上手
``` python
import uf
# 建模
model = uf.BERTClassifier(config_file="./ref/bert_config.json", vocab_file="./ref/vocab.txt")
# 定义训练样本
X, y = ["久旱逢甘露", "他乡遇故知"], [1, 0]
# 训练
model.fit(X, y)
# 推理
print(model.predict(X))
```
## 模型列表
| 领域 | API | 说明 |
| :----------- | :----------- | :------------ |
| 语言模型|[`BERTLM`](./examples/tutorial/BERTLM.ipynb) | 结合 MLM 和 NSP 任务,随机采样自下文及其他文档 |
| |[`RoBERTaLM`](./examples/tutorial/RoBERTaLM.ipynb) | 仅 MLM 任务,采样至文档结束 |
| |[`ALBERTLM`](./examples/tutorial/ALBERTLM.ipynb) | 结合 MLM 和 SOP,随机采样自上下文及其他文档 |
| |[`ELECTRALM`](./examples/tutorial/ELECTRALM.ipynb) | 结合 MLM 和 RTD,生成器与判别器联合训练 |
| |[`VAELM`](./examples/tutorial/VAELM.ipynb) | 可生成语言文本负样本,也可提取向量用于聚类 |
| |[`GPT2LM`](./examples/tutorial/GPT2LM.ipynb) | 自回归式文本生成 | - |
| |[`UniLM`](./examples/tutorial/UniLM.ipynb) | 结合双向、单向及 Seq2Seq 建模的全能语言模型 |
| |[`UniLMPrompt`](./examples/tutorial/UniLMPrompt.ipynb) | 加入 prompt,进一步实现语言模型与下游任务的统一 |
|文本分类 / 单label|[`TextCNNClassifier`](./examples/tutorial/TextCNNClassifier.ipynb) | 小而快 |
|| [`RNNClassifier`](./examples/tutorial/RNNClassifier.ipynb) | 经典 RNN/LSTM/GRU |
|| [`BiRNNClassifier`](./examples/tutorial/BiRNNClassifier.ipynb) | 双向获取更优表征 |
|| [`BERTClassifier`](./examples/tutorial/BERTClassifier.ipynb) | - |
|| [`XLNetClassifier`](./examples/tutorial/XLNetClassifier.ipynb) | - |
|| [`ALBERTClassifier`](./examples/tutorial/ALBERTClassifier.ipynb) | - |
| |[`ELECTRAClassifier`](./examples/tutorial/ELECTRAClassifier.ipynb) | - |
| |[`WideDeepClassifier`](./examples/tutorial/WideDeepClassifier.ipynb) | 通过 Wide & Deep 架构融合句子级别特征 |
| |[`SemBERTClassifier`](./examples/tutorial/SemBERTClassifier.ipynb) | 通过 SemBERT 架构融合字级别的特征 |
| |[`UDAClassifier`](./examples/tutorial/UDAClassifier.ipynb) | 结合一致性学习的半监督学习算法 |
| |[`PerformerClassifier`](./examples/tutorial/PerformerClassifier.ipynb) | 基于正交随机向量快速计算 attention,实现加速 |
|文本分类 / 多label| [`BERTBinaryClassifier`](./examples/tutorial/BERTBinaryClassifier.ipynb) | - |
|| [`XLNetBinaryClassifier`](./examples/tutorial/XLNetBinaryClassifier.ipynb) | - |
| |[`ALBERTBinaryClassifier`](./examples/tutorial/ALBERTBinaryClassifier.ipynb) | - |
| |[`ELECTRABinaryClassifier`](./examples/tutorial/ELECTRABinaryClassifier.ipynb) | - |
| 回归| [`BERTRegressor`](./examples/tutorial/BERTRegressor.ipynb) | - |
|| [`WideDeepRegressor`](./examples/tutorial/WideDeepRegressor.ipynb) | 通过 Wide & Deep 架构融合句子级别特征 |
|序列标注|[`BERTSeqClassifier`](./examples/tutorial/BERTSeqClassifier.ipynb) | - |
|| [`ALBERTSeqClassifier`](./examples/tutorial/ALBERTSeqClassifier.ipynb) | - |
|| [`ELECTRASeqClassifier`](./examples/tutorial/ELECTRASeqClassifier.ipynb) | - |
|| [`BERTSeqCrossClassifier`](./examples/tutorial/BERTSeqCrossClassifier.ipynb) | 序列标注与文本分类相结合的多任务学习 |
| 命名实体识别|[`BERTNER`](./examples/tutorial/BERTNER.ipynb) | - |
|| [`BERTCRFNER`](./examples/tutorial/BERTCRFNER.ipynb) | 结合 CRF |
|| [`BERTCRFCascadeNER`](./examples/tutorial/BERTCRFCascadeNER.ipynb) | 实体识别与分类同时进行的级联架构 |
|机器阅读理解| [`BERTMRC`](./examples/tutorial/BERTMRC.ipynb) | - |
| |[`ALBERTMRC`](./examples/tutorial/ALBERTMRC.ipynb) | - |
| |[`SANetMRC`](./examples/tutorial/SANetMRC.ipynb) | 引入 sentence attention |
| |[`BERTVerifierMRC`](./examples/tutorial/BERTVerifierMRC.ipynb) | 抽取 answer span 的同时判断可答性 |
| |[`RetroReaderMRC`](./examples/tutorial/RetroReaderMRC.ipynb) | 抽取 answer span 的同时判断可答性 |
| 机器翻译| [`TransformerMT`](./examples/tutorial/TransformerMT.ipynb) | 共享词表,标准 Seq2Seq 架构 | - |
| 模型蒸馏|[`TinyBERTClassifier`](./examples/tutorial/TinyBERTClassifier.ipynb) | 大幅压缩模型参数,提速十倍以上 |
|| [`TinyBERTBinaryClassifier`](./examples/tutorial/TinyBERTBinaryClassifier.ipynb) | - |
|| [`FastBERTClassifier`](./examples/tutorial/FastBERTClassifier.ipynb) | 动态推理,易分样本提前离开模型 |
| 图像分类 / 单label | [`PNasNetClassifier`](./examples/tutorial/PNasNetClassifier.ipynb) | 基于 AutoML 搜索最佳网络结构 |
## 建模
实际上建模所需的参数不在少数,因模型而异。为了简便起见,大多数设置了默认值。了解每一项参数的含义是十分有必要的。参数的命名与原论文保持一致,如果遇到不明白的参数,除了看源代码外,可以前往原论文寻找答案。以 `BERTClassifier` 为例,包含以下参数:
```python
model = uf.BERTClassifier(
config_file, # json格式的配置文件,通常可以在预训练参数包里找到
vocab_file, # 一行一个字/词的txt文件
max_seq_length=128, # 切词后的最大序列长度
label_size=2, # label取值数
init_checkpoint=None, # 预训练参数的路径或目录
output_dir="./output", # 输出文件导出目录
gpu_ids="0,1,3,5", # GPU代号 (为空代表不使用GPU; 如果使用的是Nvidia显卡,需要预先安装CUDA及cuDNN,而后可以通过`nvidia-smi`指令查看可用GPU代号)
drop_pooler=False, # 建模时是否跳过 pooler 层
do_lower_case=True, # 英文是否进行小写处理
truncate_method="LIFO", # 输入超出`max_seq_length`时的截断方式 (LIFO:尾词先弃, FIFO:首词先弃, longer-FO:长文本先弃)
)
```
模型使用完毕后,若需要清理内存,可以使用 `del model` 删除模型,或通过 `model.reset()` 对模型进行重置。
## 训练
同样,训练也包含一些可自行调节的参数,有些参数甚至十分关键:
``` python
model.fit(
X=X, # 输入列表
y=y, # 输出列表
sample_weight=None, # 样本权重列表,放空则默认每条样本权重为1.0
X_tokenized=None, # 输入列表 (已预先分词处理的`X`)
batch_size=32, # 每训练一步使用多少数据
learning_rate=5e-05, # 学习率
target_steps=None, # 放空代表直接不间断地训练到`total_steps`;否则为训练停止的位置
total_steps=-3, # 模型计划训练的总步长,决定了学习率的变化曲线;正数,如1000000,代表训练一百万步;负数,如-3,代表根据数据量循环三轮的总步长
warmup_ratio=0.1, # 训练初期学习率从零开始,线性增长到`learning_rate`的步长范围;0.1代表在前10%的步数里逐渐增长
print_per_secs=1, # 多少秒打印一次训练信息
save_per_steps=1000, # 多少步保存一次
没有合适的资源?快使用搜索试试~ 我知道了~
基于 Tensorflow,仿 Scikit-Learn 设计的深度学习自然语言处理框架
共226个文件
py:162个
ipynb:54个
json:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 128 浏览量
2024-06-06
07:39:07
上传
评论
收藏 1.77MB ZIP 举报
温馨提示
【作品名称】:基于 Tensorflow,仿 Scikit-Learn 设计的深度学习自然语言处理框架 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:兼容 Tensorflow1.x/2.x 的高层封装 (Transformer/GPT-2/BERT/ALBERT/UniLM/XLNet/ELECTRA 等),使用简单的代码完成语言模型/文本分类/文本生成/命名实体识别/机器阅读理解/机器翻译/序列标注/知识蒸馏任务。适用于 NLP 从业者。 特性 高效调用:三行代码完成训练及推理 高效运行:一行代码设置多进程/多 GPU 并行 品类丰富:支持 40+ 模型类 高分保证:提供对比学习、对抗式训练等多项训练技巧 可供部署:导出模型 PB 文件,供线上部署
资源推荐
资源详情
资源评论
收起资源包目录
基于 Tensorflow,仿 Scikit-Learn 设计的深度学习自然语言处理框架 (226个子文件)
.gitignore 317B
AdaBERTClassifier.ipynb 62KB
VAELM.ipynb 58KB
BERTSeqCrossClassifier.ipynb 25KB
RoBERTaSeqClassifier.ipynb 23KB
BERTSeqClassifier.ipynb 23KB
ELECTRASeqClassifier.ipynb 23KB
SQPLM.ipynb 21KB
TinyBERTClassifier.ipynb 19KB
ALBERTSeqClassifier.ipynb 19KB
BERTCRFCascadeNER.ipynb 19KB
ELECTRALM.ipynb 17KB
RetroReaderMRC.ipynb 16KB
FastBERTClassifier.ipynb 16KB
RecBERT2LM.ipynb 16KB
UniLMPrompt.ipynb 16KB
RecBERT3LM.ipynb 16KB
TinyBERTBinaryClassifier.ipynb 15KB
BERTCRFNER.ipynb 13KB
BERTNER.ipynb 13KB
SANetMRC.ipynb 11KB
UniLM.ipynb 11KB
RecBERTLM.ipynb 11KB
BERTVerifierMRC.ipynb 11KB
UDAClassifier.ipynb 11KB
ALBERTLM.ipynb 11KB
RoBERTaMRC.ipynb 10KB
TransformerMT.ipynb 10KB
XLNetBinaryClassifier.ipynb 10KB
XLNetClassifier.ipynb 10KB
BERTLM.ipynb 10KB
BERTMRC.ipynb 10KB
RoBERTaBinaryClassifier.ipynb 10KB
BERTBinaryClassifier.ipynb 10KB
RoBERTaClassifier.ipynb 10KB
RoBERTaLM.ipynb 9KB
ELECTRAMRC.ipynb 9KB
BERTTmpBinaryClassifier.ipynb 9KB
ELECTRABinaryClassifier.ipynb 9KB
SemBERTClassifier.ipynb 9KB
MotianClassifier.ipynb 9KB
WideDeepClassifier.ipynb 9KB
BERTClassifier.ipynb 9KB
WideDeepRegressor.ipynb 9KB
ELECTRAClassifier.ipynb 9KB
BiRNNClassifier.ipynb 8KB
ALBERTMRC.ipynb 8KB
PerformerClassifier.ipynb 8KB
BERTRegressor.ipynb 8KB
ALBERTBinaryClassifier.ipynb 8KB
ALBERTClassifier.ipynb 8KB
PNasNetClassifier.ipynb 8KB
RNNClassifier.ipynb 7KB
GPT2LM.ipynb 7KB
TextCNNClassifier.ipynb 6KB
albert_config.json 546B
bert_config.json 520B
xlnet_config.json 176B
LICENSE 11KB
README.md 21KB
spiece.model 675KB
logo.png 488KB
framework.png 337KB
xlnet.py 57KB
albert.py 52KB
electra.py 45KB
motian.py 42KB
adabert.py 35KB
core.py 35KB
performer.py 34KB
bert.py 31KB
fastbert.py 23KB
nasnet.py 20KB
transformer.py 19KB
nasnet_utils.py 19KB
unilm_lm.py 16KB
sqp_lm.py 16KB
util.py 16KB
recbert2_lm.py 16KB
bert_lm.py 16KB
recbert2.py 15KB
train_adversarial.py 15KB
recbert3.py 15KB
bert_seq_cross_classifier.py 14KB
crf.py 14KB
recbert.py 14KB
recbert3_lm.py 14KB
albert_lm.py 13KB
bert_verifier_mrc.py 13KB
recbert_lm.py 13KB
retroreader_mrc.py 13KB
retroreader.py 13KB
uda_classifier.py 13KB
fastbert_classifier.py 13KB
unilm_prompt.py 12KB
bert_crf_cascade_ner.py 12KB
vae.py 11KB
electra_lm.py 11KB
_base_seq_classifier.py 11KB
_base_ner.py 11KB
共 226 条
- 1
- 2
- 3
资源评论
MarcoPage
- 粉丝: 4379
- 资源: 8837
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功