Transformers 4.37 中文文档(十七)(3)https://developer.aliyun.com/article/1564940
TextClassificationPipeline
class transformers.TextClassificationPipeline
( **kwargs )
参数
model
(PreTrainedModel 或 TFPreTrainedModel)— 该模型将被管道用于进行预测。这需要是继承自 PreTrainedModel 的模型,对于 PyTorch 是 TFPreTrainedModel。tokenizer
(PreTrainedTokenizer)— 该 tokenizer 将被管道用于为模型编码数据。该对象继承自 PreTrainedTokenizer。modelcard
(str
或ModelCard
,可选)— 为该管道的模型指定的模型卡。framework
(str
,可选)— 要使用的框架,可以是"pt"
表示 PyTorch 或"tf"
表示 TensorFlow。指定的框架必须已安装。
如果未指定框架,将默认使用当前安装的框架。如果未指定框架并且两个框架都已安装,则将默认使用model
的框架,或者如果未提供模型,则默认使用 PyTorch。task
(str
,默认为""
)— 用于管道的任务标识符。num_workers
(int
,可选,默认为 8)— 当管道将使用DataLoader(在 PyTorch 模型的 GPU 上传递数据集时),要使用的工作程序数量。batch_size
(int
,可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 PyTorch 模型的 GPU 上),要使用的批次大小,对于推断,这并不总是有益的,请阅读使用管道进行批处理。args_parser
(ArgumentHandler,可选)— 负责解析提供的管道参数的对象的引用。device
(int
,可选,默认为-1)— CPU/GPU 支持的设备序数。将其设置为-1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生的torch.device
或str
。binary_output
(bool
,可选,默认为False
)— 指示管道输出应以二进制格式(即 pickle)还是原始文本格式发生的标志。return_all_scores
(bool
,可选,默认为False
)— 是否返回所有预测分数还是仅返回预测类的分数。function_to_apply
(str
,可选,默认为"default"
)— 用于应用于模型输出以检索分数的函数。接受四个不同的值:
"default"
:如果模型有一个标签,则将在输出上应用 sigmoid 函数。如果模型有多个标签,则将在输出上应用 softmax 函数。"sigmoid"
:在输出上应用 sigmoid 函数。"softmax"
:在输出上应用 softmax 函数。"none"
:不在输出上应用任何函数。
使用任何ModelForSequenceClassification
的文本分类管道。有关更多信息,请参阅序列分类示例。
例:
>>> from transformers import pipeline >>> classifier = pipeline(model="distilbert-base-uncased-finetuned-sst-2-english") >>> classifier("This movie is disgustingly good !") [{'label': 'POSITIVE', 'score': 1.0}] >>> classifier("Director tried too much.") [{'label': 'NEGATIVE', 'score': 0.996}]
了解有关在 pipeline 教程中使用管道的基础知识
此文本分类管道目前可以从 pipeline()中使用以下任务标识符加载:"sentiment-analysis"
(用于根据积极或消极情绪对序列进行分类)。
如果有多个分类标签可用(model.config.num_labels >= 2
),则管道将对结果运行 softmax。如果只有一个标签,则管道将对结果运行 sigmoid。
此管道可以使用已在序列分类任务上进行了微调的模型。请查看huggingface.co/models上可用模型的最新列表。
__call__
( *args **kwargs ) → export const metadata = 'undefined';A list or a list of list of dict
参数
args
(str
或List[str]
或Dict[str]
或List[Dict[str]]
)— 要分类的一个或多个文本。为了在分类中使用文本对,可以发送包含{"text","text_pair"}
键的字典,或者这些字典的列表。top_k
(int
,可选,默认为1
)— 要返回多少结果。function_to_apply
(str
,可选,默认为"default"
)— 用于应用于模型输出以检索分数的函数。接受四个不同的值:如果未指定此参数,则将根据标签数应用以下函数:
- 如果模型有一个标签,将在输出上应用 sigmoid 函数。
- 如果模型有多个标签,将在输出上应用 softmax 函数。
- 可能的值为:
"sigmoid"
:在输出上应用 sigmoid 函数。"softmax"
:在输出上应用 softmax 函数。"none"
:不在输出上应用任何函数。
返回
一个列表或dict
的列表
每个结果都作为带有以下键的字典列表:
label
(str
)— 预测的标签。score
(float
)— 相应的概率。
如果使用top_k
,则每个标签返回一个这样的字典。
对给定的文本进行分类。
TextGenerationPipeline
class transformers.TextGenerationPipeline
( *args **kwargs )
参数
model
(PreTrainedModel 或 TFPreTrainedModel) — 该 pipeline 将用于进行预测的模型。这需要是继承自 PreTrainedModel 的模型,对于 PyTorch 和 TFPreTrainedModel 的 TensorFlow。tokenizer
(PreTrainedTokenizer) — 该 pipeline 将用于为模型编码数据的分词器。该对象继承自 PreTrainedTokenizer。modelcard
(str
或ModelCard
, 可选) — 为此 pipeline 的模型指定的模型卡。framework
(str
, 可选) — 要使用的框架,可以是"pt"
代表 PyTorch 或"tf"
代表 TensorFlow。指定的框架必须已安装。
如果未指定框架,将默认使用当前安装的框架。如果未指定框架并且两个框架都已安装,则将默认使用model
的框架,或者如果未提供模型,则默认使用 PyTorch。task
(str
, 默认为""
) — 用于该 pipeline 的任务标识符。num_workers
(int
, 可选, 默认为 8) — 当 pipeline 将使用DataLoader(在传递数据集时,在 Pytorch 模型的 GPU 上),要使用的工作人员数量。batch_size
(int
, 可选, 默认为 1) — 当 pipeline 将使用DataLoader(在传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批次大小,对于推断来说,这并不总是有益的,请阅读使用 pipeline 进行批处理。args_parser
(ArgumentHandler, 可选) — 负责解析提供的 pipeline 参数的对象的引用。device
(int
, 可选, 默认为 -1) — CPU/GPU 支持的设备序数。将其设置为 -1 将使用 CPU,设置为正数将在关联的 CUDA 设备上运行模型。您也可以传递原生的torch.device
或一个str
。binary_output
(bool
, 可选, 默认为False
) — 指示 pipeline 输出是否应以二进制格式(即 pickle)或原始文本形式发生的标志。
使用任何 ModelWithLMHead
的语言生成 pipeline。该 pipeline 预测将跟随指定文本提示的单词。
示例:
>>> from transformers import pipeline >>> generator = pipeline(model="gpt2") >>> generator("I can't believe you did such a ", do_sample=False) [{'generated_text': "I can't believe you did such a icky thing to me. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I"}] >>> # These parameters will return suggestions, and only the newly created text making it easier for prompting suggestions. >>> outputs = generator("My tart needs some", num_return_sequences=4, return_full_text=False)
了解有关在 pipeline 教程中使用 pipeline 的基础知识。您可以将文本生成参数传递给此 pipeline 以控制停止标准、解码策略等。在文本生成策略和文本生成中了解更多关于文本生成参数的信息。
目前可以使用以下任务标识符从 pipeline() 加载此语言生成 pipeline: "text-generation"
.
该 pipeline 可以使用已经训练过自回归语言建模目标的模型,包括库中的单向模型(例如 gpt2)。查看huggingface.co/models上可用模型的列表。
__call__
( text_inputs **kwargs ) → export const metadata = 'undefined';A list or a list of list of dict
参数
args
(str
或List[str]
) — 一个或多个提示(或一个提示列表)以完成。return_tensors
(bool
, 可选, 默认为False
) — 是否在输出中返回预测的张量(作为标记索引)。如果设置为True
,则不返回解码后的文本。return_text
(bool
, 可选, 默认为True
) — 是否返回输出中解码后的文本。return_full_text
(bool
, 可选, 默认为True
) — 如果设置为False
,则只返回添加的文本,否则返回完整的文本。仅在 return_text 设置为 True 时有意义。clean_up_tokenization_spaces
(bool
, 可选, 默认为False
) — 是否清除文本输出中的潜在额外空格。prefix
(str
, 可选) — 添加到提示的前缀。handle_long_generation
(str
, 可选) — 默认情况下,此管道不处理长生成(超过模型最大长度的生成)。没有完美的解决方法(更多信息:github.com/huggingface/transformers/issues/14033#issuecomment-948385227
)。这提供了根据您的用例解决该问题的常见策略。
None
:默认策略,没有特别的操作"hole"
:截断输入的左侧,并留下足够宽的间隙以进行生成(可能会截断大部分提示,当生成超出模型容量时不适用)
- generate_kwargs — 传递给模型的 generate 方法的额外关键字参数(查看您框架对应的 generate 方法这里)。
返回
一个 dict
或 dict
的列表
返回以下字典之一(不能返回 generated_text
和 generated_token_ids
的组合):
generated_text
(str
, 当return_text=True
时存在) — 生成的文本。generated_token_ids
(torch.Tensor
或tf.Tensor
, 当return_tensors=True
时存在) — 生成文本的标记 id。
完成给定的提示作为输入。
文本到文本生成管道
class transformers.Text2TextGenerationPipeline
( *args **kwargs )
参数
model
(PreTrainedModel 或 TFPreTrainedModel) — 该管道将用于进行预测的模型。这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow 则是继承自 TFPreTrainedModel。tokenizer
(PreTrainedTokenizer) — 该管道将用于为模型编码数据的分词器。该对象继承自 PreTrainedTokenizer。modelcard
(str
或ModelCard
, 可选) — 为该管道的模型指定的模型卡片。framework
(str
, 可选) — 要使用的框架,可以是"pt"
代表 PyTorch 或"tf"
代表 TensorFlow。指定的框架必须已安装。
如果未指定框架,将默认使用当前安装的框架。如果未指定框架且两个框架都已安装,则默认使用model
的框架,或者如果未提供模型,则默认使用 PyTorch。task
(str
, 默认为""
) — 用于该管道的任务标识符。num_workers
(int
, 可选, 默认为 8) — 当管道将使用 DataLoader(在传递数据集时,在 PyTorch 模型的 GPU 上)时,要使用的工作人员数量。batch_size
(int
, 可选, 默认为 1) — 当管道将使用 DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批次大小,对于推断来说,这并不总是有益的,请阅读 使用管道进行批处理 。args_parser
(ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。device
(int
, 可选, 默认为 -1) — CPU/GPU 支持的设备序数。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 id 上运行模型。您也可以传递原生的torch.device
或str
。binary_output
(bool
, 可选, 默认为False
) — 指示管道输出是否应以二进制格式(即 pickle)或原始文本格式发生的标志。
使用 seq2seq 模型进行文本到文本生成的管道。
示例:
>>> from transformers import pipeline >>> generator = pipeline(model="mrm8488/t5-base-finetuned-question-generation-ap") >>> generator( ... "answer: Manuel context: Manuel has created RuPERTa-base with the support of HF-Transformers and Google" ... ) [{'generated_text': 'question: Who created the RuPERTa-base?'}]
了解如何在 管道教程 中使用管道的基础知识。您可以将文本生成参数传递给此管道,以控制停止条件、解码策略等。在 文本生成策略 和 文本生成 中了解更多关于文本生成参数的信息。
此 Text2TextGenerationPipeline 管道目前可以通过以下任务标识符从 pipeline() 加载:“text2text-generation”。
此管道可以使用已在翻译任务上进行了微调的模型。请查看 huggingface.co/models 上可用模型的最新列表。有关可用参数的列表,请参阅 以下文档
用法:
text2text_generator = pipeline("text2text-generation") text2text_generator("question: What is 42 ? context: 42 is the answer to life, the universe and everything")
__call__
( *args **kwargs ) → export const metadata = 'undefined';A list or a list of list of dict
参数
args
(str
或List[str]
) — 编码器的输入文本。return_tensors
(bool
, 可选, 默认为False
) — 是否在输出中包含预测的张量(作为标记索引)。return_text
(bool
, 可选, 默认为True
) — 是否在输出中包含解码后的文本。clean_up_tokenization_spaces
(bool
, 可选, 默认为False
) — 是否清除文本输出中可能存在的额外空格。truncation
(TruncationStrategy
, 可选, 默认为TruncationStrategy.DO_NOT_TRUNCATE
) — 管道内部标记化的截断策略。TruncationStrategy.DO_NOT_TRUNCATE
(默认)永远不会截断,但有时希望将输入截断以适应模型的max_length
而不是在后续出错。generate_kwargs — 传递给模型的 generate 方法的其他关键字参数(请参阅您的框架对应的 generate 方法 此处)。
返回
一个字典列表或字典列表
每个结果都作为一个带有以下键的字典。
generated_text
(str
, 当return_text=True
时存在) — 生成的文本。generated_token_ids
(torch.Tensor
或tf.Tensor
, 当return_tensors=True
时存在) — 生成文本的标记 id。
使用给定的文本作为输入生成输出文本。
check_inputs
( input_length: int min_length: int max_length: int )
检查给定输入与模型相关是否存在问题。
TokenClassificationPipeline
class transformers.TokenClassificationPipeline
( args_parser = <transformers.pipelines.token_classification.TokenClassificationArgumentHandler object at 0x7f3b448d6350> *args **kwargs )
参数
model
(PreTrainedModel 或 TFPreTrainedModel)— 流水线将用于进行预测的模型。这需要是继承自 PreTrainedModel 的 PyTorch 模型和继承自 TFPreTrainedModel 的 TensorFlow 模型。tokenizer
(PreTrainedTokenizer)— 流水线将用于对数据进行编码的分词器。此对象继承自 PreTrainedTokenizer。modelcard
(str
或ModelCard
,可选)— 为此流水线的模型指定的模型卡。framework
(str
,可选)— 要使用的框架,可以是"pt"
代表 PyTorch 或"tf"
代表 TensorFlow。指定的框架必须已安装。
如果未指定框架,将默认使用当前安装的框架。如果未指定框架且两个框架都已安装,则将默认使用model
的框架,或者如果未提供模型,则将默认使用 PyTorch。task
(str
,默认为""
)— 用于流水线的任务标识符。num_workers
(int
,可选,默认为 8)— 当流水线将使用DataLoader(传递数据集时,在 PyTorch 模型的 GPU 上)时,要使用的工作人员数量。batch_size
(int
,可选,默认为 1)— 当流水线将使用DataLoader(传递数据集时,在 PyTorch 模型的 GPU 上)时,要使用的批次大小,对于推断,这并不总是有益的,请阅读使用流水线进行批处理。args_parser
(ArgumentHandler,可选)— 负责解析提供的流水线参数的对象的引用。device
(int
,可选,默认为-1)— 用于 CPU/GPU 支持的设备序数。将其设置为-1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生的torch.device
或str
。binary_output
(bool
,可选,默认为False
)— 指示流水线输出是否应以二进制格式(即 pickle)或原始文本格式发生的标志。ignore_labels
(List[str]
,默认为["O"]
)— 要忽略的标签列表。grouped_entities
(bool
,可选,默认为False
)— 已弃用,请改用aggregation_strategy
。是否将对应于相同实体的标记分组在预测中一起还是不分组。stride
(int
,可选)— 如果提供了步幅,流水线将应用于所有文本。文本将被分割成大小为 model_max_length 的块。仅适用于快速分词器和aggregation_strategy
不同于NONE
的情况。此参数的值定义了块之间重叠标记的数量。换句话说,模型将在每一步中向前移动tokenizer.model_max_length - stride
个标记。aggregation_strategy
(str
,可选,默认为"none"
)— 基于模型预测融合(或不融合)标记的策略。
- “none”:将简单地不执行任何聚合,并直接从模型返回原始结果
- “simple”:将尝试按照默认模式对实体进行分组。(A,B-TAG),(B,I-TAG),(C,I-TAG),(D,B-TAG2)(E,B-TAG2)最终将成为[{“word”:ABC,“entity”:“TAG”},{“word”:“D”,“entity”:“TAG2”},{“word”:“E”,“entity”:“TAG2”}]请注意,两个连续的 B 标签将成为不同的实体。在基于单词的语言中,我们可能会不希望将单词拆分:想象一下将 Microsoft 标记为[{“word”:“Micro”,“entity”:“企业”},{“word”:“soft”,“entity”:“名称”}]。查找 FIRST、MAX、AVERAGE 以了解减轻这种情况并消除单词歧义的方法(在支持该含义的语言上,基本上是由空格分隔的标记)。这些减轻措施仅适用于真实单词,“New york”可能仍然会被标记为两个不同的实体。
- “first”:(仅适用于基于单词的模型)将使用
SIMPLE
策略,除非单词不能以不同的标签结束。当存在歧义时,单词将简单地使用单词的第一个标记的标签。 - “average”:(仅适用于基于单词的模型)将使用
SIMPLE
策略,除非单词不能以不同的标签结束。分数将首先在标记之间平均,然后应用最大标签。 - “max”:(仅适用于基于单词的模型)将使用
SIMPLE
策略,除非单词不能以不同的标签结束。单词实体将简单地是具有最高分数的标记。
使用任何ModelForTokenClassification
来进行命名实体识别管道。有关更多信息,请参阅命名实体识别示例。
示例:
>>> from transformers import pipeline >>> token_classifier = pipeline(model="Jean-Baptiste/camembert-ner", aggregation_strategy="simple") >>> sentence = "Je m'appelle jean-baptiste et je vis à montréal" >>> tokens = token_classifier(sentence) >>> tokens [{'entity_group': 'PER', 'score': 0.9931, 'word': 'jean-baptiste', 'start': 12, 'end': 26}, {'entity_group': 'LOC', 'score': 0.998, 'word': 'montréal', 'start': 38, 'end': 47}] >>> token = tokens[0] >>> # Start and end provide an easy way to highlight words in the original text. >>> sentence[token["start"] : token["end"]] ' jean-baptiste' >>> # Some models use the same idea to do part of speech. >>> syntaxer = pipeline(model="vblagoje/bert-english-uncased-finetuned-pos", aggregation_strategy="simple") >>> syntaxer("My name is Sarah and I live in London") [{'entity_group': 'PRON', 'score': 0.999, 'word': 'my', 'start': 0, 'end': 2}, {'entity_group': 'NOUN', 'score': 0.997, 'word': 'name', 'start': 3, 'end': 7}, {'entity_group': 'AUX', 'score': 0.994, 'word': 'is', 'start': 8, 'end': 10}, {'entity_group': 'PROPN', 'score': 0.999, 'word': 'sarah', 'start': 11, 'end': 16}, {'entity_group': 'CCONJ', 'score': 0.999, 'word': 'and', 'start': 17, 'end': 20}, {'entity_group': 'PRON', 'score': 0.999, 'word': 'i', 'start': 21, 'end': 22}, {'entity_group': 'VERB', 'score': 0.998, 'word': 'live', 'start': 23, 'end': 27}, {'entity_group': 'ADP', 'score': 0.999, 'word': 'in', 'start': 28, 'end': 30}, {'entity_group': 'PROPN', 'score': 0.999, 'word': 'london', 'start': 31, 'end': 37}]
了解有关在 pipeline 教程中使用管道的基础知识
此标记识别管道目前可以从 pipeline()中加载,使用以下任务标识符:“ner”(用于预测序列中的标记类别:人物、组织、地点或其他)。
此管道可以使用已在标记分类任务上进行了微调的模型。请查看huggingface.co/models上可用模型的最新列表。
__call__
( inputs: Union **kwargs ) → export const metadata = 'undefined';A list or a list of list of dict
参数
inputs
(str
或List[str]
)—一个或多个文本(或一个文本列表)用于标记分类。
返回
一个字典列表或字典列表的列表
每个结果都作为字典列表(对应于相应输入中的每个标记,或者如果使用聚合策略实例化此管道,则对应于每个实体)返回,具有以下键:
word
(str
)—分类的标记/单词。这是通过解码所选标记获得的。如果要获得原始句子中的确切字符串,请使用start
和end
。score
(float
)—entity
的相应概率。entity
(str
)—为该标记/单词预测的实体(当aggregation_strategy不是"none"
时,它被命名为entity_group)。index
(int
,仅在aggregation_strategy="none"
时存在)—句子中对应标记的索引。start
(int
,可选)—句子中对应实体的起始索引。仅当分词器中存在偏移量时才存在end
(int
,可选)—句子中对应实体的结束索引。仅当分词器中存在偏移量时才存在
对给定的文本的每个标记进行分类。
aggregate_words
( entities: List aggregation_strategy: AggregationStrategy )
覆盖给定单词中不同意的标记,以强制在单词边界上达成一致。
示例:micro|soft| com|pany| B-ENT I-NAME I-ENT I-ENT 将使用第一种策略重写为 microsoft| company| B-ENT I-ENT
gather_pre_entities
( sentence: str input_ids: ndarray scores: ndarray offset_mapping: Optional special_tokens_mask: ndarray aggregation_strategy: AggregationStrategy )
将各种 numpy 数组融合成包含所有聚合所需信息的字典
group_entities
( entities: List )
参数
entities
(dict
)— 管道预测的实体。
查找并将预测相同实体的相邻标记组合在一起。
group_sub_entities
( entities: List )
参数
entities
(dict
)— 管道预测的实体。
将预测相同实体的相邻标记组合在一起。
TranslationPipeline
class transformers.TranslationPipeline
( *args **kwargs )
参数
model
(PreTrainedModel 或 TFPreTrainedModel)— 管道将用于进行预测的模型。这需要是继承自 PreTrainedModel 的模型,用于 PyTorch,以及继承自 TFPreTrainedModel 的模型,用于 TensorFlow。tokenizer
(PreTrainedTokenizer)— 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。modelcard
(str
或ModelCard
,可选)— 为此管道的模型指定的模型卡。framework
(str
,可选)— 要使用的框架,可以是"pt"
表示 PyTorch,也可以是"tf"
表示 TensorFlow。指定的框架必须已安装。
如果未指定框架,将默认使用当前安装的框架。如果未指定框架并且两个框架都已安装,将默认使用model
的框架,或者如果未提供模型,则默认使用 PyTorch。task
(str
,默认为""
)— 管道的任务标识符。num_workers
(int
,可选,默认为 8)— 当管道将使用DataLoader(当传递数据集时,在 Pytorch 模型的 GPU 上),要使用的工作程序数量。batch_size
(int
,可选,默认为 1)— 当管道将使用DataLoader(当传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批量大小,对于推断,这并不总是有益,请阅读使用管道进行批处理。args_parser
(ArgumentHandler,可选)— 负责解析提供的管道参数的对象的引用。device
(int
,可选,默认为-1)— CPU/GPU 支持的设备序数。将其设置为-1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生的torch.device
或str
。binary_output
(bool
,可选,默认为False
)— 指示管道输出是否应以二进制格式(即 pickle)或原始文本格式发生的标志。
从一种语言翻译成另一种语言。
目前可以使用以下任务标识符从 pipeline()加载此翻译管道:"translation_xx_to_yy"
。
该 pipeline 可以使用的模型是在翻译任务上进行了微调的模型。请查看 huggingface.co/models 上的可用模型的最新列表。有关可用参数的列表,请参阅以下文档
用法:
en_fr_translator = pipeline("translation_en_to_fr") en_fr_translator("How old are you?")
__call__
( *args **kwargs ) → export const metadata = 'undefined';A list or a list of list of dict
参数
args
(str
或List[str]
) — 要翻译的文本。return_tensors
(bool
, optional, 默认为False
) — 是否在输出中包含预测的张量(作为 token 索引)。return_text
(bool
, optional, 默认为True
) — 是否在输出中包含解码后的文本。clean_up_tokenization_spaces
(bool
, optional, 默认为False
) — 是否清理文本输出中的潜在额外空格。src_lang
(str
, optional) — 输入文本的语言。对于多语言模型可能是必需的。对于单对翻译模型没有任何效果tgt_lang
(str
, optional) — 期望输出的语言。对于多语言模型可能是必需的。对于单对翻译模型没有任何效果 generate_kwargs — 传递给模型的 generate 方法的其他关键字参数(请参阅您框架对应的 generate 方法此处)。
返回值
一个 dict
列表或 dict
列表的列表
每个结果都作为一个带有以下键的字典:
translation_text
(str
, 当return_text=True
时存在) — 翻译结果。translation_token_ids
(torch.Tensor
或tf.Tensor
, 当return_tensors=True
时存在) — 翻译的 token ids。
翻译给定的文本。
ZeroShotClassificationPipeline
class transformers.ZeroShotClassificationPipeline
( args_parser = <transformers.pipelines.zero_shot_classification.ZeroShotClassificationArgumentHandler object at 0x7f3b4482b130> *args **kwargs )
参数
model
(PreTrainedModel 或 TFPreTrainedModel) — 该 pipeline 将用于进行预测的模型。这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow 则是 TFPreTrainedModel。tokenizer
(PreTrainedTokenizer) — 该 pipeline 将用于为模型编码数据的分词器。该对象继承自 PreTrainedTokenizer。modelcard
(str
或ModelCard
, optional) — 为该 pipeline 的模型指定的模型卡片。framework
(str
, optional) — 要使用的框架,可以是"pt"
代表 PyTorch 或"tf"
代表 TensorFlow。指定的框架必须已安装。
如果未指定框架,将默认使用当前安装的框架。如果未指定框架并且两个框架都已安装,则将默认使用model
的框架,或者如果未提供模型,则将默认使用 PyTorch。task
(str
, 默认为""
) — 用于标识 pipeline 的任务。num_workers
(int
, optional, 默认为 8) — 当 pipeline 将使用 DataLoader(在传递数据集时,在 PyTorch 模型的 GPU 上),要使用的工作程序数量。batch_size
(int
, 可选, 默认为 1) — 当管道将使用 DataLoader(当传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批量大小,对于推理来说,这并不总是有益的,请阅读 使用管道进行批处理。args_parser
(ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。device
(int
, 可选, 默认为 -1) — 用于 CPU/GPU 支持的设备序数。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 id 上运行模型。您也可以传递原生torch.device
或str
。binary_output
(bool
, 可选, 默认为False
) — 标志,指示管道输出是否应以二进制格式(即 pickle)或原始文本格式发生。
基于 NLI 的零样本分类管道使用在 NLI(自然语言推理)任务上训练的 ModelForSequenceClassification
。相当于 text-classification
管道,但这些模型不需要预先确定的潜在类别数量,可以在运行时选择。这通常意味着速度较慢,但更灵活。
可以传递任意序列和标签的组合,每个组合将被视为前提/假设对,并传递给预训练模型。然后,蕴涵 的逻辑被视为候选标签有效的逻辑。可以使用任何 NLI 模型,但 蕴涵 标签的 id 必须包含在模型配置的 :attr:~transformers.PretrainedConfig.label2id 中。
示例:
>>> from transformers import pipeline >>> oracle = pipeline(model="facebook/bart-large-mnli") >>> oracle( ... "I have a problem with my iphone that needs to be resolved asap!!", ... candidate_labels=["urgent", "not urgent", "phone", "tablet", "computer"], ... ) {'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['urgent', 'phone', 'computer', 'not urgent', 'tablet'], 'scores': [0.504, 0.479, 0.013, 0.003, 0.002]} >>> oracle( ... "I have a problem with my iphone that needs to be resolved asap!!", ... candidate_labels=["english", "german"], ... ) {'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['english', 'german'], 'scores': [0.814, 0.186]}
在 pipeline 教程 中了解有关使用管道的基础知识
此 NLI 管道目前可以从 pipeline() 中使用以下任务标识符加载:"zero-shot-classification"
。
此管道可以使用已在 NLI 任务上进行了微调的模型。请查看 huggingface.co/models 上可用模型的最新列表。
__call__
( sequences: Union *args **kwargs ) → export const metadata = 'undefined';A dict or a list of dict
参数
sequences
(str
orList[str]
) — 要分类的序列,如果模型输入过大,将被截断。candidate_labels
(str
orList[str]
) — 用于将每个序列分类的可能类标签集。可以是单个标签、逗号分隔的标签字符串或标签列表。hypothesis_template
(str
, 可选, 默认为"This example is {}."
) — 用于将每个标签转换为 NLI 风格假设的模板。此模板必须包含一个 {} 或类似的语法,以便将候选标签插入模板中。例如,默认模板是"This example is {}."
,使用候选标签"sports"
,这将被馈送到模型中" sequence to classify This example is sports . "
。默认模板在许多情况下效果很好,但根据任务设置的不同,尝试不同模板可能是值得的。multi_label
(bool
, 可选, 默认为False
) — 是否可以存在多个候选标签为真。如果为False
,则对每个序列的标签可能性进行归一化,使得每个序列的标签可能性之和为 1。如果为True
,则将标签视为独立的,并通过对蕴涵分数与矛盾分数进行 softmax,对每个候选进行概率归一化。
返回
一个 dict
或 dict
列表
每个结果都作为一个带有以下键的字典:
sequence
(str
) — 这是输出的序列。labels
(List[str]
) — 按可能性顺序排序的标签。scores
(List[float]
) — 每个标签的概率。
对给定的序列进行分类。有关更多信息,请参阅 ZeroShotClassificationPipeline 文档。
Transformers 4.37 中文文档(十七)(5)https://developer.aliyun.com/article/1564943