基于Bert和通用句子编码的Spark-NLP文本分类( 三 )


基于Bert和通用句子编码的Spark-NLP文本分类

文章插图
 
关于Spark NLP中的所有这些文本预处理工具以及更多内容,你可以在这个Colab笔记本中找到详细的说明和代码示例(https://github.com/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/Certification_Trainings/Public/2.Text_Preprocessing_with_SparkNLP_Annotators_Transformers.ipynb) 。
那我们就可以训练了 。
clf_pipelineModel = clf_pipeline.fit(trainDataset)得到测试结果 。
基于Bert和通用句子编码的Spark-NLP文本分类

文章插图
 
现在我们有88%的测试集精度!即使在所有这些文本清理步骤之后,我们仍然无法击败Universal Sentence Embeddings+ClassifierDL,这主要是因为USE相对于数据清理后的版本,它在原始文本上执行得更好 。
为了训练与BERT相同的分类器,我们可以在上面构建的同一管道中用BERT_embedding替换glove_embeddings 。
word_embeddings = BertEmbeddings.pretrained('bert_base_cased', 'en').setInputCols(["document",'lemma']).setOutputCol("embeddings").setPoolingLayer(-2) # default 0我们也可以使用Elmo嵌入 。
word_embeddings = ElmoEmbeddings.pretrained('elmo', 'en').setInputCols(["document",'lemma']).setOutputCol("embeddings")使用LightPipeline进行快速推理正如我们在前面的一篇文章中深入讨论的,LightPipelines是Spark NLP特有的管道,相当于Spark ML管道,但其目的是处理少量的数据 。它们在处理小数据集、调试结果或从服务一次性请求的API运行训练或预测时非常有用 。
Spark NLP LightPipelines是Spark ML管道转换成在单独的机器上,变成多线程的任务,对于较小的数据量(较小的是相对的,但5万个句子大致最大值)来说,速度快了10倍以上 。要使用它们,我们只需插入一个经过训练的管道,我们甚至不需要将输入文本转换为DataFrame,就可以将其输入到一个管道中,该管道首先接受DataFrame作为输入 。当需要从经过训练的ML模型中获得几行文本的预测时,这个功能将非常有用 。
LightPipelines很容易创建,而且可以避免处理Spark数据集 。它们的速度也非常快,当只在驱动节点上工作时,它们执行并行计算 。让我们看看它是如何适用于我们上面描述的案例的:
light_model = LightPipeline(clf_pipelineModel)text="Euro 2020 and the Copa America have both been moved to the summer of 2021 due to the coronavirus outbreak."light_model.annotate(text)['class'][0]>> "Sports"你还可以将这个经过训练的模型保存到磁盘中,然后稍后在另一个Spark管道中与ClassifierDLModel.load()一起使用 。
基于Bert和通用句子编码的Spark-NLP文本分类

文章插图
 
结论本文在Spark-NLP中利用词嵌入和Universal Sentence Encoders,训练了一个多类文本分类模型,在不到10min的训练时间内获得了较好的模型精度 。整个代码都可以在这个Github repo中找到(Colab兼容,https://github.com/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/Certification_Trainings/Public/5.Text_Classification_with_ClassifierDL.ipynb) 。我们还准备了另一个Notebook,几乎涵盖了Spark NLP和Spark ML中所有可能的文本分类组合(CV、TfIdf、Glove、Bert、Elmo、USE、LR、RF、ClassifierDL、DocClassifier):https://github.com/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/Certification_Trainings/Public/5.1_Text_classification_examples_in_SparkML_SparkNLP.ipynb 。
我们还开始为公共和企业(医疗)版本提供在线Spark NLP训练 。这里是所有公共Colab Notebook的链接(https://github.com/JohnSnowLabs/spark-nlp-workshop/tree/master/tutorials/Certification_Trainings/Public)
John Snow实验室将组织虚拟Spark NLP训练,以下是下一次训练的链接:
https://events.johnsnowlabs.com/online-training-spark-nlp
以上代码截图
基于Bert和通用句子编码的Spark-NLP文本分类

文章插图
 

【基于Bert和通用句子编码的Spark-NLP文本分类】


推荐阅读