Huggingface AutoTokenizer中text_target参数的作用及差异场景
Tokenizer中
text_target参数的作用及差异场景 为什么用T5-small测试时结果一致?
T5系列模型的输入文本和目标文本采用完全相同的tokenization规则(共享词汇表、特殊token处理逻辑一致),所以直接传入text和指定text_target参数的处理结果没有区别。
哪些场景下text_target会产生不同结果?
输入/目标文本采用不同tokenization规则的模型
部分模型(比如多语言机器翻译模型、自定义双词表任务模型)会为输入源文本和目标文本配置不同的词汇表或处理规则。此时用text_target会触发目标文本对应的tokenizer逻辑,而直接传text会使用输入源的规则,两者生成的input_ids、attention_mask等结果会完全不同。目标文本需要特殊格式处理的任务
部分模型在处理目标文本时会自动添加特定特殊token或调整格式(比如部分摘要模型会给目标文本强制添加<s>起始标记、对话模型对回复文本的拼接规则不同)。指定text_target会触发模型内置的目标文本处理逻辑,和普通text处理的结果产生差异。序列到序列任务中分离输入/目标的长度控制
在摘要、翻译这类seq2seq任务中,输入文本和目标文本的长度限制往往不同(比如输入max_length设为512,目标设为128)。使用text_target时,会单独遵循目标文本的长度参数进行截断/填充,而如果混用text参数处理目标文本,可能会和输入的长度规则混淆,导致格式对齐问题。
举个实际例子:
# 针对英中翻译的双词表tokenizer # 处理英文输入(用源语言词表) input_output = tokenizer("Hello, this is a test", max_length=20, truncation=True) # 处理中文目标(用目标语言词表) target_output = tokenizer(text_target="你好,这是一个测试", max_length=15, truncation=True) # 此时input_output和target_output的input_ids完全不同,因为使用了不同词汇表
内容的提问来源于stack exchange,提问作者Betty
相关产品推荐
相关产品推荐

