免费模板建站,企业网站手机端太简洁,苏州网站建设排行,wordpress的文章如何备份一、NLP 自然语言处理
NLP 是机器学习在语言学领域的研究#xff0c;专注于理解与人类语言相关的一切。NLP 的目标不仅是要理解每个单独的单词含义#xff0c;而且也要理解这些单词与之相关联的上下文之间的意思。
常见的NLP 任务列表#xff1a;
对整句的分类#xff1…一、NLP 自然语言处理
NLP 是机器学习在语言学领域的研究专注于理解与人类语言相关的一切。NLP 的目标不仅是要理解每个单独的单词含义而且也要理解这些单词与之相关联的上下文之间的意思。
常见的NLP 任务列表
对整句的分类如获取评论的好坏、垃圾邮件的分类如判断两个句子的逻辑相关性对句中单词的分类如单词的语法构成名词、动词、形容词、单词的实体命名人、地点、时间文本内容的生成如文章续写、屏蔽词填充文本答案的提取给定问题根据上下文信息提前答案从提示文本生成新句子如文本翻译、文本总结
NLP 并不局限于书面文本它也能解决语音识别、计算机视觉方方面的问题如生成音频样本的转录、图像的描述等 二、Transformer
Hugging Face Hub 社区是最大的Transformer开发者的交流地里面分享了数万个预训练模型、数据集等任何人都可以下载和使用。而Transformers 库提供了创建和使用这些共享模型、数据集的功能。
# # 安装
pip install transformers# # 导入
import transformersTransformers库的优势
简单Transformers只提供一个 API只需两行代码即可下载、加载和使用 NLP 模型进行推理灵活所有模型的核心都是 PyTorch 的nn.Module 类或 TensorFlow 的tf.keras.Model 类独立模型之间相互独立每个模型拥有的层都在一个模型文件内。这个是与其他 ML 库截然不同的
2.1、Transformer 发展历史 Transformer 架构于2017 年 6 月推出。最初的研究重点是翻译任务。随后推出了几个有影响力的模型包括
2018年6月GPT第一个预训练的Transformer模型用于各种NLP任务的微调并获得了SOTA的结果2018 年10月BERT另一个大型预训练模型旨在生成更好的句子摘要2019年2月GPT-2GPT 的改进和更大版本由于道德问题没有立即公开发布2019年10月DistilBERTBERT 的精炼版速度提高了 60%内存减少了 40%但仍然保留了 BERT 97% 的性能2019年10月BART、T5两个大型预训练模型使用与原始 Transformer 模型相同的架构2020年5月GPT-3GPT-2的更大版本能够在各种任务上表现良好无需微调称为zero-shot零样本学习
上面提到的所有Transformer 模型GPT、BERT、BART、T5 等都是预训练语言模型以自监督的方式接受了大量原始文本的训练预训练模型只是对所训练语言进行的统计理解对于特定的实际任务来说并不适用。正因如此预训练模型还要经历一个迁移学习的过程针对具体的任务以监督学习的方式进行微调。
预训练模型
从零开始训练权重随机初始化没有任何先验知识需要大量数据用于训练训练时间也可能很久
微调模型
是在预训练模型的基础上进行的训练要有具体任务的数据集微调训练的时间不会很久微调模型的成本较低时间、数据、财务、硬件等更容易部署。
所以在实际应用中应该始终尝试去寻找与实际任务接近的预训练模型再使用具体任务的小样本数据集以监督学习的方式来微调它。
2.2、Transformer 详细原理
Transformer 详细原理包括
编码器Encoder部分解码器Decoder部分Self-Attention 自注意力原理Multi-Head Attention 多头注意力机制
详细原理请看链接Transformer模型原理
2.3、Transformer 能做什么
Transformers 库中最基本的对象是pipeline() 函数它将必要的预处理和后处理连接起来使我们能直接输入文本并获取对应需求的答案。目前可用的一些管道模型有
ner实体命名识别fill-mask掩码填充translation翻译summarization文章总结text-generation文本生成question-answering问题回答sentiment-analysis情绪分析zero-shot-classification零样本分类feature-extraction获取文本的向量表示
from transformers import pipeline# # # 命名实体识别
# ner pipeline(ner, grouped_entitiesTrue)
# print(ner(My name is Sylvain and I work at Hugging Face in Brooklyn.))# # # 掩码填充
# fill_mask pipeline(fill-mask)
# print(fill_mask(The cat is mask on the mat.))# # # 翻译
# translator pipeline(translation, modelHelsinki-NLP/opus-mt-fr-en)
# print(translator(Ce cours est produit par Hugging Face.))# # # 文章总结
# summarizer pipeline(summarization)
# print(summarizer(xxxxxxxxxxxxxxxxxx))# # # 文本生成
# generator pipeline(text-generation)
# print(generator(In this course, we will teach you how to))
# # # 指定hugging face Hub网站中任意模型
# generator pipeline(text-generation, modeldistilgpt2)
# print(generator(In this course, we will teach you how to, max_length30, num_return_sequences2))# # # 问题回答
# question_answerer pipeline(question-answering)
# print(question_answerer(questionWhere do I work?, contextMy name is Sylvain and I work at Hugging Face in Brooklyn))# # 情绪分析
classifier pipeline(sentiment-analysis) # # 该库只能输入英文。
print(classifier([Ive been waiting for a HuggingFace course my whole life., I hate this so much!]))# # # 零样本分类zero-shot-classification
# classifier pipeline(zero-shot-classification)
# print(classifier(This is a course about the Transformers library, candidate_labels[education, politics, business]))# # # 获取文本的向量表示
# feature_extraction pipeline(feature-extraction)
# print(feature_extraction(i am a studet))NLP 在处理问题使主要涉及三个步骤
人类可理解的文本被预处理为模型可理解的数据格式将可理解的数据传递给模型模型做出预测模型的预测再经过后处理输出人类可理解的文本。
例如
# # 情绪分析
classifier pipeline(sentiment-analysis) # # 该库只能输入英文。
print(classifier([Ive been waiting for a HuggingFace course my whole life., I hate this so much!]))# # 结果
# [{label: POSITIVE, score: 0.9598047137260437},
# {label: NEGATIVE, score: 0.9994558095932007}]2.4、