项目简介
本项目名为“sknlp”,是一个运用TensorFlow实现的仿scikit - learn接口设计的NLP深度学习模型库。训练所得的模型能够直接使用tensorflow serving进行部署。项目搭建了模型实现的基础模版,便于实验新技术,同时简化了常用模型的训练部署流程,有助于快速上线原型服务。
项目的主要特性和功能
- 分类功能:支持单标签和多标签分类,有BertClassifier(Bert微调)、RNNClassifier(bilstm + attention)、RCNNClassifier、CNNClassifier(膨胀卷积)等模型。
- 序列标注功能:采用crf解码和global pointer解码,包含BertTagger(Bert微调)、BertRNNTagger(Bert + bilstm)、RNNTagger(bilstm)、CNNTagger(膨胀卷积)等模型。
- 语义向量检索功能:基于SimSCE,有监督和无监督两种方式,涵盖BertRetriever(Bert微调)、RNNRetriever(bilstm)模型。
- 文本生成功能:通过BertGenerator实现unilm文本生成。
安装使用步骤
安装
shell
pip install sknlp
使用
数据准备
数据文件采用csv格式,列间用\t
分隔,需表头,使用\
转义。不同任务的数据格式要求如下:
- 分类:单标签、多标签和句对分类有不同列数要求;使用X和y时也有对应格式。
- 序列标注:标签用三元组表示。
- 语义向量检索:训练和预测的数据格式不同,有监督训练分有正样本和正负样本两种情况。
- 文本生成:文本和标签各占一列。
预训练模型加载
- 词向量:支持加载word2vec和glove的文本文件格式,通过Word2vec类加载。
- BERT类:支持加载google最初公布的BERT checkpoint格式,通过Bert2vec类指定模型类型加载对应模型。
示例代码
以下是使用BertClassifier的示例: ```python from sknlp.module.classifiers import BertClassifier from sknlp.moduel.text2vec import Bert2vec, BertFamily
b2v = Bert2vec.from_tfv1_checkpoint(BertFamily.BERT, "RoBERTa - tiny3L768 - clue") clf = BertClassifier(["letter", "digit"], is_multilabel=False, text2vec=b2v) clf.fit( X=["aa", "bb", "cc", "dd", "11", "22", "33", "44"], y=["letter", "letter", "letter", "letter"], n_epochs=5, learning_rate=1e - 4 ) clf.predict(X=["aa", "88"]) clf.score(X=["xx", "11"], y=["letter", "digit"]) ```
部署
每个模型类都提供了一个export方法,可导出一个可用tensorflow serving部署的模型pb文件及相关辅助文件。Bert类模型的预处理放到模型的前向计算中,tensorflow serving可以直接以文本作为输入。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】