TranFormers的杀手锏:开箱即用的pipelines

秘密课程 2025-04-05 19:40:35
开箱即用的pipelines

Hugging Face TransFormers是Hugging Face开发的一个NLP包,支持加载目前绝大部分的预训练模型。随着 BERT、GPT 等大规模语言模型的兴起,越来越多的公司和研究者采用 Transformers 库来构建 NLP 应用。 因此Hugging Face为了更方便开发者推理微调大模型,就封装了很多组件,其中pipelines就是使用最多的一个组件。

pipelines可以做什么?

pipelines可以更方便的完成NLP分类的任务,其中包括如下几类:

文本分类:例如情感分析、句子对关系判断等;对文本中的词语进行分类:例如词性标注 (POS)、命名实体识别 (NER) 等;文本生成:例如填充预设的模板 (prompt)、预测文本中被遮掩掉 (masked) 的词语;从文本中抽取答案:例如根据给定的问题从一段文本中抽取出对应的答案;根据输入文本生成新的句子:例如文本翻译、自动摘要等。

Transformers 库最基础的对象就是 pipeline() 函数,它封装了预训练模型和对应的前处理和后处理环节。目前常用的 pipelines 有:

feature-extraction (获得文本的向量化表示)fill-mask (填充被遮盖的词、片段)ner(命名实体识别)question-answering (自动问答)sentiment-analysis (情感分析)summarization (自动摘要)text-generation (文本生成)translation (机器翻译)zero-shot-classification (零训练样本分类)

下面我们以常见的几个 NLP 任务为例,展示如何调用这些 pipeline 模型。

情感分析(sentiment-analysis)

情感分析在智能客服系统、推荐系统中都是非常重要的技术。可以通过对话,来分析出客户的实际情感变化,以此来促进成交量,这个技术在京东商城,淘宝商城都是经常用到的。使用pipeline来实现这个功能,就非常轻松了。

from transformers import pipelineclassifier = pipeline("sentiment-analysis") # 情感分析classifier(["I like eat apple ","I hate eat apple "])

通过结果可以看出,基本上回复的还是比较准确的。但是针对的还是国内用户的使用者比较多,就要考虑中文语句的解析了,接下来使用中文句式在预测一边看下效果。

classifier(["我喜欢吃苹果 ","我讨厌吃苹果 "])

经过结果的预测发现,针对中文这个基本的大模型并没有对中文做很好的识别,还好pipeline是允许调用其他模型进行推理的。

采用大众点评训练的数据集的中文oBERTa-Base分类模型,看下是否符合商业化的应用。

from transformers import pipelineclassifier = pipeline("sentiment-analysis",model="uer/roberta-base-finetuned-dianping-chinese") # 情感分析classifier(["我喜欢吃苹果 ","我讨厌吃苹果 "])

通过结果可以看出,使用大众点评训练的中文oBERTa-Base分类模型,是完全符合中文情感分析预测的要求。在余下章节中会介绍结合Langchain,fastAPI开发一款用来预测评价、评论情感分析的app应用。

零训练样本分类(zero-shot-classification)

零训练样本分类是一种自然语言处理(NLP)任务,其核心目标是在没有直接针对目标任务的标注数据的情况下,对文本进行分类。对于做情感分析、文本分类、多语言分类、意图识别都是非常重要的技术。

from transformers import pipelineclassifier = pipeline("zero-shot-classification") # 零训练样本分类result =ifier("This is a course about the Transformers library",candidate_labels=["education", "politics", "business"],)print(result)

通过结果可以看出,零训练样本分类的输出,还是比较准确的。对于中文结果的分类,还是要运行预测下的。

from transformers import pipelineclassifier = pipeline("zero-shot-classification") # 零训练样本分类''' '''result =ifier("川普“解放日”关税:全球10%基础税率,对中叠加征税达54%",candidate_labels=["教育", "政治", "经济"],)print(result)

无论是中文还是英文,对于零样本分类预测都是比较准确的。余下的章节会介绍文本生成、遮盖词填充、命名实体识别等。

0 阅读:1
秘密课程

秘密课程

感谢大家的关注