安装没啥好说的,如下
1 | pip install transformers |
常用pipelines
feature-extraction
(获得文本的向量化表示)fill-mask
(填充被遮盖的词、片段)ner
(命名实体识别)question-answering
(自动问答)sentiment-analysis
(情感分析)summarization
(自动摘要)text-generation
(文本生成)translation
(机器翻译)zero-shot-classification
(零训练样本分类)
pipeline背后逻辑
- 预处理 ,将原始文本转换为模型可以接受的输入格式。(Tokenizer分词器)
- 将处理好的输入送入模型。(Model)
- 对模型的输出进行后处理 ,将其转换为人类方便阅读的格式。(Post-Processing)
模型和分词器
- 加载保存模型或分词器
1 | from transformers import AutoModel |
- Tokenizer
1 | # 按词切分 当分词结果不在词表内会出现unknown结果,需要尽量避免 |
- 直接使用分词器
1 | from transformers import AutoTokenizer, AutoModelForSequenceClassification |
解惑
问:为什么需要输入模型的文本有相同的长度?
答:为模型的输入通常是一个固定形状的张量,1.填充(padding)可以将所有输入序列扩展到相同的长度,从而使它们适合批处理,2.统一的输入序列长度能够让模型在处理数据时更快更高效,3.可以确保较短的序列不会被截断,从而避免丢失信息
问:什么是token?
答:token是用于处理和生成文本的基本单位,经过分词器将文本分割成模型易于处理的小单元,可以更有效地进行训练和预测。
问:如何添加新token?
答:添加普通 token:add_tokens()
,添加特殊 token:add_special_tokens()
,特殊token一般用于标记句子的开始[CLS]
、结束[SEP]
、填充[PAD]
、掩码[MASK]
等
- embedding矩阵
embedding(嵌入或向量化表示)是将高维的离散数据(如单词、句子或图像)转换为低维的连续向量的过程