littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于Python和TensorFlow的自然语言处理模型库

项目简介

本项目名为“sknlp”,是一个运用TensorFlow实现的仿scikit - learn接口设计的NLP深度学习模型库。训练所得的模型能够直接使用tensorflow serving进行部署。项目搭建了模型实现的基础模版,便于实验新技术,同时简化了常用模型的训练部署流程,有助于快速上线原型服务。

项目的主要特性和功能

  1. 分类功能:支持单标签和多标签分类,有BertClassifier(Bert微调)、RNNClassifier(bilstm + attention)、RCNNClassifier、CNNClassifier(膨胀卷积)等模型。
  2. 序列标注功能:采用crf解码和global pointer解码,包含BertTagger(Bert微调)、BertRNNTagger(Bert + bilstm)、RNNTagger(bilstm)、CNNTagger(膨胀卷积)等模型。
  3. 语义向量检索功能:基于SimSCE,有监督和无监督两种方式,涵盖BertRetriever(Bert微调)、RNNRetriever(bilstm)模型。
  4. 文本生成功能:通过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】